[an error occurred while processing this directive]

OS X: A Merging of Various Decades-Old Technologies. Does it Work_

by Paul Bayley <>

The 80s, a time for personal computing innovation

    In the 80s there were several proprietary graphical systems competing to grab a piece of this new market of user-friendly personal computers. Among these were Commodore Amiga, NeXT NeXTSTeP, Apple Macintosh, and some lesser known systems. These different platforms were mutually exclusive and very little code was shared among them.

    When first introduced these systems were met with fanfare and optimism. This new generation of computers used mice, had a universal graphics and file system, and used a desktop theme to organize the varied forms of data users could now handle with ease. Of the first people to lay their eyes on this next generation of machines you'll find a number of them posting on comp.*.advocacy newsgroups preaching their gospel to anybody who cares about decade-old systems they never heard of.

    The analogy of religious wars to describe the mentality of OS wars is very apt. The new personal computers all had advantages over the old command-line systems and followed their own methodology. However because of the regional way marketing was conducted, often it was the first system a person laid eyes on which they adopted and not whether that system's methodology was logically more apt for their work environment. This breeds ignorance and intolerance, not to mention stubbornness. When you ask the typical OS faithful why their system never crawled out of obscurity they often blame poor marketing, not the technology. Another htmlect about the OS religion is it becomes difficult to develop or market anything innovative in terms of UI design. People develop habits around familiar systems and don't feel like changing regardless of how efficient another method may be.

Apple's first renaissance

    Apple's first systems were designed to run on a floppy. There was no room for multitasking, kernel, 8bit graphics, etc. There was no MMU so virtual memory is almost out of the question. It's amazing to think what they could fit in around 270kilobytes.

    My first Mac was a MacSE with loads of upgrades. 4MB RAM, 10MB HD, superdrive, 20" Radius monitor, optical mouse, anti-glare cover, Radius 16 accelerator. The one item which boosted my productivity the most was the monitor. The extra desktop space would allow me to display more table data, graphics, etc. reducing scrolling and tunnel vision. When I upgraded to a IIfx (40mhz 68030!) my productivity only improved marginally. Then System 7.1 arrived.

    Say what you will about missed opportunities to introduce pre-preemptive multitasking and whatnot, System 7.1 was a genuine renaissance in UI design for mac users. With the ability to effortlessly switch between multiple applications System 7.1 dramatically improved my productivity. System 7 also gained innovations like drag+drop not to mention a few 3rd party cheap hacks like ubiquitous drag+drop text window shade, and floating windows (which existed before, but now were used more universally since they saved screen space when switching applications).

Apple's stab at existence

    MacOS hasn't changed much since System 7. With 8 and 8.6 a 'nanokernel' of sorts was added to help with OS maintenance and Finder multi-threading. However it has been increasingly clear the old system was running out of steam since applications have been increasingly more complex requiring modern memory management, threading, and asynchronous system services. It was clear to everybody that for Apple to survive they would have to construct a new foundation to support current technologies, and to move forward with upcoming ones.

    Nothing has changed drastically in terms of user interface for more than a decade, and OS X doesn't look like it's out to challenge the status quo it had a major part in popularizing. This is a little disconcerting as for Apple to become relevant in the years to come they have to do more than keep the aging NeXT and Mac faithful happy, they have to introduce a new system to millions as many companies did in the 80s. There are promising signs of this however. The basic Desktop (formerly known as Finder) and Dock interface is ideal to the new computer user who may only use a half dozen apps in the typical day. Instead of having a zillion odd Apple Menu items like control panels and the Chooser, most of these options are either built into the Desktop or are in System Preferences. In a way the interface has more in common with System 6 with the Control Panel (singular). One of the questions I keep asking myself is: Given this product, how will Apple market it to potential customers to double it's market share or better_

More promising than problematic

    Overall OS X is very promising for those of us who wish it to succeed. I see myself using this OS to vastly improve my productivity. The way Darwin (OS X's open-sourced macrokernel) is designed this OS should not ever have to be rebooted. Any driver may be installed or removed at runtime, any service may be restarted, any settings may be reloaded. Currently many settings in System Preferences require a reboot, but I'm sure Apple is working on this. After all ever since Apple adopted Open Transport, tcp/ip and appletalk settings could be changed on the fly. There is no reason technical or otherwise why OS X shouldn't be able to do this as well, and no reason former Mac users would accept anything less |-)

    The interface is not intimidating in the least. The rounded appearance takes advantage of anti-aliasing which is almost addicting. Once you get used to the soft edges of the Aqua theme and the Quartz rendering engine, it's almost painful to go back to another OS. The interface elements like window dropshadows are more than mere gizmos, they become almost invisible and natural to the whole environment which pleases the mind in a less than obvious manner. For example the throbbing of default buttons or the bouncing of launching applications creates a subconscious awareness of what's happening, and after a while you don't notice the odd behavior and merely realize that an application is still launching or a button will be selected when you hit return. You may be bothered by the odd OS X newbie comment about such things, however I wouldn't try to rationalize it. Just say don't knock it unless you've tried it.

    There are a few cases where anti-aliasing causes problems, like some characters like quotation marks blur too much to be discernible in 12pt 72dpi. This could probably be fixed by anti-aliasing each object separately (like the dot in the i or the ' in the "). These are minor quibbles however.

It's in the details

    The details happens to be the 95% of what I'm interested in, but probably 80% of OS X's success or failure depends on marketing. This includes pricing,  corporate demonstrations, advertising, news, fashion, all the things geeks don't give a darn about. This leaves 20% for the details which we do.

    OS X is a merger between many technologies. I could write a laundry list of them, but this article is long enough as it is. I would rather list the stupid technical errors in other articles, which I won't |-). With this merger there have been several problems which have cropped up as a direct result of this process. Again I could nit-pick and list literally hundreds of problems with OS X, but that isn't necessary. I only need to point out the methodological problems and the details will become evident by themselves. The solutions to these problems will be just as evident.

What makes a Mac, a Mac_

    I don't like to generalize, but I think all Mac users will agree that the one htmlect about using a Mac which makes them more productive is the uniformity of the user interface among all applications.

    Of the hundreds of applications I use in a week, only a half dozen I read the manual for. It's almost a miracle considering the Mac API doesn't do a thing to help programmers conform to the explicit and implied UI conventions (unlike NeXT). It was only possible given the high standard the mac community created, and the premium price they paid for excellence in UI design. As much as Mac hardware cost in the 80s, the typical professional user would pay twice as much for good Mac software. The average Mac user wouldn't think twice about paying a shareware price for a time-saving device, even for a simple key mapping extension. Mac users (and I'm sure NeXT users as well) know time is money, and PCs are damned expensive. A study conducted around '89 showed the CPU only wasted on average 20% of a user's time at a computer. The other 80% was wasted by driver problems (configuring, rebooting, re-installing), finding out how to perform a command, printing problems, etc. For somebody who uses a computer professionally, $6k of hardware and $12 of software paid for itself in spades shortly after.

OS X's schizophrenia

    Unfortunately OS X is a bit schizophrenic. It seems to have been developed by two different teams: one Cocoa, the other Carbon. Cocoa and Carbon applications simply do not behave the same. While Carbon applications behave like a Mac, Cocoa applications behave like they would running on OPENSTEP. Also they don't seem to use a common service where one seems warranted. I don't have to point out why this is a bad state of affairs, nor do I have to provide a laundry list of UI conflicts (although I will provide a couple examples) for this problem to be fixed.

    It's obvious Apple is rushing to get OS X out the door, so it's perfectly acceptable to me that the first beta didn't fix what was a problem ever since Apple bought NeXT. OS X's schizophrenia is almost predictable given the difficulty in merging two systems. All we should expect is for Apple to address this problem and promise to fix them soon.

    The good news is the Cocoa API has a high enough abstraction that all Cocoa applications can behave like a Mac once a few changes are made to the Cocoa library. In fact a 3rd party may write a class extension (ObjC category) to do just this (if he understands which functions to replace), however Apple should really fix this. To be clear once again: the Cocoa API is excellent, it's implementation leaves much to be desired.

    One example is selecting text. In MacOS the convention is selecting a line of text to the end of the line (so the selection runs to the edge of the document) should NOT select the carriage return. In Cocoa the behavior is the opposite. Now I could point out that nineteen times out of twenty one doesn't want to select the carriage return, and when he does want the CR he could easily press return after pasting. I could also point out it's exceedingly difficult to avoid selecting the often-unwanted CR especially when the last character is small. However it's enough to say it doesn't follow the Mac UI.

    I'm sure others will mention ubiquitous drag+drop text. One of the hacks which made it's way into the System was ubiquitous drag+drop which made any selected text a draggable item. It's not only possible to do this in Cocoa, but is also possible to make any text area a receiver for dragged text in the exact position the cursor is hovering. I will only add there ought to be an option to turn off the feature globally.

There are many other differences (have fun finding them all, like I did), but I'm not going to write four pages of Cocoa idiosyncrasies.

    Unfortunately there are age-old problems with UI conformity which don't even involve Cocoa due to the fact the conventions aren't explicit. Even commonly accepted conventions like using command to select individual items in a list and using shift to select a group of items (check out YA-NewsWatcher for a good example) were followed by every application except the Finder! Thankfully the 'Desktop' in OS X now follows this convention. However Apple should take advantage of these controversies and revise the macintosh user interface specification to be more relevant and more thorough. For example when there is a whitespace at the end of a line, where should the cursor be_ In some applications the cursor remains at the end of the last word, while in others the cursor moves to the position where the next visible character typed would be. Also what should command-up do in a text document_ What about shift-left_ What about option-shift-left_ We know the answers because of implicit conventions, but they ought to be explicit. Not all Carbon text applications follow them.

    Problems concerning the looks of Cocoa vs Carbon ought to be solved once Apple revises Interface Builder to include Mac utility (floating) windows and scroll bars. Cocoa apps use large title and scroll bars while Mac apps use miniature title and scroll bars to signify their expected behavior. They also take less screen space. Incidentally this convention was created by an often used WDEF, a custom Mac window. One of many 3rd party hacks which made their way into the everyday mac.

Missing APIs

    Apple claimed DP4 was API complete, which is to say all APIs they intend to release have been. True to form nothing new has shown up in OS X Beta. However there are htmlects about OS X which developers would like to have the ability to alter in a clean way (without a hack).

    I predict endless, needless discussions about the Dock. I think the Dock is an excellent way for Apple to break into new markets, and even create a few. I can't empathize with nostalgic mac users who lust for the old complicated MacOS 9 because I never used the default MacOS services. I only use the Apple menu to select the chooser and Control Panels. Most non-Mac users think it's a decal, not a menu. For everything else I have over 100 applications categorized in several custom menus. No Apple Menu or Dock could replace that. I'm no particular fan of the Control Strip either. It's like a menu bar on the bottom of the screen which gets in the way of scroll bars (it can't be hidden like a Win95 task bar, or the Dock). It would be far better to use a custom menu, like SwitchRez.

    For these reasons and others Apple ought to release a custom menu API. Everybody complaining about the lack of an Apple Menu or Control Strip ought to campaign for a custom menu API. In my mind one of the best 'hacks' was Now Menus which worked up to System 7.6 (not ACTION Menus, which isn't as good). Now Menus allowed one to create custom menus with custom icons. Any menu (custom or not) could have a hotkey set merely by hovering the cursor over the menu item and typing the command. Also the custom menus were drag+drop aware to an extreme level. You could drag items into the menu to add them to the list permanently. You could drag documents into the applications/folders in the menu to open/move them (regardless which application was in the foreground). You could even change the menu locations by command-dragging.

    I also think Apple should consider allowing any menu (in a native application) to be torn off to create a utility window. Screen sizes are getting huge, and the menu bar ought to be considered a dock for menus. Being able to tear off menus would mean faster access to common items. A 3rd party may even allow creation of custom menus with items from other menus, custom or otherwise. Both Carbon and Cocoa APIs make this feature feasible. It would also be nice to have menus comprised of things other than lists. If you've ever used Canvas 7's utility window dock you would know what I mean. There was also a hack called Custom Menus, but never worked well for me.

    Apple hasn't made it clear if they will open up the Preference Panel API for creating 3rd party System Preferences. They certainly should. Last thing we need is a bunch of 3rd party applications to turn on system services like virtual private networking, or whatever. Also some of the available services like SSH haven't yet been added to System Preferences. You may only turn it on by adding a line to /etc/hostconfig which Mac users won't stand for.

    It's not yet clear if I can develop my own preview plug-ins for the 'Desktop' to use in displaying previews for various file formats. It can currently preview PICTs, QuickTime formats, and text files. If most file formats could have such a preview it would be neat to have a fourth view type which would display the entire disk hierarchy in a single window which could be zoomed, scrolled, etc. We could place landmarks near documents of a general category, and zoom closer until we could recognize the file we want. The use of a preview where only one file is previewed at a time isn't very useful, but previewing a bunch at a time at an arbitrary resolution would be very useful. This idea was brought to my attention by the author of "The Humane Interface" I heard in an interview on NPR. Something for OS X version 2 perhaps.

    It isn't yet clear how to create background-only applications which display a global utility window like Script Runner. Hopefully this too will be published shortly.

Wrap up

There is very little to complain about in OS X.

    Darwin is an excellent foundation to build on. The Darwin macrokernel has an excellent driver architecture. The DarwinOS is excellent in it's own right. Apple has made huge strides in organizing the chaotic disassociated file structure which is UNIX. It uses bundles to associate modules with their dependencies, libraries with their headers and resources, initialization scripts with their dependencies, applications with their built-in plugins, etc. etc. Bundles also allow several versions of library (like Tcl 7 and Tcl 8) in one location so old applications don't break. It has a module-loading facility which is automatic (and fantastic). It has tames the /etc/ chaos with NetInfo (although isn't secure enough to give out user accounts yet). On these accounts and others it ought to obliterate Linux off the face of the planet as the #1 free, open-sourced OS.

    The display server, Quartz, is a completely new technology. Where in QuickDraw and X11 every pixel is drawn by a particular process, in Quartz every 'context' is comsposited prior to display. This has many implications. It's a very flexible system, yet it's more difficult to accelerate by means other than faster/more CPUs.

    The major feature of Quartz is it's PDF-based. PDF is fast becoming THE standard for desktop publishing. Adobe is using PDF as it's native format for all it's applications, and any illustration program which doesn't follow suit will quickly be obsoleted. Quartz also supports ColorSync. Anything which can be displayed in Quartz can be printed or exported as a printable file. Quartz will almost certainly solidify Apple's position as the best platform for desktop publishing, and save numerous headaches (Rendering a 6'x4' poster in 300DPI just to print wasn't a fond experience).

Most other technologies are carry-overs and are tried and true.

If I were to give Apple a lists of tasks to do, and the order to do them they would be:

1) Eliminate rebooting. There is no good reason to require it, and Mac users won't tolerate it either. Having an OS which never requires rebooting is a MAJOR selling point.

2) Fix the Cocoa implementation. Cocoa is an excellent API, however the implementation needs work to prevent schizophrenia. Swing may have this problem too, I don't know yet.

3) Make NetInfo secure. There are already methods to authenticate without the passwd, so why is the passwd visible to non-root users_

4) Create a custom menu API. All the gripes about the Dock, Control Strip, Apple Menu, etc. would go away if Apple released a custom menu API. Apple should also consider adding the option to tear off any menu to create utility windows.

5) Release the Preference Panel API. Release code for global utility window background apps. Release the Terminal.app source. Release anything you can, it'll lead to hardware sales, believe me |-)

6) Implement the single-window file hierarchy preview view option.

7) Rename OS X "oh ess ex" for crissakes! It isn't NeXTSTeP or MacOS, it's a new OS!

8) Pat yourselves on the back for a job well done.

OS X has turned out to be darn close to the most ideal OS imaginable, given the restriction of not breaking UI conventions invented in the 80s. Darwin and Quartz are the most innovative htmlects, while the rest has hopefully secured Apple's relevance in years to come.