Seibel: So you wanted the Emacs included in your product to be afully capable version of Emacs.

Zawinski: The original plan was that we wouldn’t include Emacs withour product. You have Emacs on your machine already and you haveour product and they work together. And you had GCC on yourmachine already and our product, and they work together. I think oneof the early code names for our product was something likeHitchhiker because the idea was that it would take all the tools thatyou already have and integrate them—make them talk to each otherby providing this communication layer between them.

That didn’t work out at all. We ended up shipping our version of GCCand GDB because we couldn’t get the changes upstream fast enough,or at all in some cases. And same thing with Emacs. So we ended upshipping the whole thing. We ended up going down the path of, “Well,we’re replacing Emacs. Shit. I guess we have to do that so we bettermake it work.” One thing I spent a bunch of time on was making the viemulation mode work.

Seibel: And that’s several weeks of your life you’re never going to getback.

Zawinski: That’s true, yeah. It was challenging. I think it ended upworking OK. The real problem with that wasn’t so much that it wasemulating vi wrong as that vi users quit and restart vi all the time. Andno amount of coding on my part is going to get them out of thatmindset. So they’re like, “I expected this to launch in half a second andit’s taking 14 seconds. That’s ridiculous. I can’t use this.”

Seibel: Why did you leave Lucid?

Zawinski: Lucid was done. There’d been a bunch of layoffs. I sentmail to a bunch of people I know saying, “Hey, looks like I’m going toneed a new job soon” and one of those people was Marc Andreessenand he said, “Oh, funny you should mention that, because we juststarted a company last week.” And that was that.

Seibel: So you went to Netscape. What did you work on there?

Zawinski: I pretty much started right away doing the Unix side of thebrowser. There had been maybe a few days’ worth of code written onit so far. A little bit more of the Windows and Mac sides had beenstarted. The model was a big pile of back-end code and then as smallas possible a piece of front-end code for each of the three platforms.

Seibel: And was this all new code?

Zawinski: It was all new code. Most of the Netscape founders hadbeen NCSA/Mosaic developers so they had written the variousversions of NCSA/Mosaic, which was actually three differentprograms. And all six of those people were at Netscape. They weren’treusing any code but they had written this program before.

Seibel: So they started with an empty disk and started typing?

Zawinski: Exactly. I never looked at the Mosaic code; still haven’t.We actually were sued over that at one point; the university claimedthat we were reusing their code and I guess that was settled one wayor the other. There’s always been that rumor that we started thatway, but we didn’t.

And really, why would we? Everyone wants to write version two,right? You were figuring it out while you wrote it and now you’ve gota chance to throw that away and start over—of course you’re goingto start over. It’s going to be better this time. And it was. With thedesign that the other ones had, there was basically no way to loadimages in parallel, things like that. And that was really important. Sowe had a better design for the back end.

Seibel: Yet that’s also a classic opportunity to fall into the secondsystemsyndrome.

Zawinski: It is, it is.

Seibel: How did you guys avoid that?

Zawinski: We were so focused on deadline it was like religion. Wewere shipping a finished product in six months or we were going todie trying.

Seibel: How did you come up with that deadline?

Zawinski: Well, we looked around at the rest of the world anddecided, if we’re not done in six months, someone’s going to beat usto it so we’re going to be done in six months.

Seibel: Given that you picked the date first, you had to rein in scopeor quality. How did that work?

Zawinski: We spent a long time talking about features. Well, not along time, but it seemed like a long time because we were living aweek every day. We stripped features, definitely. We had awhiteboard; we scribbled ideas; we crossed them out. This was agroup of like six or seven people. I don’t remember exactly thenumber. A bunch of smart, egotistical people sitting in a room yellingat each other for a week or so.

Seibel: Six or seven being the whole Netscape development team orthe Unix development team?

Zawinski: That was the whole client team. There were also the serverfolks who were implementing their fork of Apache, basically. Wedidn’t talk to them much because we were busy. We had lunch withthem, but that was it. So we figured out what we wanted to be in thething and we divided up the work so that there were, I guess, no morethan two people working on any part of the project. I was doing theUnix side and Lou Montulli did most of back-end network stuff. AndEric Bina was doing layout and Jon Mittelhauser and Chris Houck weredoing the Windows front end and Aleks Totić and Mark Lanett weredoing the Mac front end for the pre–version 1.0 team. Those teamsgrew a little bit after that. But we’d have our meetings and then goback to our cubicles and be heads-down for 16 hours trying to makesomething work.

It was really a great environment. I really enjoyed it. Because everyonewas so sure they were right, we fought constantly but it allowed us tocommunicate fast. Someone would lean over your cubicle and say,“What the fuck did you check in; that’s complete bullshit—you can’tdo it that way. You’re an idiot.” And you’d say, “Fuck off!” and go lookat it and fix it and check it in. We were very abrasive but wecommunicated fast because you didn’t have to go blow sunshine upsomeone’s ass and explain to them what you thought was wrong—youcould say, “Hey, that’s a load of shit! I can’t use that.” And you’d hashit out very quickly. It was stressful but we got it done pretty quickly.

Seibel: Are the long hours and the intensity required to producesoftware quickly?

Zawinski: It’s certainly not healthy. I know we did it that way and itworked. So the way to answer that question is, is there anotherexample of someone delivering a big piece of software that fast that’sof reasonable quality where they actually had dinner at home and sleptduring the night? Has that ever happened? I don’t actually know.Maybe it has.

But it’s not always about getting it done as quickly as possible. It alsowould be nice to not burn out after two years and be able to continuedoing your job for ten. Which is not going to happen if you’re working80-plus hours a week.

Seibel: What is the thing that you worked on that you were mostproud of.

Zawinski: Really just the fact that we shipped it. The whole thing. I wasvery focused on my part, which was the user interface of the Unix front end.But really just that we shipped the thing at all and that people liked it.People converted immediately from NCSA Mosaic and were like, “Wow, this is thegreatest thing ever.” We had the button for the What’s Cool page up in thetoolbar and got to show the world these crazy web sites people had put upalready. I mean, there were probably almost 200 of them! It’s not so much thatI was proud of the code; just that it was done. In a lot of ways the codewasn’t very good because it was done very fast. But it got the job done. Weshipped—that was the bottom line.

That first night when we put up the .96 beta, we were all sittingaround the room watching the downloads with sound triggers hookedup to it—that was amazing. A month later two million people wererunning software I’d written. It was unbelievable. That definitely madeit all worthwhile—that we’d had an impact on people’s lives; that theirday was more fun or more pleasant or easier because of the workwe’d done.


Перейти на страницу:
Изменить размер шрифта: