Note: I'm talking about free, public, open-source software here, not that hacked open-source stuff that you just provide to your customers.
Mostly, the difficulty of managing an open-source business is that there are even less good management people that know what free open-source software is than there are good management people at all. And then when an open-source business in launched, it's most probably because the initial entrepreneur knew what open-source software was and thought he had a good idea on how to make business with it. Sadly, the combination of technical, legal and management skills necessary to do that well are extremely rare.
And let's imagine you would have that... you then realize that software development (in any form) is one of the most costly services there is. I mean... non-open-source businesses can get away with selling their software several times and generating money from multiple sales, that will end up covering the initial, huge, development costs. But in a truly open-source fashion, you shouldn't sell any of the software you develop. You should just sell the development service (and other services around it). And then you fall into yet another problem: the development staff of an open-source development company is actually the less profitable staff. Trainers' services can be sold on the basis of the software, but then their efforts have to be directed towards the development team. Salespeople can made tremendous benefits on the sale of services, but then a service is actually something quite difficult to get a fixed agreement on, so sometimes the services (in particular the development services) take more time than initially planned. Times = money. You crunch on the profit the salesman did. Then what's left should be directly invested into R&D to follow producing competitive software, because otherwise you'll just have to wait until someone develops the next cool thing your customers will want.
And just in case you would hope something like that, your development team will probably be very motivated by the opportunity to contribute to open-source software, but don't expect them to work a minute of their time for free to help a community member. That's not what they signed for...
So what? You probably benefit from tools that have been open-sourced and that you would have had to develop otherwise... True, but that doesn't represent nearly a tenth of what this project is actually costing to you and the customer, and even when it would, you would have to keep a constant eye on new open-source solutions (technology watch). And who will do that if your developers are already busy respecting that deadline the client asked for and for which he would probably have looked for someone else if you didn't accept it?
Well, believe it or not, we are managing it. In 2009, about 75% of our developments were open-sourced, but we still *had to* do a 25% part as closed source (at least temporarily), and we have a very, very tight budget. So I'm wondering... is it really a good idea to do business this way? Shouldn't we just open a non-profit association to do that instead of getting killed by the amounts of work weighing down on us to get the budget, the time and release as open-source?
These days, I'm trying to hack the model a little bit. I will not fall into the trap of either developing everything closed-source and then supposedly "release it next year". That is just an excuse for never doing it. There will never be an advantage, for a single business, in doing the additional work of releasing a one-year-old piece of software. It will be too old already. This will imply remastering it, which implies a considerable budget, which implies having sold a lot of this product. But how do you sell a lot if people know you'll make it public later? Doomed.
So there are a few possibilities here:
- find the killing combination of software + services and sell services at a price considerably higher than what it costs, in order to finance your development services with the profits
- improve sales by focusing on content creation and training, and consider the development as a hidden cost
- develop a system based on the software as a service model, where people do not have a practical way of using your (free) software without going through you, but that just doesn't make much sense if you really embrace the open-source philosophy
- using people's creativity: put a system in place that will allow you to get a small fee on the sale of one person's creation to another person...