How to Help the GNU Project

Introduction

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.

Background

The GNU Project 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 that 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.

Learn About 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.

Decide What To Do

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 technical documents?
Do you speak more than one human language?
Do you have programming skills?
Do you have software to contribute under GNU General Public License?
Do you have any other skill which you deem useful for GNU?
Would you like to help free software by doing work not requiring specialists but still getting too little attention?

Obviously, the answers to these questions will determine the sorts of tasks that you'll want to work on. Before investing time in details, consider what you have, what you want to give, and how this fits into GNU. Then come and help us.

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:

Your time is about the most precious donation to GNU. Any amount is useful. Don't feel pressured to commit yourself to more than you can afford without losing the fun in doing your volunteer work. If you recognize to have bitten off too much, then reconsider your goal, possibly scale it down to become more feasible, and remember that endurance can overcome many obstacles.
In general we advise you to start with small changes in order to become familiar with the project and its developers.

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:

Find Something To Work On

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! If you want to convert an existing software project to a GNU project, contact gvc@gnu.org. Else it's best to work on something that you use yourself, something that makes your life easier.
For example, if you want to improve documentation, get the original document and try to become familiar enough with its format to be able to make changes. If it stays riddling, summarize your change plan for the developers of the project and ask them for advise about the format.
Or, if you want to improve GNU software by fixing bugs or adding features, then download the source code, fire up your favorite editor and start learning how the program is put together. Again, if riddles remain then summarize your plan and ask the developers.

To contact them subscribe to the development mailing list for that project and write a friendly, not too long mail to that list. Expect to be asked about details or background. Please do not take this as rejection or nitpicking.
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 <gvc@gnu.org>.

It will be important that the authorship of your contributions is properly documented. Your statements will be taken seriously and not be doubted unless evidence of the contrary is shown.
If your contribution is legally significant and you are the copyright holder, then you will need to agree to the project's license. If your contribution contains work with copyright by others, then you need to present a sufficient license statement by the copyright holders.

Get Involved

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 development 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.

We're Here to Help

We hope that this document has given you the information that you need to find a good way to help GNU. Remember, though, that the GNU Volunteer Coordinators are here to help you, so if you get stuck please send us an email at <gvc@gnu.org>.

Finally, thank you again for your interest in helping GNU!