I was recently approached by a student I mentored a couple years ago. He’s been doing some job shopping and asked for some advice on how to get involved with open source and be successful at it. At first I thought, I’m naive what the heck do I know… I was shooting for a simple answer but after a few minutes of thinking about it I was a bit lost what to say. I rather not offer some trite advice and leave the guy with nothing practical. After spending some time over the weekend thinking about it, I started writing and came up with this short bit of advice…
Find your passion. Contribute to it. Brand yourself.
What do I mean about finding your passion? There are a ton of open source projects out there that span all sorts of topics. Find open source projects that truly interest you and are exciting. If you don’t, you’ll soon find yourself distracted with other things. Someone once said that, “Nothing great in the world has been accomplished without passion.” Also note that the majority of open source communities are meritocracies and to build a repertoire with them takes time. If you really want to get involved with an open source project and potentially become a committer you need to dedicate some time. So that being said, there’s some practical things we can do to help your passion to get involved with open source.
Find the Right Open Source Projects
Like I mentioned before, find open source projects that interest you. There are a lot of forges out there you can browse for interesting work, like SF.net or GitHub. However, I recommend that you take a look at the list of mentoring organizations from the Google Summer of Code (GSOC) program. These organizations have already been vetted by the GSOC organizers and are of a higher quality than other open source projects out there. They also tend to be more welcoming to new contributors which brings me to my next point about mentors.
Mentors, Mentors, Mentors
I believe mentoring is crucial to your success in becoming involved with an open source project. Without a mentor, you will waste time learning the ropes of the project. There are a lot (but not many) of open source projects out there that have formal mentoring programs. For example, the Fedora project has a program where you can find mentors. The Eclipse project also has a specific place contributors can go if they are seeking some mentorship. Another approach that worked for me a long time ago was simple emailing a project leader and asking him if they were willing to mentor me. Sure some people will say no, but you’ll be surprised on how many people say yes. Oddly enough, this is how I got involved with Eclipse.org but that’s another story.
If you qualify as a student, I think the Google Summer of Code program is one of the best ways to get involved with open source. I have mentored students the past few years with GSOC for Eclipse.org and have seen some amazing things happening. I’ve seen students evolve from open source contributors to full-fledged developers. I have even seen a couple students find open source related jobs due to their involvement in the program.
Many open source projects are meritocracies. In order to get involved, you have to contribute and build your repertoire. So simply do the work in finding some bugs you can fix. This is hopefully where your mentor can come in and point you to some low hanging fruit to get you started. Since I’m a software guy, I have a tendency to focus on programmers but there are many ways to contribute to open source outside of code. For example, documentation and testing are ways you can get involved with open source. For example, I think the Fedora project does a good job in highlighting the different avenues you can contribute to the project based on your skillset and desires.
If you’re into books, I can recommend Karl Fogel’s Producing Open Source Software as a good read. It’s a little outdated in my opinion, but can give you some insight on how a lot of open source projects operate. It may also be useful to you if you start an open source project in the future of your own.
I also recommend getting an Ohloh.net account so you can track your code contributions. For example, I’m able to look at my Ohloh account and remember the good ol’ days when I actually contributed to Gentoo Linux.
This may be odd to hear for developers, but you are a brand and you should control your image. In open source land, things are done in the open so we have to be mindful about that. Avoid negativity at all costs and kill people with kindness. Be critical without being negative, it’s possible. Also, if no one can find you, how can you expect to be successful in an environment that is all about being open? So I recommend getting yourself a website, a blog and a Twitter account. These things will help with visibility and will also get you in the mindset of doing things in the open. It will also allow you to share your expertise in the areas that you’re passionate about it. When you’re comfortable, I would also exude confidence but wouldn’t over do it.
I would also recommend getting a slideshare account if you’re giving talks at conferences. I use it as a dumping ground for all my presentations in the hopes that people may find them useful.
In the end, the point is that you have to understand you’re a brand and if you want to help your career, you should be findable. Also in terms of career advice, I say that you should brand yourself for the career you want, not the job you currently have.
Networking is one of the most important things you can do for yourself and your career. If you can, attend conferences (including other type of meetups) and meet the people you have been working with (or want to work with) in a face-to-face environment. There’s no better way to connect to folks than sharing a frosty beverage and chatting it up.
On top of conferences, do yourself a favor and get a LinkedIn account. This will help you establish a professional network and also may help you land a open source related job in the future if that’s what you want.
In the end, my advice is to build a network via conferences and online interactions.
Well, that’s all I have for my brain dump about getting involved with open source and being successful. I really just kept writing and put what sprang into my mind, so sorry if it’s a bit hectic. In the end, I think it’s all about finding the right open source community to act as an outlet for your passion. Anyways, I hope people find it useful as I’m not sure what other advice to really give. What do other people think? What helped you get involved with open source? What could have done better? What helped you become successful?