Recent experiences have shown me, that a lot of (free and open source) software (FLOSS) users are simply not aware that they could easily give back to their favorite application. It’s not a surprise that an average (Windows or Mac) user would not realise the possibilities, because she/he has been indoctrinated by proprietary software, that changing (or even looking at) software is bad (because it is forbidden by EULAs). But also full-blown IT professionals have difficulty grasping the full nature and power of FLOSS.
Now don’t stop reading if you are not an IT professional, because remember:
Everyone can help!
The possibility to give back is a big part of free software, so I would like to list all the ways to contribute, help and support. The most obvious one is writing code and contributing it to the software. But I will try to explain them all. Especially the non-programming related ones.
Disclaimer: As you will notice, I’m a big fan of FLOSS, so this will be a biased article (meaning there will be a vibe against proprietary software). But whatever you views are on proprietary vs free software, this will help you understand the advantages of FLOSS a bit better and give you ideas on how to improve it.
(This section is a first update to the original version of this article)
If you don’t already have, start by using the software. The better you understand what the program can (and can’t) do, the easier it will be to contribute. This can also include related software, since FLOSS is very modular and every app depends on many more programs.
Mike Linksvayer goes even further:
[…] I argue that […] if one is a user, using more and becoming a better user is a valuable contribution independent of any other.
Contribute you time
Which means actively adding something to a piece of software. Any good application consists of more than lines of code. For example: without good support and documentation users will quickly be frustrated and switch to something other (or turn off their computer altogether). A professional software firm does not consist out of 100% programmes (I’d guess not even 50%), the same applies to FLOSS.
Community (a.k.a. Support)
Experience needed: none. Consumed time: a few minutes and any more you’re willing to invest.
The first thing you can do (and probably already have done) is to join the community in some way. At first you will do it to get some help yourself but as you continue to use any program you will be more experienced and without knowing it you will become an expert (at least in the eyes of someone who is completely new to it). Know you can help newbies, like other people helped you in the past (after all that is the purpose of a community).
You don’t have to help everyone, but once in a while when you feel, that you could really help someone with a specific problem just write him a few sentences and she/he will be very grateful.
You can join a community by subscribing to their mailing lists, registering to their forums, joining their IRC channels, contributing to their wiki (or related articles on Wikipedia itself). You can choose the method you are most comfortable with or use all.
Experience needed: some from a user point of view. Consumed time: any amount.
Documentation is very important (e.g. without a good users guide any piece of software is doomed). But software developers often have an aversion to write documentation or invest more time than absolutely necessary into them. So what you can do starts at fixing typos and misspellings and goes up to writing whole books about it (and selling them without restrictions).
Depending on the type of documentation (is it a small how-to or a whole book) and which software is used to write those, you may need some time to get acquainted with the corresponding method.
Experience needed: some from a user point of view and a little technical knowledge. Consumed time: tens of minutes up to hours.
Translating software consists of two parts:
- Translating the application itself (the user interface): In most cases you will need some technical experience to carry this out, but there’re already some projects that have web-based interfaces to translate them, where you can instantly start your work.
- Translating documentation:
- Contribute to existing translations: see above.
- Start a new translation: If you start a new translation you will have to take some responsibility to maintain it over a longer period of time. If you don’t have the time you can post that you are willing to work on it, but that you will need help (see Community).
Going from a single language program to a multilingual and multicultural piece of software is a major step for any FLOSS project. This step will enable it to compete with the proprietary world.
Experience needed: none. Consumed time: some.
So let’s say your use-it-every-day-and-need-it-to-work application crashes, again and again! What now? What you can do (or have no other choice as to do with some closed source software) is to be irritated, restart your app and hope you didn’t lose too much work. You can try to find out where the problem is, but if you don’t have the source code and freedom to look at, you will be standing before a wall at some point. With FLOSS there are no walls, and if you don’t understand want you are seeing, there are always people who do and are willing to help (see Community).
What I want so say, is that you can really beta test your app. If it crashes you can find out why and file a bug. Even if you don’t (know how to) find out why, you can file a bug (if you give enough information, so the developer can reproduce the problem!)
(This section is a second update to the original version of this article, thanks to Scott Anderson)
Experience needed: some. Consumed time: some.
Every project needs artwork. That can include everything from wallpapers, icon sets, fonts, etc up to whole themes and GUIs. Designing artwork and UIs requires some specific skills and experience, which the developer herself/himself may not have.
Experience needed: little up to professional programming skills. Consumed time: some to a lot.
Obviously you can add and improve the code. You can fork the source code and play with it. You can make changes for yourself and use them and if you feel like it you can share it with the world. You can even get paid for it: A lot of FLOSS developers are normally employed by software companies and are paid to work on what they love. You can also apply for internships with such companies. There is the Google Sommer of Code. And so on …
Experience needed: only the one you already have. Consumed time: any amount.
Besides the general purpose applications, there are specialised FLOSS projects for every profession. If you are part of that profession you can help improve those projects by giving advise (what is needed for this program to be used efficiently, is the science or theory which that program is based on correct/can it be improved, etc).
If you’re a lawyer, you can help them with legal problems (from general problems to software patent issues).
The list is endless.
Experience needed: none. Consumed time: minutes.
If someone invests their (personal) time in something, she/he always (well mostly) appreciates feedback and praise. So if you like something, thank the one who made it possible. Positive reinforcement is a great motivational factor.
See also: Thank a Dev Day
There is a lot of great FLOSS out there, but only a fraction of potential users know about it. So if you promote you favorite app, more people will use it, the (local) community grows and everyone’s happy.
Blogs & more
Write a blog entry about it. You can write about your experiences and motivations why you use it. You can write How-tos and Tutorials. You can write and enhance appropriate Wikipedia and other wiki articles. You can post a comparison/study of different programs (free and proprietary; it doesn’t matter if proprietary software is better, it will cost you more too).
If you are in the position, promote them with classic advertisements (you should probably contact the project leader before doing that).
Sponsor the project somehow. Support them so the can be at events, conventions, summits, etc.
The last and most classic method to support something is to donate money or in special cases hardware (e.g. CD/DVD burning software devs need drives and empty disks), web space (e.g. mirrors) or other things. Check the homepage of your favorite project to see what donations they accept (most likely PayPal).
One thing I like to mention is Flattr:
Flattr is a social micropayment platform that lets you show love for the things you like.
Check out the introduction video on their homepage. Essentially you can donate small amounts of money to a lot of different projects. Flattr is in no way limited to FLOSS, you can support anything and anyone: Blogs, Music, Videos, …
Any feedback to this article is appreciated. Did I forget something? Did I get something wrong? Typos? Anything! No flame wars about good vs evil FLOSS vs. non-FLOSS please.