Best
Hello,
Although I am fairly new to the forums, I have been a Trisquel 7.0 GNU/Linux user for about the past year. I am also an entry-level IT professional who wants to help the Free Software Community, but I wasn't sure how to go about it. I am interested in learning how to write free software programs (both for OS, as well as, possibly, for boot firmware), but I dont know which programming language would be best to learn for that purpose. Any help that you all could provide would be greatly appreciated. Thank you.
I think it depends on what project you want to work on. What languages do you know now?
A lot of low-level stuff is written in C
My IT training was in PC Support and Repair; I actually didn't learn any programming languages. So, you think that learning C would be a good way to go? Is that more for OS software, or boot firmware?
You should be able to do it for both, although I'm not sure about for firmware. A quick search showed me that C is used for programming firmware. There may be better choices for that, I don't know. As an all-purpose low-level programming language you can't go wrong by learning C.
What have you discovered from your internet searches?
Richard Stallman's advice regarding learning the craft of programming is to make small changes to actual large programs. You learn to write good code by "reading lots of code and writing lots of code" and free software gives you the ability to do that. So...
1.) Find a project you are interested in.
2.) Find out what small change you can make that is useful by asking others in the project.
3.) Read and decipher the code (here is the learning a new language part).
4.) Make your change
5.) Fix bugs that are reported to you.
6.) Work on another change in this or another project.
His other suggestion is to learn Lisp! One way you can do that is by writing some extensions for emacs using the free book "programming in emacs".
From where I can download "programming in emacs"?
"reading lots of code and writing lots of code" I agree with that.
Honestly, I don't know why so many people seem to think that programming is the only way to contribute to the community. This is not the case. Programmers are helpful, but other skills can be helpful, too, and these other skills are much harder to come by than an ability to program. For example, being good at technical support means you can help people who have trouble getting Trisquel to work, or who have problems with their installations.
If you really want to learn to program, that's great; do it. But don't learn to program solely because you want to contribute to the community. If that is your only motivation, it would be much more productive to find out how your existing skills, or skills you are interested in learning, can be used to contribute.
Ways to help Trisquel
Official: https://trisquel.info/en/how-can-i-help-project
Wiki: https://trisquel.info/en/wiki/how-help
I think we have been given an awesome gift in free software and it's great if we can contribute back.