For a long time, I had a vague feeling that I should be doing something for open source software. In some sense, open source is a very meaningful thing, and I would feel a little guilty for not doing enough.
I used to tell myself things like:
- Julia, open source software is amazing!
- Hmm, I must contribute to open source projects.
- Which project? Uh, I don’t know.
- I use Pidgin! I think so.
- Go check out the Pidgin project
- So many issues! I don’t even know where to start.
- It’s written in C! So much code! What should I do!
- Give up feeling guilty.
I try not to feel guilty anymore. Now, if I want to participate in an open source project, I need some kind of motivation. Mel Chua gave a great talk at Hacker School, where she said that motivation is made up of competence (knowing how to do it!), autonomy (making your own decisions!), and relatedness (knowing why you’re doing it!).

Open source projects offer a lot of autonomy–almost no one will force you to do anything. What’s often missing is relatedness and competence.
Regarding relatedness, I ask myself:
“What do I hope to get out of participating in this project?”
- I want to understand how this project works! (For this reason, participating in the Linux project would be super interesting! Operating systems are amazing! I learned a lot through the gunzip in julia project.)
- I found a bug and want to fix it! I want to add a feature!
- I want to gain some programming work experience to find a better job!
- I think this project achieves something very important and I want to improve it! (Kelsey Gilmore-Innis’s Anti-Eviction Mapping Project is a great example.)
- I enjoy interacting with the people involved in this project! (When I attended Drupal conferences, I found the Drupal developers to be really lovely people, and that drew me into participating in the Drupal project.)
Regarding competence, I ask:
“Is there anything that would prevent me from getting the work done?”
- Do I understand the language used by the project? Is that language easy to learn?
- Can I easily set up a development environment on my own computer?
- How complex is the codebase? Is the project doable? Is the documentation complete?
- If I don’t understand something, can I find answers on the community forum? Are there many trolls on the forum? Are the mailing list addresses all valid?
When I Won’t Participate
Usually, it’s relatedness that prevents me from participating in an open source project–I don’t know what I would get out of it! The Drupal project is a good example of this. Drupal is a very important project. I used to participate in it! I could participate again! The community forum is very friendly! But now, for me, there’s no relatedness anymore–I no longer develop websites.
Most of the time, it’s a lack of relatedness that keeps me from getting involved in an open source project–if I don’t use something, I currently wouldn’t want to learn about it, I don’t know anyone working on it, and I don’t strongly feel it’s useful, so I wouldn’t want to participate! That’s totally fine. There are countless other people contributing to these projects! One less person like me doesn’t make a difference =)
An example of lacking competence is the Pidgin project I mentioned earlier–the chat client had some issues, and I wanted to fix them, but it was too difficult for me at the time.
When I Will Participate
Here are the open source projects I’ve participated in, and why:
- The IPython project–because I wanted to add a feature it didn’t have! And then it had that feature! I merged a performance requirement into IPython, and it turned out really cool.
- This pandas cookbook project–because when I wanted to learn pandas, there wasn’t as much practical material as I needed! Another reason! Once I wrote something, others could learn pandas more easily! Perfect.
- The gzip in julia project–used to learn how gzip works. Now I know! Fantastic. Contributing to open source projects is a super fun thing to do! Yay!
Don’t Feel Guilty
There are many things you can do. If you spend over thirty hours in three weeks fixing a network card issue, that might be worthwhile, because you’ll learn a lot and your hardware will work better! Or maybe you’d rather spend that time with family and friends, or volunteering, or playing soccer, or watching movies, or earning rent money.
Sometimes I hear people say “You must develop open source software!”, as if it’s some kind of “universal good”. Don’t feel guilty. If it doesn’t make sense to you, don’t do it! Only do it if you know what you’ll gain and feel it’s worth your time! Otherwise, do something else!
Lukas Eder is a full-time developer on the open source project jOOQ. Here is his comment on Julia Evans’ article:
I’m a full-time Open Source developer (for jOOQ), and I get a lot of requests from people who would like to contribute. They’re often asking where they can start, how they should proceed, etc.
Then, I never hear from them again 🙂
I think that your categorisation makes a lot of sense. The lack of relatedness is something that many people underestimate in search of The Cool. In our case, working on jOOQ means loving SQL and programming languages to the max. This can get quite boring and frustrating if there isn’t a concrete problem with a concrete database at hand.
In the end of the day, merely contributing to Open Source is much like being a customer of any other (even non-software) product. People also contribute to – say – Microsoft, to help them improve their operating system, or MS Office. It just feels great to be heard, as a customer. But since Microsoft sells commercial software, people don’t make the mistake of trying to contribute withoutrelatedness. So maybe, we should start seeing Open Source more like commercial software in general.
Original article: Julia Evans Translation: Jobbole Online – Jobbole Online Reader
Translated article link: http://blog.jobbole.com/66610/
This article’s address: http://linux.cn/article-2952-1.html