The World is Flat - Friedman Thomas. Страница 23
(A Web server is a software program that enables anyone to use his or her home or office computer to host a Web site on the World Wide Web. Amazon.com, for instance, has long run its Web site on Apache software. When your Web browser goes to www.amazon.com, the very first piece of software it talks to is Apache. The browser asks Apache for the Amazon Web page and Apache sends back to the browser the content of the Amazon Web page. Surfing the Web is really your Web browser interacting with different Web servers.)
“I found myself sitting in on this forum watching Tim Berners-Lee and Marc Andreessen debating how all these things should work,” recalled Behlendorf. “It was pretty exciting, and it seemed radically inclusive. I didn't need a Ph.D. or any special credentials, and I started to see some parallels between my music group and these scientists, who had a common interest in building the first Web software. I followed that [discussion] for a while and then I told a friend of mine about it. He was one of the first employees at Wired magazine, and he said Wired would be interested in having me set up a Web site for them. So I joined there at $10 an hour, setting up their e-mail and their first Web site-HotWired... It was one of the first ad-supported online magazines.”
HotWired decided it wanted to start by having a registration system that required passwords-a controversial concept at that time. “In those days,” noted Andrew Leonard, who wrote a history of Apache for Salon.com in 1997, “most Webmasters depended on a Web server program developed at the University of Illinois's National Center for Super-computing Applications (also the birthplace of the groundbreaking Mosaic Web browser). But the NCSA Web server couldn't handle password authentication on the scale that HotWired needed. Luckily, the NCSA server was in the public domain, which meant that the source code was free to all comers. So Behlendorf exercised the hacker prerogative: He wrote some new code, a 'patch' to the NCSA Web server, that took care of the problem.” Leonard commented, “He wasn't the only clever programmer rummaging through the NCSA code that winter. All across the exploding Web, other Webmasters were finding it necessary to take matters into their own keyboards. The original code had been left to gather virtual dust when its primary programmer, University of Illinois student Rob McCool, had been scooped up (along with Marc Andreessen and Lynx author Eric Bina) by a little-known company in Silicon Valley named Netscape. Meanwhile, the Web refused to stop growing—and kept creating new problems for Web servers to cope with.” So patches of one kind or another proliferated like Band-Aids on bandwidth, plugging one hole here and breaching another gap there.
Meanwhile, all these patches were slowly, in an ad hoc open-source manner, building a new modern Web server. But everyone had his or her own version, trading patches here and there, because the NCSA lab couldn't keep up with it all.
“I was just this near-dropout,” explained Behlendorf. “I was having a lot of fun building this Web site for Wired and learning more than I was learning at Berkeley. So a discussion started in our little working group that the NCSA people were not answering our e-mails. We were sending in patches for the system and they weren't responding. And we said, 'If NCSA would not respond to our patches, what's going to happen in the future?' We were happy to continue improving this thing, yet we were worried when we were not getting any feedback and seeing our patches integrated. So I started to contact the other people I knew trading patches... Most of them were on the standards working groups [the Internet Engineering Task Force] that were setting the first standards for the interconnectivity between machines and applications on the Internet... And we said, 'Why don't we take our future into our own hands and release our own [Web server] version that incorporated all our patches?'
“We looked up the copyright for the NCSA code, and it basically just said give us credit at Illinois for what we invented if you improve it-and don't blame us if it breaks,” recalled Behlendorf. “So we started building our own version from all our patches. None of us had time to be a full-time Web server developer, but we thought if we could combine our time and do it in a public way, we could create something better than we could buy off the shelf-and nothing was available then, anyway. This was all before Netscape had shipped its first commercial Web server. That was the beginning of the Apache project.”
By February 1999, they had completely rewritten the original NCSA program and formalized their cooperation under the name “Apache.”
“I picked the name because I wanted it to have a positive connotation of being assertive,” said Behlendorf. “The Apache tribe was the last tribe to surrender to the oncoming U.S. government, and at the time we worried that the big companies would come in and 'civilize' the landscape that the early Internet engineers built. So 'Apache' made sense to me as a good code name, and others said it also would make a good pun”-as in the APAtCHy server, because they were patching all these fixes together.
So in many ways, Bellendorf and his open-source colleagues-most of whom he had never met but knew only by e-mail through their open-source chat room-had created a virtual, online, bottom-up software factory, which no one owned and no one supervised. “We had a software project, but the coordination and direction were an emergent behavior based on whoever showed up and wanted to write code,” he said.
But how does it actually work? I asked Behlendorf. You can't just have a bunch of people, unmonitored, throwing code together, can you?
“Most software development involves a source code repository and is managed by tools such as the Concurrent Versions System,” he explained. “So there is a CVS server out there, and I have a CVS program on my computer. It allows me to connect to the server and pull down a copy of the code, so I can start working with it and making modifications. If I think my patch is something I want to share with others, I run a program called Patch, which allows me to create a new file, a compact collection of all the changes. That is called a patch file, and I can give that file to someone else, and they can apply it to their copy of the code to see what impact that patch has. If I have the right privileges to the server [which is restricted to a tightly controlled oversight board], I can then take my patch and commit it to the repository and it will become part of the source code. The CVS server keeps track of everything and who sent in what... So you might have 'read access' to the repository but not 'commit access' to change things. When someone makes a commit to the repository, that patch file gets e-mailed out to all the other developers, and so you get this peer review system after the fact, and if there is something wrong, you fix the bug.”
So how does this community decide who are trusted members?
“For Apache,” said Behlendorf, “we started with eight people who really trusted each other, and as new people showed up at the discussion forum and offered patch files posted to the discussion form, we would gain trust in others, and that eight grew to over one thousand. We were the first open-source project to get attention from the business community and get the backing from IBM.”
Because of Apache's proficiency at allowing a single-server machine to host thousands of different virtual Web sites-music, data, text, pornography-it began to have “a commanding share of the Internet Service Provider market,” noted Salon's Leonard. IBM was trying to sell its own proprietary Web server, called GO, but it gained only a tiny sliver of the market. Apache proved to be both a better technology and free. So IBM eventually decided that if it could not beat Apache, it should join Apache. You have to stop here and imagine this. The world's biggest computer company decided that its engineers could not best the work of an ad hoc open-source collection of geeks, so they threw out their own technology and decided to go with the geeks!