In conversing with a somewhat disillusioned Open Source developer, one of the major downsides to Open Source development has crystallized for me. As a developer, Open Source projects have the extreme luxury of being only what I (the developer) make of it. If I get bored, I can move on. If I want to re-write it, I do so. It’s a great property if you’re only doing it for a hobby, but once it carries over into what you do professionally it can be quite damaging.
Typical Open Source development doesn’t enforce discipline. There are no product managers looking over your shoulder to ensure you are meeting requirements. There are no deadlines to meet or customers to satisfy (yes, you can ignore the users if you so desire!). It’s just a project for me, by me. It’s mostly about my passion for solving a problem. This passion, however, causes problems when you start to realize that development outside your happy little world is mostly devoid of passion. Without some discipline about development, it’s easy to shrug and decide that software development is really sorta boring and not worth the politics/grunt-work that most commercial development encompasses.
Put another way, I suppose that any development where the only constraint is a problem (i.e. not customers, profitability, etc.) is a bit like having a diet of only chocolate. The problem solving is “sweet” and satisfies a craving, but it doesn’t actually nourish and build up a better developer.
I want to be a better developer. My suspicion is that the “best” developers are those who pragmatically strive to deliver meaningful software to the people who need it. More than likely, those sort of developers are not forged in the passionate fires of Open Source (or Free, if you must) development projects. They’re likely people made by poor requirements, hard deadlines and ugly architectures in a commercial setting.
With all of this said, you might think that I’m down on Open Source — I’m not. I just fear that the emphasis on Open Source will “corrupt” up and coming developers and cause them to be disillusioned when they actually have to exercise their craft in an environment where it’s not about passion.
A secondary concern is that the overall number of Open Source projects will diminish as an increasing population of developers become disillusioned. Or more realistically, major projects that are in progress will flounder without developers who are willing to make hard decisions to finish or release the software so people can actually use it. I suppose that last sentence flies in the face of these projects being about passion only. However, there are several major projects out there who purport to be Open Source for the purposes of passion but have yet to deliver anything meaningful to the outside world — primarily due to a lack of internal developer discipline (IMHO, of course).