I’m a firm believer in, if not practitioner of, open source software—but not for the traditional ideological reasons (beliefs about intellectual property, etc.), though I am not against those, either.
In my own experience, the big benefit of making your software open source, in the Cathedral and the Bazaar sense, is simply this: it gets you some users right away (in many cases), preventing you from falling into the all-too-common trap of starting work on a project, losing enthusiasm for it, and giving up on it.
I myself am extremely susceptible to this trap, as I am naturally something of a perfectionist. Time and time again, I do some work on a project, with the intention of eventually making it open source, only to ultimately abandon it because it doesn’t meet my self-imposed quality standards. The problem is that I’m not comfortable releasing it in its current state. But that’s exactly what sharing your software with the world is supposed to address! The more people who can see, tinker with, and use your code, the faster (in theory) you’ll be not only able but motivated to work on it yourself.
Just looking at the dozen or so public and private projects I have on BitBucket (that’s right, I have private projects on there—so what?), it is immediately obvious to me that simply having users makes a huge difference when it comes to actually keeping motivated to work on a project. That app I built for my wife already has a whole bunch of commits and three versions, each with enhancements and fixes.
I’m thinking that the next project I start, I will announce right away and make open source immediately. If only so that I can get a couple of users to ensure that it isn’t dead on arrival.