ContributingToFOSS
From Berkshire Linux Users Group
Contents |
Introduction
This document is meant to show that anyone can contribute to Free and Open Source Software. You may think that you aren't a good enough coder, may not be a coder at all, or believe you have nothing to offer the Free Software Community. But you do have something to offer, it just may not be in the way you thought.
There are so many ways to contribute to Free and Open Source Software and not all include writing actual code. Here I will attempt to dispel some myths and try to show that even you can help the Free and Open Source Community.
What Is FOSS?
To some, there are really two things to which FOSS refers; Free Software and Open Source Software. Free Software (as in Freedom or Libre, as opposed to Beer or Gratis more) is software which can be used, copied, studied, modified and redistributed without restriction. The whole idea is to share everything about your software and ensure that if anyone modifies your software that their modifications will also be free. This allows for a whole different kind of evolutionary process in software not capable with proprietary, closed-source, software. This is the core principle driving Richard Stallman and the Free Software Foundation. Open Source Software is a more broad term used to describe software whose license is compatible with the Open Source Initiative definition of open-source, meaning its source code is open and freely available. Free Software zealots disagree with the idea of Open Source Software insofar as it doesn't value the principles of software Freedom, only the development model of open code.
Some Points to Keep in Mind
- You do not have to be a brilliant coder.
- For most tasks, you don't have to be a coder at all.
- You don't need to spend more time than you can spare. Even a few hours a week can be a big help.
- The Free and Open Source Community needs you. The more hands, the better and faster FOSS will progress.
- Don't be afraid.
- Just Do It!
10 Ways to Contribute to FOSS
Here is a list of 10 ways one can contribute to FOSS. These aren't the only ways, but it is thorough walkthrough.
- Just Use It -- You're helping out by just using the software. At the very least you are proving that the software works. Also, as a open-source developer, it is very good to hear about people using your software. So don't be afraid to thank the author(s) if you like the software! Its also difficult to maintain a project if you don't think people are using your software. So this is a very big motivator to the author(s).
- Montetary Donations -- Most of the larger projects, and some of the smaller projects, actively seek out monetary donations. Some of this is through purchasing t-shirts, caps, or mugs, and some of this is through direct monetary donations. This is a great way for anyone to contribute, but especially those that want to help but don't have the time or skill to donate in other ways. Most are through official non-profit organizations and are a tax writeoff. Because the software is free, this is their main method of raising money. This can pay for things like server costs, education, promotion, and other miscellaneous costs. Some notable and respectable projects accepting donations are SourceForge, Gnome, KDE, Free Software Foundation.
- Reporting Bugs -- This is critical as the authors will never find all bugs themselves. You don't have to be a programmer, but you do have to provide as much information as you can for the bug to be resolved. This includes any console output, backtraces on crashes, and system configuration. For more information, How to Report Bugs Effectively is an excellent guide.
- Managing Bugs -- This is the process of tracking, confirming, categorizing, and closing resolved bugs. Most small projects will have their author(s) do this, but with large projects this is a critical task that non-developers can do. See the Gnome Bug Day.
- Documentation -- If nobody knows how to use your software, it won't be very useful. Again, you don't need to be a programmer, just a decent writer and have an understanding of the software for which you are writing. Another important aspect of documentation is translating. Not everyone speaks English, so if you are multi-lingual translating documentation is a great job for you.
- Helping Others -- This is where you start needing to be a developer. You hang out on mailing lists, forums, or IRC rooms, and help people who have questions on how to use the software, how to install or compile the software, or how to write software that uses the software (i.e. development libraries). This is very important for development that provides libraries, as not all documentation can fully describe how to do everything you'd want to do with it. Project websites will list the types and locations of mediums of communication.
- Fixing Bugs -- This is the process of finding a bug, writing the code to fix the bug, testing the fix, and submitting the resulting fix as a patch. This is usually attached to a bug entry or submitted to a mailing list. You have to be a programmer to help here. This is a great way to get your hands dirty and can really help develop the important skill of bug finding/fixing.
- Adding Features -- This is where you work with the code and come up with new features or improvements. You may not be officially on the project team, and probably don't have CVS/SVN write access. This is similar to Fixing Bugs, but is feature driven and focused on developing the next version of the software rather than maintaining stable software. For this you will be working from the project CVS/SVN and submitting patches.
- Core Project Member -- This is where you join as an official member of a project and are given write access to project resources (CVS/SVN/etc). You don't need to be a developer, as there are several areas of a project that need assistance like documentation. This is usually were you will start on smaller sourceforge projects. With the larger projects, you will have to work your way through the ranks to gain the trust and respect of the existing members.
- Start Your Own Project -- If you have an idea, make it a reality. It's a very good idea to do some research before you code to see what else is out there that may do what you want to do. And if there is, it's best to join the existing project. You can also take an existing FOSS project which does something similar and either use it as a starting point or use parts. Here you will be the project manager and be in charge of all aspects of the project from design to release.
For large projects, the best and often times only way to get involved is to progress through this list. Different projects have different politics, so you will have to find out how this is done for yourself. But there really is a hierarchy that projects conform to, and much of it is based on peer respect; as you gain respect you will be asked to move up the ladder. But don't let this scare you off. All you have to do is start small, get a feel for how things work, and contribute the best you can.
Why We Do It
There are many reasons why open source contributors donate their time and talent. This can include sticking it to the man (Microsoft), they think they can do it better, it is a place where they can express themselves, or for a learning experience. I think one of the most important reasons however is that they have a genuine belief in the freedom and openness of software. They believe that software should be free and they are willing get involved and do their part to help the community.
List of Job Titles
As I've mentioned, there are several ways to contribute to FOSS, here I will list some of the corresponding job titles.
- Tester
- Bug Wrangler (goes through bugs, organizes them, closes resolved bugs, etc)
- Documenter
- Translator
- Support
- Hacker (messes with code, fixes bugs, contributes patches, etc)
- Developer
- Project Manager
Every project needs each of these positions. With most projects, namely the smaller ones, people will take on more than one position, if not all.
To Do
- how to start a project
- how to join a project
- tools to familiarize
- copyright / making sure your contributions are protected and stay free
- links
Feel free to contribute to this work in progress.
