This document can be freely translated and distributed. It's released under the GNU Free Documentation License (FDL).
|Revision 1.2||2003-04-26||hgayosso via toby|
|Hugo sanded down some rough edges.|
|Revision 1.1||2003-01-20||hgayosso via toby|
|GVC emeritus Hugo Gayosso made many good comments.|
|A journey of a mile or two begins with a single step.|
Table of Contents
On behalf of the GNU Project Volunteer Coordinators, thank you for your interest in helping GNU! The GNU Volunteer Coordinators' job is to help advance the cause of Free Software by helping GNU volunteers. We want you to find an interesting, challenging and fun way to contribute because then you'll be more likely to make a long-term commitment to GNU. Getting started can be difficult so we wrote this document to help you determine the best way for you to help GNU.
The GNU Project (http://www.gnu.org/) writes, distributes, and promotes free software. The "free" in free software refers to liberty, not price: the freedom to use, modify, share, and improve the software. Free Software has many practical advantages over proprietary software but those are secondary benefits: GNU's rationale is ethical, not practical. Free Software is better than proprietary software for the same reasons that freedom is better than tyranny.
Richard Stallman launched the GNU Project in 1983 to develop a complete Unix-like operating system which is free software: the GNU system. (GNU is a recursive acronym for "GNU's Not Unix"; it is pronounced "guh-NEW".) In the years since the project began it has built, maintained and distributed some of the most important programs in use today: the GNU Compiler Collection (known as GCC), the GNU Debugger (known as GDB), the GNU C library, and the EMACS editor, among others. Along the way the project's scope grew and now GNU is much more than just a computer operating system: you can use GNU software to make telephone calls, design electronic circuits, write music, play chess, and many other things. There is currently no GNU software that can make toast, but that will likely change someday.
The GNU Project is loosely organized, more like a republic than a monarchy. Richard Stallman is the project leader. Projects can choose to become GNU projects if they share the core GNU values, agree to follow the GNU standards, and fit into the GNU system. You can help GNU in many ways, but as a rule of thumb if you're helping the cause of Free Software then you're helping GNU.
As we discussed in the introduction, the GNU project's motivation is ethical rather than practical. We believe that Free Software benefits society by preserving the freedoms of those who use it. Many people aren't as concerned about these issues and worry more about what's expedient for them. Often those people get frustrated when we hold to our principles rather than compromising them. That's why it's important that you take the time to learn about our beliefs (see our philosophy page) and decide which of them you agree with. We're confident that once you learn about the solid ethical foundation that the GNU project rests on you'll want to help.
If you've learned about GNU and Free Software and would like to help us then the next question is: what would you like to do? You can help GNU in many ways; we need people to write documents such as books, reference guides and online info, we also need people to write software, do research, and many other tasks. Because of all of the different tasks at hand we are sure that you have skills that can help the GNU Project; you don't have to be an experienced software developer to help us. What skills and experience do you have? Do you have experience writing large and complex technical documents? Do you speak several human languages? Do you have a unique skill? Have you been a Unix hacker for 20 years or are you just learning? Obviously the answers to these questions will determine the sorts of jobs that you'll want to attempt to do. For example, if you've never written any documentation then you probably don't want to attempt to write a C++ STL tutorial or reference. If you have little mathematical expertise then you probably won't want to work on a statistical analysis package.
There are many ways to help GNU. As Fred Brooks pointed out, there's much more to building successful software products than simply writing a computer program. Products need testing, documentation, and translations. Even the projects that build the products can use help, for example maintaining web pages or triaging bug reports. Here are a few common skill areas that are helpful, and resources to find out more about them:
Once you've got an idea of what sort of task you'd like to do (at a high level at least) you should think about how much time you're ready to volunteer. Any amount is useful, but it's important that you don't allow yourself to "bite off more than you can chew". You need to be realistic about how much time you'll be able to spend so you don't overcommit yourself. That wouldn't good for you, the people in your life, or the project that you've committed to.
How can you help given the amount of time that you'd like to donate? There are many roles to play within a project; naturally some consume more time than others. In order of increasing commitment:
Now that you've thought about how much time you'd like to contribute, and which roles might be right for you, it's time to find something to do! It's best to work on something that you use yourself, something that makes your life easier. If you followed our advice above and are using a GNU system then you've probably found a few things that you'd like to improve, a couple of features that you'd like to have, or even a bug or two. Great, jump in! Download the source code, fire up your favorite editor (we trust that it's EMACS) and start learning how the program is put together. When you feel ready, subscribe to the developer's mailing list for that project and ask how you can help. The project developers will probably have a list of tasks to work on. If you've thought of something yourself it's a good idea to check with the developers before spending too much time on it; someone else might already be working on the same thing and you don't want to waste your effort.
If no project jumps out at you then you'll probably want to search for a project that needs help. Here are some places to look:
Ask the GVC for help by sending email to firstname.lastname@example.org.
Once you've found a project, how do you get involved? The best approach is to familiarize yourself with the project's work to date and then approach the project development team and offer your help. Download the software, build it and spend some time learning how it works and how the source code is structured. If you have questions you can ask the developers (preferably via the developers mailing lists) but please be respectful of their time.
Many projects communicate using mailing lists, so you'll want to find the project's developer mailing list and subscribe to it. Different projects have different cultures so it's prudent to "lurk" on the list for a few days to learn the developers' style before diving in. When you're ready, send a message offering your help. If you have an idea to improve the program you might want to check with the developers to see if anyone else is working on something similar - if so you'll want to coordinate your efforts so you don't waste time. If you don't have a specific idea but want to help the project, say so and someone will suggest something to work on.