How Microsoft Saved The World
 |
For hints, tricks and ideas about better ways to build embedded systems, subscribe to The Embedded Muse, a free biweekly e-newsletter. No hype, just down to earth embedded talk. 23,000 other engineers subscribe. It takes just a few seconds (all we need is your email address, which is shared with absolutely no one) to subscribe to the Embedded Muse. |
How Microsoft Saved The World
My backup laptop failed, it's LCD screen a scrambled mess
of static. Like many speakers, and
much to the chagrin of Cliff Stoll, I rely on Powerpoint for my firmware
seminars. Airport security is always much amused by my twin laptops, but a
failure would leave me dead in the water, I'd be relegated to making shadow
puppets in the accusing glare of an undriven projector. The spare is an
insurance policy against technology failure that I've never had to place a
claim against. But Murphy lurks always, ready to trap the unwary and unprepared.
Annoyed at the failure, I decided to use this event as a
chance to buy a shiny new machine with plenty of gigaweenies and mucho Hertz. Oh
happy day!
Maybe not. The new unit runs Windows XP. For reasons clear
neither to me nor to Microsoft tech support it won't correctly install Office
2000.
So, back to the store, plunk down a half-kilobuck for
Office XP. The expected trivial installation sequence crashed as the
not-completely-removed tentacles of Office 2000 did, well, something bad. More
annoyed now, an hours-long reformat of the hard disk and even slower reload of
Windows left the machine net-dead. To my woe I discovered that the Windows XP
environment uses a somewhat different networking scheme than that on my Win98
desktop. No problem: the folks in Redmond have you load new drivers on the Win98
machine. Except that it's been 2 years since I bought that computer, 2 years
in which too many programs were installed and deleted, creating who knows how
many broken registry entries. That machine died immediately after loading the
new drivers.
So I reformatted that disk, and reloaded many CDs worth of
programs. The engineer in me optimizes everything, so it seemed reasonable to
load Office XP instead of 2000. After 6 hours of work the machine came up with
all of my apps, connected to the network, and actually ran fine. For an hour.
Then it crashed and wouldn't boot. Another reformat, reload, and the same
result. Finally in frustration I reformatted and went back to Office 2000, which
works fine.
@$(*#$ Microsoft!
In the dozen years I've been writing for Embedded Systems
Programming I've learned that using the proper noun "Microsoft" without
immediately qualifying it with "sucks" floods my mailbox from angry readers
who feel I'm a Microsoft shill. Mob thinking is that the President's axis of
evil should include Microsoft. Anti-Redmond rhetoric borders on hysteria.
Yet if it weren't for Microsoft I'd wager that many of
us wouldn't be computing as easily and as ubiquitously as we now do. The
combination of DOS and IBM made the PC market explode. My first PC cost $7000,
which included two (optional!) floppy disks. Hard drives were all but unheard of
on microprocessors. At the time dozens of competitors sold decent machines,
mostly running CP/M, for much less money. IBM brought little to the party except
their stellar reputation and a software strategy based on DOS.
Microsoft bought DOS for $50k from a small Seattle outfit.
A bit of repackaging and the vision to acquire the product started the
company's rise to their huge successes. Many fault Microsoft for this action,
and a later lawsuit put substantially more money in the inventors' hands, but
it was a shrewd business move. Was it luck or was it vision?
IBM's marketing and the really useful DOS, coupled with a
variety of applications, made the PC a natural winner. Their choice of the
hermaphrodite 8088, a 16 bit CPU with an 8 bit bus, and the ability to address
640Kb of memory were wise and empowering. Sure, the 68000 was better, but
Motorola was too late to meet IBM's market window.
People today sagely shake their heads and wonder how IBM
could plop video memory in the middle of the 8088's address space, which gave
the 640k limitation. Fact is, at the time no one ever dreamed we would need or
could use so much memory. I'd worked on a $10 million mainframe just a few
years earlier that had three quarters of a meg of 36 bit words of memory (yes,
36 - that's not a misprint. Univac's Fielddata was an alternative to ASCII
that packed six 6 bit characters into a word. Needless to say, there was no
lower case). That machine, with a 750 nsec cycle time, supported hundreds of
concurrent users. Not well, but back then any sort of computer access was
a godsend.
So 640K for a home machine seemed like absurd overkill. How
things have changed in two decades!
The PC came in a very nice package, one that looked
professional and reasonable in a business environment, something that could not
be said of the Ohio Scientifics, SOLs, MITS and other machines, some of which
had wooden enclosures. Companies snapped them up faster than home users. Killer
apps flowed like water: word processors, spreadsheets, databases, and many more.
An illegal immigrant named Phillipe Kahn started Borland,
selling a $29.95 Pascal compiler for CP/M that was fast, interactive, and fun.
They quickly caught on to the PC market, though promised their customers
they'd never abandon CP/M support. That promise evaporated faster than the
S-100 bus.
Soon everyone was building PC apps in Pascal. Borland
followed with their Turbo C compiler, which was just as much fun as their
Pascal. I credit Borland with making C affordable and launching a wave of C
coded applications for the PC platform.
The early PCs came with the complete source code to the
BIOS as well as full system schematics. This was long before the days of custom
ICs whose 250 pins go to a mysterious box shown on the schematic; all of the
parts were standard devices available off the shelf. Before long competitors
offered clones at far lower prices than IBM anticipated.
The resulting volumes drove computer prices to the
astonishing numbers of today. 20 years ago who would have dreamed, in their
wildest imaginations, that we'd get 1 GHz processors with 20 Gb of disk and
128Mb RAM for $695?
DOS, though, was just a barely souped up version of CP/M.
Early versions matched the hardware with no hard disk support and the most
primitive of filesystems. Millions of non-computer folks learned to use DOS,
though generally only in superficial ways. It was hardly user-friendly and had
long cryptic command strings people entered with a blind fervor and lack of
understanding that was horrifying to us who knew computers.
Before a real GUI most people couldn't use a computer.
UNIX machines of the time cost far too much for the average person. And how many
non-techies, especially before X, could use UNIX? It's a fantastically
powerful OS: you can do anything with it! but have to be an expert to do
anything at all.
I worked on an early Lisa machine from Apple, which
titillated with a completely unworkable yet compelling GUI. Then the Mac
arrived; I still remember that moment of epiphany when I first tied one in a
computer store. My rookie mouse driving was awkward yet thrilling, the ability
to select desktop icons and launch apps was a complete sea change from any
computer I'd ever even imagined. I bought one on the spot, and forever loved
that machine, despite it's unbearable slow single-floppy drive.
Microsoft's real genius surfaced a few years later with
Windows. Win 1.0 was worse than awful. 2.0 not much better. Even 3.0 was
practically unusable. Through failure after failure Microsoft kept to their
vision, continued pursuing the GUI desktop that finally succeeded after years of
effort. That's almost unheard of in our failure-adverse society.
Some argue Windows was a stolen knock-off of the Mac
interface. No doubt that's true. Steve Job's trips to Xerox PARC, though,
makes Apple look an unlikely virgin. The free flow of ideas out of PARC
benefited both Microsoft and Apple, and more than anyone, their customers.
Windows brought computing to the masses. The Mac was
arguably better, certainly a cleaner and more reliable design. But their closed
architecture philosophy doomed the machine to a small niche market. In this
business technical excellence is not what determines who wins.
Windows won. Despite its flaws, it dominates this industry.
Is Windows the optimum OS? Of course not. It's a god-awful mess, too complex,
too fragile, and at the moment unsuited for the security threats implicit in a
networked and mean-spirited world. But it sure beats that old CP/M system I had
years ago that crashed constantly, or the PDP-11 that used impossibly slow mag
tape as the only mass storage medium, or the 1108 hidden behind secure walls and
protected by a priesthood of operators who gave us 24 hour turnarounds on our
runs - if we were lucky.
Today I exchange Word files with people all over the world;
the universality of this file format (OK, OK, these file formats. I hate
it when they change formats with every upgrade!) making such communication
possible and easy. It even works across platforms, Apple and PC, and sometimes
even to Linux boxes running various open source office platforms. That is pretty
cool, and is essential for universal computing.
Computing has never been better.
Our expectations are so high, though, that computing has
never been more frustrating. We expect the machines to perform flawlessly and
are disappointed and angry when troubles hit. When my ISP glitches and net
access disappears for an hour I'm left adrift, not quite sure how to cope.
Rebooting Windows prophylacticaly to avoid resource depletion and unexpected
crashes is absurd and annoying.
Despite all of the flaws in their products, Microsoft truly
enabled the age of the computer for everyman. I credit them for having the
vision and patience to pursue a GUI despite so many failed versions, and for
generating (eventually) an integrated Office suite that offers more capability
than I could ever use, yet that works amazingly well. Perfect? Nope. But really,
really good.
And by the other measure of success in our capitalistic
economy, profits and net worth, they've excelled beyond all expectation. For
their stockholders (I'm not one! and kick myself for not having jumped in
when they first went public) they are doing the right things.
The computer world is changing, though. It's saturated,
most Americans have easy access to all the compute power they require. The
replacement market isn't as healthy as of yore, since new generations of
machines now offer only incremental, not revolutionary, performance
improvements. Windows and Office are mature and probably can't offer much more
that the usual customer would care much about. New growth opportunities will
have to come elsewhere for Microsoft to retain it's dominance.
The world has been searching for the next "killer app"
when it's right under their noses: embedded. That's where all of the market
growth will be. Our lives will be so computationally rich in the future we
won't be able to imagine a processor-deprived existence. Plenty of PCs or
PC-like devices will be around, but there will be a fabric of interconnected
computing that controls and guides our every action. This is where the action
will, which Microsoft does seem to recognize.
Microsoft must be successful in embedded systems or
they'll wither. Linux and as yet other unknown products will arise to
challenge their desktop hegemony. Since they've traditionally had practically
100% market share, any new product with any reasonable level of acceptance will
only cut their revenues. And 100% market share translates to near zero growth
opportunities.
The company has the resources, and could easily buy every
extant embedded tool company for cash! and still have billions left
over.
The market is ready for Microsoft. The cost of electronics
keeps falling. A pretty decent 32 bit embedded computer is quite cheap today. I
expect that as LCD screen prices fall GUIs will be as common in embedded systems
as they are on desktops. Will Windows CE fill that niche?
CE is a pretty good idea - a nice GUI with an API
everyone knows. Perfect it ain't, but there's legions of programmers who are
competent Windows developers, ready to crowd out those of us who grew up on
traditional embedded OSes like VxWorks.
Redmond cannot succeed in this market using the powerful
marketing tactics that worked so well in PCs. Their customers aren't
consumers, now; they're engineers. Most want technical elegance. Embedded apps
demand reliability. Though the cost of transistors continues to plummet
asymptotically towards zero, many, many embedded systems will remain the domain
of limited resources where memory, power, and CPU cycles are all in short
supply. Microsoft successfully gambled that code bloat would be eclipsed by
cheap CPU cycles and disk space. But that will not work in the embedded
space.
Moments before we went to press Microsoft announced that
all of CE's source code will be availableI under their "Shared Source
Initiative". The news is too new to interpret completely, but it appears that
some or maybe all Microsoft customers will be able to get and modify the source.
This is a great move, a necessary step in creating trust in CE's reliability.
The company claims they will accept suggestions for improvements - a good
thing, but not the community-embracing spirit of the GPL which thrives through
developer involvement. I think Microsoft has come very close to a decent
business model for CE. I hope they form a community relations group that
provokes, demands, and embraces changes and suggestions from us users.
Next, Microsoft
must make CE comply with the DO-178B safety critical standards. Most other
embedded RTOSes are headed that way. DO-178B doesn't prove correctness, and is
itself a long way from the perfect certification tool, but does have a lot of
support. Complying is, at the very least, another way to demonstrate
reliability. A "reliable computing initiative" that seems driven by the
marketing department, is not.
Despite all of the hoopla about Linux, I think the future
is far too hazy to predict its dominance in the embedded world. It, too, is big
and resource intensive, limiting the domain of apps it's appropriate for. It
has been used in flight software and other high-rel applications, but it, too,
could profit from DO-178B certification.
20 years ago we could not even dream of where we are today.
The next decade is equally murky. I do think we're at a crossroads in the
industry, and that Microsoft is facing new challenges beyond any they've seen
before. They saved the computer world, putting a lot of power on everyone's
desks. But their old model won't scale to the new world order.
Yet I'd never predict their demise. With deep pockets and
a lot of smart employees, there's little doubt they can, if they chose,
produce the embedded framework that powers the future.
We live in interesting times!
|