Years ago I wrote a piece regarding my experiences writing Open Source software. At the time I had written 3 small projects (Json-lib, EZMorph, and JSTester) for a little more than 6 months. The following paragraphs show what I was feeling back then about the whole experience.
As some of you may have noticed, during the past two months I've been posting news of two open source projects I've been working on. Little did I know the kind of experience I was getting into.
For the most part of my career, I've been a user of many OS projects, and occasionally I posted a question on a forum, I have developed tools and frameworks for in-house use, where the team is no greater than 15 people, where the constraints on the code can easily be managed. If someone in the team was using the tool in the wrong manner it was very easy to help him (same culture, same language, same objectives), if another one needed a bug fix or a quick feature, it usually was added painlessly.
The thing with OS projects is very different. You don't know how many people are going to use it, and in which ways. When I started Json-lib I simply needed a way to export a Java object to JSON in a Spring MVC View and then decided to post it as a OS project. As days passed, I started to get feedback from people I've never expected to interact with, from the far corners of the world, some were using the library for reasons I did not foresee and some were stuck with a feature (sometimes bug) that I didn't think of. Now I know firsthand how is to be on the other side: receiving messages, balancing features, keeping backward compatibility when possible, making announcements; all I can say is that it is a great experience.
Looking at the numbers of Json-lib, the user base is not 15 people, right now it is more than a thousand. A thousand different ways to use the tool, a thousand feedback messages, imagine next week. It is a great responsibility but is totally worth, you are helping others and at the same time you are improving your skills, and not just the technical ones, the social ones too. Being able to give back to the community some of the goodness I have taken from it is also a very Good Thing.
In conclusion, for those that have walked this path before, many many thanks for all the tools, frameworks, articles, forum messages and your time. For those that want to give back to the community, don't hesitate and start today, and for those that are still in the user stage, may someday you make the switch and take the opportunity to become an OS developer, you wont regret it.
The date was August 2006. Fast forward 10 years later my sentiments regarding Open Source remain the same. I'm glad I've given myself the opportunity to embrace Open Source development. It has given me the means to learn new skills, meet interesting people all over the world, make new friends, but above all have fun while writing code.
Of the many interesting things that have happened since I began writing Open Source I must say that joining and promoting Hackergarten has been one of the most rewarding experiences. A Hackergarten meeting usually runs like this:
- We brainstorm ideas based on features, bugs, patches we'd like to work on.
- We vote on the ideas to figure out the size of each group.
- Once the groups are formed we start having fun by hacking on some code.
- Pizza, beverages (beer!), chips and other snacks are always close by.
- At the end of the session we round up the contribution and make a patch or send a pull request.
Running a Hackergarten during a conference turns out to be a different story, as attendees usually rush from one room to the other in order to catch the next session, there's not much time to sit down and hack. This is when Hackergarten functions as a networking hub. Of course there's always someone that just wants to hack some code and we're more than happy to oblige.
One of my most cherished Hackergarten experiences at a conference happened 2 years ago at JMaghreb 3.0 (now known as Devoxx Morocco). The attendees were very eager to join the Hackergarten and make some contributions, however they didn't know where to start. Only a few had previous working experience with Git and none had a GitHub account. Instead of calling it quits attendees switched to padawan mode and boy did we have fun that day. In about 4 hours we covered Git basics; setting up a POSIX environment (most had Windows installed) with either Cygwin or Babun; flew through a quick introduction to the Groovy language and the Gradle plugin system. In the end the three teams pushed a contribution to three different Gradle plugin projects. All of them were very happy about the experience, seeing that contributing to Open Source is not as hard as one would think.
This was a great experience because even though all of us came from a different cultural background and spoke different natural languages we still managed to find a common ground: a passion to learn and contribute back to the community.
Here I go again and thank everyone that has contributed in one way or another to an Open Source project. If you haven't taken the plunge yet, don't worry there are many opportunities out there, like Hackergarten.
Keep on Groovying!