On 1 Nov 2007 at 13:47, John Howell wrote: > At 7:59 AM +0100 11/1/07, Jari Williamsson wrote: > >David W. Fenton wrote: > >>Consider the case of Netscape, which chucked its entire codebase > >>and started from scratch. > > > >Which is kind of my point. A rewrite, using mainly the same kind of > >thinking, using mainly the same kind of tools, will not solve > >anything. > > I think I understand both sides here, but they leave me confused. > Partly because I've used Netscape exclusively since I first gained > access to the internet, back in the early '90s, and have never wanted > or needed anything else.
If you designed web pages you'd know how defective NS4.x was (the last version created before Netscape chucked the code). In turn, Microsoft stopped developing their browser for a long time, and right now, web developers have to deal with the fact that Internet Explorer has a substandard implementation of the standards of HTML and CSS. This means that it's harder to produce interesting websites that work on all browsers. > Yes, it's now called Navigator, It was always "Netscape Navigator." > and it's > based (apparently) on Mozilla or Firefox or whatever, which is > supposed to be a big improvement, and yes, I'm learning to use Tabs, > but it still gives me the functionality I need. The Netscape browser you're using today is built from the new codebase, but it really only became usable in 2001 or so (which is when I switched to Mozilla as my default browser, around version 0.9.x, which was more than a year before the release of Mozilla 1.0, and more than 3 years before the release of FireFox 1.0, which is when the Mozilla project returned to viability as a mainstream web browser). It has been built on the new codebase since version 6, but it was a very buggy and slow browser in comparison to Internet Explorer from the same time period. It was, in fact, completely unusable back then. > David's reasoning seems to be that Netscape lost money during a > fallow period, but that didn't affect me and it apparently didn't > cause the company to fail. Eh? What are you talking about? In the mid to late 90s, Netscape was an independent company with a huge market capitalization (they were like Google is today -- everyone thought they were going to be the big winner in the Internet bonanza) because they offered two crucial Internet technologies, the best browser in existence and (at that time) the best web server (which was not free, as the browser was -- in order to the get people to use the Internet on the theory that people would then want to buy Netscape's web server software). The decision at the end of the 90s to chuck the browser codebase and start over led to the company's demise as an independent entity. It was purchased by AOL, and at this point does not really exist as an AOL division, though AOL has continued to keep a few programmers around to take the Mozilla codebase (which is no longer controlled by and "Netscape") and package it into a browser that is branded as being "Netscape Navigator." But it's really just a "skin" running on the Mozilla web browsers (just as Firefox is, though to a lesser extent than Netscape is). > Wouldn't it be a good business plan to > continue supporting a program based on ancient code while at the same > time developing a new program with new code and none of the old > problems, designed to replace the older program, and able to open ALL > files from the old program, regardless of version? Did you read Joel's article? He gave the answer: if you've got crufty, ugly code that's preventing you from adding new features, you do what's called "refactoring." What that means is that you take the original code and don't change any functionality or behavior, but what you do is rewrite it to get rid of all the ugliness. That means revising the way it's organized and how it performs certain operations, but since you're always doing it tiny bit by tiny bit, and not changing any functionality, you always have a codebase that can be used to produce a shipping product. Joel said there's nothing wrong with the refactoring approach. The result of a complete refactoring is that you end up with a codebase that includes all the legacy bits but that is easier to manage. This is what I suggested MakeMusic might very well be doing with Finale in the background. But what Netscape did was start from a clean slate and re-architect the software from the ground up. Consider an analogy: You live in a house that has a stairway that is too narrow, and leans at an angle, but if you're careful, you can climb it easily. The floors in half the rooms lean at an angle, but you've built your furniture so that it sits properly on top of the tilting floors. The problem is that you can't rearrange the furniture the way you'd like because the furniture legs are cut to sit properly only in one orientation to the tilt of the floor. Now, you have two choices: 1. continue living in the old house while you build an entirely new one, OR 2. gradually remodel the old house to fix one problem at a time until eventually it's OK. Netscape did the first one, leaving everyone who loved Netscape to live in the old house with the tilting floors. While the new house was being built, many people moved out, instead, to Internet Explorer. Now that the new house is finished, many people have moved back in. But what Joel would advise is #2 -- you'd start out by rebuilding the narrow, angled stairway. Then you'd start on the floor in one room, and what you'd do in that room is fix the tilted floor and saw the legs of the furniture to sit straight on the newly flat floor so you can arrange the furniture in that one room any way you like. Then you'd move on to another room. After enough years of this kind of bit- by-bit work, you'd have a stable house with ample stairways and flat floors, and the ability to arrange the furniture any way you like. Now, building a house is actually substantially easier than writing software. The reason is because the house doesn't have to adapt to any location but the single lot on which it's built, whereas software has to run on multiple OS's, on multiple versions of different OS's, and has to work well with a whole host of ever-changine "neighbors" (in the form of other software, plugins, etc.). So, many of the "period details" in the old house of software need to be replicated in the new house, or the new house won't work well in its new contexts and with its "neighbors." Perhaps the analogy is now strained way beyond its utility, but the point is that Joel is right that Netscape did the wrong thing. They should have refactored, and if they had, the MS juggernaught may not have fully acquired the monopoly that it has today. Maybe -- there's no way to no. But what we do know is that at a crucial time in the evolution of the Internet, Netscape was absent with an offering of an up-to-day web browser, and it was only because they decided to start over instead of refactoring. -- David W. Fenton http://dfenton.com David Fenton Associates http://dfenton.com/DFA/ _______________________________________________ Finale mailing list Finale@shsu.edu http://lists.shsu.edu/mailman/listinfo/finale