“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.”