Seibel: After this relentless pace, at some point that has to start tocatch up with you in terms of the quality of the code. How did youguys deal with that?

Zawinski: Well, the way we dealt with that was badly. There’s nevera time to start over and rewrite it. And it’s never a good idea to startover and rewrite it.

Seibel: At some point you also worked on the mail reader, right?

Zawinski: In 2.0 Marc comes into my cubicle and says, “We need amail reader.” And I’m like, “OK, that sounds cool. I’ve worked on mailreaders before.” I was living in Berkeley and basically I didn’t comeinto the office for a couple weeks. I was spending the whole timesitting in cafes doodling, trying to figure out what I wanted in a mailreader. Making lists, crossing it off, trying to decide how long it wouldtake me. What should the UI look like?

Then I came back and started coding. And then Marc comes in againand says, “Oh, so we hired this other guy who’s done mail stuffbefore. You guys should work together.” It’s this guy Terry Weissman,who was just fantastic—we worked together so well. And it was acompletely different dynamic than it had been in the early days withthe rest of the browser team.

We didn’t yell at each other at all. And the way we divided up labor, Ican’t imagine how it possibly worked or could ever work for anyone. Ihad the basic design done and I’d started doing a little coding andevery day or every couple of days we’d look at the list of features andI’d go, “Uhhh, maybe I’ll work on that,” and he’d go, “OK, I’ll work onthat,” and then we’d go away.

Check-ins would happen and then we’d come back and he’d say,“Alright, I’m done with that, what are you doing?” “Uh, I’m working onthis.” “OK, well, I’ll start on that then.” And we just sort of divided upthe pieces. It worked out really well.

We had disagreements—I thought we had to toss filtering into foldersbecause we just didn’t have time to do it right. And he was like, “No,no, I really think we ought to do that.” And I was like, “We don’t havetime!” So he wrote it that night.

The other thing was, Terry and I rarely saw each other because helived in Santa Cruz and I lived in Berkeley. We were about the samedistance from work in opposite directions and because the two of uswere the only two who ever needed to communicate, we were justlike, “I won’t make you come in if you don’t make me come in.”“Deal!”

Seibel: Did you guys email a lot?

Zawinski: Yeah, constant email. This was before instant messaging—thesedays it probably all would have been IM because we were sending one-lineremails constantly. And we talked on the phone.

So we shipped 2.0 with the mail reader and it was well-received. Thenwe’re working on 2.1, which is the version of the mail reader that I’mstarting to consider done—this is the one with all the stuff that wecouldn’t ship the first time around. Terry and I are halfway throughdoing that and Marc comes in and says, “So we’re buying thiscompany. And they make a mail-reader thing that’s kind of like whatyou guys did.” I’m like, “Oh. OK. Well, we have one of those.” And hesays, “Well, yeah, but we’re growing really fast and it’s really hard tohire good people and sometimes the way you hire good people is youjust acquire another company because then they’ve already beenvetted for you.” “OK. What are these people going to be workingon?” “They’re going to be working on your project.” “OK, that kind ofsucks—I’m going to go work on something else.”

So basically they acquired this company, Collabra, and hired this wholemanagement structure above me and Terry. Collabra has a productthat they had shipped that was similar to what we had done in a lot ofways except it was Windows-only and it had utterly failed in themarketplace.

Then they won the start-up lottery and they got acquired byNetscape. And, basically, Netscape turned over the reins of thecompany to this company. So rather than just taking over the mailreader they ended up taking over the entire client division. Terry and Ihad been working on Netscape 2.1 when the Collabra acquisitionhappened and then the rewrite started. Then clearly their Netscape3.0 was going to be extremely late and our 2.1 turned into 3.0 becauseit was time to ship something and we needed it to be a major version.So the 3.0 that they had begun working on became 4.0 which, as youknow, is one of the biggest software disasters there has ever been. Itbasically killed the company. It took a long time to die, but that was it:the rewrite helmed by this company we’d acquired, who’d neveraccomplished much of anything, who disregarded all of our work andall of our success, went straight into second-system syndrome andbrought us down.

They thought just by virtue of being here, they were bound for glorydoing it their way. But when they were doing it their way, at theircompany, they failed. So when the people who had been successfulsaid to them, “Look, really, don’t use C++; don’t use threads,” theysaid, “What are you talking about? You don’t know anything.”

Well, it was decisions like not using C++ and not using threads thatmade us ship the product on time. The other big thing was we alwaysshipped all platforms simultaneously; that was another thing theythought was just stupid. “Oh, 90 percent of people are usingWindows, so we’ll focus on the Windows side of things and then we’llport it later.” Which is what many other failed companies have done.If you’re trying to ship a cross-platform product, history really showsthat’s how you don’t do it. If you want it to really be cross-platform,you have to do them simultaneously. The porting thing results in acrappy product on the second platform.

Seibel: Was the 4.0 rewrite from scratch?

Zawinski: They didn’t start from scratch with a blank disk but theyeventually replaced every line of code. And they used C++ from thebeginning. Which I fought against so hard and, dammit, I was right. Itbloated everything; it introduced all these compatibility problemsbecause when you’re programming C++ no one can ever agree onwhich ten percent of the language is safe to use. There’s going to beone guy who decides, “I have to use templates.” And then youdiscover that there are no two compilers that implement templatesthe same way.

And when your background, your entire background, is writing codewhere multiplatform means both Windows 3.1 and Windows 95, youhave no concept how big a deal that is. So it made the Unix side ofthings—which thankfully was no longer my problem—a disaster. Itmade the Mac side of things a disaster. It meant it was no longerpossible to ship on low-end Windows boxes like Win16. We had tostart cutting platforms out. Maybe it was time to do that, but it was abad reason. It was unnecessary.

It really felt—this is my bitter, selfish way of looking at it—like Terryand I built this great thing and were punished for our success by havingit handed over to idiots. That was a very unhappy time for me atNetscape. That began the period where I was only there waiting tovest.

Seibel: So you lasted there five years?

Zawinski: Yeah. A year past vesting, because just before vesting daymozilla.org started and that was really interesting again, so I stuckaround for that.

Seibel: Did you ultimately get dragged into using C++?

Zawinski: Well, there was the Java thing. At one point, we weregoing to rewrite the browser in Java. We were like, “Yes! We’re goingto get to ditch that 4.0 code base which is going to destroy ourcompany and this is gonna actually work because, like, we know whatwe’re doing!”

And it didn’t work.

Seibel: Did it just not work because Java wasn’t ready?

Zawinski: No. We were all broken up into fairly well-defined groups again.There were three of us working on the mail reader. And we were done. We had areally nice mail reader that was fast and had a lot of really nice features andwas better about saving your data—there were never any stalls where it waswriting some big file. We took really good advantage of multithreading in Java,which was less painful than I had expected it to be. It was just reallypleasant to work on. From the API we had designed we saw all these directionsit could grow.


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