The real cost of "Free" Software
The science fiction writer Robert Heinlein came up with the abbreviation TANSTAAFL for "There ain't no such thing as a free lunch" - so following on from my last article listing Open Source Software companies, I thought it would appropriate to write about TANSTAFS;
There ain't no such thing as Free Software!
A common response when talking with people about Open Source software is "oh yes, that's the stuff you can download for free from the Internet - why would any pay money to use it?" The inference is that if the software is down loadable and Open Source, you don't have to pay to use it. Of course on one level this is true but the ease of downloading and installation masks the true costs - what do you do when the software doesn't do what you want?
The real cost of Free Software is dealing with the ongoing support, integration and operation of the software in your environment. It takes resources to deal with software bugs, compatibility issues, migration to new releases, etc. - all the day to day tasks that are the hidden part of the cost iceberg of Open Source software.
One company that I didn't add to the list of Open Source software companies is Ohloh that is focused on mapping the Open Source world for information and metrics on current projects. Some of the metrics they compile include the number of lines of code in the project (LOC), the number of active developers and a calculation (based on salary rates you can alter) of the development cost.
Let's take the Linux Kernel as an example - here's the metrics reported by Ohloh.
Codebase 4,699,136 LOC
Effort (Est.) 1434 Man Years
Avg. Salary $55,000
Total: $78,885,489
Ohloh calculates the development cost using the old COCOMO model that appears in Barry Boehm's book "Software Engineering Economics" - as Ohloh explains, they use the basic model (the least accurate) but it gives an approximation of the total development costs for a given code base.
As you can see, the development costs for the Linux Kernel (2.6.17 Stable) are almost $80M - I'd like to see an average software engineer salary at $55K (those days are long gone!) so even allowing for the inaccuracies of COCOMO, the total cost is probably in the right ball part.
Typical on-going costs for support, bug fixing, integration etc have generally run 25% or more of the development cost for most of the software systems I've been responsible for over the years. So if you want to do all your own support etc, figure on spending $20M or so EACH YEAR.
Of course, the Open Source community contributes some significant part of this ongoing effort but not necessarily on your time frames or with the level of testing etc. that may be required in your environment. Just bug fixing alone is a major effort - even very high quality software often has a residual defect density (bugs per line of code) of 1 defect per 1000 LOC - putting it another way, there are still at least 4,700 bugs likely to be in the Linux kernel. Many of these latent bugs lurk in error paths, some of which may never be executed but others will show up as random process crashes, systems failures etc.
If you are using the Open Source software in a production system you either need your own in-house capabilities to do the on-going support or you need to pay some one who will do this for you. Building an in-house capability (even assuming you can hire and retain the necessary skilled engineers) will cost you a significant amount of money. Getting an Open Source product from a company that specializes in keeping the software robust and viable can be a significant saving as they leverage their talent and skills across multiple customers.
So, the next time someone says that Open Source is free, tell them that if they buy you lunch, you'll tell them the real costs behind Open Source - that's probably the only way you'll ever get a nearly free lunch!
Uday,
Good comments! There are clear ways to avoid the GPL issues tainting your product software. Most of the companies working with Open Source are able to guide their customers in this area - Montavista Software does a particularly nice job in this regard.
Posted by: Stu | August 10, 2006 at 07:48 PM
Good post.
[1]The licensing is an issue and if the developers are not careful with GPL code, it will cause big problems in the long run...(Cisco/Linksys)
(now startups like Palamida are living on this src code checking issues).
[2]Then documentation is an another issue. Even to use frameworks to build systems, you need to buy support/doc...
Posted by: Uday Subbarayan | August 10, 2006 at 01:48 PM
A good point; I chose the 2.6.17 example because it illustrated the incremental costs associated with keeping software current.
Developing quality software requires resource - whether those are contributed from the community or paid for in hard cash - it's never inexpensive.
Posted by: Stu | August 10, 2006 at 06:42 AM
Much of the code in the Linux kernel has been rewritten many times over the years. To reflect this I would multiply the LOC number by 3-4. The Linux kernel is under intense scrutiny which triggers much more rewriting that proprietary software.
Check out http://scan.coverity.com/ to get an idea of the bug levels in Linux. The LOC numbers differ because Coverity removes blanks and comments from their numbers.
Taking into account rewrites, realistic salaries and QA which seems to be missing, the real cost of Linux is probably closer to $500-700M.
Posted by: Jon Smirl | August 09, 2006 at 06:06 PM