Dries has been commenting recently, both on his blog and elsewhere, about one of the chief advantages of using open source: All developers/users are on equal footing. If you try to learn a proprietary app or framework, you know what the main developer feels like deigning to let you know. Anything else is either a mystery or, in some cases, illegal for you to find out (if there's any encryption or copy-prevention involved). You can never be as good an expert as the author, because the author has access to the Holy Book (code) and you don't. With an open source project, everyone gets the same access to the code. The only thing stopping you from being the best expert on the planet is your own skills and time.
He's very right about why you should choose to use an open source project. But what about why you should start one, or release your own code open source? As a developer, that's a far more interesting question for me.
The answer is simple, too: I want the opportunity to show that I'm the best. Not just be the best, but put my skills to the test against others.
Let's say you're working on a project. You have some problem in front of you, and you solve it in a ridiculously cool (fast, efficient, elegant, whatever) way. You should feel proud of that. If you're working on a proprietary system, then you get a pat on the back and the marketing team takes credit for delivering something spiffy. No one ever gets to see your solution, except maybe a few colleagues at your company. You can't share the code with others to demonstrate how good you are; you can't publish it and get feedback from people who aren't on a tight deadline and don't care as long as it works; and worst of all, you don't get to use it again. You eventually move to some other company and you don't get to take the code with you. It belongs to your previous employer. In most cases no one notices how cool it is, and it withers. Your code dies.
That's so sad. :-(
But now, you write whatever it is you're writing and release it under an open source license. If it's really as cool as you think, people will take notice. You can get it peer reviewed by hundreds of people, for better or worse. You can refine it into a general solution, possibly with help. You get recognized for doing something cool. And most importantly, once it's "out there" you can keep using it if you change jobs. Sure your previous employer may hold the copyright (or a portion of it if it's had other contributors), but your name is on there as the person who actually wrote it. Because it's open source, you can keep on using it at your next company, and get your job done faster and better.
That's what makes open source so attractive.
But wait! What if you're not that cool, and your code isn't as novel as you think? Well, you won't know until you try, now will you? And even if you're not the best there is, it means you get to work with and learn from the best, because they're doing the same thing. Sharing, showing off, and truly building something that will last and out-live them.
Open source code makes a far greater legacy than a proprietary app that will die in an OS upgrade in a few years.
That's what drives me to open source, as a developer. The flexibility, the freedom to use my own work, and the legacy.
What brings you here?