By 1993, the free software movement was at a crossroads. To the optimistically inclined, all signs pointed toward success for the hacker culture. Wired magazine, a funky, new publication offering stories on data encryption, Usenet, and software freedom, was flying off magazine racks. The Internet, once a slang term used only by hackers and research scientists, had found its way into mainstream lexicon. Even President Clinton was using it. The personal computer, once a hobbyist's toy, had grown to full-scale respectability, giving a whole new generation of computer users access to hacker-built software. And while the GNU Project had not yet reached its goal of a fully intact, free GNU operating system, users could already run the GNU/Linux variant.
Any way you sliced it, the news was good, or so it seemed. After a decade of struggle, hackers and hacker values were finally gaining acceptance in mainstream society. People were getting it.
Or were they? To the pessimistically inclined, each sign of acceptance carried its own troubling countersign. Sure, being a hacker was suddenly cool, but was cool good for a community that thrived on alienation? Sure, the White House was saying nice things about the Internet, even going so far as to register its own domain name, white-house.gov, *** but it was also meeting with the companies, censorship advocates, and law-enforcement officials looking to tame the Internet's Wild West culture. Sure, PCs were more powerful, but in commoditizing the PC marketplace with its chips, Intel had created a situation in which proprietary software vendors now held the power. For every new user won over to the free software cause via GNU/Linux, hundreds, perhaps thousands, were booting up Microsoft Windows for the first time. GNU/Linux had only rudimentary graphical interfaces, so it was hardly user-friendly. In 1993, only an expert could use it. The GNU Project's first attempt to develop a graphical desktop had been abortive.
Then there was the political situation. Copyrighting of user interfaces was still a real threat - the courts had not yet rejected the idea. Meanwhile, patents on software algorithms and features were a growing danger that threatened to spread to other countries.
Finally, there was the curious nature of GNU/Linux itself. Unrestricted by legal disputes (such as BSD faced), GNU/Linux's high-speed evolution had been so unplanned, its success so accidental, that programmers closest to the software code itself didn't know what to make of it. More compilation album than unified project, it was comprised of a hacker medley of greatest hits: everything from GCC, GDB, and glibc (the GNU Project's newly developed C Library) toX (a Unix-based graphic user interface developed by MIT's Laboratory for Computer Science) to BSD-developed tools such as BIND (the Berkeley Internet Naming Daemon, which lets users substitute easy-to-remember Internet domain names for numeric IP addresses) and TCP/IP. In addition, it contained the Linux kernel - itself designed as a replacement for Minix. Rather than developing a new operating system, Torvalds and his rapidly expanding Linux development team had plugged their work into this matrix. As Torvalds himself would later translate it when describing the secret of his success: “I'm basically a very lazy person who likes to take credit for things other people actually do.”
Such laziness, while admirable from an efficiency perspective, was troubling from a political perspective. For one thing, it underlined the lack of an ideological agenda on Torvalds' part. Unlike the GNU developers, Torvalds hadn't built his kernel out of a desire to give his fellow hackers freedom; he'd built it to have something he himself could play with. So what exactly was the combined system, and which philosophy would people associate it with? Was it a manifestation of the free software philosophy first articulated by Stallman in the GNU Manifesto? Or was it simply an amalgamation of nifty software tools that any user, similarly motivated, could assemble on his own home system?
By late 1993, a growing number of GNU/Linux users had begun to lean toward the latter definition and began brewing private variations on the theme. They began to develop various “distributions” of GNU/Linux and distribute them, sometimes gratis, sometimes for a price. The results were spotty at best.
“This was back before Red Hat and the other commercial distributions,” remembers Ian Murdock, then a computer science student at Purdue University. “You'd flip through Unix magazines and find all these business card-sized ads proclaiming 'Linux.' Most of the companies were fly-by-night operations that saw nothing wrong with slipping a little of their own [proprietary] source code into the mix.”
Murdock, a Unix programmer, remembers being “swept away” by GNU/Linux when he first downloaded and installed it on his home PC system. “It was just a lot of fun,” he says. “It made me want to get involved.” The explosion of poorly built distributions began to dampen his early enthusiasm, however. Deciding that the best way to get involved was to build a version free of additives, Murdock set about putting a list of the best free software tools available with the intention of folding them into his own distribution. “I wanted something that would live up to the Linux name,” Murdock says.
In a bid to “stir up some interest,” Murdock posted his intentions on the Internet, including Usenet's comp.os.linux newsgroup. One of the first responding email messages was from email@example.com. As a hacker, Murdock instantly recognized the address. It was Richard M. Stallman, founder of the GNU Project and a man Murdock knew even back then as “the hacker of hackers.” Seeing the address in his mail queue, Murdock was puzzled. Why on Earth would Stallman, a person leading his own operating-system project, care about Murdock's gripes over “Linux” distributions?
Murdock opened the message.
“He said the Free Software Foundation was starting to look closely at Linux and that the FSF was interested in possibly doing a Linux [sic] system, too. Basically, it looked to Stallman like our goals were in line with their philosophy.”
Not to over dramatize, the message represented a change in strategy on Stallman's part. Until 1993, Stallman had been content to keep his nose out of Linux affairs. After first hearing of the new kernel, Stallman asked a friend to check its suitability. Recalls Stallman, “Here ported back that the software was modeled after System V, which was the inferior version of Unix. He also told me it wasn't portable.”
The friend's report was correct. Built to run on 386-based machines, Linux was firmly rooted to its low-cost hardware platform. What the friend failed to report, however, was the sizable advantage Linux enjoyed as the only free kernel in the marketplace. In other words, while Stallman spent the next year and a half listening to progress reports from the Hurd developer, reporting rather slow progress, Torvalds was winning over the programmers who would later uproot and replant Linux and GNU onto new platforms.
By 1993, the GNU Project's failure to deliver a working kernel was leading to problems both within the GNU Project and in the free software movement at large. A March, 1993, Wired magazine article by Simson Garfinkel described the GNU Project as “bogged down” despite the success of the project's many tools.
Much has been made about the GNU Project's struggles during the 1990-1993 period. While some place the blame on Stallman for those struggles, Eric Raymond, an old friend of Stallman's who supported the GNU Project lukewarmly, says the problem was largely institutional. “The FSF got arrogant,” Raymond says. “They moved away from the goal of doing a production-ready operating system to doing operating-system research.” Even worse, “They thought nothing outside the FSF could affect them.”
Murdock adopts a more charitable view. “I think part of the problem is they were a little too ambitious and they threw good money after bad,” he says. “Micro-kernels in the late 80s and early 90s were a hot topic. Unfortunately, that was about the time that the GNU Project started to design their kernel. They ended up with a lot of baggage and it would have taken a lot of backpedaling to lose it.”
Stallman responds, “Although the emotions Raymond cites come from his imagination, he's right about one cause of the Hurd's delay:the Hurd developer several times redesigned and rewrote large parts of the code based on what he had learned, rather than trying to make the Hurd run as soon as possible. It was good design practice, but it wasn't the right practice for our goal: to get something working ASAP.”
Stallman cites other issues that also caused delay. The Lotus and Apple lawsuits claimed much of his attention; this, coupled with hand problems that prevented him from typing for three years, mostly excluded Stallman from programming. Stallman also cites poor communication between various portions of the GNU Project. “We had to do a lot of work to get the debugging environment to work,” he recalls.“ And the people maintaining GDB at the time were not that cooperative.” They had given priority to supporting the existing platforms of GDB's current users, rather than to the overall goal of a complete GNU system.
Most fundamentally, however, Stallman says he and the Hurd developers underestimated the difficulty of developing the Unix kernel facilities on top of the Mach microkernel. “I figured, OK, the [Mach]part that has to talk to the machine has already been debugged,” Stallman says, recalling the Hurd team's troubles in a 2000 speech. “With that head start, we should be able to get it done faster. But instead, it turned out that debugging these asynchronous multi-threaded programs was really hard. There were timing bugs that would clobber the files, and that's no fun. The end result was that it took many, many years to produce a test version.”
Over time, the growing success of GNU together with Linux made it clear that the GNU Project should get on the train that was leaving and not wait for the Hurd. Besides, there were weaknesses in the community surrounding GNU/Linux. Sure, Linux had been licensed under the GPL, but as Murdock himself had noted, the desire to treat GNU/Linux as a purely free software operating system was far from unanimous. By late 1993, the total GNU/Linux user population had grown from a dozen or so enthusiasts to somewhere between 20,000 and 100,000.
Although late to the party, Stallman still had clout. As soon as the FSF announced that it would lend its money and moral support to Murdock's software project, other offers of support began rolling in. Murdock dubbed the new project Debian - a compression of his and his wife, Deborah's, names - and within a few weeks was rolling out the first distribution. “[Richard's support] catapulted Debian almost overnight from this interesting little project to something people within the community had to pay attention to,” Murdock says.
In January of 1994, Murdock issued the Debian Manifesto. Written in the spirit of Stallman's GNU Manifesto from a decade before, it explained the importance of working closely with the Free Software Foundation. Murdock wrote:
The Free Software Foundation plays an extremely important role in the future of Debian. By the simple fact that they will be distributing it, a message is sent to the world that Linux [sic] is not a commercial product and that it never should be, but that this does not mean that Linux will never be able to compete commercially. For those of you who disagree, I challenge you to rationalize the success of GNU Emacs and GCC, which are not commercial software but which have had quite an impact on the commercial market regardless of that fact.
The time has come to concentrate on the future of Linux[sic] rather than on the destructive goal of enriching one-self at the expense of the entire Linux community and its future. The development and distribution of Debian may not be the answer to the problems that I have outlined in the Manifesto, but I hope that it will at least attract enough attention to these problems to allow them to be solved.
Shortly after the Manifesto's release, the Free Software Foundation made its first major request. Stallman wanted Murdock to call its distribution “GNU/Linux.” At first, Stallman proposed the term “Lignux” - combining the names Linux and GNU - but the initial reaction was very negative, and this convinced Stallman to go with the longer but less criticized GNU/Linux.
Some dismissed Stallman's attempt to add the “GNU” prefix as a belated quest for credit, never mind whether it was due, but Murdock saw it differently. Looking back, Murdock saw it as an attempt to counteract the growing tension between the GNU Project's developers and those who adapted GNU programs to use with the Linux kernel. “There was a split emerging,” Murdock recalls. “Richard was concerned.”
By 1990, each GNU program had a designated maintainer-in-charge. Some GNU programs could run on many different systems, and users often contributed changes to port them to another system. Often these users knew only that one system, and did not consider how to keep the code clean for other systems. To add support for the new system while keeping the code comprehensible, so it could be maintained reliably for all systems, then required rewriting much of the changes. The maintainer-in-charge had the responsibility to critique the changes and tell their user-authors how to redo parts of the port. Generally they were eager to do this so that their changes would be integrated into the standard version. Then the maintainer-in-charge would edit in there worked changes, and take care of them in future maintenance. For some GNU programs, this had happened dozens of times for dozens of different systems.
The programmers who adapted various GNU programs to work with the kernel Linux followed this common path: they considered only their own platform. But when the maintainers-in-charge asked them to help clean up their changes for future maintenance, several of them were not interested. They did not care about doing the correct thing, or about facilitating future maintenance of the GNU packages they had adapted. They cared only about their own versions and were inclined to maintain them as forks.
In the hacker world, forks are an interesting issue. Although the hacker ethic permits a programmer to do anything he wants with a given program's source code, it is considered correct behavior to offer to work with the original developer to maintain a joint version. Hackers usually find it useful, as well as proper, to pour their improvements into the program's principal version. A free software license gives every hacker the right to fork a program, and sometimes it is necessary, but doing so without need or cause is considered somewhat rude.
As leader of the GNU Project, Stallman had already experienced the negative effects of a software fork in 1991. Says Stallman, “Lucid hired several people to write improvements to GNU Emacs, meant to be contributions to it; but the developers did not inform me about the project. Instead they designed several new features on their own. As you might expect, I agreed with some of their decisions and disagreed with others. They asked me to incorporate all their code, but when I said I wanted to use about half of it, they declined to help me adapt that half to work on its own. I had to do it on my own.” The fork had given birth to a parallel version, Lucid Emacs, and hard feelings all around.
Now programmers had forked several of the principal GNU packages at once. At first, Stallman says he considered the forks to be a product of impatience. In contrast to the fast and informal dynamics of the Linux team, GNU source-code maintainers tended to be slower and more circumspect in making changes that might affect a program's long-term viability. They also were unafraid of harshly critiquing other people's code. Over time, however, Stallman began to sense that there was an underlying lack of awareness of the GNU Project and its objectives when reading Linux developers' emails.
“We discovered that the people who considered themselves 'Linux users' didn't care about the GNU Project,” Stallman says. “They said, 'Why should I bother doing these things? I don't care about the GNU Project. It [the program]'s working for me. It's working for us Linux users, and nothing else matters to us.' And that was quite surprising, given that people were essentially using a variant of the GNU system, and they cared so little. They cared less than anybody else about GNU.” Fooled by their own practice of calling the combination “Linux,” they did not realize that their system was more GNU than Linux.
For the sake of unity, Stallman asked the maintainers-in-charge to do the work which normally the change authors should have done. In most cases this was feasible, but not in glibc. Short for GNU C Library, glibc is the package that all programs use to make “system calls” directed at the kernel, in this case Linux. User programs on a Unix-like system communicate with the kernel only through the C library.
The changes to make glibc work as a communication channel between Linux and all the other programs in the system were major and ad-hoc, written without attention to their effect on other platforms. For the glibc maintainer-in-charge, the task of cleaning them up was daunting. Instead the Free Software Foundation paid him to spend most of a year reimplementing these changes from scratch, to make glibc version 6 work “straight out of the box” in GNU/Linux.
Murdock says this was the precipitating cause that motivated Stallman to insist on adding the GNU prefix when Debian rolled out its software distribution. “The fork has since converged. Still, at the time, there was a concern that if the Linux community saw itself as a different thing as the GNU community, it might be a force for disunity.”
While some viewed it as politically grasping to describe the combination of GNU and Linux as a “variant” of GNU, Murdock, already sympathetic to the free software cause, saw Stallman's request to call Debian's version GNU/Linux as reasonable. “It was more for unity than for credit,” he says.
Requests of a more technical nature quickly followed. Although Murdock had been accommodating on political issues, he struck a firmer pose when it came to the design and development model of the actual software. What had begun as a show of solidarity soon became a running disagreement.
“I can tell you that I've had my share of disagreements with him,” says Murdock with a laugh. “In all honesty Richard can be a fairly difficult person to work with.” The principal disagreement was over debugging. Stallman wanted to include debugging information in all executable programs, to enable users to immediately investigate any bugs they might encounter. Murdock thought this would make the system files too big and interfere with distribution. Neither was willing to change his mind.
In 1996, Murdock, following his graduation from Purdue, decided to hand over the reins of the growing Debian project. He had already been ceding management duties to Bruce Perens, the hacker best known for his work on Electric Fence, a Unix utility released under the GPL. Perens, like Murdock, was a Unix programmer who had become enamored of GNU/Linux as soon as the operating system's Unix-like abilities became manifest. Like Murdock, Perens sympathized with the political agenda of Stallman and the Free Software Foundation, albeit from afar.
“I remember after Stallman had already come out with the GNU Manifesto, GNU Emacs, and GCC, I read an article that said he was working as a consultant for Intel,” says Perens, recalling his first brush with Stallman in the late 1980s. “I wrote him asking how he could be advocating free software on the one hand and working for Intel on the other. He wrote back saying, 'I work as a consultant to produce free-software.' He was perfectly polite about it, and I thought his answer made perfect sense.”
As a prominent Debian developer, however, Perens regarded Murdock's design battles with Stallman with dismay. Upon assuming leadership of the development team, Perens says he made the command decision to distance Debian from the Free Software Foundation. “I decided we did not want Richard's style of micro-management,” he says.
According to Perens, Stallman was taken aback by the decision but had the wisdom to roll with it. “He gave it some time to cool off and sent a message that we really needed a relationship. He requested that we call it GNU/Linux and left it at that. I decided that was fine. I made the decision unilaterally. Everybody breathed a sigh of relief.”
Over time, Debian would develop a reputation as the hacker's version of GNU/Linux, alongside Slackware, another popular distribution founded during the same 1993-1994 period. However, Slackware contained some non-free programs, and Debian after its separation from GNU began distributing non-free programs too.
Outside the realm of hacker-oriented systems, however, GNU/Linux was picking up steam in the commercial Unix marketplace. In North Carolina, a Unix company billing itself as Red Hat was revamping its business to focus on GNU/Linux. The chief executive officer was Robert Young, the former Linux Journal editor who in 1994 had put the question to Linus Torvalds, asking whether he had any regrets about putting the kernel under the GPL. To Young, Torvalds' response had a “profound” impact on his own view toward GNU/Linux. Instead of looking for a way to corner the GNU/Linux market via traditional software tactics, Young began to consider what might happen if a company adopted the same approach as Debian - i.e., building an operating system completely out of free software parts. Cygnus Solutions, the company founded by Michael Tiemann and John Gilmore in 1990, was already demonstrating the ability to sell free software based on quality and customizability. What if Red Hat took the same approach with GNU/Linux?
“In the western scientific tradition we stand on the shoulders of giants,” says Young, echoing both Torvalds and Sir Isaac Newton before him. “In business, this translates to not having to reinvent wheels as we go along. The beauty of [the GPL] model is you put your code into the public domain.
Young wasn't the only software executive intrigued by the business efficiencies of free software. By late 1996, most Unix companies were starting to wake up and smell the brewing source code. The GNU/Linux sector was still a good year or two away from full commercial breakout mode, but those close enough to the hacker community could feel it: something big was happening. The Intel 386 chip, the Internet, and the World Wide Web had hit the marketplace like a set of monster waves; free software seemed like the largest wave yet.
For Ian Murdock, the wave seemed both a fitting tribute and a fitting punishment for the man who had spent so much time giving the free software movement an identity. Like many Linux aficionados, Murdock had seen the original postings. He'd seen Torvalds' original admonition that Linux was “just a hobby.” He'd also seen Torvalds' admission to Minix creator Andrew Tanenbaum: “If the GNU kernel had been ready last spring, I'd not have bothered to even start my project.”
“Being involved with Linux in those early days was fun,” recalls Murdock. “At the same time, it was something to do, something to pass the time. If you go back and read those old [comp.os.minix]exchanges, you'll see the sentiment: this is something we can play with until the Hurd is ready. People were anxious. It's funny, but in a lot of ways, I suspect that Linux would never have happened if the Hurd had come along more quickly.”
By the end of 1996, however, such “what if” questions were already moot, because Torvalds' kernel had gained a critical mass of users. The 36-month window had closed, meaning that even if the GNU Project had rolled out its Hurd kernel, chances were slim anybody outside the hard-core hacker community would have noticed. Linux, by filling the GNU system's last gap, had achieved the GNU Project's goal of producing a Unix-like free software operating system. However, most of the users did not recognize what had happened: they thought the whole system was Linux, and that Torvalds had done it all. Most of them installed distributions that came with non-free software; with Torvalds as their ethical guide, they saw no principled reason to reject it. Still, a precarious freedom was available for those that appreciated it.
“Timing errors” occur in an asynchronous system where jobs done in parallel can theoretically occur in any order, and one particular order leads to problems.
Imagine that program A does X, and program B does Y, where both X and Y are short routines that examine and update the same data structure. Nearly always the computer will do X before Y, or do Y before X, and then there will be no problem. On rare occasions, by chance, the scheduler will let program A run until it is in the middle of X, and then run B which will do Y. Thus, Y will be done while Xis half-done. Since they are updating the same data structure, they will interfere. For instance, perhaps X has already examined the data structure, and it won't notice that there was a change. There will be an unreproducible failure, unreproducible because it depends on chance factors (when the scheduler decides to run which program and how long).
The way to prevent such a failure is to use a lock to make sure X and Y can't run at the same time. Programmers writing asynchronous systems know about the general need for locks, but sometimes they overlook the need for a lock in a specific place or on a specific data structure. Then the program has a timing error.
World War II and the determination needed to win it was a very strong memory as I was growing up. Statements such as Churchill's, “We will fight them in the landing zones, we will fight them on the beaches... we will never surrender,” have always resonated for me.
http://www.jwz.org/doc/lemacs.html. Stallman's response to those accusations is in
License: Published under the GNU Free Documentation License. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License."
SiSU Spine (object numbering & object search) 2022