Ars Technica sits down with Scott Collins from Mozilla.org

By Jorge Castro (mailto:jorge@whiprush.org)

 

Introduction

This summer the Mozilla foundation will release Firefox 1.0. Based on the soon-to-be-released Mozilla 1.7 code base, Firefox 1.0 marks another milestone in the existence of "Mozilla" as the evolution of the Netscape code base since it was released as Open Source in 1998. Seemingly endless branding problems and name changes, an entire rewrite, and three organizations later, Mozilla still marches on as a collection of different products. Firefox 0.9, the final milestone before 1.0, was released today. Weighing in at 4.6MB, Firefox 0.9 is the smallest "Mozilla browser" since Netscape 3.0 in 1997.

As one can imagine, such a long and colorful history is bound to have its ups and downs. We ran into Scott Collins at this year's Penguicon (http://www.penguicon.org/) and had a talk about Netscape, Mozilla, software development, and the web in general. Scott Collins was hired into Netscape in 1996 and was in the trenches during the "Browser Wars" all the way through to the axe cut at America Online of the Netscape team. A veteran software engineer, Scott has also worked on the Newton software at Apple Computer, and for Macromedia working on what would eventually be sold as Final Cut Pro.

Though no longer working on Mozilla on a day-to-day basis, Scott continues to evangelize the Foundation and speaks about the code base and its history at events all over the world.

Scott's statements here are his personal opinions and observations: "In this interview, I speak for myself only, not for mozilla.org, the Mozilla Foundation, AOL, Netscape, or anyone else. I have plenty of opinions. mozilla.org and the Mozilla Foundation do not; and if they did, they would have plenty of room to disagree with mine. I'll take the heat for my opinions, and for any place where my ignorance has introduced factual errors (and from the email, it seems I may have made a couple)."

Having gotten that out of the way...

Ars Technica: Where do you see the future open source desktop, specifically this new interest in GNOME and Mozilla collaborating. Do you think that Mozilla needs to collaborate with other OSS projects in order to be successful, or do you think that it can survive on Windows? What about competition with Microsoft?

Scott Collins: I think that's a very tough question. I think that definitely Mozilla is going to thrive on Linux, and I hope that it thrives at the same time as the other Linux browsers that are available, and I hope that they drive each other to new heights.

There's only one thing powerful in this world enough to topple Microsoft, if toppling Microsoft is your goal, and that is Microsoft. People and empires, they fall under their own weight, because they're the only ones heavy enough to take them down. I think we are seeing the beginnings of that, a tremendous backlash in the marketplace towards software companies that are taxing their users, hugely in the cases of these giants like PeopleSoft and Oracle, but even those that tax the middle class like Microsoft does.

There's also Microsoft's hubris, that they have all the answers, that they know what's right for you, but yet we keep getting more and more security patches from them, because they don't actually know what's right for us. And Ballmer is saying that they didn't make any mistakes (http://www.washingtonpost.com/ac2/wp-dyn?pagename=article&node=&contentId=A1019-2004Apr10&notFound=true). Everybody makes mistakes, I've certainly made my share, and I'm certain that Microsoft has made their share. And to say that the virus culture was different two years ago, that's not true. Viruses were bad two years ago just as they are now; it's the same environment and the same hostility. Microsoft didn't do the right thing then, it wasn't a different culture, and they made a mistake.

Pride comes before a fall, and it is their hubris in knowing what people want, and saying "we know what is good for you," that is eventually going to pull them down. It's not going to be that somebody else actually knows better, because Microsoft actually does have a pretty good idea of what one generalized virtual person wants. But I think in the new world it's not about one big program to solve everybody's needs, it's about a zillion tiny programs all stuck together. Stuck together one way for you, stuck together another way for me that do the right thing. I think people are becoming savvy enough where they don't want a general program, they want something customized, they want a software kit that does what they want. Maybe if you're a business, it's not that every employee has a software kit, but maybe you are willing to spend to have two IT guys take an existing software kit and make it exactly what your business needs.

Microsoft is going to make it so painful for people to have exactly what they want that they'll give up. Some of them will live with what Microsoft gave them, and others will turn to systems to where they can get exactly what they want. And since no two people want the same thing, it's going to be a world of putting the pieces together. Microsoft will be the fall of Microsoft, and that's when the little pieces that cooperate with each other will thrive. Will Mozilla beat Microsoft? No. Can Mozilla thrive? Yes. What will make Mozilla thrive? Microsoft's fall under their own weight.

Ars: Speaking of little pieces working together, what is your opinion on Mono and the current work done by Mike Shaver and others to make Mono and Mozilla interoperate and integrate seamlessly? What do you think about C#?

I think Mozilla and Mono have a tremendous synergy that could really lead to great things, and I'm all for that. In general, C# is better than Java, and surprisingly so. It does the things that Java wants to do and does it better, however, Microsoft has come out and said that C++ is still the favored language for development on Windows, with managed extensions. I was the C++ language lawyer at Netscape, and I love C++, but I use the right tool for the job; lately I've been writing things in PHP using the PEAR Libraries. I really love Python and JavaScript, everyone of these languages has its place. It's these languages that try to be dogmatic, that think they are the whole answer, but never are the whole answer. Java has everything you need and doesn't want you to use anything else, but most of these languages come with stuff right out of the box that let you pull in things that you need. The whole .NET framework says "Use whatever language is appropriate", I like that. It seems that C# is very vertical, it's aimed at in-house type projects, and it's beating Java. Frankly though, if I had to write something in house, on a heterogeneous deployment, I would be strongly tempted to write it with C++ and Qt. Qt is extremely affordable and it's just great stuff.

 

Past Mozilla mistakes

Ars: You mention mistakes made by Microsoft. What do you feel are mistakes that Mozilla has made in the past?

One: There was a fundamental mistake made by Netscape management, twice, which cost us a release at the most inopportune time. I think we can attribute a great deal of our market share loss to this mistake that was pretty much based completely on lies from one executive, who has since left the company (and left very rich) and who was an impediment to everything that we did. He was an awful person, and it is completely on him that we missed a release. We had a "Netscape 5" that was within weeks of being ready to go, and this person said that we needed to ship something based on Gecko within 6 months instead. Every single engineer in the company told management "No, it will be two years at least before we ship something based on Gecko." Management agreed with the engineers in order to get 5.0 out.a

Three months later they came back and said "We've changed our mind, this other executive has convinced us, except now instead of six months, you need to do it in three months." Well, you can't put 50 pounds of [crap] in a ten pound bag, it took two years. And we didn't get out a 5.0, and that cost of us everything, it was the biggest mistake ever, and I put it all on the feet of this one individual, whom I will not name.

Two: We made a version of COM, called XPCOM, a fundamental piece of every component of every part of the software. We took COM all the way down to the lowest levels of the system, and I think that XPCOM is a fantastic useful tool. We had great and important places to use it, but we used it too deeply, we allowed it to influence our memory model across the board, and there continue to be costs associated with that which I don't think we need to be paying. I feel bad that I let it go that deep when I continually fought against it, but I am one of the perpetrators I wrote some of the machinery that made it easy to use COM, and that allowed people to go deeper and deeper, which we knew was a mistake.

I've been saying this for years, and people tend to think that I'm damning COM unconditionally, and I'm not. COM is very important to us, and it's a foundation of our scriptability layer, and scriptability is fundamental to how our application works. But I don't think every object should be a COM object. We are finally moving away from using COM for everything, and maybe a synergy with Mono will help us get to the right level of differentiation between objects. This is a deep engineering thing, but I believe that fundamentally that we took the COM metaphor too deep and we paid a price for that: we could have more performance sooner earlier on if we had recognized and stuck to limits in our use of COM.

Three: I was the head of the team that fought hard with Netscape management to get a system of XML to define the user interface. I named it the XML User Interface Language, or XUL (pronounced zool). David Hyatt is the primary implementer of it, and one of the ideas that we had is that we would have a cross-platform interface, but that you specify native controls with XUL. It turned out that specifying native controls with XUL was hard. They were limited, and hard to write, and we waited a long time. People kept telling us that Mozilla would never be good until we had the native controls, and we knew they were wrong, it is good without native controls, but boy, people really really want their native controls. And they really rewarded us when we gave them native controls. When we gave them things like Firefox, which looks native on the platforms that its on, and Camino, which is native in OS X. They thought it was fantastic.

We should have used native controls as soon as it was possible, despite of the fact that they're harder to write, because we ended up going that way anyway.

Ars: Can you name three things that you guys did well?

One: We promised that we would get the code out as open source on March 31, 1998. We moved heaven and earth to do it, and we got it out on time. It was no slam dunk, it was soul sapping, but we kept our promise it was very important that we kept our promise. [The PBS documentary Code Rush (http://www.amazon.com/exec/obidos/tg/detail/-/B00004T128/qid=1084799562/sr=8-1/ref=pd_ka_1/102-5488380-8196133?v=glance&s=video&n=507846) documents this entire period of Netscape's history, along with the birth of Mozilla.org. -ed]

Two: We got to a 1.0. We got there not on a time schedule, but by a set of things that we needed to do to get a 1.0 out.

Three: I think that we managed to let go of our preconcieved ideas of Mozilla. It's only because we're willing to let go of the past that we're able to move on to things like Firefox, Thunderbird, and Camino. I think that willingness to jump from the thing that we had, that courage to move to the untested new thing is the third thing we did right.

 

Gecko Runtime Environment

Can you elaborate on what the GRE (Gecko runtime environment) is supposed to be? Are you guys still going that way? For example, does Mozilla want Firefox to be the "default GNOME browser" or do you want what they define as a browser wrapped around Gecko?

I don't know that Mozilla as an entity has a desire like this. I like little things that work together. Pieces of this and that, for me the GRE fits into that perfectly: you reuse the piece you need. It's not just networking, it's also the layout, which you can use in lots of places. Some of them are general, like browsers. Some aren't.

For example, on the Mac there is a fantastic tool called Watson (http://www.karelia.com/Watson). It is a tool that gives you a different way to access things on the web. It has an interface for a dictionary, a different interface for a movie listing, all using a specific interface but using the same information that is available on the web. I think that it's possible to build an interface for things if you build a specific interface, out of the machinery that's available on your platform that can be much much faster than a general-purpose application.

Web browsers are like computers in a way, computers are soft tools for solving so many different problems but when you get to a particular problem they're not really the best thing often, but they're pretty good. They're better than anything you would have bought that's general purpose, so web browsers are like this too. Browsers can access all this information, but they're really general purpose, and sometimes you want a specific tool for to do what you want. A browser is great, but sometimes you want to use rsync, right? A web browser is great, but that movie thing lets me find out when Hellboy's playing fifty times faster while using the same information. It's all built on top of the same machinery. Watson isn't built on the GRE but you can see how if the GRE was a viable choice in the world how it would be that much easier for people to build a piece of UI that's perfect for the task on top of the GRE. I love the small things that are perfect for the task that just go together, and that's where the future lies. That's why I think the GRE is good.

Ars: Were you guys disappointed when Apple chose another rendering engine instead of Gecko for their Safari browser?

No. We were surprised, because at first we didn't know that they were using an external engine, we thought that they had written one from scratch, which to us, seemed insane. We knew how long it took and how frustrating it is.

Then we learned that they had built it on top of KHTML and everything made sense. You can't go back to the idea that after going through all that pain, that, not only did they not choose us, but they just didn't like us so much that they wrote a new one from scratch. It wasn't like that at all. KHTML is smaller, cleaner, and easier to get a grasp on. Their team is smaller and they weren't trying to go for the high-level concept that Mozilla has in mind. It turns out that the whole team is managed by Don Melton, who used to work at Netscape, and then later Dave Hyatt went over there. I have a great deal of admiration and respect for them.

Ars: Can you talk a bit about some of the lesser known Mozilla products, like the web tools? Bugzilla is used by a large number of high profile OSS projects, how come Mozilla.org isn't marketing these tools as much?

You could probably define the web tools as our primary product in a way. During the great migration away from AOL and Netscape, every engineer that ever worked there took with them Bugzilla, Tinderbox, and the others. I have a company now, and that's we use for our bug tracking: Bugzilla. Tara Hernandez (Code Rush), she now works at Pixar, and they use Bugzilla and Tinderbox. Once you use Tinderbox, you cannot work on big software without it. You see people working on big software without Tinderbox and you say to them "You guys are idiots! How do you know if your tree builds?" and they always say "Oh, our tree never builds, we know when a guy comes around and tells us when our tree builds."

Something interesting about Netscape: when I first got there, the tree was broken all the time. Every once in a while there was a day where the tree would build, and you pulled on that day. Someone would yell out "The tree is green!" and you would do everything you could to merge your stuff, and then the tree would be broken again, and it would be broken forever. When we wised up and started writing these tools things started to change, and along the way we came up with these cultural and behavioral standards. For instance, when the Tinderbox shows "RED", you don't check in. You don't check in on red. And if you do check in on red, someone will be there to kick your ass, and that person is the sheriff, and they have a sheriff badge and everything. In Code Rush you see Tara walking around with that bat, that was mostly symbolic but her job was to kick ass.

Everybody who checked in since the last freeze is "on the hook," so when the tree burns, everyone who checked in code during that cycle is responsible for fixing the tree. Life got better when there were serious consequences and it got to the point where in the old days everyone just checked in whenever they wanted. In the new days, you would be ashamed to check in something that broke the tree. It would be a big deal when you broke the tree. I checked in stuff that broke the tree on two occasions and the same guy fixed my shit twice, and I went out and bought him a bottle of Shiraz because I was ashamed that I broke the frickin' tree and I was grateful that he fixed it.

 

Competing against Internet Explorer

Ars: Did competing with Internet Explorer make you guys hungrier? Does it motivate you to do better?

I hesitate to say that any kind of group of people can have a motivation. I think the motivation for every person is different. For a lot of people, they don't do it because they're afraid, they do it because they love it. I write code because it's what I am, I'm not made for anything else. I work on Mozilla because I love it, because I was writing the browser that I wanted to use. It can be like a religion, the thing that drives programmers to work on what they work on. Sometime it's the money. For me it's because I care about the code, for other people it might be that they hate Microsoft, for others it might be that they want to feed their families.

I don't think that having Microsoft as our enemy made people hungrier. Microsoft is a juggernaut, a terrible enemy to have. Terrible because they just don't care, they don't have to care it's like the mosquito on the elephant. So, no, I don't think having Microsoft as an enemy or having them come out ahead of us made us hungrier. For some people, that's probably true, but I think people are driven by their own individual motivations.

Ars: You've been with Netscape since 1996, around version 3.0 of the product all the way up to the beginning of Mozilla and the birth of the independent Mozilla Foundation. Was there a low point where you just wanted to give up, where Mozilla just seemed doomed?

Oh man. There was this long downward slope. We got the code out there, but slightly before then to around just past Netscape 6, every time someone saw me, found out that I worked at Netscape or was associated with Mozilla they would tell me how much the product sucked. Every time I saw someone it was about how much I sucked and how what I worked on didn't matter. That really sucked.

One day that changed and somebody said "Man, Mozilla is okay!", and things started to get better. People still complain about various things but they end it with "but man, I love the product". Or, it doesn't do the 5 things that they really need but they continue to use the product and back Mozilla. There was a low point where I had heard about how much we sucked for so long that it was like being an abused child and you want to give up. I never wanted to quit then, but it became difficult to work at Netscape after AOL took over. It is likely that I would have left Netscape anyway if I would have rolled the dice one way or the other. But I still haven't left Mozilla, there's still nothing that has made me give up hope, I'm not part of the day-to-day coding anymore, but I do what I can for the Foundation.

Ars: When AOL parted ways with Mozilla.org, they left some resources for the Foundation to get on its feet. Some companies, like IBM and Red Hat sponsor developers who work on the Mozilla code base. Is there any vendor-backed interest for commercial companies to support the project?

I wouldn't say it's as organized as that. There are several big businesses that see the benefit in having Mozilla exist and do their part by funding an employee or donating money. Among these you have to count Mitch Kapor, from the Open Software Application Foundation as one of the greats. He contributed over a million dollars of his own money. The guy is an angel he came along at the right moment, and it is because of him that we are where we are today.

Ars: Microsoft's Robert Scoble brought up that Mozilla should work (http://radio.weblogs.com/0001011/2004/05/04.html#a7379) with the upcoming features in Longhorn, but most people fear that this would compromise Mozilla's cross-platform nature and bring closed standards to the web.

I think that one reason the focus is cross-platform compatibility is that core Mozilla development has a very limited set of resources. There are external contributions of course, but the core team doesn't have time to do that. When there's a significant amount of interest in a specific platform and exploiting all of its features, then a third party will often start a parallel development effort, as you see with Camino. It is very likely that there will be people who will be interested in deep integration with Longhorn, and I think that there's absolutely nothing wrong with that. There is a natural desire to build stuff that uses every possible facility to which it has access.

The main thing we've been looking out for, is to not build our browser in a way that encourages special standards that no one can keep up with or features that encourage people to do things the wrong way, or something that blocks out another browser. I think that you can integrate deeply into the target platform without jeopardizing the web experience and building a non-compliant tool.

Ars: Why two browsers, Camino and Firefox, for Mac OS X?

There are lots of reasons of why you would want to do this. First of all, there's going to be people that just like Firefox better than Camino. There's Macheads who are going to love Camino, and then there are Macheads that are so Maccy that they will love Safari. But, there are people that use many platforms, and they want the same thing everyplace.

There is a good engineering reason also: you want to keep the broadest reasonable range of clients available, so that you have a breadth of input. That way, when you make design decisions as a whole, you have enough variety to avoid it turning into a Mac-only or Linux-only product. Each platform is different; the goal is not to find the lowest common denominator, but the greatest common factor between platforms.

 

Mozilla's UI

Ars: When Mozilla was first getting off the ground, a common criticism was the choice to go with a UI that was designed via XML called XUL. These days it is common, but not when Mozilla decided to go this direction. Was this a tough decision? Do you feel vindicated now that XML-described interfaces are commonplace?

It was a tough decision. I felt vindicated not by the fact that other people picked up on it, but when we shipped a browser that worked. Even a long time after that people would say "It's slow because of XUL," and it wasn't slow because of XUL, we've actually made it so that it's one of the fastest out there. There are specialty browsers like Opera or Omniweb that are faster in some ways, but they don't have the full breadth and scope that Mozilla has. I felt vindicated by our own success.

On the other hand, although it took effort to push this through, it really was an idea whose time had come. There were already people building descriptions of UI and the building it dynamically. No one had done it exactly how we did it, but it wasn't a huge leap. Now it's mainstream: for example, iTunes' entire interface is built using XML. It looks like it's built with Webkit but it's not it is XML specified. I don't think people copied us, however, I think people had the same motivation that we had to follow this course: it lowers the bar to development, widening the input and opening up UI design to the massively-parallel open source community.

Ars: The default theme for Firefox on Windows was just changed, some people were not happy with this decision. How difficult is it to manage a community of users and developers, whom you depend on but at the same time make decisions which potentially upset users?

It's really difficult to do this right. People got pissed off when the last default theme was chosen. Also, when you think about it, when has the majority ever been right? The fact is, more people think they have good taste and others would agree with. Everyone thinks that their own taste is fantastic. It's good that we have people for whom the buck stops. Ben Goodger is the ultimate decider of what happens to Firefox, it's not a democracy, it's Ben Goodger, and that's fine. If you want it to be different, you are encouraged to make your own.

No offense to the author of Qute (http://www.quadrone.org/graphics/). His feelings are hurt, I'm sure if I was in his position, my feelings would be hurt. He probably feels like we're discarding his work, and that's sad. The fact is, it is good that one person is in charge, and that the whole product reflects the direction of one person. I think people are welcome to complain, and that's fine. I would rather hear the complaint from the guy who is willing to build an entire theme than the people who are whining without supplying a patch.

Ars: What's your opinion on where the Mozilla community is today? Where do you guys go from here?

I love it. I've never been good at predicting the future, I'm happy to be where we are now, but I think we have a long way to go and I have hope that we'll get there. I have hope that we will be a mainstream browser and that people will use Mozilla. Every place you walk today, you look at a sign, you look at the back of a truck you see URLs. Tim Berners-Lee did an amazing thing. But do you know why there's URLs on the back of trucks? It's because of the Netscape browser.

It took a lot of things all happening together to make the web work and one key piece of that was the Netscape browser, and that became part of the consciousness of the world. That's the thing I learned to lust after as a programmer. It's not my ability to solve one problem, to plow this field, but the ability to build a plow that every farmer uses. The ability to make something that touches not ten people, not a hundred people, not a thousand people but a hundred million people. I want Mozilla to be there again. IE is a browser with no soul. I want it to be Mozilla because I think that people who care deserve a browser with a soul.