Buy Books

Virtual Tours
Big Projects
Big Disasters

cover cover cover cover cover cover cover cover covercover cover cover cover cover cover cover cover cover
cover cover cover cover cover cover cover cover covercover cover cover cover cover cover cover cover cover cover cover cover cover cover cover cover cover cover

os war 2.0: part II
June 13, 2001

Mac OS X

Microsoft and apple are both scrambling to finish modern operating system projects for the masses. Their efforts, apple's mac os x and microsoft's windows xp, are about to go head to head in a new os war: version 2.0

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

2001 tiexp.com The Treasure Island Experiment. All rights reserved.