Stefan Ruijsenaars Blog Drupal Linkedin Twitter Goodreads

Why you should contribute to open source too

The average fully employed developer spends more than 6 hours every week working on open source, side projects, or hobby projects:

stats

stats

So why do so many people work for free, in their spare time – on top of their studies and full-time jobs, essentially taking on a second job?

Personally I’ve invested a large part of my life into open source – partly out of altruism, partly because my current job requires me to, and partly for more selfish reasons. (My current main commitments are the Drupal security team, Drupal core maintenance as a core committer, and maintaining some 30+ contrib modules.)

This article is for those of you who are still on the fence about getting involved with a major open source project. And whether you’re just starting out or very established already, many open source projects desperately need your help!

Everyone has their own story about why they contribute, but the following themes tend to always come back:

Fun

The one thing all contributors rave about is how incredibly fun and inspiring getting involved with these communities is. These sheer scale of them is impressive – some of the larger open source communities (Mozilla, Drupal) have hundreds of thousands of people contributing. You’ll get to meet some amazingly smart, interesting, and passionate people (and make friends with them!) I have met some fantastic people and made some life-long friends at conferences, and contributing has made me learn and grow in many ways. For me personally, working with these super smart people is definitely the main motivation.

Many people (including myself) love the sense of community and the sense of accomplishment from working with others towards a shared goal by serving an effort they believe in. And for those of you who have boring day jobs, or who are the senior dev on a team and don’t get to work with more advanced developers much themselves, these projects are a great way to make programming fun again.

Achievement

If you’re achievement-oriented, you’re in for a good time as well – in any major project, there are many interesting problems to solve and big and important tasks to tackle, many of which are absolutely within reach with a bit of effort (it’s incredibly satisfying to make an impact like that).

Open source is a do-ocracy, so if you’re any good, you will be identified, and if what you want is ownership and responsibility, you’ll be given more than you know what to do with –I’ve seen many contributors make meteoric rises (in months rather than years).

If what you want is to showcase your skills, open source is a fantastic medium to break out and become known in the community.

And for anyone who is merely dabbling in open source and has the time and inclination to step up and take on more important work, but is too intimidated to approach major contributors: don’t be! These are people who are super happy to help if they see you step up and deliver good work.

Learning and mentorship

Open source communities are great places to work on your skills and pick up some great mentors that can supercharge your development. Main contributors to larger projects are invariably super impressive and happy to help out.

You will truly get to “learn from the best” – which is a great opportunity if you don’t get to work with many great developers in your day job. You get to see how experienced developers work, approach problems, and code up and discuss solutions. More importantly, a whole army of programmers will be looking over your code and provide reviews and feedback, which is invaluable to beginning programmers.

As you grow more established, you’ll also get to teach people yourself, which is also incredibly satisfying.

Career reasons

“If you can grow into a recognized position in an open source project, that puts you ten steps ahead of applications even from folks with 20 years experience in the field” – Matt Mullenweg, CEO of Automattic

For those just starting out, and perhaps looking for their first job after a boot camp, or after college, open source is a great place for picking up (and improving) real-life professional and technical skills. Your code will typically be subject to rigorous quality control; more so than in many professional settings. Open source projects are the real deal – you will learn more about programming and working in a team than in school.

These are also great places to showcase your skills to potential employers. If you have some impressive open source contributions, you will immediately be in good graces with open-source-friendly companies. Personally, whenever I evaluate job candidates, this is always an immediate plus and definitely makes a candidate stand out.

And those people you get to meet on IRC and at meetups/conferences will help you find jobs!

And as you gain further prominence, opportunities will be thrown your way automatically (jobs, co-authoring a book).

Giving back

Many people also contribute to these projects because they use them, because they love the open source idea, out of pure altruism, and because they love the sense of purpose it gives them.

There is also a great sense of pride and satisfaction in receiving praise and gratitude for your contributions – or even just getting the personal credit and feeling the direct impact of the work.

So where should I start?

“Every good work of software starts by scratching a developer’s personal itch.” - ESR

While you could just pick a random beginner-friendly project that you only have a bit of interest in, my suggestion would be to pick a project you are intimately familiar with and that scratches your itch as well. In the end working on something that matters to you will be a better motivation than any other. And having a good understanding of all the use cases and pains is also a bit of a prerequisite for doing more important work.

Ideally you contribute a feature that you need yourself, or a fix to some bug that is bothering you. For me, I made my first major contribution back when I used Linux (lfs!) and my favorite media player was MPlayer. I used often used the command line player to watch videos and was bothered by the lack of any visual feedback on what the current position of the playback was while fast-forwarding. So I added a progress bar to the On-Screen Display (for purely selfish reasons) and sent the patch to their mailing list. Only a few revisions later, it was merged into their codebase, which to my 15-year-old self felt like a tremendous accomplishment!

osd Progress bars!

If you don’t know where to start, start with easier tasks – write docs, write unit tests, write good bug reports, help with bug triage, review existing patches.

Most of the larger open source projects have very clear documentation on how to get involved, so look for that! These days, with GitHub it’s easier than ever to at least submit a pull request.

So get out there and contribute!

Contributing to open source has been great for me on a personal and a professional level, and I would highly recommend any developer to get into it as well. Getting started can be rough, and while after the first few contributions it gets much easier, overall it’s still not easy. Be prepared for code not to be committed, for it to be ripped to shreds, for abuse, for politics, and for plenty of BS. It needs a certain personality type. The best contributors tend to be self-motivated, disciplined, persuasive, proactive and truly relentless.

And don’t just engage in GitHub/IRC – go to conferences/meetups and talk to contributors about gettting involved more deeply! Ask about their motivations, find out what they get out their involvement, because they are the best testament to what immense personal benefits people get out of contributing to open source.