Before I start talking about Free Software, I want to take a look at how you make money with proprietary software. This is one of the things that most people accept without really thinking about, but when you look at the business model behind off-the-shelf proprietary software in detail, you begin to realize how fragile it is.
When you produce a piece of proprietary software, there are two important steps. One is creating the software in the first place; the other is producing and distributing the copies of the software. Creating the software is very expensive. It requires writing the code, testing it, fixing bugs, and so on. In contrast, the act of duplication is very cheap.
When software was distributed on piles of floppy disks with heavy printed manuals, the duplication was more expensive, but in the age of online distribution it is practically zero. If you use peer-to-peer software, such as the World of Warcraft update mechanism, then it's even lower.
The proprietary, off-the-shelf, software model is to charge for copies of the software while doing the initial creation for free. Consider a big software project such as Vista. Microsoft spent millions of dollars producing the product, hoping that they could later recoup this by selling copies.
This business model, if you weren't used to it, would seem completely ludicrous. You start by doing something that costs a lot of money for free, and then you try to fund this by charging a lot for doing something that doesn't cost much. Part of the reason that piracy is a problem for the software industry is that the pirates are able to undercut the publishers for the act of duplication and aren't trying to fund the initial development of the software from their profits.
Any attempt to duplicate this business model for Free Software is doomed to failure. It's a wonder that it works at all for proprietary software, but Free Software, by definition, grants distribution rights to all of the recipients of the software, making charging for copies basically impossible. Any business model for Free Software needs to take into account the need to charge for the bit that actually costs moneythe development of the softwarenot the easy bit.
Software Is a Commodity
Armed with Microeconomics 101, Joel Spolskysomeone whose opinions are usually quite insightfulroundly criticized Sun over Java because it was commoditizing the hardware market. Any company, Joel argued, should aim to commoditize complementary markets. If you want to sell software, you want hardware to be a commodity. If you want to sell hardware, you want software to be a commodity. If you want to sell cars, you want fuel to be a commodity, and so on.
In making this argument, he completely missed the fate of one of Sun's competitors, a company formerly known as Silicon Graphics. Its story is the tale of what happens when you follow Joel's advice and don't commoditize your market.
A few years ago, some engineers at SGI approached their manager and said something along the lines of “Hey, if we made a slightly cut-down version of this hardware, we could sell it as an expansion card for PCs. We'd have to accept smaller margins, but we'd have much bigger sales volumes to make up for it.” Their managers duly replied that they weren't interested in the high-volume, low-margin, commodity business; they sold top-of-the-line hardware. The engineers left and started up their own company: NVIDIA.
A few years later, NVIDIA owns a respectable share of a very large market and the market that SGI formerly controlled no longer exists. SGI was delisted from the stock market, while NVIDIA is a very profitable company.
Here’s the lesson to take away: Every product that any technology company makes will eventually become a commodity. You have two choices; either you make it a commodity and try to shape the market into one where you can remain profitable, or you let one of your competitors do so and watch your market disappear.
With Java, Sun made the server hardware market a commodity market. If you had a Java server app, you could run it on SPARC, x86, POWER, or any other architecture with a Java implementation. Sun had to compete on roughly equal terms with other hardware manufacturers, but had the advantage that they had the most experience with Java and so could produce chips designed for it. It's no coincidence that Java encourages heavy use of threading, and that Sun produces chips that are ideal for heavily-threaded workloads.
Free Software, from the start, is a commodity market. Selling copies of software as a product can never work for Free Software, because your competitor can offer exactly the same product as you. If you are investing money in developing Free Software, in the hope of getting a return from people buying a software product from you, then you have until someone else decides to ship your product at a lower price.
Some companies adopt a hybrid strategy. Xen, as produced by Citrix, is an example of this. On the face of it, their business model can only work in the short term. They bundle a set of proprietary tools (which simplify administration) on top of Xen. This model doesn't work for as long as the proprietary tools are better, it works as long as the Free tools are not good enough. As soon as the Free equivalents become sufficiently good that there is no commercial benefit from buying the proprietary version, this business model evaporates.
This isn't quite how the Citrix business model works, however. In practice, it's closer to the Asterisk model. Asterisk is a complex piece of Voice-Over IP (VoIP) software. With it, you can control company-wide VoIP deployments, menu systems, and a whole variety of other things. If you know how it works, then it's very powerful.
If you are planning on deploying a VoIP system and want to use Asterisk, typically you will hire someone to come and set it up for you. If you have in-house expertise for doing this, then you can avoid this, but few companies do. Because Asterisk is Free Software, you can do it yourself or get any one of a number of consultancy companies in to handle the configuration for your site. If you want to really guarantee that it will work well, then you are probably best off getting the company that wrote the software in to do the work. That way, if you need a feature that Asterisk doesn't have, they can add it very easily.