part
two: past legacy and future architecture
The treasure island
experiment will be publishing a series of articles comparing
the latest operating system offerings from apple and microsoft.
As the second article in the series, part two will examine the past
legacy and future architecture presented by both mac os x and windows
xp. Successive articles will examine how the two project compare
in terms of their network services and application support; networking
and hardware support; user interface and usability; application
availability, portability and api support; and real world performance,
capability and reliability.
from the beginning: design philosophy
Understanding the guiding principles behind a technology development
effort helps to explain why engineering decisions were made. In
the case of unix, the design
philosophy centered on doing small things very well. Further,
unix has been openly examined for decades as a universal project
of university computer science. Everything in unix is a little abbreviated
command that does one basic thing; further complexity is achieved
by linking
these well understood, compactly built tools together. Unix is a
bunch of simple and reliable building blocks.
For first time users however, unix is cryptic and terse. Getting
a firm handle of unix tools requires reading lots of man pages.
For the uninitiated, the unix-savvy will direct you to the command
"man man", that is: use man,
the online help command, to figure out how to use man, and then
keep using man until you figure things out.
At the other extreme, the 1984
macintosh was an appliance. It gave the user no command line
to type in computer instructions; instead, everything was a slick
and polished tool, well thought-out and presented to be as point-and-click
simple as using a cuisinart or any other household appliance. It
just worked. There were no switches to configure, no file paths
to memorize and no codes to type.
Right next to unix was dos. It was simple and terse like unix, but
didn't do much of what unix could. Like unix, dos started out with
a series of compact, simple commands. Dos lacked the rich operating
system services often associated with unix, in order to run on more
limited hardware. Microsoft took dos and flowered it up with a macintosh-like
interface. Windows, this graphic shell program for dos, eventually
covered up most of the terse dos commands. The hardware windows
ran on was still a mess,
though, and the limitations of its underlying dos kept popping up
rudely.
Somewhere between unix and the mac was the nextstep operating system.
It used unix underneath, but had the same easy to use, solid feel
of the mac. In fact, with stronger foundations and a improvements
to the user interface, nextstep in some ways felt more solid than
the mac itself, while at the same time being more powerful and adaptable.
Next provided the unix command line and related utilities to users
who wanted them. In that sense, nextstep was similar to microsoft's
effort to cover dos with windows.
However, windows and nextstep differed dramatically in their design
philosophy: windows was an attempt to prolong and maintain microsoft's
control of the dos market. Nextstep was an effort to leverage the
highly regarded, existing technology available in the unix community,
and use this as a base foundation on which to build a sophisticated
operating system with rich services and application frameworks.
This difference in philosophy made for strikingly different products:
microsoft could meet its goals by providing a product that was simply
good
enough; nextstep had to deliver far beyond anything else that
was available, just to exist as a new option in the operating system
space.
ten years later: changing targets
As the macintosh became increasingly more complex, and the world
become increasingly more networked, apple branched out to enable
unix style internet networking in the macintosh operating system.
Suddenly there were a lot of things to configure, and the ability
to do more complex things became regarded a good thing. While the
mac opened up slowly, windows nt became an increasingly simplistic
thing to manage. As part of the new os design, nt was built with
much of the configuration and tuning decisions automated or pre-tuned.
Windows 2000 presents an even more basic interface to many network
services and tools.
Oddly enough, while windows 2000 has adopted a super simple 'wizard'
appliance interface which smacks of the early macintosh appliance
ideal, mac os x reveals a power and utility that matches what was
previously available only in high powered unix workstations. It's
as if both companies swapped their operating system goals.
microsoft legacy issues
Ideally, every few years we could dump support for legacy technology
and start afresh. In reality however, current technology is tied
to years, and sometimes decades, of the past. Our televisions
maintain compatibility with early video technology from the 1940's;
our telephones are tied to circuit
switching limitations over a century old. Change is difficult,
and often compromises in technology are essential to make improvements
accessible to the mass market.
Microsoft's os legacy dates back to dos in the late 70's. Principles
dating from dos, like the file allocation table (fat) disk format
and lanman networking, have been rolled along with support for things
like the old isa bus architecture in a way that hinders microsoft's
ability to rapidly move forward in a clean fashion. Compromises
in windows 95 to support past legacy created new legacy problems.
The
registry, windows' internal system created to manage the old
slew of application configuration files, created a major new source
of problems for windows users. Applications installed on windows
create a mess of registry entries that makes reinstalling or removing
damaged installations problematic and often even fatal to the entire
system. Windows nt adopted the same design, and microsoft now has
no way to expunge the flawed architecture from windows. It is another
bit of albatross legacy that will haunt windows users forever.
Another example of how past legacy can cause problems is the old
dos convention of drive
letters. Each local drive or network share is mapped to a drive
letter, limiting the total number of drives to 26. More importantly,
however, applications and installers often make drive letter assumption
that fail when drive letters are not used. So, while windows products
can identify network shares using '//server/share' notation rather
than a drive letter mapping, this notation can fail later on when
applications internally try to reference a drive letter. Frequently,
this happens when installing software, causing the installation
to fail for unclear reasons. Microsoft currently has to support
an ever increasing ball of ungainly legacy, much of which has no
simple fix.
More legacy comes in the form of microsoft foundation classes, the
increasingly bloated
tool microsoft created to bridge calls from developers to its ever
changing windows application programming interfaces. Thus, windows
developers either have to deal with microsoft mfc legacy or deal
with updating their applications to work with microsoft's regularly
rewritten api's.
apple legacy issues
Apple's legacy for mac os x derives from three principle sources:
the original macintosh, nextstep, and bsd unix. Unlike microsoft,
which has to support decades of layers of ungainly legacy, apple's
support for older macintosh applications on top of their new os
x is a bit easier. Apple had already broken with the past on several
occasions. In 1991, system 7 cleaned out some of the mac's old api's
and introduced new features like virtual memory and always-on cooperative
multitasking, which required significant updates to most existing
applications.
In 1994, apple moved development to a new
processor family, which eventually pinched off a decade of older
macintosh code. Over the past four years, apple has cleaned up mac
hardware, too, and broke off backward support for older mac hardware
in new versions of the mac os. With much less of the oddities of
the past to support, apple has an advantage over microsoft in developing
new os architectures that are cleaner and devoid of decades of old
baggage. Macs also have simpler, cleaner hardware hardware designs,
and apple has far fewer variations of hardware to support.
With the new carbon
specification, apple allows developers to move the majority of their
existing mac os code to mac os x using a cleaned up subset of the
former mac os api. The largest legacy hurdle apple has to clear
is getting developers to move existing apps to to carbon so they
can get rid of classic, the full implementation of the old mac os.
Classic launches as a resource intensive process on top of mac os
x to run older applications that haven't been updated to the clean
carbon specification.
It difficult to speak of the legacy of nextstep or cocoa,
as the technology from next was so far in advance of both windows
and the macintosh, in so many respects, that the often negative
connotation of the word legacy doesn't really fit. Even so, next
similarly moved their os to other hardware architectures, even creating
an open specification for nextstep's application frameworks that
was ported to still more platforms. In doing so, links to the past
were refined away and the technology apple finally acquired in 1996
was polished and even battle tested in real enterprise use.
The legacy of darwin
in bsd unix is similarly a positive, rather than negative, circumstance.
As an open standard for modern core os and unix userland applications,
bsd has been refined and improved upon by a community interested
in maintaining high quality, enterprise ready software for many
years now. Used in everything from cisco networking gear to snap
server appliances, bsd represents solid reliable code. While next's
version of bsd had fallen behind the current bsd community's progress,
apple has since modernized the bsd unix component of mac os x by
synching their development with the modern and publicly available
open source improvements to the code. Along the way, apple contributed
back bug fixes and improvements to the bsd community as well.
So in terms of legacy issues, microsoft suffers from the need to
support the many mistakes made in the proprietary design of windows
operating systems, while apple is largely free to jump into the
future while leveraging both open and proprietary code that has
been polished in use for decades. Still, microsoft's massive revenues
and dominant position in the industry allow it to overcome some
of the legacy obstacles it faces in windows 2000 and xp. Apple's
ability to execute on delivering a competitive os product will not
be an easy slam dunk.
future architectures
Microsoft's revenues and position in the industry also allow it
advantages in building future architectures, as the industry at
large is clearly ready to follow and support microsoft's lead regardless
of better alternatives available. With windows 2000, microsoft introduced
some dramatic changes in the quality of their nt based software.
This brought increased general stability and uptime over existing
windows products. At the same time, they introduced some entirely
new architectures, such as active directory for managing network
services.
Active
directory is a good example of microsoft's reinventing technology
(in this case, novell's nds) in order to create a new, slightly
different thing they can own and control. As such, it reflects the
old apple, which would have rather reinvented anything from scratch
than used any available technologies. How thing have changed! Apple
is now using as much open software as possible, and frequently releases
new technology as open specifications.
Unfortunately, while microsoft vocally supports Internet standards
in defining new architectures, they have no compelling reason to
actually support fully cooperative integration with other platforms
or provide high quality services to non-windows clients. Microsoft
provides just enough limited support for other vendors so as to
make 'windows
everywhere' the preferred solution in all cases.
Apple doesn't have this luxury. While apple is also interested in
moving their products into every possible use, they don't have the
strong-arm advantage of microsoft to force adoption. Apple must
work to provide the best possible integration with other platforms
and clients, as anything less would be an unacceptable limitation
to most network administrators looking at using apple's new os x.
How is apple planning to accomplish this? For an answer, contrast
microsoft's active directory with mac os x's new directory
services api. Mac os x can work with various directory systems
using directory services' plug in architecture, starting with netinfo
and ldap. The api is built to support active directory, nds and
other directory systems. Mac os x can also work with nis.
By building mac os x to readily connect to existing standards, apple
avoids the task of reinventing wheels and positions itself as a
community player, not a proprietary world control monger.
Additionally, by exposing the posix interface of bsd, they reposition
the mac os from being a lowly windows 95 competitor to a unix workstation
peer. Network services and utilities designed to run on unix can
suddenly run natively on os x, too. This leapfrogs apple past microsoft
in some areas, and evens the playing field in many others. For example,
any os x user can now install the sharity
client for windows networking and gain access to windows file and
print shares. Additionally, os x with samba
can host windows network services itself, replacing windows 2000
servers for the task entirely. Apple didn't have to spend time writing
the capacity to browse, serve and manage windows networking services
because the software is already available for posix capable systems.
Instead of rewriting all the utilitarian software the open source
community has already made available, apple can now focus on delivering
added value. And adding value is always more profitable the reinventing
the wheel. Apple's added value includes media frameworks such as
quicktime; its peerless application frameworks in cocoa; the unique
network management tool netinfo and the high quality web application
development of webobjects.
Apple is also improving upon the baseline software available from
the bsd community. Apple's iokit
provides a new, open and dynamic ability to manage kernel extensions.
Device drivers and entire network stacks can be swapped in and out
as needed. The system manages kernel extensions on several planes,
providing dynamic feedback, for example, on devices' audio or power
relationships with other installed hardware. Does one firewire component
depend on power from another? Apple's dynamic kernel registry will
know.
current progress
With mac os x already out, and now installed by default as an optional
os on every new mac, apple is just slightly ahead in delivering
a modern os for the masses. Apple's next challenge is to constantly
improve upon os x and push
developers to bring native applications to the new os as quickly
as possible.
Microsoft has an advantage in having more experience with windows
2000 as an existing product. It will be interesting to see how well
they transition their dos based windows 95/95/98se/me users to the
forthcoming windows xp So far, microsoft has done a good job in
the current upgrade path for business users moving from the dos
based windows to windows 2000, but microsoft recognizes that the
move for consumers will not be trivial.
In the next installment, the treasure island experiment will look
at windows xp and mac os x' support for network services and application
support.
More on unix, active directory, samba, carbon and cocoa:
Modern
Operating Systems
Unix Power Tools
The
Unix Philosophy
Design
of the Unix Operating System
Windows
2000 Active Directory
Using
Samba
Samba
for Dummies
Learning
Cocoa
Learning
Carbon
|