Motivation for Contributing to Open Source?Submitted by Keith Casey on Tue, 06/30/2009 - 04:00
On my personal site last week, I talked about Contributing to Open Source projects in a variety of ways ranging from helping with documentation to writing code to just finding and talking about the tools you find useful.
I talked about it without considering a simple question that - luckily - Dennis Crane of Dr Explain asked:
Keith, why [do] you help and contribute [to] open source projects? What's your motivation?
It's a very good question and the answer should sound familiar to quite a few people...
In ancient times (early 2001), I was leaving my first startup. Money had nearly run out and our products were nowhere near release. I joined SourceForge, took a regular job, and didn't do anything for a while. A couple years later I took another job - which I realized quickly was a dead end - and almost immediately began looking for a new job.
And that's when I discovered a huge problem... despite working on some fun and amazing projects, I had nothing to show for it because all were proprietary and some were even classified. As far as my professional career went, I had nothing to show for it. I had some stellar references and could talk (in vauge terms) about some things but I had zero code.
Therefore, at the beginning, my primary motivation was to build a portfolio.
The ability to pull out code that I wrote and show it to anyone* was the single most important and valuable thing. I can point to a number of public repositories for samples of my code. I can also point to my improvements on others' code. Both are helpful and handy to demonstrate to potential employers, customers, and even for presentations.
* "Show it to anyone" is a key point. If you're working on a proprietary project, you're taking a silly risk to "borrow" code to show to potential employers. Odds are you're breaking any IP or NDA's you have in place and could be fired if not sued. Is it worth it?
More interestingly, it goes even further. There are numerous mailing lists, forums, etc that I've participated in during my career. Each of them can be browsed and evaluated and used to back up my experience, contributions, etc. After all, most employers or customers want to know that a) I know my stuff and b) I work well with others.
But there's a second value to my employers, customers, etc.
It wasn't until two or three years ago that I noticed something else. The ideas and projects I was working on "off the clock" had nothing to do with what I was getting paid for... but at the same time it was influencing my work. This is such a common occurance that Cal Evans covers it in "The Real Profit of Moonlighting." Being exposed to new ideas, people, or even simply new solutions to existing problems caused me to think about and approach my own work differently.
If you're a developer, you should have a portfolio. If you don't the guy who can show the results of his work will get the job.
If you manage/hire developers, you should encourage them to practice their skills and explore new areas. If you don't, your competitors will.. and either hire your best people or take your customers.
And of course, this is exactly how Marco and I hunt for people to work for and with...