Netscape Goes Bonkers

… and I’m very thankful, because Netscape 6.0 has been a terrific illustration of so many of the points I’ve made in Joel on Software over the last 6 months. Unfortunately, it’s usually an illustration of what not to do.

Way back in April, I wrote that Netscape made the “single worst strategic mistake that any software company can make” by deciding to rewrite their code from scratch. Lou Montulli, one of the 5 programming superstars who did the original version of Navigator, emailed me to say, “I agree completely, it’s one of the major reasons I resigned from Netscape.” This one decision cost Netscape 3 years. That’s three years in which the company couldn’t add new features, couldn’t respond to the competitive threads from Internet Explorer, and had to sit on their hands while Microsoft completely ate their lunch.

When they did, finally, release their software, it doesn’t seem like they did very much testing. The Joel on Software discussion group was full of complaints of bugs and general instability. This is one thing you can’t blame AOL for; when a new release of AOL ships, you don’t usually hear such an upcry about bugs. In Top Five (Wrong) Reasons You Don’t Have Testers, I wrote that Netscape “did an almost supernatural amount of damage to its reputation through their ‘testing’ methodology.” “Testing” in quotes because their methodology seems to be to ship to millions of people and then ignore any bug reports that come in. The sheer volume of bugs, it seems, proves that rewriting code from scratch does not make for a better code base, it makes it worse. Old code doesn’t rust, it gets better, as bugs are fixed. Lou Montulli again: “I laughed heartily as I got questions from one of my former employees about FTP code the he was rewriting. It had taken 3 years of tuning to get code that could read the 60 different types of FTP servers, those 5000 lines of code may have looked ugly, but at least they worked.”

The biggest single complaint about Netscape 6.0 revolves around the way they reimplemented every UI widget from scratch. Indeed, they felt that this was the only way to get cross platform compatibility. (It’s not. Microsoft Word and Excel are completely compatible between Mac and Windows versions, and they use native widgets and UI on each platform. When Mac Word 6.0 shipped, in which Microsoft had tried to make the interface a little bit more consistent with the Windows version, there was such a hue and cry from Mac loyalists that Microsoft had to ship a new version.) Many people complained about Netscape 6.0, for example, that you can’t right-click in the edit boxes and get a context menu — a feature which is available “for free” when you use the Windows native controls. Netscape 6 is just not very usable because it violates many rules of consistency. It’s not going to win many friends who were using IE (something like 95% of the users hitting my company site are IE users) because some of the things that IE users do just don’t work. For example, rather than reach for the mouse, I tend to go to a URL by typing Alt+D (which jumps to the address bar), typing the middle part of the URL (e.g. “nytimes” to go to “http://www.nytimes.com”) and pressing Ctrl+Enter (in IE, this automatically adds “http://www” and “.com” for you). The Alt+D / Ctrl+Enter combination is burned into my fingers now, but when I try it with Netscape 6, of course, it doesn’t work. Similarly, I’ve gotten into the habit of Shift+Clicking to open a link in a new window; Netscape opens the link in the same window. And I can’t use the scrolling mouse button on my ThinkPad to scroll, something which works with every other window in every other application I’ve ever used. I can’t even Alt+Space to get the context menu. I’m used to using Alt+Space N to minimize a window, and Netscape won’t do it. This is the first time I’ve ever seen a Windows app where Alt+Space N doesn’t work.

This is a lesson Microsoft learned years ago with Excel – which interprets Lotus 123 keystrokes perfectly – and Word, which is happy to go so far as to emulate WordPerfect’s white-on-blue screen. (I talk about the importance of consistency in Chapter 5 of UI for Programmers).

Netscape’s groovy “skinz” UI doesn’t honor the system settings. Once you’ve set the preferred system color scheme and fonts in Windows, Netscape will completely ignore them. For me, that’s just a nuisance. For vision-impaired users who need to set fonts very large or use high-contrast color schemes, it’s a reason not to use Netscape.

I can’t prove it, but I have to imagine that Netscape didn’t have a schedule for 6.0, choosing instead to meander for years and years and suddenly “find the religion” about shipping on time when it’s way too late to cut trivial features, like themes, and instead finish the important features, like standards compliance. Without a prioritized schedule, programmers will do the fun features first, not the important ones, where “fun” is very loosely defined.

Let me step back for a moment and point out one thing that I think that Netscape did right. If you’ve ever used Microsoft Outlook, you’ve probably been confused about how the Outlook Bar works:

Netscape’s Sidebar has exactly the same behavior as the Outlook bar, but with a slightly different visual appearance that makes it a zillion times easier to understand:

This is so much easier to understand because it uses a real world metaphor. The visual screen conveys the program model, teaching the user how it works, thus bringing the user model in line with the program model which makes it very easy to figure out. Sadly, this nice metaphor only works in the default theme; other themes (such as Sky Pilot) seem to have been created by people who are not as sensitive to the value of metaphors.

About the author.

In 2000 I co-founded Fog Creek Software, where we created lots of cool things like the FogBugz bug tracker, Trello, and Glitch. I also worked with Jeff Atwood to create Stack Overflow and served as CEO of Stack Overflow from 2010-2019. Today I serve as the chairman of the board for Stack Overflow, Glitch, and HASH.