Recently, I was looking for a new job. I had many interviews with different people, from HR managers to project leaders and engineers. Since I had put on my resume that I'm working on TortoiseSVN, most of them asked me why I would spend my time working on something like that, knowing that I would never make any money out of it.
So I thought I should write down my reasons why I work on an open source project. Maybe I won't have to answer that same question over and over again :)
Everybody needs a hobby. And so do I. Before I started working on TortoiseSVN, I was watching way too much tv and was still bored most of the time. But now, I'm rarely bored and I know I have something usefull to do when I get home from work.
Other people spend a lot of money on their hobby. My hobby doesn't cost me anything I wouldn't have to pay for anyway, i.e. internet access and a computer.
It's nice to see how there's a community forming around the project, with different people from all over the world taking part in discussions on the mailing list. Like in real life, the discussions there can be constructive, funny, informative or sometimes even heated. And I get a lot of feedback on how to improve the UI or the application itself. Sure, sometimes I have to decline a request, but most users understand my reasons for doing so.
I've never had a job where I got appreciation from my boss or coworkers for my work. After all, I get paid for it and it is expected of me to give my best, which of course I try to do. While I fully understand this, it still is nice to hear sometimes that I'm doing a good job (and from what I've heard, there are bosses out there who know that - I just never worked for such a guy myself).
When I work on TortoiseSVN, I often get mails from users telling me that they like what I do. Sure, I can't buy anything from such mails, but I don't have to. It's enough to know that others appreciate my work. I'm a really self critique person, and without such mails I think I would get really depressed.
And let's not forget about all those people who sent me a CD/DVD or some money. They don't have to do it, after all the program is free. But they do it anyway! And that's maybe the most compelling reason for me to keep working on the project. It really tells me that I'm doing something good.
If you browse through the mailing list posts, you will find a lot of mails from users asking for new features and improvements. While such mails keep me busy and the project alive, it also helps me improve my skills. Sometimes when a feature is requested, I don't know how to implement it. Then we discuss the problem further on the list, and ideas on how to do it show up. And I also have to read up about new libraries, Windows API functions or simply new ways of doing things. And of course I also learned a lot about organizing a project, how to keep deal with people (I admit that I still have a lot to learn in that area) or just how to avoid a mess with all the mails I get. I've certainly learned a lot since I started working on this project.
I mentioned at the beginning that the people interviewing me for the new job wanted to know why I would work for free. I think they could answer part of that question themselves. Because all of them (apart from one - but that company didn't have internet access for their employees!) checked out the sourcecode to see how I work, and some of them also browsed the mailing list archives to learn about how I deal with problems and people. I don't think I would have had that many interviews without me working on this project. It's a great way to show the world what you can do and how you do it.