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

Reply via email to