Jump to page content

Macintosh operating system principles

Contents

Overview

Part of the reason for the stagnation of desktop user interface design seems to be the lack of experience on the part of the developers involved. The Macintosh never enjoyed much respect from the more “serious” technical people, and this has hurt the industry: a lot of ideas have never become mainstream as a result. RISC OS suffered more from not gaining sufficient awareness outside of the United Kingdom.

This page summarises a variety of characteristics where Macs and Windows systems differ. The list is based on System 7 through Mac OS 9, although many of these ideas live on in Mac OS X/macOS. Mac OS 9 should be assumed unless otherwise specified.

See also Quinn the Eskimo’s Quinn's Human Interface Subtleties for further examples.

Intuition

A number of behaviours in Mac OS are designed to do what the human operator instinctively expects, even if this behaviour does not strictly make sense according to the rules of the interface. The end result is that the operator is allowed to err slightly without the computer objecting or behaving in a way that would confuse human expectations. The consequence of this is that some of the Mac’s behaviour is not reported on by anyone as generally nobody realises the ways in which they are being accommodated. It is only when moving to another platform that the results of not taking these choices becomes apparent.

Selection opening

After selecting a group of files, double-clicking on any of the selected files will open the entire group of files simultaneously. In Windows, clicking any item within the selection reduces the selection to just the one file clicked on, and thus double-click only ever opens a single file. The ability to open a selection of files is also supported by the combination of enforced single process per application and structured message passing: Mac OS delivers a single message to the target process containing the list of files to be opened.

See Hierarchical Menus (a summary by Macintosh application developer Quinn the Eskimo) and additional details on Michel Fortin’s Mac Sub-Menus page.

Behaviours

Positive feedback

Windows offers very little in the way of acknowledgement to user requests. For example, between clicking a Start menu tile and the requested program appearing on the screen, there is no indication that any action was taken. If the computer is under load, the Start menu may not even close immediately. Requests to open files from File Explorer also provide no acknowledgement.

Mac OS uses various techniques to confirm to the user that such requests were recognised. Program launch originally used an expanding rectangle animation. Mac OS X introduced Dock animation to show that a program is being launched, and opening a file uses a separate animation.

Focus windows without sending mouse clicks

Clicking within an inactive window raises it to the foreground without it receiving the mouse click. This means that users can focus a window without needing to carefully click a safe part of the window. The mouse target for focusing a window is therefore far larger.

At some stage, this behaviour was set as a flag defined within each program. Generally only the Finder had this flag enabled by default, but a design defect in Microtek ScanWizard (using focusable windows for the tool palettes) could be resolved by enabling that flag for ScanWizard too.

When moving from a Mac to a Windows PC it is very easy to issue unwanted instructions to a program by clicking onto buttons and links in a window when attempting to focus a window. Using a window’s content area as a mouse target for focusing a window requires special care and attention on the part of a Windows user.

Cycle through files with tab

Within the Finder, pressing the tab key moves to the next icon in alphabetical order. For years, Windows had no equivalent. More recently it has become possible to use the left and right arrow keys to move off the end of one row of icons and onto the next or previous row. Using the arrow keys does require a packed grid; this does not work properly on the desktop.

Inactive windows

Mac OS 8 and 9 dim inactive windows: all controls are shown as disabled to indicate that they will not respond to a mouse click that focuses the window. This technique also has the advantage of reducing visual confusion with dialog boxes: windows that are modally blocked are visibly inoperative. Such distinction does not exist in Windows.

Features

Stationery pads

Any file can be used as a document template: simply set its Stationery flag. From then on, it will be treated as a template. Files with this flag set are referred to as stationery pads. If the owning program recognises stationery pads, the Finder will pass these files in as-is and the receiving program will be responsible for opening it as an untitled document. If the owning program does not recognise stationery pads (it does not have stationery awareness set in its own flags), then the Finder will prompt for a new name and duplicate the file before passing the duplicate to the program.

This has the advantage of permitting an unlimited number of templates of the same file type, where Windows only allows a single template per file type under File → New. The disadvantage of this approach is that it is not nearly as directly accessible as File → New (normally accessed as right-click → New), although eventually the two ideas were combined nicely with David Catmull’s NewCM context menu module (CMM).

Underpinnings

The Mac uses a single, global menu bar. Because the menu bar is not tied to any window, it remains available even when a dialog box is active. As a result, Edit → Cut/Copy/Paste can be used even within a dialog box. It’s very common in Windows not to have an Edit menu at all, or to provide it but not allow it to be used when editing text. File Explorer for example has no visual clipboard or related text editing commands available when managing file and directory names. Users are expected to know and remember both the keyboard shortcuts (Ctrl+C etc) and the use of context menus, as Windows-based applications are painfully inconsistent about what is offered.

Starting with Mac OS X, a new menu was created that moved all the program-specific commands (About, Preferences, Quit) into a dedicated application menu.

Sane keyboard shortcuts

Keyboard shortcuts in Windows were not consistent. Most shortcuts used the Ctrl key, but various other oddities existed. For example, Find can be F3 or Ctrl+F, and F3 can also be Find Again. The Macintosh convention here was Cmd+F for Find, and Cmd+G for Find Again. Alt+F4 closes a top-level window and Ctrl+F4 closes a child window in an MDI (Multiple Document Interface) application, but this can lead to the mistaken perception that Alt+F4 closes the application. Apple chose Cmd+Q for Quit (close application) and Cmd+W for Close Window.

Where there are variations on a command such as Save versus Save As, the Option (Opt or Alt) key is used. Cmd+S is Save, and Cmd+Opt+S might be Save As. Mnemonically this is easy to comprehend. Where two different shortcuts need to use the same letter, Shift is used. For example, Cmd+F for Find versus Cmd+Shift+F for Font.

No filename extensions

Filename extensions did not exist on the Macintosh prior to Mac OS X. Filename extensions have provided a source of confusion and error for Windows users for decades; they are now turned off by default, although Bitdefender endpoint security by default enforces them to be shown at all times. When hidden, you can fall victim to the likes of “harmless document.pdf.exe”, while when visible, they tend to get mixed up.

The Mac stored the file’s type in a hidden file system metadata field; type codes are 32-bit integers conventionally represented to developers and power users as a four-character string. This field was readily accessible to technical users by way of various tools but normal users did not need to worry.

File types hinted at the possibility of a type hierarchy but this was not invented until after Mac OS X was introduced. For example, as web pages are plain text, they are given the type code “TEXT” just as with any other text file. This means that they function as text files, but also that they cannot in any way support file-level program association.

Program association was handled by creator codes, a second 32-bit integer code defined for every file. When a program saves a new file, the file is stamped with the creator code of the program in question. For example, a text file created by BBEdit will have its creator code set to that of BBEdit, and a text file created on the same computer by SimpleText will have its creator code set to that of SimpleText. Documents by default always open in the application that created them. They can also be opened by any other program that opens files of that type, or any program that advertises the ability to open files of any type. Thus, an HTML file saved as type “TEXT” by a browser will open back up in the same browser (via the creator code set on the file itself) but will be accepted by any text editor. A source code file will likewise by stamped by the choice of IDE or text editor.

Whether this is a blessing or a curse depends on one’s perspective. For example, text files supplied by someone using SimpleText will keep opening in SimpleText, even if you prefer to use BBEdit. Images will open back up in a program such as Photoshop or GraphicConverter instead of one’s choice of image viewer such as QuickTime PictureViewer. Prior to Mac OS X the end user had no means to change the creator code or file type of a file without using (widely-available) third-party utilities.

This arrangement began to degrade as the popularity of the Internet arose, as the various Internet protocols and services made no provision to recognise (on transmit) or encode (on receive) the hidden file type codes used by various operating systems (Mac OS, RISC OS and EPOC32). The Mac was thus forced to adopt a mapping system—a third-party program called Internet Config that was later purchased and integrated into the OS—for recognising filename extensions and applying the relevant type and creator codes to files obtained by FTP, e-mail or from the Web. Filename extensions invaded the Macintosh consciousness; they were required in order to allow non-Mac users to recognise files sent by e-mail, and present on all files received from Windows users.

Manifest-driven applications

Return versus Enter

The Return and Enter keys on the Macintosh are fundamentally different. Return (ASCII 0x0D) inserts a line break, while Enter (ASCII 0x03) indicates a desire to submit information. In a multi-line field, Return always starts a new line and Enter always submits the input. Windows has no such distinction, which can cause confusion and anxiety when dealing with multi-line data.

Colour-coded icons

Icons can be colour-coded for ease of identification. Initially this began as a set of named labels, each label having an accompanying colour. The names and colours of each label were machine-specific; other users would see the files labelled using their label names and colours, which was confusing. Labelling of icons was dropped when Mac OS X was introduced, but it was later reintroduced as a fixed set of colours only. The new system only colours the icon caption, whereas the more aesthetic implementation in Mac OS 9 and earlier tints the icon.

Windows has no equivalent mechanism for visually flagging files.

Move windows without raising them

Windows can be moved without raising them, by holding down the Command key as the window is dragged. RISC OS achieves the same effect by simply using the right mouse button instead of the left mouse button to drag the window.

This technique is fundamentally impossible to achieve in Windows due to the obscene proliferation of applications that switch off the native window title bars and draw their own. Tools that modify interaction with a window’s title bar do nothing when there isn’t a real title bar present.

No process versus program difference

Mac OS makes no distinction to users between programs and processes. It is impossible for a program to have more than one process: a program is either running or it is not, and it is launched automatically as needed. For example, the AppleScript command “tell application "BBEdit" to …” will start BBEdit if it is not running; the script does not need to take this into consideration.

One significance of this characteristic is that all documented-orientated programs are expected to support multiple concurrent documents. This is not always the case; Apple’s own TeachText text editor application could only open one document at a time. All document-orientated programs should use a Window menu to allow users to switch between Windows, but the Finder didn’t introduce this until Mac OS 9.

When the user opens a file from the Finder, an inter-process communication message is handed to the target application instructing it to open the file. The program is launched first if needed; otherwise, it is focused. Where the user selects multiple files, they are passed as a list in a single message to the application. By contrast, Windows only offered a cumbersome and poorly-adopted DDE (Dynamic Data Exchange) system for sending file and URL requests to existing programs; typically, each file in the selection starts a new process, and these processes have to figure out for themselves whether an existing process would like to receive the requests.

Processes with no windows

Since all document-orientated software is expected to open more than one document at once, there will also be times when there are no documents open at all. This is probably the most awkward concept to grasp, especially as the Mac will sometimes run out of memory for no apparent reason (prior to Mac OS X). The cause is of course programs left running with no open documents, and without any kind of window-orientated taskbar this gets readily forgotten. This was exacerbated by the fact that, prior to Mac OS X, all processes shared the same address space and could not interleave memory pages, so programs got all their memory allocated up front; this causes rapid memory exhaustion when programs are left open by mistake.

Structured inter-process communication

In Windows, opening a file from Explorer or launching a URL has no clean mechanism for passing the request to an existing instance of a program. Because Windows permits multiple instances of a program under the same user session and offers no means for a program to indicate that it is single-instance (as with a browser or mail client), it cannot pass the request to an existing process as it does not know which one should receive it.

Well, that is almost true: there is a little-used DDE option with file types and URL schemes, to permit an existing instance to accept the request. Excel is or was a notable user of this facility, which turned out to be quite broken. If Excel did not respond in time, Explorer would report that the file did not exist, as its DDE error handling was never meaningfully implemented. (Excel and Word are both horrendous at managing instances; Word in particular is prone to creating a duplicate instance and then tripping up over the Normal.dotm access conflict.)

DDE itself is a poorly-accepted hack on top of window messages, which of course only works if a program has a window open. Generally opening a file creates a new process, and using tricks such as semaphores, this process will find a suitable existing process to receive the request, and then signals that process using some proprietary means. This can fail: selecting a batch of media files in Explorer and pressing enter should hand the whole lot to your chosen media player, but you can easily end up with multiple processes opening, with each one playing a subset of the selection of files.

The aforementioned lack of program–process distinction on the Mac lends itself very well to Apple’s advanced inter-process communication system, known as Apple Events. These are structured messages passed from one program to another. There are a number of well-defined requests that programs are expected to handle, including open one or more files, print one or more files, and quit. The file-open request can be a single file or a collection of files, ensuring that all files from a selection get passed together. Another well-defined Apple Event is the URL open event for passing hyperlinks between applications. There is nothing haphazard about this process, which allows for both system-defined and user-defined messages to be passed cleanly and reliably.

Cross-program GUI scripting and recording

Totally custom icons with copy and paste

The icon of any file or folder on a writable volume, along with the icon of the volume itself, can be changed at any time. All the user needs to do is view the properties of the icon file, click its icon and copy, then view the properties of the target item, click its icon and paste. For files, the icon is stored in a resource family of ID −16455 and is indicated by the file’s custom icon Finder flag being set. This is made possible by resource forks, databases of resources that can be stored inside any file. For folders (and thus volumes) a hidden file named “Icon␍” is created to hold the icon; the terminating carriage return avoids conflicts with user-created files named “Icon”.

The desktop database that maintains file associations, including the application icons themselves, only supported icons up to 256 colours. Application developers broke out of this limitation by giving their applications 32-bit custom icons. If the user decided to change a program’s icon, they could not revert this change as the official icon was a custom icon to begin with.

File comments

All files can be given a comment. Originally these were considered to be temporary, as rebuilding the desktop database would purge them. In later years, the Finder would preserve them across desktop database rebuilds.

Program launch indication

Program launch is clearly indicated with an animation of an expanding rectangle, followed by the menu bar showing solely the program’s name. This is in contrast with Windows where you are often uncertain about whether a program is loading.

Mac OS X extended this to file launching, where the icon for a file grows in size and fades out, to indicate to the user that the request was acknowledged.

Control Strip

The Control Strip was a floating bar containing controls for managing the system. This included setting the system volume, selecting the active printer, playing CDs and changing the monitor bit depth and resolution. This was a purpose-built tool with a far clearer objective than the Windows taskbar notification area or “system tray”. The system tray in Windows was readily abused for a variety of unrelated purposes, becoming prone to clutter.

Mac OS X merged the Control Strip into the menu bar.

Intelligent window placement

Mac OS allows programs to offer a generic indication as to where a new window is to be placed. Windows can be placed relative to the main screen (on multiple monitor systems), relative to the screen on which the last-used window is positioned, and relative to the last-used window. This allows dialog boxes to be guaranteed a visual placement relative to the document window for which they were created. The lack of intelligent window placement in Windows (the appalling quality of window management for an operating system named “Windows” is most ironic) shows up most on multiple monitor systems when dialog boxes appear on the wrong monitor.

The following is taken from Inside Macintosh: Macintosh Toolbox Essentials, Chapter 4 - Window Manager, under The Window Resource. These are the pre-Mac OS 8.5 constants; similar constants were defined in Mac OS 8.5 that were still used in Carbon.

Constant Value Description
noAutoCenter 0x0000 use initial location
centerMainScreen 0x280A center on main screen
alertPositionMainScreen 0x300A place in alert position on main screen
staggerMainScreen 0x380A stagger on main screen
centerParentWindow 0xA80A center on parent window
alertPositionParentWindow 0xB00A place in alert position on parent window
staggerParentWindow 0xB80A stagger relative to parent window
centerParentWindowScreen 0x680A center on parent window screen
alertPositionParentWindowScreen 0x700A place in alert position on parent window screen
staggerParentWindowScreen 0x780A stagger on parent window screen

The terms above were defined as follows:

center
Centered both horizontally and vertically, relative either to a screen or to another window (if a window to be centered relative to another window is wider than the window that preceded it, it is pinned to the left edge; a narrower window is centered)
stagger
Located 10 pixels to the right and 10 pixels below the upper-left corner of the last window (in the case of staggering relative to a screen, the first window is placed just below the menu bar at the left edge of the screen, and subsequent windows are placed on that screen relative to the first window)
alert position
Centered horizontally and placed in the “alert position” vertically, that is, with about one-fifth of the window or screen above the new window and the rest below
parent window
The window in which the user was last working

Extension installation via folders only

Friendlier Open and Save dialog boxes

Open and Save dialog boxes show, in grey, all files that are of a different type to that which you are opening or saving. This helps you properly orientate yourself. When Microsoft Office changed from the old to new file extensions (e.g. doc to docx), Save dialog boxes would show folders of work as empty, as existing files with old extensions were all hidden from view: Windows does not show non-matching files at all. This could be very misleading and confusing to users who did not understand that their new version of Office had new file types, and they would simply see all their work gone.

Text squish before truncate

This is a particulal Mac oddity of function over form! When a piece of text is too long to fit into the given space, by convention the letter spacing is first condensed before any truncation of text is applied; this can result in all the letters physically touching with no space between them at all. It’s not visually appealing but it increases the amount of text that can be read.

Dialog buttons

Buttons ordered by severity Button captions that describe the action to be taken No mnemonic button invocation, however

Duplicate file

A simple keyboard shortcut of Cmd+D allows the user to duplicate a file in-place.

Things that Windows has since copied

Keyboard shortcut for creating a folder

Creating a new folder was given the shortcut Cmd+N for “New [folder]”. This was later changed to Cmd+Shift+N in Mac OS X in order to release Cmd+N for creating a new Finder window, akin to how it creates a new document window in other applications. Ctrl+Shift+N was later added to File Explorer in Windows.

Self-healing shortcuts

“Shortcuts” on the Macintosh are known as “aliases”. Instead of holding just the path to the target item (file or folder), they hold additional data that allows the target item to be found even after it has been moved or renamed. Windows shortcuts now seem to be much more intelligent than they used to be; some people will remember the waving torch animation while Windows struggled to figure out where the target of a shortcut had gone.

Obvious omissions

Radio menu items

Windows and EIKON provide “radio” menu items: these are groups of menu items that function as a radio button group. While RISC OS and Mac OS provide this functionality, both systems fail to distinguish visually between boolean and multiple-choice menu items. The former can be toggled on and off, and the latter only permit one item to be selected out of a group of items. RISC OS and Mac OS use a tick (check mark) for both types, which is very confusing. Mac OS X failed to take the opportunity to correct this error.