People sometimes ask me why I write open source software in my spare time without being paid for it. It’s an interesting question that I sometimes also ask myself. There are quite a few reasons and I thought I’d describe some that probably also apply to many other open source developers. The following is a list of potential benefits of participating in an open source project as a programmer, designer, writer, community builder, community support or similar roles.
1. Acquire New technology Skills
Is there a programming language or library you’ve been wanting to learn but is considered too leading edge to use in your day job. You could either start an open source project or join an existing project that uses the technology. You’ll learn the technology better by applying it to real problems instead of just reading a book and studying simple examples.
2. Develop Project Management Skills
OK, so you aren’t really interested in being a point-haired project manager. However, when I say "project management" I’m talking about organizational skills that can apply to any type of project — from home improvement to organizing your next vacation. Starting a new open source project will generally provide the most skill improvement in this area, but it’s also possible to learn a lot about project management by supporting existing open source project leaders.
3. Improve Your Leadership Skills.
This is similar to project management skills, but not quite the same. Managing a project and leading a project are different. Often, you or a small group people will be the primary keeper of the project vision but you must allow an encourage participation from the entire project team and user community. There will be many potentially difficult decisions about tradeoffs between cool new features, delivery schedules, product quality, and overall product direction. If you successfully build a user community, you’ll find many of these users ask for (or practically demand) features that aren’t consistent with the project vision. These decisions are seldom clearly right or wrong, and you must learn how to make them wisely and be flexible enough to adjust the project direction when a decision doesn’t work out.
4. Develop Discipline
In another post I discussed the time management challenges of working on open source software. These challenges and the unforced and voluntary nature of open source work will require you to develop the discipline to maintain focus over a long period of time despite constant interruptions. This ability to focus can be valuable in many other areas of life.
5. Give Something Back.
Many people (including myself) enjoy writing open source software because we have benefited so much from other free software that we want to reciprocate. Richard Gabriel writes about this idea in his paper "Mob Software: The Erotic Life of Code".
To understand what the open source and mob software movements are trying to do, it helps to make a distinction between a commodity economy, to which we are accustomed in a capitalist society, and a gift economy. In a gift economy, gifts are exchanged, forming a bond based on mutual obligation: In the simplest form of gift exchange, when one person gives a gift to another, the receiver becomes obligated to the giver, but not in a purely mercenary way—rather, the recipient becomes very much like a member of the giver’s family where mutual obligations are many, varied, and long lasting.— Richard Gabriel
6. Participate in a Community.
Maybe you are more ambitious than just wanting to learn a new technology. You want to contribute somehow to the overall development of a community of programmers and users interested in some specific topic. You have the opportunity on an open source project with a wide range of potential roles include programming, design or documentation.
7. Improve People’s Lives.
It can be a great feeling to know that you are making a direct positive impact on people’s lives by providing them with something of value. This feeling is often missing at a day job because it can be unclear who, if anybody, will benefit from the work we do.
8. Have Fun.
If you love programming, it can be a lot of fun. Sometimes I think of programming being like solving a puzzle game. You can invest great quantities of time in playing computer games or you can invest that time "playing the software development game" and reap many of the other benefits described in this article.
9. Become Rich and Famous.
This is relatively rare, but participation in an open source project can lead to becoming relatively well known with certain circles of people, even if not world famous (which has also happened in a few cases). The software development global community is surprisingly connected. When you start meeting people for the first time who already know you by name because of your open source project, your jaw will drop. Wealth is less likely even than fame, but it does happen. The JBoss Group’s recent acquisition is just one example. However, it’s more likely that your open source experience will lead to increased wealth through higher income or opportunities to start new businesses.
10. Expand Your Social Network.
Working on an open source project can be a good way to build social networks with knowledgeable and potentially influential people. Whether you are looking for a job or just wanting to have access to experts when difficult problems arise, this social network can be very valuable.
11. Improve Your "Day Job" Performance
It’s easy to see how improved discipline and skills in technology, project management, and leadership will set you apart from the crowd and help you earn a reputation and someone who can get things done. This is a good strategy for increased promotion and compensation opportunities.
12. Improve Your "Market Value".
Even if your current employer doesn’t appreciate the amazing new skills you’ve developed as an open source project developer, other companies will appreciate it. It’s not unusual to receive unsolicited job offers directly related to open source work.
What are some other benefits you’ve experienced from working on open source projects?