I love open source projects. I love the way that some people are willing to give their time and effort selflessly to help others. I love how there are so many open source projects out there which makes my life easier on a daily basis. I cannot speak for other industries with much authority, but I think the software development industry is pretty unique in that way - that people give so selflessly to others. I also think part of what drives people to work on these projects is the pure enjoyment which they derive from coding. That enjoyment when you create something. I am also sure that even the most motivated open source project owner or coder has days however in which they feel despondent and not sure why exactly they are doing all of it for ungrateful and demanding users.
Hare are 7 ways in which you can contribute which will make those days in bit more bearable:
This is probably the number one way to help out. Do you see a bug which is not getting fixed or are you looking for a feature which no one seems to be going to develop any time soon? Well, jump in and do it yourself. Every .NET developer’s favourite blogger, Scott Hanselman, has written a very nice blog post more than a year ago which outlines exactly how to contribute to a project. The official Github documentation also outlines how to fork a repo.
Most open source repositories these days seem to be hosted on Github, so you will most probably need some skills using Git and Github, if you don’t have it already. Here are a few resources to get you going:
Something which seems to be lacking fairly often in open source projects is good documentation. I am yet to meet a software developer who actually enjoys writing documentation, so this often gets overlooked. There have been many times when I have stumbled across an open source project which looks absolutely amazing, but due to a complete lack of documentation I would find it almost impossible to figure out how to use it. Luckily there usually seems to be some demo project or unit tests which assists in figuring out how to use the project.
So here is the opportunity for you. Once you have gone through the effort to figure out how to use the open source project, why not go that extra step and document it for future users. Once again Github provides a very nice solution to this: the Wiki. Unfortunately the whole fork and pull request workflow does not work for Wiki pages, so you will need to request to be added as a collaborator on the main Github project, which will then give you access to edit the Wiki pages directly.
If that process sounds to convoluted (or the project owner is reluctant to add you as a collaborator) you can always host the documentation yourself, which brings me to the next point…
Everybody loves a good tutorial (I think). So you have spent all this time figuring out how to use your favourite open source library, go ahead and write a tutorial. Even better - write an entire series of tutorials covering the various aspects of the project. The added bonus is that it drives traffic to your own blog which brings you some nice exposure. A while back I write a tutorial series on using Fluent Validation. The amount of traffic which was generated to my blog just because of those 4 articles is astonishing. Well my standards are pretty low when it comes to web traffic, so bigger bloggers may find it laughable, but still - it is many thousands of page views which I would not have had otherwise.
Once you have written the tutorial series you can ask the the project owners to add a link to your tutorial from the project Wiki or add it into the readme file of the project. I am sure they will be more than happy to get exposure for their project and will find this request reasonable.
There is no denying the impact a set of good tutorials have on the usability of an open source project. For my own software, One Love, I was falling around between a number of open source, cross platform MVVM projects. In the end I went with MvvmCross. The deciding factor for me? Stuart’s amazing N+1 days of MvvmCross tutorial series.
The more popular an open source becomes, the more support questions there are to field. Most open source contributors have day jobs and only get time to work on the open source projects in the evening or on weekends. They would very much like to spend this time writing code, so having to field support questions takes away from the time they can work on new features or fix bugs. Demis Bellot, the main contributor on Service Stack went through this exact situation recently.
Find out what the official support channels are for your favourite open source project and start lending a hand. I will alleviate a lot of the pressure from the project owners and those who contribute source code.
You use an open source project. You use it in your own projects. You love it. Now go and tell the world about it. Mention it to other people in conversation. Tweet about it. Blog about it. Just help get the word out and make the project more popular.
As stated earlier most open source contributors do it for the love of it. Some projects do however accept donations, so if it is in your ability to give a donation please do so.
I have also noticed some open source projects picking up corporate sponsors which also improves the long term sustainability of the project. Last year September Fiddler joined the Telerik family and Glimpse was taken in by Red Gate and ever since then both projects have made major leaps forward. This can of course go very wrong as well. Anyone remember the .NET Reflector fiasco?
So if you are a company, how about spending some of those marketing dollars towards sponsoring an open source project? It will not only buy you publicity, but also a lot of goodwill.
I all else fails at least send a simple message of thanks to the people who work on the project. Maybe it is late at night and they are questioning why it is exactly that they are doing this. Your email or tweet showing genuine appreciation for their efforts may just be the thing which they need at that specific point in time.
If you have any other ideas on how to contribute, please share them below in the comments.