ontolog-forum
[Top] [All Lists]

Re: [ontolog-forum] How not to write specifications

To: "[ontolog-forum]" <ontolog-forum@xxxxxxxxxxxxxxxx>
From: "John F. Sowa" <sowa@xxxxxxxxxxx>
Date: Tue, 01 Jul 2008 15:38:22 -0400
Message-id: <486A87AE.7020102@xxxxxxxxxxx>
Ed and Peter,    (01)

I agree that backwards compatibility caused much of the
problems, but the worst of them were created by Bill's
own efforts to make Windows a moving target that the
competitors (mostly IBM) wouldn't be able to emulate.    (02)

The versions before Windows 3.0 were so miserable that
Microsoft agreed with IBM to develop a clean new OS/2,
which was jointly designed and which would have a separable
GUI called Presentation Manager.    (03)

EB> (1) a general lack of design principles in MS Windows in
 > the 1990-95 period...    (04)

Not true.  Microsoft hired the chief designer of Digital's VMS,
which was an outstanding operating system.  The foundation for
NT was OS/2, which was jointly designed by IBM and MSFT.  The
GUI conventions were the same as the OS/2 Presentation Manager,
which IBM later upgraded to an object-oriented interface for
OS/2 Warp.  Even today, OS/2 is more advanced than Vista in
many of the same kinds of ways as Apple's OS X.    (05)

But in 1991, Windows 3.0 became popular, and Bill decided to
renege on the contract with IBM and develop a 32-bit version
called Windows NT.  Many years later, the first release of NT
was still generating messages that reported "OS/2 error".    (06)

Until version 3.1, Windows had a clean interface to DOS that
allowed it to run on top of DR-DOS or OS/2.  If MSFT had
preserved that option, they could have delivered subsequent
updates to Windows as a GUI on top of a clean NT in exactly
the same way that 3.1 ran on top of OS/2.  By 1995, they
could have had the W95 GUI running on top of either DOS 7.0
or NT -- just as OS/2 supported both PM and Windows 3.1
simultaneously.    (07)

Instead, Bill G. had the bright idea of introducing Windows
for Workgroups, v. 3.11.  As far as I know, very few people
actually used any of the features in 3.11.  However, 3.11 was
the first version of Windows that dipped below DOS, and the
main reason was to make it incompatible with DR-DOS and OS/2.    (08)

By introducing the nearly useless 3.11, MSFT created multi
billions of dollars of wasted effort for themselves and even
more for their customers.    (09)

EB> (2) a poor hardware base...    (010)

EB> (3) upward compatibility requirements...    (011)

Neither of those is true.  Both NT and OS/2 were designed to run
on any 32-bit hardware, and the migration strategy outlined above
would have allowed the old 3.1 GUI and a full 32-bit GUI to coexist
on different applications running simultaneously.    (012)

EB> (4) all things to all men.  The Windows target market was
 > businesses, control systems, gamers and hobbyists, and grandmothers.    (013)

Apple's OS X meets those requirements far better with a separable
GUI on top of a Unix clone.  A server doesn't need a high-speed GUI,
but a game machine needs a super-speed GUI.  If they're separate,
you can support both with the same kernel.  For example, a game
GUI could run in a virtual memory that is locked into unpaged RAM.    (014)

EB> (5) external pressure.  Vista is a hack on Windows XP whose
 > primary objective was to lock down security before certain powerful...    (015)

Any OS designer with any smarts would know that those security features
would be broken by a professional hacker in about 15 minutes.  Sony
made the foolish decision to placate the RIAA, and Steve Jobs ate
their lunch.  When an industry such as RIAA has an obsolete business
model, getting in bed with them is suicide.    (016)

EB> And OBTW, the saga of Windows is a nearly one-for-one repeat of
 > the sequence of mistakes IBM made in designing operating systems
 > for the 360/370 series between 1964 and 1976.    (017)

I was at IBM in those years, and I plan to write some memoirs about
those events.  The only thing in common was that pointy-haired
bosses made technical decisions for political reasons.  The kinds
of mistakes were very different.  See the comic book written by
a colleague of mine in 1974:    (018)

    http://www.jfsowa.com/computer/tftim.htm
    The Adventures of Task Force Tim    (019)

Or Memo 125, which I wrote in the same year:    (020)

    http://www.jfsowa.com/computer/memo125.htm    (021)

PFB> Sure, they have a way to go to catch up with the by-design
 > modularity that typifies Unix and MacOS but they shouldn't be
 > criticised for going in the right direction again!    (022)

The right direction would have been to bite the bullet and make
.NET a clean system.  The Microsoft Foundation Classes (MFC) are
a disaster, and there is no reason why .NET should emulate them.
Nobody is going to move a large application to .NET without a
total rewrite, and MSFT should have made a clean start with a
clean library for the future.    (023)

PFB> I've looked at some very nicely modular large-scale OSS
 > projects and, frankly, there too - you need to see the whole
 > in order to understand any of the parts...    (024)

There is a difference between making the parts conform to a
predefined whole, and making the parts conform to one another.    (025)

I believe that the root cause of Microsoft's "garbage-by-design"
approach is their development process, which is based on the
"daily build".  With a solid interface, changes below the kernel
should never affect anything above the kernel.  But by assuming
that they have to recompile the entire OS on a daily basis, they
are admitting that their interface is a solid as Jello.    (026)

John    (027)


_________________________________________________________________
Message Archives: http://ontolog.cim3.net/forum/ontolog-forum/  
Subscribe/Config: http://ontolog.cim3.net/mailman/listinfo/ontolog-forum/  
Unsubscribe: mailto:ontolog-forum-leave@xxxxxxxxxxxxxxxx
Shared Files: http://ontolog.cim3.net/file/
Community Wiki: http://ontolog.cim3.net/wiki/ 
To Post: mailto:ontolog-forum@xxxxxxxxxxxxxxxx    (028)

<Prev in Thread] Current Thread [Next in Thread>