Reader Rhayader asks a good question:
I love free software, but as someone who’s a novice (at best) when it comes to programming, most of the direct benefits I see have to do with the “free as in beer” side of things. I understand the distinction between the two types of freedom, but have a little trouble seeing how an open source project could generate profitable sales.
It’s true that free-as-in-speech software is almost always free-as-in-beer too. But it’s a mistake to conclude from this that free software is non-commercial software.
I think the way to think about this is to compare it to activities that are more familiar to non-programmers. Take playing tennis. If you’re a really good tennis player, there is a variety of ways you can make money. The most visible one, and the one that’s most closely analogous to what Microsoft and Adobe do, is to play games and charge admission. A related business model is to sell video to a television network which broadcasts the match for free (as in beer) and sells advertising.
But there are lots of other ways good tennis players make money. Manufacturers might pay you to endorse their products. You might go on the lecture circuit or write a book about playing tennis. And probably the most common way to make money as a tennis player is to sell lessons.
The key thing to notice here is that in all of these business models, with the exception of the first one, no one is directly paying you for the act of playing tennis. Rather, the act of playing tennis enhances your skills and reputation, and then you leverage those enhanced skills and reputation to sell other attibutes, like advertisements, speeches, or lessons. Indeed, only a tiny fraction of the most elite tennis players can attract large enough audiences to make money charging admission, while the market for lessons is much larger.
Free software business models work the same way. You give away your software—which is cheap because copies of software have a zero marginal cost—and once your software is popular, you use that popularity to sell them other stuff, like a support contract (Red Hat), consulting work (IBM), hardware devices (Google, Apple), web services (Google, Facebook) and so forth.
This isn’t as weird as it seems. It’s how many information businesses have always worked. Newspapers sell their physical product at cost and make their money selling ads. Television stations give away programming and sell ads. HP sells cheap printers and makes a killing on ink.
I recommend this podcast from the Software Freedom Law Center (previously discussed here), which discusses the history of Cygnus (an abbreviation for “Cygnus: Your GNU Support”–aren’t nerds funny?), a company that was founded to make money providing support for Stallman’s GNU project. One of the basic pieces of infrastructure that every computer system needs is called a compiler. GNU included a compiler called gcc that was popular within the computer industry. When a hardware company created a new hardware platform, one of the first things they need to create is a compiler, and it was cheaper to modify gcc than to build a compiler from scratch. As Bradley Kuhn tells the story, Cygnus literally could not keep up with the demand from firms wanting Cygnus to help them customize gcc for their own hardware platforms. At one point in the late 1980s, they had a waiting list several months long to become a customer of Cygnus’s compiler group, and Cygnus would hire pretty much any programmer with experience hacking on gcc.
Anyway, I think the fundamental point to make here is that computer programming is not an inherently commercial activity (any more than playing tennis is), and there’s nothing magical about the Microsoft/Adobe business model of selling copies. If your goal is to sell copies of your software to people, then a free software license probably isn’t for you. But there are lots of circumstances where people create software for reasons other than wanting to sell copies: for internal company use, for academic research, because they need it to make a hardware product work, as an ad-supported web service etc. In many of those circumstances, the limitations of proprietary software just get in the way.