
Windows 1.0 and the Applications of Tomorrow (2005) - bluedino
http://charlespetzold.com/etc/Windows1/index.html
======
jra101
It's amazing to me that cake.c with minor modifications can still compile and
run on modern Windows.

[http://jcode.org/screenshots/cake.png](http://jcode.org/screenshots/cake.png)

~~~
laydros
It's amazing in some ways, but I'm concerned it held Windows back to maintain
such a high level of reverse compatibility for so long.

~~~
mwcampbell
On the contrary, the Windows API has endured through some pretty big changes,
e.g. from 16-bit to 32-bit and then 64-bit, and from a cooperative single-
address-space system to preemptive multitasking with memory protection between
processes. (I was surprised that each application had its own message pump
even in the cooperative multitasking days.) In what ways do you think the
Windows developers' hands were tied by the need for backward compatibility?

Seeing how similar the Windows 1.0 API was to the current Windows APi for
desktop apps, I'm actually sad that Microsoft decided to (mostly) abandon that
legacy for the new "modern" Windows apps under Windows 8 and Windows Phone
8.1. There's no reason why the classic Windows API couldn't have been adapted
for these new-style immersive apps running inside sandboxed containers. But I
guess the Windows API gained too much of a reputation for being old, crufty,
ugly, and unapproachable for new developers; that's certainly how I saw it
when I got my first copy of Visual C++ in 1998. But now I wish Microsoft
hadn't responded to that perception by abandoning that API, which has now
evolved for decades.

~~~
gecko
I doubt he meant that _third-party developers ' hands were tied_. I think he
means that _Microsoft spent incredible resources on backwards compatibility at
the expense of innovation_. To take the most extreme example I can think of:
going from OS 9 to OS X, Apple preserved a (comparatively) handful of APIs as-
was, another pile as nearly-the-same-but-requires-modification, and regardless
of which they temporarily preserved, made it very clear that you _were_ going
to _completely_ rewrite your application if you intended to have a genuinely
native OS X experience. By contrast, farking _Microsoft OS /2_ apps survived
into Windows NT 4, and Windows 3.1 apps ran from 1993 through some forms of
Windows XP without blinking. Even in the hated Windows 8, Microsoft went out
of their way to make sure that they maintained very clear and well-spelled-out
migration paths. It is theoretically possible (though you'd be insane) to
write a WinRT app in C that mostly uses kernel32.dll, if you want to, because
WinRT is unapologetically based on COM, which is in turn based on an old way
that vtables happened to be laid out in VC++, which is in turn based on how C
structs used to lay out function pointers. This hurts WinRT performance
compared to what they could've accomplished with a Swift-like linker.

Did this insane focus on backwards compatibility hurt Microsoft? I don't think
you can conclusively say. Did it hurt me as a former Windows developer? Only
at best tangentially; all the backwards compatibility crap is pretty
abstracted from you if you hang out in .NET land. (Except when it isn't.[1])
And at any rate, I don't think the bleed-through is noticeably worse than e.g.
POSIX intrinsics showing up in OS X. But I think the argument that the
engineering required to ensure Windows maintained such a strong backwards
compatible stance ate out of resources that could've kept Windows more up-to-
date has a point.

[1]: [http://bitquabit.com/post/zombie-operating-systems-and-
aspne...](http://bitquabit.com/post/zombie-operating-systems-and-aspnet-mvc/)

~~~
whoopdedo
Needing to maintain compatibility certainly prevented Microsoft from fixing
prevalent bugs. The C runtime remained non-POSIX compliant for a very long
time because applications were written to expect the incorrect behavior. Some
of those bugs led to security holes that were exploited, yet couldn't be
patched for fear of breaking third-party software. That's how we end up with
redistributable runtimes as applications were told not to depend on the out-
of-date system libraries.

------
anigbrowl
_And many of you are hesitant about using high-level languages like C because
of the performance issues._

Well, we seem to have overcome that worry. I think most programmers of that
vintage must be horrified by the amount of bloat in modern computer systems. I
gave up worrying about not knowing what every file in my operating system does
several years ago, but I still feel bad about throwing in the towel.

~~~
danielweber
How do you feel when you run "top" or its equivalent on a modern OS? I feel
like the barbarians have completely taken over, and if not I certainly
couldn't stop them if they wanted to.

~~~
vezzy-fnord
Yeah, I think there should be a middle ground. On one hand, having more
resources that enable us to worry less about lower level minutiae is good. But
on the other hand when I see a resident Android device take up well over 400MB
from its UI and services alone, I can't help but think there's something a
little wrong here.

~~~
guard-of-terra
Your android is likely 32-bit full HD. Various bitmap caches would take good
part of those 400M anyway.

Compare to my first PC which did 800x600@8bit.

------
bdcravens
_but seemed much saner than trying to recreate an actual vintage 1985-era PC-
AT._

That was only a 20 year old computer at that point. I can play media from 50
years ago easily. I'd argue that software are more appliances (they do things)
than media, and appliances from 20, 30, 40 years ago are still serviceable and
working.

Yet we are amazed when a Raspberry PI can serve web pages, despite the fact
that it's many factors of more powerful than many circa-1998 web servers.

~~~
smacktoward
You can definitely play media from 50 years ago... but "easily" may be a reach
too far. How many people have easy access to a player for eight-track tapes
(circa 1964:
[http://en.wikipedia.org/wiki/8-track_tape](http://en.wikipedia.org/wiki/8-track_tape)),
for instance? Or a way to play back old Super-8 (circa 1965:
[http://en.wikipedia.org/wiki/8_mm_film](http://en.wikipedia.org/wiki/8_mm_film))
home movies? These devices can be tracked down, but it's not like they're
sitting at most peoples' fingertips.

~~~
laumars
8-track was a big flop outside of the US so didn't really get the ubiquity
that competing formats did. To look at things another way: how many people can
play HD-DVDs? It's only a few years old but suffered the same commercial
failure as 8-track did in Europe. Yet most people still have easy access to a
VHS players, audio cassette players and record decks despite those all being
old technologies too.

------
bluedino
>> Now, I know when some people see graphical environments they start whining
and saying “But I don’t want to use a mouse. There’s no room on my desk for a
mouse.”

How small _were_ desks back then, not having room for a mouse?

>> Well, with Windows, for the most part the mouse is optional. I won’t be
using a mouse at all during this demonstration.

I remember feeling 'cool' that I could use a Windows machine from only the
keyboard back in the 90's.

~~~
Gormo
You still can use Windows with only a keyboard. Until very recently, MS was
very good about maintaining UI consistency and having plenty of redundancy -
simply holding down the alt key in Win7, for example, will display the
keyboard shortcuts for all of the functions in the current window by
underlining the relevant letter, in the manner that used to be displayed at
all times in earlier windows versions.

Having recently switched to Linux, I've been astonished that some X
applications seem to require the use of a mouse, and that many graphical
environments don't have default keyboard shortcuts assigned to certain tasks.
At least it's much easier to create and redefine shortcuts, and you can always
open a terminal and type in the full commands as needed.

This is one of the things that's very annoying about applications that hide
the menubar or lack a menubar entirely. Cycling through menubar options with a
keyboard is far, far more efficient than attempting to use a keyboard with
many of the poorly-thought-out experimental UIs that seem to be increasingly
prevalent.

~~~
72deluxe
That daft "show shortcut letters when I press Alt" can be turned off so that
Windows ALWAYS shows those underlined letters. Thank goodness. It is unusable
else.

I would agree that X / Linux applications fail in this respect.

Also, Mac OSX by default will only tab between certain UI elements, and the
option to force it to tab between all UI elements cannot be reached with the
keyboard only, meaning if you start up without a mouse you can't turn on the
relevant option to use it with a keyboard, with a keyboard...........

