Tuesday, November 20, 2018

How To Get Involved With Open Source Software


November 20, 2018
How To Get Involved With Open Source Software

Open Source Software!  It’s everywhere.  But how do you get involved in open source software?  It’s a question I’ve fielded often and it’s not as obvious as you think.  I got involved with the Apache Hadoop ecosystem and Apache HBase in particular when I co-founded Explorys in 2009, eventually becoming an HBase committer in 2011.  My open source experience was personally rewarding and professionally beneficial.  So this is what I tell people when they ask about getting involved in open source development:

1)         Be Greedy

“What’s the ‘best’ open source project?  What project should I get involved in?” are common questions.  The best open source project, per se, is one that you care about and are willing to spend a lot of time in.  So while there are certainly many popular open source communities, the best one for you is one that you like and one you need.  The great thing about the Apache Software Foundation, for example, is that there are a great many projects to choose from.  Pick something that interests you and that you like – so in that sense “be greedy.”  Get involved in a project that will help address your problems or interests.


2)         Learn The Open Source Ropes

Once you’ve identified a project that you’d like to get involved with, you need to learn about how Open Source software functions.

Project Organization

The Apache Software Foundation as a great description of roles here…



Contributing – Community

Open source software is community around code, not just the code.  There are multiple forms of contribution, and critical aspect is having a lively and supportive dist-list. Next to the documentation, dist-lists are often the entry-point to the community.


For starters, don’t be a jerk to new users.  Questions of the “how do I do X or Y?” can be tiresome to experienced developers, but never lose the ‘newby’ eye!  Projects that turn off new users and developers don’t thrive.

When evaluating developers to promote to ‘committer’ status, one of the things considered is how helpful they are to other developers.  How do they interact with others on the dist-list?  Are they helpful?  Do they review other people’s patches - and with constructive comments?  These small interactions matter.

Contributing - Code

While smaller projects can get away with an open repository (i.e., anyone can commit a change), most of the larger projects require a process called patch submission to submit changes – and committers are the gatekeepers for those changes.

This is an example of patch submission advice for Apache HBase…
… each project will have it’s own set of procedures.



3)         Learn About The Project

Sign up for the dist-lists, sign up for the project Jira, check out the source code, build it locally and run it.  Reviewing unit tests are a great way to understand the project.  Read the documentation! 

The great thing about open source development is you can watch it evolve in front of you.



4)         Be Greedy, Redux

What features should you develop?  It depends on what you are interested in and what you care about.  Again, be greedy.  Large projects will have code infrastructure that span multiple sub-projects, and infrastructure layers that include but are not limited to configuration, logging, monitoring, security, etc.  And then there is the business-end of whatever the project does, with plenty of unit and system tests.  Often there will be user-interfaces for variety of purposes (e.g., operational and otherwise), and of course successful projects always need copious amounts of documentation.  Open source projects are living organisms so release management is essential too.

Long story short, there is *always* something to be done.  Just pick something that matches your interests and skillsets.  All improvements, no matter how small, are forward progress for an open source project.

For my own story, I started submitting a few documentation patches for HBase and wound up co-authoring the online HBase Reference Guide for a couple of years.  HBase was nascent and the available documentation was slim because the community was both growing and moving very quickly.  As a user of HBase I had my own vested interest in making sure that HBase was as explainable as possible to my own co-workers (let alone the rest of the community), so I started submitting documentation patches.  After a couple dozen or so I was voted a committer to keep running with the Reference Guide.  It was a great match because it took a software engineer to understand the HBase codebase, but also took somebody who had an interest and skill to write things down.  It was a great fit and I enjoyed it.

Your interactions with an open source project might start small – perhaps just answering other people’s questions on a dist-list.  But everything matters!  These are all parts of an effective open source ecosystem.


5)         Spread The Word

Talk to your co-workers, do presentations for user groups, and submit conference presentations.  In short, spread the open source word!





© 2018 – Doug Meil



No comments:

Post a Comment