DaveNet: Monday, January 6, 1997; by Dave Winer.
Mac OS Compatibility on Rhapsody
Final Draft - 1/5/97To ease transition issues for customers and developers, the next generation OS, Rhapsody, will include a compatibility environment that will support Mac OS applications and system extensions. This will be accomplished by hosting a complete implementation of the Mac OS runtime environment on the modern OS infrastructure, using the latest Mac OS source code and ROM image.
While the majority of Mac OS compatible software will work in this environment, some software will need to be rewritten for the new OS. This includes both software that interfaces directly with hardware, and software that depends on some areas of the system that have been tightly integrated with the OpenStep environment.
This is a significant improvement over the compatibility strategy in Copland, Apple's earlier OS project, where all system extensions were obsoleted and application compatibility was lower.
Benefits for Customers and Developers
Apple customers can continue to adopt new Mac OS hardware and software solutions throughout the transition to Rhapsody.
Mac OS customers will enjoy taking advantage of the new capabilities of Rhapsody while continuing to use their Mac OS software.
Current Mac OS customer investments in both hardware and software will be preserved.
The performance of I/O intensive Mac OS software will improve on Rhapsody as compared to the then-current Mac OS.
Mac OS Compatibility Overview
Rhapsody will support Mac OS software through a Mac OS compatibility environment. This environment will be a complete implemen tation of the then-current Mac OS, hosted on the modern operating system infrastructure provided by Rhapsody. This is not an emulation layer.
The Mac OS compatibility environment will be based entirely on the same source code and ROM image as Apple's Mac OS. This will allow the Mac OS compatibility environment in Rhapsody to quickly inherit improvements to the Mac OS as it evolves.
Because this compatibility is provided by a complete Mac OS implementation, both 68K and PowerPC-based software will be supported. This includes the vast majority of Mac OS applications as well as most system extensions. To ensure the overall stability of Rhapsody, applications and extensions that interface directly with hardware will not be supported.
The compatibility environment will be implemented as an OpenStep process managed by the microkernel of the operating system. In this way, the compatibility environment will realize the benefits Rhapsody provides such as modern PowerPC virtual memory system, file system, and networking services. Because each OpenStep process will be completely memory protected, the compatibility environment will be protected from errant OpenStep applications. Perhaps more importantly, the operating system and OPENSTEP applications will be protected from errant Mac OS software that may cause the compatibility environment to crash. Such problems will not affect other elements of Rhapsody, and the Mac OS compatibility environment can be restarted without restarting the whole system.
Apple will support the ability to boot either Mac OS or Rhapsody on a single Mac OS-compatible computer.
The Mac OS compatibility environment will evolve through a series of Rhapsody releases. While the initial version only provides basic compatibility services, subsequent releases will improve integration and compatibility with the full suite of Mac OS services.
Mac OS Compatibility Details
Within Rhapsody, Mac OS compatibility will be implemented as a single OpenStep process. In the compatibility environment, all applications and system extensions will share a single preemptive thread of execution and the address space of this process. This approach provides a high degree of compatibility and stability. If a Mac OS application crashes it cannot affect OPENSTEP applications or other elements of the system, even if it crashes the entire Mac OS environment. For example, network connections used by OPENSTEP applications would remain active.
Mac OS Compatibility Architecture
In order to provide this high degree of compatibility and stability, Mac OS software will not be permitted to access OPENSTEP services. However, communication between the two environments will be possible using AppleEvents.
What Will Work and What Won't
The Mac OS compatibility environment will support Mac OS software that does not interface directly with hardware and does not manipulate certain system services that are shared with the OPENSTEP or core OS environments. These restrictions are necessary to assure the stability and performance that Rhapsody offers.
Most applications, plug-ins, and desk accessories will work, including productivity, publishing, and internet applications. Examples of applications that may not work include scanner, sound, and video applications that directly manipulate input devices.
System extensions (INITs) that interface directly with hardware will not work. Also, extensions that patch system services that are expected to be universal cannot work. For example, a Mac OS extension that provides file compression services patches the Mac OS file manager to intercept all file system accesses. However, the Rhapsody file system may be accessed by software outside the Mac OS compatibility environment, bypassing the file compression software. This would cause ginconsistent data and potentially dangerous behavior. For extensions that do work, their effect will be isolated to the Mac OS compatibility environment. For example, a Mac OS extension that modifies the appearance of windows and menus will only affect the interface in the Mac OS compatibility environment.
Control panels (CDEVs) and Chooser devices (RDEVs) that contain INIT resources fall into the category of system extensions above. Other control panels and Chooser devices should work correctly.
Installers, fonts, sounds, sound sifters, and sound and video compressors/decompressors (CODECs) should work with the Mac OS compatibility environment. User Authentication Modules (UAMs) that work in conjunction with AppleShare, Translation Manager translators that work with Mac OS Easy Open, and Apple Shared Library Manager (ASLM) libraries should also work.
Network and serial-based printer drivers that don't interface directly with hardware should work. This applies to most printer drivers as they generally make use of system networking and serial services.
Drivers that interface directly with hardware won't work, however software-only drivers, such as disk image mounting utilities, should work. Most SCSI and ADB devices should work, including ADB-based copy protection 'dongles.'
File System Manager (FSM) and Foreign File Access (FFA) modules such as PC Exchange and CD-ROM support may continue to work depending on their implementations. However, most services that would use these modules will be provided to the Mac OS compatibility environment by the core OS and will be available in both environments simultaneously. Any services that aren't provided by the core OS z, but are provided by Mac OS compatible software will only be available in the compatibility environment.
Text Services Manager (TSM) modules such as input methods for Japanese, Chinese, etc. may require modification because the Mac OS event system must be modified to support integration with the OPENSTEP environment.
Debuggers will require some modification to work with the Mac OS environment.
System Services
Networking services within the Mac OS compatibility environment for serial, AppleTalk (including the Chooser) and TCP/IP will be provided through OpenTransport. Network and serial-based printing will also be supported.
Virtual memory will appear to be off for software in the Mac OS compatibility environment. However, because this environment is implemented within an OPENSTEP process, it takes full advantage of the high-performance demand-paged virtual memory system ).
Interoperability
The entire Mac OS compatibility environment will appear in one window within the OPENSTEP display environment so Mac OS windows can share the display with OPENSTEP windows. This Mac OS compatibility window can optionally take over the entire display to provide a user experience consistent with running the Mac OS. Also, Rhapsody will support multiple monitors as the Mac OS does today. The shared application menu will list all Mac OS and OPENSTEP applications.
Mac OS applications will be able to communicate with OPENSTEP applications via AppleEvents, to enable workflow solutions and factored applications.
Copy and paste will be supported between Mac OS and OPENSTEP applications. Drag and drop will work within each environment, but may not work between the two environments.
Performance
The Mac OS compatibility environment will meet or exceed the end-user level performance of the then-current Mac OS. This assumes that while OPENSTEP applications might be open in the background, they are not active. The display performance of the Mac OS compatibility environment will be better when the Mac OS occupies the entire display.
In the area of large I/O reads and writes, performance should improve significantly relative to the then-current Mac OS.
Summary
The Mac OS compatibility environment in Rhapsody will preserve customer investments in Mac OS hardware and software solutions through a complete implementation of the Mac OS. The vast majority of Mac OS applications and most system extensions will work in this environment.