I'm happy to see that the open-source movement is beginning to drift out of its starry-eyed phase. For a leading indicator, see the recent posting by Dan Farber, "Commercial open source, a misnomer?", at http://blogs.zdnet.com/BTL/?p=1787. No, Farber's article isn't a major exposé, and I am not trumpeting the imminent downfall of open source. It's just another indication that the honeymoon is coming to its end. Open source is a term that has simply been spread too thin to mean much these days.
Richard Stallman is widely recognized as the father of the modern open-source movement. I remember a couple of conferences circa 1980 where Stallman would preach his gospel. In those days, he expressed mounting dismay that more and more source code was being shielded behind proprietary agreements. He didn't object to people making money on software, just keeping the source from potential users. To the extent that he wanted software to be free, he meant free as in "free speech" not free as in "free beer." I have to say I wasn't convinced by his arguments against keeping software confidential. To me, he was mostly arguing for the right to see the stuff so he could play with it. Moreover, Stallman's style was to make a few inflammatory statements and get a roomful of commercial software types to begin defending their business models. (That was good for about half an hour, before the attackees wised up.) But I will say that his position was logically consistent, and that he has invested considerable amounts of personal energy in advancing it.
One way to ensure that software is as available as you'd like is to write your own. The Free Software Foundation, Stallman's brainchild, is thus the flagship of the open-source movement. The goal of Project GNU, its major undertaking, was no less than to rewrite all of UNIX and make it freely available. (GNU is a bootstrapped acronym for "GNU's Not UNIX.") The UNIX kernel effort wallowed along for about a decade, until hardware got cheap and fast enough for it to perform adequatelyand a graduate student named Linus Torvalds mined the code to make what is now called Linux. But well before then, the GNU C compiler (a.k.a. GCC) was a hit. It has now morphed into a multilanguage, multitarget compiler, so that its initials now stand for the GNU Compiler Collection. Today, you'll find quite a number of useful packages available through Project GNU.
Besides the software itself, Project GNU made another significant contribution to the open- source movement. It made its software available through a "copyleft" agreement. Source code protected by copyleft can be modified, and sold at a profit, but it cannot be kept proprietary. If you build a product upon copyleft code, there's little you can do to keep potential competitors from reviewing your source code, enhancements and all. That, and a few other restrictions, limits the desirability of Project GNU code in commercial environments, but it by no means eliminates it. Quite a few companies have found a way to profit from the mass of useful code already written, debugged, and documented for Project GNU.
Here's where things start to get messy. It's one thing for a company to get its start with a large infusion of free software; it's quite another for that company to give away, or even disclose, their added value. The easiest way to subvert the intent of copyleft is to keep the important additions separate from the code protected by copyleft. The former can be kept proprietary, even though it depends heavily on the free availability of the latter. See Farber's posting for one example; it is by no means the only example today. The effect is to make the flow of truly free software predominantly one way, from unpaid volunteers to commercial enterprises. There's much less give back than the early idealists hoped for, I believe.
Another problem is the proliferation of open-source agreements. It's easy enough to find fault with the copyleft agreement, but that doesn't mean there's a single obvious replacement for it. Today you can find literally dozens of agreements used to protect code billed as open source (see http://www.gnu.org/licenses/license-list.html). That's a nightmare for a company hoping to ship a product based on multiple open sources. In some cases, it's enough to make "free" code too expensive to use.
Finally, there's the devaluation of the term "open." It's now used as a synonym for "not completely proprietary." That's close to Stallman's original stated goal, ironically enough. But it's nowhere near what most people think of when they read that software is "open." So next time you see this adjective, mentally replace it with a smiley face. The meaning will probably not change.
P.J. Plauger
Senior Contributing Editor
[email protected]