Wanna start contributing code? Ask your question here

57 replies [Last post]
SalmanMohammadi
Offline
Joined: 02/23/2012

If you wanna start contributing code to Trisquel project, you can ask your question here. I will try to regularly check this thread to answer your questions about Package Helpers, git, or anything related.

davidpgil
Offline
Joined: 08/26/2015

What is the workflow strategy currently being used in order to contribute Trisquel? For example, is it...

1) Canonical releases LTS version of Ubuntu
2) Trisquels founder gets the release (how?)
3) Trisquel developers remove non-free software (how?)
4) Trisquel founder decides on what software will be in the repository
5) As bugs are found in Ubuntu, Trisquel gets patched (how?)

Im sure there are many flaws with these steps, but I think this process is worth defining so that the average person can understand how to help. It may be true that only elite developers can contribute, but I think this is probably not true as people when given a chance grow and improve in their skills when empowered.

Thanks for your offer to help with these questions.

ADFENO
Offline
Joined: 12/31/2012

As far as I know: 3, 4, and 5 are made through the scripts at the
package-helpers repository.

Also, decisions on 4 are based on:

- Which package needs to be rebranded?

- Which has a bug filled for which only Trisquel project can solve? I
said "only" because sometimes upstream (Ubuntu) has it too, so in
these cases, it's best to ask upstream to solve it first, and possibly
implement a temporary fix in Trisquel.

- Which package has an issue against GNU Free System Distribution
Guidelines (GNU FSDG)? These are generally listed at
[[https://libreplanet.org/wiki/List_of_software_that_does_not_respect_the_Free_System_Distribution_Guidelines]],
and additions to this list must be discussed and confirmed with
[[https://lists.nongnu.org/mailman/listinfo/gnu-linux-libre]] or with
RMS.

- There might exist other basis for decision for 4, but I'm not aware of
it right now, because it's been sometime since I last contributed
directly to the development of Trisquel, although I do remain in the
forums for user support and discussion.

--
- [[https://libreplanet.org/wiki/User:Adfeno]]
- Palestrante e consultor sobre /software/ livre (não confundir com
gratis).
- "WhatsApp"? Ele não é livre, por isso não uso. Iguais a ele prefiro
GNU Ring, ou Tox. Quer outras formas de contato? Adicione o vCard
que está no endereço acima aos teus contatos.
- Pretende me enviar arquivos .doc, .ppt, .cdr, ou .mp3? OK, eu
aceito, mas não repasso. Entrego apenas em formatos favoráveis ao
/software/ livre. Favor entrar em contato em caso de dúvida.

davidpgil
Offline
Joined: 08/26/2015

Are package helpers just shell commands? What are package helpers written in? What is the strategy for using package helpers aside from other methods?

SalmanMohammadi
Offline
Joined: 02/23/2012

> Are package helpers just shell commands?
Yes.

> What are package helpers written in?
Bash.

> What is the strategy for using package helpers aside from other methods?
What do you mean by strategy?

davidpgil
Offline
Joined: 08/26/2015

> What do you mean by strategy?

What is the reason why package helpers are needed? From my point of view, Trisquel has all Ubuntu packages. In what ways specifically, perhaps with at least one example does a Bash script help with processing a package? Is it to clean the package of non-free files/code?

Im a beginner to intermediate coder and have never worked on a GNU/Linux based project or distro, so I don't fundamentally understand, in a human sense why package helpers are the way to help with Trisquel. What problem does it solve?

jxself
Offline
Joined: 09/13/2010

"Is it to clean the package of non-free files/code?"

That could be one reason, yes. There is a package helper to turn Firefox into Abrowser for example. But the overall thing you seem to be missing is that Trisquel is not an exact copy of Ubuntu. It's not even "Ubuntu without the non-free bits." They also packaged up their own software that isn't available in Ubuntu (like the ath9k HTC firmware, which Ubuntu still does not have) and etc. And so, Package Helpers are the generic facility for accomplishing the generic task to "take software from somewhere (because Helpers can grab thing from anywhere, not just Ubuntu) and do whatever things are necessary to it so that it's in an appropriate condition to include in Trisquel."That *could* be to remove non-free bits, or perhaps to make privacy improvements, or perhaps to make technical changes so that the program works better in the Trisquel environment. Thus, the Package Helpers provide automation so that you don't have to keep making whatever those changes are over and over, every time the program is updated due to a new version.

And as I said in the other thread: Because automation is good. Packages from Ubuntu need modifying for various reasons. Would you rather keep making those changes to that same package over and over (i.e., every time it gets updated in Ubuntu due to, say, security fixes or whatever) or would you rather work on a program one time that is capable of making those changes for you? The only work that needs doing in the future is to fix the Helper if/when it needs it. This is less work in the long run. Automation for the win! :)

davidpgil
Offline
Joined: 08/26/2015

Great answer! I WAS under the impression that Trisquel is GNU-Ubuntu. Mind blown. I think I get it now! Thanks so much!

Lightmoon

I am a member!

Offline
Joined: 12/16/2013

Hi.

I would like to add webservice at tasksel to Trisquel 8, but I don't know how. I read about in Trisquel's wiki without success. How can I help with it?

Thanks!

SalmanMohammadi
Offline
Joined: 02/23/2012

Sorry I don't understand what you mean. You wanna add a webservice to tasksel? Why do you want to do that?

Lightmoon

I am a member!

Offline
Joined: 12/16/2013

Hi Salman.

>Why do you want to do that?

In Flidas (Trisquel 8), webservice option in tasksel does not appear.

Mangy Dog

I am a member!

I am a translator!

Offline
Joined: 03/15/2015

Hi Lightmoon, i think you mentioned GLAMP Stack somewhere no ?

(The last time i used T8 i noticed that, but other fonctionilities where missing too such as "console environnement"but there was the APACHE, MySQL, PHP where available in the repos..note that Ubiquity was not yet "polished" so this is maybe an explanation, may you check the repo, package for GLAMP stack )

Hope this helps ;-)

Lightmoon

I am a member!

Offline
Joined: 12/16/2013

Hi Mangy Dog.
========
EDIT:
>i think you mentioned GLAMP Stack somewhere no ?
Yes, https://trisquel.info/es/forum/help-modify-package
========
I can install GLAMP server without tasksel, but I think that using tasksel the users can install it in one step.

;-)

SalmanMohammadi
Offline
Joined: 02/23/2012

> In Flidas (Trisquel 8), webservice option in tasksel does not appear.

You should edit this file:

https://devel.trisquel.info/trisquel/package-helpers/blob/flidas/helpers/make-tasksel

There's no need to import it from Debian. One should fix the bug.

Lightmoon

I am a member!

Offline
Joined: 12/16/2013

Thanks Salman.

I don't understand how can I add webserice in this file.
Can you give me an example please?
I need a teacher :-D

SalmanMohammadi
Offline
Joined: 02/23/2012

> I don't understand how can I add webserice in this file.
You don't need to add the webservice to this file. 1. check if everything is OK upstream (in this case Ubuntu 16.04) and 2. find out which line has caused the problem 3. revert the changes in the package helper or modify it.

You can easily install Ubuntu 16.04 on your computer as a virtual machine using virt-manager (if your computer is not ages old). https://en.wikipedia.org/wiki/Virtual_Machine_Manager

Lightmoon

I am a member!

Offline
Joined: 12/16/2013

Hi.

I have install Ubuntu using virt-amager. GLAMP is on Ubuntu 16 with tasksel. In packager helper it's ok, it's using sed to change some thinks but not any task.
What is the problem? :O

SalmanMohammadi
Offline
Joined: 02/23/2012

Please report this one as a bug here: https://trisquel.info/en/project/issues

I have left the project, so I won't install Trisquel to check what is wrong with it. packages.trisquel.info is also not working sometimes.

Anyway, you can play 'try and error'. try to build the package locally with removing lines in package helper between 24 and 38 to check which line(s) cause the problem.

Lightmoon

I am a member!

Offline
Joined: 12/16/2013

>Please report this one as a bug
I reported it https://trisquel.info/es/issues/22048

>try to build the package locally with removing lines in package helper between 24 and 38 to check which line(s) cause the problem.

How can I build the package after gives with git?

Thanks!

SalmanMohammadi
Offline
Joined: 02/23/2012

I checked the online repo: the tasks in tasksel are listed here: https://devel.trisquel.info/trisquel/package-helpers/tree/flidas/helpers/DATA/tasksel

and this is the task you need, it is named: web-server

https://devel.trisquel.info/trisquel/package-helpers/blob/flidas/helpers/DATA/tasksel/web-server

and as you can see it depends on: apache2, mysql-server, libapache2-mod-php5

compare that with this source code: http://packages.ubuntu.com/xenial/tasksel

I suppose this package helper should be rewritten to comply with the new version of Tasksel.

for mare info: $ man tasksel

anyway for building packages read this one: https://devel.trisquel.info/trisquel/trisquel-builder/tree/master

SalmanMohammadi
Offline
Joined: 02/23/2012

If you wanna contribute code you need to know 0.bash 1.sed 2.git that is all you need to know. and this is the workflow.

0. cloning the source code of packages from ubuntu servers on Trisquel servers (only main and universe components):
main: free software (supported by canonical)
universe: free software (supported by community)

0.0. the packages in 'main' and 'universe' are defined as free software by Ubuntu but sometimes Trisquel has another mentality and blocks some packages like 'chromium' or 'scilab' or etc.

0.1 the packages related to 'Ubuntu branding' are also blocked.

this is the repo: https://devel.trisquel.info/trisquel/ubuntu-purge

1. after cloning the source code, they have been built on Trisquel servers. but sometimes Trisquel wants to change non-free suggestions or when ubuntu is mentioned and Trisquel does not want them. (*NOT* all Ubuntu mentions will be erased, only some of them which the user interacts with them)

1.0 the changes Trisquel wants to apply on packages is done by 'package helpers', so we can automate the process and build packages automatically on servers using Jenkins.

here is the repo: https://devel.trisquel.info/trisquel/package-helpers

1.1 sometimes Trisquel wants to add packages from Debian or PPA to main trisquel repo. also in this case, package helpers are used.

1.2 sometimes Trisquel wants to patch software, that is also done by package helpers.

* The main code contribution repo is *PACKAGE HELPERS*

Mangy Dog

I am a member!

I am a translator!

Offline
Joined: 03/15/2015

Great ! Thank you Salman ;-)

Among links that have been previously mentioned on other threads, we often forget this other detailed explaination in the package helpers readme

https://devel.trisquel.info/trisquel/package-helpers/blob/belenos/README.md

davidpgil
Offline
Joined: 08/26/2015

Thanks Salman. Good stuff. Definitely have lots of stuff to look more deeply into now. :)

Legimet
Offline
Joined: 12/10/2013

scilab shouldn't be blocked anymore in flidas, because there's a replacement for the nonfree code. If it's still not there, that means the package helper system is malfunctioning.

SalmanMohammadi
Offline
Joined: 02/23/2012

The new version of scilab has been released under GNU GPL. http://www.scilab.org/download/latest

> Scilab 6.0.0 is released under the terms of the GNU General Public License (GPL) v2.0. Prior to this version, Scilab was licensed under the terms of the CeCILL license v2.1,

kyamashita
Offline
Joined: 04/11/2014

I want to try to package the open-ath9k-htc-firmware package from Debian for Trisquel 8, but I can't get pbuilder to create a flidas-based build environment because openjdk-7-jre is missing from the apt repos. Is there a way around this requirement, or should I use a belenos-based build environment instead?

SalmanMohammadi
Offline
Joined: 02/23/2012

> open-ath9k-htc-firmware
There is not such a package in Debian repository. You wanna compile from source or you wanna import it from an APT repository (PPA, Debian, Ubuntu, ...) ?

jxself
Offline
Joined: 09/13/2010

"There is not such a package in Debian repository"

Yes there is:
https://packages.debian.org/search?keywords=ath9k&searchon=names&suite=all&section=all
But it's new. As you can see it only exists in sid at this time. It took the Debian Project years to get the free firmware. It came out in, I think, 2013 or something?

Legimet
Offline
Joined: 12/10/2013

It took a long time, unfortunately, for it to get into Debian.

SalmanMohammadi
Offline
Joined: 02/23/2012

As JXSelf, pointed me in the right direction, you wanna add this package: https://packages.debian.org/sid/firmware-ath9k-htc

You need to have a package helper like this one: https://devel.trisquel.info/trisquel/package-helpers/blob/flidas/helpers/make-icedove (but forget about the lines between 25 to 43)

1. this package (firmware-ath9k-htc) does not depend on any other package.
2. openjdk-7-jre is not available on Ubuntu repository after ubuntu 14.04 (http://packages.ubuntu.com/search?keywords=openjdk-7-jre)

What is the error message you get? You'd better report it to Issues section here. https://trisquel.info/en/project/issues and post the link here.

kyamashita
Offline
Joined: 04/11/2014

I think I found the issue. The pbuilderrc file in the trisquel-builder source code is configured to build a belenos environment. I had manually changed some of the code to build a flidas environment instead, but openjdk-7-jre was still in the EXTRAPACKAGES variable in my pbuilderrc file.

kyamashita
Offline
Joined: 04/11/2014

Now I'm hitting other hiccups:

The following packages have unmet dependencies:
cdbs : Depends: dh-translations but it is not going to be installed
gnome-pkg-tools : Depends: dh-translations but it is not going to be installed
openjdk-8-jre : Depends: openjdk-8-jre-headless (= 8u121-b13-0ubuntu1.16.04.2) but it is not going to be installed
python3-distutils-extra : Depends: intltool but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

SalmanMohammadi
Offline
Joined: 02/23/2012

can you paste somewhere the whole error message?

kyamashita
Offline
Joined: 04/11/2014

Here's the whole log: http://sprunge.us/egdF

SalmanMohammadi
Offline
Joined: 02/23/2012

Thank you for posting the whole error message. Can you please try packaging intltool ?

you will definitely get an error message. I wanna see what the error message is.

kyamashita
Offline
Joined: 04/11/2014

Packaging as in writing a "make-intltool" package helper? Because it just succeeded with message "Trisquel source package built!".

SalmanMohammadi
Offline
Joined: 02/23/2012

The problem has been caused by intltool. You should check why it cannot be built. Would you please paste the whole output?

kyamashita
Offline
Joined: 04/11/2014
SalmanMohammadi
Offline
Joined: 02/23/2012

I don't know why it has been built now but in the former error message, one can read:

python3-distutils-extra : Depends: intltool but it is not going to be installed

kyamashita
Offline
Joined: 04/11/2014

It turned out that I could add the packages mentioned by "Depends: " by manually adding them to EXTRA_PACKAGES in my pbuilderrc file. I did that until it stopped working, so now I have "Package 'aptitude' is not installed, so not removed
Package ca-certificates is not available, but is referred to by another package."

Takumi13
Offline
Joined: 07/03/2016

Hello everybody.
Hello Salman.
I know a fair of c programming language, but I am practising and studying more on the advance concepts of this language that I miss.
how can I contribute with code using C programming language in the Trisquel project that I Love so much?
Thanks in advance and a big hug full of love to all the community.

SalmanMohammadi
Offline
Joined: 02/23/2012

Hi. I don't know where C can be used in Trisquel. You can probably help upstream projects like Debian or Ubuntu but not Trisquel.

https://www.debian.org/Bugs/

https://bugs.launchpad.net/ubuntu

Takumi13
Offline
Joined: 07/03/2016

Well thanks for the response. I think the next logical question is:
what programming language do we need to know if we want to collaborate with the trisquel project in terms of programming language code.
Thanks in advance, I will wait eagerly for this particular answer.
Hugs!

SalmanMohammadi
Offline
Joined: 02/23/2012

> what programming language do we need to know if we want to collaborate with the trisquel project in terms of programming language code.

0.bash 1.python or probably perl.

davidpgil
Offline
Joined: 08/26/2015

Hey @Salman, you said in a previous post that it was:

...
0. bash
1. sed
...

I have never heard of Sed, so I looked it up. It seems to be for text automation/processing. I know Python, Javascript and C. Would it be problematic to instead do this workflow:

0. bash
1. python
2. git

?

SalmanMohammadi
Offline
Joined: 02/23/2012

sed is not a programming language, it's a software application: https://www.gnu.org/software/sed/

you must know git to send your code to us. 1. you must at first learn git 2. you must then learn bash 3. Python is not widely used.

Magic Banana

I am a member!

Online
Joined: 07/24/2010

I do not now your favored definition of a programming language but 'sed', although it is horrible for general-purpose programming, actually is a Turing-complete language.

kyamashita
Offline
Joined: 04/11/2014

Sed is a programming language in a twisted, masochistic sort of way. Here's a link to a proof of sed's Turing-completeness: http://www.catonmat.net/ftp/sed/turing.txt

SalmanMohammadi
Offline
Joined: 02/23/2012

It seems that I was wrong :) Thanks.

Takumi13
Offline
Joined: 07/03/2016

Thanks for the response. I think I'll keep up with my deepening study in c, and then when I feel confident use it maybe in kernel or System enhancement. Many many Thanks

bill-auger
Offline
Joined: 09/01/2015

SalmanMohammadi

i notice you say you have left "the project" - are you saying you are no longer a trisquel developer?

from what i see, you have been the one holding the dev team together for some time and the only one i have seen to offer mentoring for newcomers

so as it would seem there is a large barrier to entry for anyone new wanting to help out with trisquel, there are some obvious questions to be raised

* what does this mean for newcomers - will you still be watching this thread and mentoring?
* who are the active maintainers now?
* is there any project co-ordination (e.g. meetings or task assignments) or is trisquel a sort of loose adhocracy such as parabola?
* the only documented progress or road-map i see is this wiki article - yes? --> https://trisquel.info/en/wiki/flidas-release-issues
* the only other developer-centric documentation i can find is this, which is VERY thin --> https://trisqueldev.salcomputing.com/ - perhaps completing that document would be a good place to start