Open Source. It's one of those things that seems to be synonymous with "free".
While open source may be free (and thus making it easier to convince the boss to use it since you don't have to fill out a requisition form or PO) does it also mean quality?
I've been developing software on the IBM i for over 20 years now. I started out with open source, went back to closed source, tried open source again, and finally decided that open source just wasn't for me. Why?
I Needed to Make a Living
In the days where I was trying open source vs closed source I also worked a full time job. But, there came a time where my extra curricular activities and my full time job left me almost no time for family and friends. That is when I decided to go out on my own.
Now, with that full time job out of the way I could really focus on what I loved, and that was creating utilities for the IBM i (back then the AS/400).
Many had no problems using the utilities I created, but very few clicked on the PayPal button to pay the suggested few bucks. Even less (virtually none) assisted in making the product better, or providing support for it (unless you count improvement and enhancement suggestions, which I now view as one of the most valuable resources I get from customers).
So, I decided then and there that I would go closed source with license keys. It was really the only way that I could make a living and earn money from my software as well as provide a product I was confident with. And it's not like I was (or still am) charging an arm and a leg either.
I Wanted Time Away from the Computer
This was because I was spending hours upon hours helping users of my software with basic support.
This was back when only a few hundred were using the software. What would happen if thousands or more started using it. I couldn't bear the thought!
Now, some support I didn't mind (and that's how FAQs are born and documentation is enhanced).
But, when it came to supporting open source that had been modified by the user, or the user before them? It was like finding a needle in a haystack.
When you increase the complexity of the application you increase the possibility of these type of "user induced" errors on a exponential scale.
Eventually when things get so complex it scares most away from making changes to it, but then in that case, why use open source in the first place? If the sole purpose is providing a solution, open source or not shouldn't make a difference. What should matter is that it's a solid product that does what it says and comes with attentive support.
So, this was another reason I decided to go closed source, objects only. Only I would be touching the source so I knew that it wasn't being modified outside of my own updates and changes.
No One Else Was Involved
Well, that's a little harsh. Sure, there were small tools out there people have developed, but even they were hard to find and were very unique to specific situations.
Most of them were also part of magazine articles just to fill that month's column (trust me, I've been there too). So in a way it was open source, but the author was paid, and the subscriber paid for the magazine.
I had a few people contacting me asking if they could put their software on my site (and still do). When I ask them to write up documentation, examples, and let me try it that's usually where it stops. Why? I don't know that either.
Maybe they don't realize (or haven't experienced) how much work actually goes into putting together a stable and useful application as well as providing support and documentation. And I'm not talking about throwing some code on how to convert upper to lower case on a forum or mailing list, I'm talking about an application that people need, want and use every day.
So Why Open Source?
There were plenty of people (and still are) screaming for open source, yet for what reason?
So they could get something for free? Probably.
So they can see how things are done inside the code, possibly reusing portions in their own applications? Probably.
To make a living (ie, money!)? Probably not. At least not realistically.
Any ISV with functional, long lived products that customers depend on will tell you that you don't only end up supporting the product, but also related issues (such as helping them set up TCPIP).
Think of it this way.
You're selling car stereos but you'll also be expected to help the user of the stereo make sure they have gas in their tank, their alternator works, and their battery can hold a charge.
If any of these cases isn't true and your stereo doesn't make noise, you'll be expected to walk through the troubleshooting steps and help them fix what is wrong, even if it isn't part of your product.
Open Source Movements are Grass Roots, not Astro-Turf
We shouldn't speculate viewing the world's open source triumphs as the norm, and not the reality, which is what these successes are... the exception to the rule.
I can hear it now.
"But if everyone contributed, it WOULD be a success."
Yes, and I agree, but you can't force everyone to contribute to your ideas. There will be always more "takers" than "makers" which is why the makers need to protect their intellectual property.
It may sound glamorous to have hundreds or thousands or even millions of companies using your application, whether it be open or closed source.
But, if you can't provide support for it, what good does it do anyone? You really can't (and shouldn't) rely on someone (or some community) doing that for you just because you deem it "open source". It is still your creation. Once you plant the seed you can't just walk away, you need to work to produce fruit.
There are many reasons why people cry out for open source. But you'll find quickly being an ISV and providing open source is an uphill battle that provides very little fruit in most cases.
But there will always be exceptions to every rule. Hopefully your project will be the next Linux distro, Android, Firefox or Ruby.
But that can't be forced.