
Why wasn't the Windows 95 shell prototyped on Windows NT? - Garbage
http://blogs.msdn.com/b/oldnewthing/archive/2012/01/02/10252333.aspx
======
meanguy
As someone who worked in the systems division throughout the 90s, I've often
found Raymond's history a bit odd.

"Windows 95" was originally "Windows 93" and explicitly wasn't going to have a
new user interface. They wanted to maximize revenue and not force people to
re-train. It slipped and slipped and slipped...

The UI was actually prototyped and built not on Windows NT, but Cairo -- the
thing that was supposed to come after Windows NT 3.1. It also slipped and
slipped and slipped...

Paul Maritz (now of VMware) thought it was a great idea to have lots of teams,
under competing vice presidents, build overlapping systems technology that
needed to remain compatible at the legendary Windows level.

So. Stupid.

It basically took until Windows 7 to get the mess he created straightened out.

The key shuffle had the Cairo UI developers -- but not the designers -- move
from under VP Jim Allchin to VP Brad Silverberg's group. Design was managed by
Joe Belfiore, a very junior guy with no design or UI design experience. Nobody
wanted the job (interface was not respected then) and he manned up and took
it. He's now VP over Windows Phone.

But this engineering team was sort of -- uh -- let's just say Allchin didn't
really fight to keep them. The types of guys who never quite realize width is
(x2 - x1 PLUS 1) resulting in everything from blurry icons to blurry
images/faxes for a decade. Who then refuse to fix the bugs because they "don't
see it and it would add risk to our ship date."

After Windows 95, these devs went on to build the first IE. Yet again in a mad
"must ship" panic, again led by people with no visual or design experience,
again under Silverberg. So that's where all the box model madness and "things
just don't line up" nonsense started.

~~~
yuhong
>They wanted to maximize revenue and not force people to re-train. It slipped
and slipped and slipped...

And don't forget the 80386 was released in _1985_. In fact MS had the early
OS/2 2.0 SDK betas in around 1990 which continued until MS broke the JDA in
mid-1991. And while Chicago was slipping, look up "OS/2 Microsoft Munchkins"
for some of the unethical tactics MS used to attack OS/2 after the JDA was
broken. And I hasn't even mentioned DR-DOS yet.

In fact, MS screwed up the protected mode transition so badly I could write an
entire article about this history, starting with when Intel announced the
80286 in year 1982 but MS ignored it and made the mistake of wasting years
writing a _real mode_ multitasking DOS. Then IBM refused to license it, which
led to the JDA in 1985, which resulted in the 286 protected mode based OS/2
1.0 being released in 1988 which was what should have been finished by 1985 in
the first place. Problem was that the 386 was introduced by Intel in 1985, and
I could go on about Windows/386 and Windows 3.0 etc including the MS OS/2 2.0
SDK betas mentioned above...

------
pud
Interesting how the developers of Windows 3.1 were forced to use relatively
low end computers.

The hardware & bandwidth of your average HN reader is likely much better than
your users' setups.

Does anyone here keep low end computers on hand for testing? With the
proliferation of client-side Javascript processing, hardware is becoming more
important. What about testing over dial-up or slow DSL?

Anyone know of an easy way to simulate a slow bandwidth connection? Perhaps
tether your MacBook to your iPhone and turn off 3G, to test at Edge speed.

Lowest I go is testing on IE8 in a VM on my MacBook Pro. That's probably not
good enough (or... bad enough, technically).

I'd like to see a discussion about this topic. Testing with low end hardware &
bandwidth, etc.

~~~
hboon
If you are using Lion and have Xcode 4 (or was it 4.1). Check out link
conditioner which lets you simulate slower and less stable connections.

~~~
ZenPsycho
tried it. didn't work.

~~~
hboon
Can't install/run or when it doesn't have any effect when enabled?

------
reidrac
I always thought it was related to MSDOS compatibility.

If I recall correctly cli, sti, in, out, ... are privileged operations in
WinNT, but not in Win95. Why? Because these instructions can't work in
virtual-8086 mode and need to be handled by the OS, and that was really
expensive for early 32bits machines. Win95 required legacy DOS programs to
work with a reasonable performance, so the solution was to ignore the problem
and allow the privileged operations... and I can't provide more details
because I don't remember them :)

So yes, it was a hw limitation thing.

EDIT: typo fixed.

~~~
yuhong
Yea, Intel VME, introduced in the Pentium and SL-enhanced 486 processors,
fixed the problem by allowing the processor to maintain the virtual interrupt
flag.

------
mrcharles
"(When Windows 95 shipped, my primary machine was a 486/DX50 with 8MB of RAM.
My test machine was a 386 with 4MB of RAM. The combined computing power and
storage capacity of all the machines in my office is now exceeded by your cell
phone.)"

I love the pace of technology.

------
Aqwis
This makes me wonder why NT's minimum requirements were _six times_ those of
Windows 3.1's. Both 3.1 and NT 3.1 had essentially the same front-end, to my
knowledge, so was NT's back-end just that vastly more inefficient than DOS?

~~~
meanguy
Raymond also glosses over this a bit in his article. Microsoft wasn't selling
Windows 95. Microsoft was selling an upgrade product to corporations who ran
Office.

There were few (if any) 12MB machines, it was mostly 8MB or 16MB. (If you had
4MB, Windows 95 would boot and you could play Minesweeper.)

The target market had 8MB systems. Which needed to run Windows 95 + Office 95
flawlessly. 4MB was a lie and a fake goal -- which made it all the way to the
box -- that made sure an 8MB system could run Office.

User Interface and Plug and Play were the risk items. I personally thought
giving the critical path guys shitty dev machines was shortsighted -- we had
plenty of ways to make sure the overall system met performance goals.

NT wasn't that much bigger. It had the Win16 subsystem (WoW), so there were
basically two copies of Windows running at all times. Still, NT fit
comfortably in 8MB and ran every version of Office (old and new) well in 12MB.

TL;DR: arguments over 4MB and one cycle of upgrade revenue stalled Windows and
IE development for 15+ years.

~~~
yuhong
Note that Raymond was talking about NT _3.1_ , and one of the goals of 3.5 was
to make it smaller and faster.

~~~
meanguy
Yeah, I file that under "Raymond glossing things over." NT 3.5 shipped 11
months before Windows 95 did!

People forget that Microsoft wasn't always a lumbering giant. Ship dates:

NT 3.1 - July 93 NT 3.5 - September 94 NT 3.51 - May 95 NT 4.0 - July 96

Platform support: Intel, MIPS, Alpha, plus PowerPC on 3.51 and 4.0.

