My first contributions to Open Source software happened back in year 2000. The italian translation of the Bash Programming Introduction HowTo and edx, a bash one-liner to better manage my
Year 2000. I mean, edx was hosted at FreshMeat.net which doesn’t even exist anymore.
By the way, when I started to feel the need of giving back to the Open Source movement I had to do a lot of work.
And I enjoyed it, but listen to me now: I gave back to the community far more in the last two years and a half than in my whole career (counting out being in the development team of Entando, of course).
And the reason is GitHub and its killer feature: pull requests.
Pull requests are actually a
git feature, but what makes of GitHub’s own implementation a winner is the amazingly low barrier to entry via the web interface.
For those who don’t know how pull requests work, here’s a summary:
- you find something you can fix
- you fix it and submit a pull request
- a maintainer reviews it and if it’s good, she merges your fix
Of course there’s more, but you get the idea.
A pull request is an ongoing conversation
The maintainer could not accept your submitted patch, and close the pull request without merging it. But merged or closed, it doesn’t really matter.
What does matter is that a pull request is an ongoing conversation about a part of a software. Participants in this conversation can comment, debate, learn, teach.
That’s the revolutionary facet of GitHub, and why its first tagline was “Social Coding”.
Pull requests are so awesome and important that even Github uses them to build GitHub!
As with every conversation, patience and respect for others are fundamental.
It is better to start at a low pace: while you are taking a look at the repositories of your favorite projects, it’s likely for you to notice some small typos in the READMEs or in the more comprehensive documentation.
A sentence which could benefit from a little rephrasing, perhaps.
That’s the best start for you. The devil is in the details, and typos can happen to everyone.
Two clicks on GitHub, and you are giving back to the community!
The unknown is there to be known
Another side-effect of the near-zero barrier to entry provided by GitHub’s implementation of pull requests is that if you need something fixed, and you don’t know how to fix it yet, you can solely focus on trying to do it because the other part of the problem (getting it to the maintainer) is already streamlined and solved.
On 2011-11-11, while Steam was downloading Skyrim, I submitted a pull request to the tomcat-maven-plugin.
I’m not a Java developer, but I work in a Java development environment and I needed that feature to work.
So I was like: “Hey! Getting it to the maintainer is so easy that I should really try and see if I can fix it myself!”
The patch ended up not being merged, but my self-confidence grew a bit, I learned a lot, and the maintainer followed up fixing the feature.
Scratch your own itches I
But the best way to give back is to actually try to contribute to something you use and can really understand.
Some time ago, I used an amazing little jQuery plugin from Zach Leatherman.
The jQuery Gravatar plugin makes it pretty easy to retrieve a gravatar image dynamically from any e-mail address.
One thing I needed, was to add a class to the
img element containing the gravatar in the same elegant way used in the rest of the plugin without adding jQuery spaghetti code.
No sooner said than done, I submitted the pull request, had a brief conversation with Zach, and closed the day with a merged pull request and some positive karma in my life.
Scratch your own itches II
The last example I’d like to share, is also the dearest to me.
Six months ago, I was working at a pet project and I needed an off canvas. You know, those sidebars coming from outside the viewport while pushing the rest out of sight. Just like the Facebook iOS app.
I started to look around for solutions, and I found a beautiful implementation by Brad Frost.
I already had started to dig into Bootstrap 3, so I decided to try to code my own off canvas inspired by the one by Brad Frost and in a few days I opened the pull request.
Months passed, great and humbling feedback came from mdo and fat, the work went on, the pull request was closed and I opened a new one based on a different approach.
I had a great time, learned a lot, and finally - to my greatest joy - the pull request was merged into the codebase of Bootstrap 3 with a much deserved refining intervention by mdo.
Giving back for fun and profit
Yep. I gave back, contributing to some projects I was interested in and I had so much fun in the process.
What about the profit? I learned, and learned, and learned.
The exact type of profit I’m always looking for.