Free Software & Free Lunches
I
got an email from a client today, worried about some new aggressiveness in
enforcing the GNU Public License. The short story is that the GPL is the
cornerstone of the open source movement, and particularly championed by the
father of "free software", Richard Stallman. As you can tell
from the picture, this guy is not your basic Republican capitalist.
Stallman asks people to envision a world in which there is only "free software"
and to assiduously avoid the term "intellectual property". He's an
intelligent and interesting man, but he has very strong opinions about "free
software". You know, the kind of software you don't get from the Evil
Empire in Redmond.
The problem with free software is the same problem with free anything. If
a commodity is truly free, who but hobbyists would spend time and money creating
it? "Wait!", you say, what about Linux and all that open source and free
software? Well, that's where the peas start moving under the shells.
Yes, there is a lot of open source software and Linux is widely available and
you can download sources and build it any time you want. But, you may have
noticed there isn't actually a lot of Linux applications, in fact the ratio of
Windows apps to Linux apps has to be 100-to-1 or more. Still, somebody is
writing all this great free software, so who are they?
I hate to burst your bubble, but my experience over the last decade is that the
open source developers fall into three categories: 1) hardware companies
that are "pushing iron" as we used to say and pay programmers to contribute to
open source projects like Linux to move more hardware out the door and provide
the corporation with a service revenue. A good example is IBM. 2)
Researchers, government employees, university staff and faculty, and others who
already make a good living and can contribute without worrying about their next
paycheck, and 3) thousands of employees who use their company's time to write
code for the open source community, often unbeknownst to the company who pays
them. I've had two programmers like that in the past 10 years. One
of them was a frequent Linux contributor, and even gave a paper in Germany on
his enhancements. Every time I would come into his office, he would do a
screen switch to what I wanted him to be working on (and, of course paying him
for) from some Linux project he found interesting.
If Stallman had his way, all software would be free. Any application
linked to standard Linux (or GNU libraries) would be "viral" and immediately
require that the author take his hard-won code and deliver it in source form to
anyone who wanted his program. What's wrong with this? Well, in the
first place, why should the development of software be any different than any
other construction job? In the "free software" world, if I spend two years
writing a novel application, I should just offer up the entire thing for anybody
who wants it free of charge. I can bill them for the services of
pre-building it and support, but I have to give away the source code. The
standard notion is that this "prebuilding" fee should be relatively nominal,
like the cost of the CD's plus labor. It's as if someone said that Lexus
had to ship their cars at the price of the steel in them.
But, "wait!", you say. What about Google and Yahoo and all those remaining
successful dot-com companies. They're doing so well that their employees
get free bikes and climbing walls in the lunch break room, which is also
coincidentally free, and all kinds of amazing benefits. Well, that's the
catch. Google and Sales.com and other major firms deliver a product on the
web, so they don't "distribute" it in the 1980's sense, so they are free to use
any public source contributions without the viral effect that makes them provide
their product for free. How screwed up is that?
I hear a lot of this kind of nonsense, of course, not only in software, but in
music and video. Sweet Junie and I each have some kids who firmly believe
that all their downloads should be free. I don't know how we are going to
suddenly reverse Adam Smith's observations that when there's no money in
something, it stops getting produced. This is certainly the case with
software. Microsoft and Oracle employ something like 100,000 well-paid
engineers who then go out and spend money in the local economy. If
Microsoft Office or Oracle were free, I have a feeling there would be a lot
fewer of them. In fact, there neither product would exist. Here's a
perfect example: I have a tiny company that over the last 25 years has
sold something like 50,000 licenses for our commercial BASIC product. Each
of the customers is a vertical application developer, someone who writes
programs to run a 4-user pharmacy in Spain for example. Each license sold
to the dealer/developer results in a revenue of probably $500 to them (and about
one-tenth of that to us). So, our customers have had revenues of about $25
million in the past 25 years, which let them hire staff and run businesses.
Most of them are just one or two developers with a specialty, like church
management software. But, had the fact that our compiler links to Linux
libraries made EVERYTHING they spent their lives writing and maintaining public
property, there would be a thousand people out of work.
So think of it this way: if we had "free software", all those software
manufacturing jobs would disappear and there would only be software
service jobs. Yeah, we know how well that's worked out for
millions of Americans in the past 8 years.
There's a joke that's a favorite of mine. An emperor asks his wise men to
condense all the wisdom of the world. The wise men come back with one
book, and the emperor says it's too verbose. The wise men come back with a
small monograph and the emperor says it's too much. The wise men reduce
the wisdom to a single page, and it's still too much for the emperor.
Finally, the wise men come back with a single sheet on which is written "There's
no such thing as a free lunch".
Right.
Comments
"Sweet Junie and I each have some kids who firmly believe that all their downloads should be free"
Ahem, to which freeloading kids are you referring? :)
Posted by: KB | May 6, 2008 10:27 AM
Wowzers, quite a rant you've got going there. Maybe you should go read Slashdot for ten minutes to get these tired arguments out of your system.
1> No Republican capitalists have crazy hair and beards? Noted.
2> You are misrepresenting Linux. You can develop commercial applications for Linux without being "infected" by the GPL. You cannot modify and distribute Linux itself without being infected. So pretty much the same as Windows, except better since you ain't going to see the source code to Windows, ever.
3> There are many open source projects that are in wide commercial use: MySQL, Apache, PHP, Perl, etc. It is completely ignorant to claim that only hobbyists work on these programs.
4> You have a current application written in BASIC? LAWL. Of course, my company has legacy code in Fortran that we run on VMS still, so maybe I should STFU.
5> I just put down a book I was reading on C#, because, you know, I have downtime from time to time at my job. They like me to stay sharp (haha) and up to date. I wonder how much you benefitted from having a developer that was good enough to be well regarded in the Open Source community? Despite not cranking out the lines per minute you wanted him to, was he actually productive and got his work done on time?
6> Why do you use "free software" in quotes constantly?
Posted by: plunky | May 6, 2008 01:30 PM
It's not evil to charge money for products that you pay people to create.
You know what's evil? Mining personal e-mail text for targeted ads, selling people's personal search info to others, or turning in Chinese searchers who search for "democracy" on your search engine into their own oppressive government. Hear me Google? I mean, for a company that pretends to be so nicey-nice, they have a lot of dicey stuff going on. No one cares, though, because Google is the object of a blind lovefest.
I mean, I still get upset that MS operating systems aren't really ready until six months to a year after they release them. But I don't go around randomly repeating that they're evil.
Anyway, thanks for posting about this stuff. I think most people just register "open source good, Microsoft evil" while they're in college and never really check in on what really goes on.
Posted by: Jeannine Hall Gailey | May 6, 2008 07:37 PM
Actually, Plunky, that wasn't much of a rant at all. You should see the fur fly when we argue about poetry. Apparently, you haven't read much of this blog in the past or you'd have better context of me, my background, and my beliefs.
As for Republican capitalists, I've been surrounded by them for a long time and never *actually* noticed any of them with Stallman's charming irreverence. My beef with Stallman is that he lets his political and ethical beliefs infect his software riff in ways that are either misguided or irrelevant. He has a long history of hyperbole as when he called a software demo-period time lock a "crime against humanity". Quoting Wikipedia, he explains that he has "always lived cheaply… like a student, basically. And I like that, because it means that money is not telling me what to do." That's not someone I want making business decisions for me.
My particular gripe was recent articles (supported by Stallman and the GNU mafia) that apps linked to LGPL libraries should be considered derivative, and/or that all libraries should be stripped of LGPL status. I stated the reasons why I think this is crazy, but I'll give you another example. I have hardware clients who have spent a LOT of money developing hardware that requires driver support. Because of GPL, the drivers must be written in such a way that they are very simple gateways for conventional driver entry points. Then a daemon actually does the interface work with the hardware. Having to ship source code for the daemon (which is an app) would jeopardize millions of dollars in research and a number of patents on the hardware. That's one small example of why all software shouldn't be required to ship with sources. If you think that this is a trivial issue, read about the millions Oracle is spending to make sure that their $8.5 billion acquisition of BEA doesn't get them in GPL trouble.
I fully understand you can *currently* write apps for Linux, and I hope we can continue to do so without them becoming derivatives of Linux. BTW, my team and I have ported Linux over a dozen times to ARM, X86, MIPS, PPC and SPARC architectures. We write drivers and middleware for Linux. I'm aware of the GPL issues with Linux.
As for open source projects in wide use: yes, PHP, Perl, Apache, MySQL. Of those, MySQL is the most commercial, but they're still not a large company in any sense. Perl, PHP and other languages/front ends are almost entirely supported and enhanced by researchers who get a paycheck from somebody (like institutes and universities).
And BASIC and FORTRAN? You apparently don't know that there are over 2 million VB programmers out there, and tens of thousand of VB apps. FORTRAN? It's still the most common language in the hard sciences (over half of all major FFT packages are in FORTRAN). Personally, I program in C a lot because I have to, but over the past 40 years I've programmed in LISP, Snobol, PL/I, Java, COBOL, and a dozen others (not counting assembler). We created a Commercial BASIC compiler in 1982 because major hardware vendors asked us to, to help ease the transition of minicomputer applications to UNIX (which I've also ported a number of times, including to a VAX). It's not my fault it's still selling after 25 years.
Regarding my errant programmer: he was a sharp person, but he never got anything done for me. When you start making your living owning a software company, come back and tell me how often you let your employees screw around on your time (I would have been thrilled if he did his Linux work on his own).
And Google (actually, Jeannine brought it up, not me): I think Google is a really amazing company. I own stock in them. They are one of the few companies I would actually consider quitting consulting for and having a day job.
I wish you luck with your C# book. I like C#, which seems about as natural as Java, and WAY better than C++ which supports OO like putting lipstick on a pig.
Posted by: jbahr | May 7, 2008 04:23 PM