Rhapsody provides modern OS features such as preemptive multitasking, threading, and memory protection. Apple positions Rhapsody as an OS for servers, work-flow applications, and high-end desktop work. It's basically a port of OpenStep. OpenStep itself is a port of the original object-oriented NextStep OS to both Unix and Windows. The name change was made because NextStep class libraries employed the Mach kernel to supply low-level services, while the OpenStep libraries are an application framework that rely on the host OS for low-level services. While Rhapsody uses the OpenStep libraries, it is an OS that uses the Mach 2.5 kernel for system services. Doing the many code ports confers two important advantages to Rhapsody. First, it reduces time to market because the ports eliminated most of OpenStep's hardware- and OS-specific dependencies. Second, it means Rhapsody is built with field-tested, time-proven code (NextStep was introduced in 1988), w
hich improves its reliability. The OpenStep class libraries themselves got a new moniker: the Yellow Box. This distinguishes their threaded, object-based nature from the nonreentrant Mac OS compatibility environment, called the Blue Box. These libraries also sport some new features not found in OpenStep, such as Java support, and Mac-like UI elements. However, it is still an application framework.
Enhancements have been made to Rhapsody's Mach 2.5 kernel so that it supports NFS. It also supports SCSI disks, and removable devices such as CD-ROM and Jaz drives. While the kernel has multiprocessing capabilities, the feature uses processor-specific code. Therefore, this release doesn't offer support for symmetric multiprocessing (SMP). Later Rhapsody releases will offer SMP, and they'll use the Mach 3.0 kernel.
Running on top of the kernel are the Yellow Box libraries and BSD4.4 Unix. Java support comes through a virtual machine (VM) based on Sun's JDK1.1.3. The interfaces are revised so that Yellow B
ox APIs can be called from Java. Theoretically, you could write a Java program using the Yellow Box APIs once and it would execute anywhere: on a Power Mac or a PC running Rhapsody, on several flavors of Unix, and on any x86-based machine running Windows. Java code would execute on the Java VM, while the Yellow Box API calls would execute in native code. Since applications make extensive use of GUI API calls, this makes it possible to write a Java application whose image could execute virtually anywhere, and with reasonable performance.
Tricks and Traps
For the PowerPC-based version of Rhapsody, you need 32 MB of RAM minimum (64 MB recommended), and a 1-GB hard drive. To meet the delivery date, Apple wrote a subset of Mac hardware drivers, so only Power Mac models 9500, 9600, 8500, and 8600 are supported. (For the brave, this release happens to work with Power Mac models 7200, 7300, 7500, and 7600, but they aren't officially supported.) Rhapsody works only with ATI and IXMicro video boards, and
only TCP/IP on Ethernet is available for networking -- no AppleTalk or PPP. Rhapsody uses the Unix File System (UFS) on the hard drive, while it uses NFS for remote drives. The Blue Box is absent, as are Mac OS technologies such as QuickTime, QuickTime VR, and AppleScript. This is definitely a release only for those interested in writing to the Yellow Box APIs. The Blue Box will make its debut in the Premier release of Rhapsody, scheduled to ship the first quarter of this year.
On a large hard drive, you can create two partitions, one for the Mac OS and another for Rhapsody, to make a dual-boot configuration. You toggle between the two OSes by holding down the Caps Lock key during the boot process. (See
"Dual-Boot Mechanism"
for how this is done.) On the Mac OS side, a Rhapsody control panel lets you set the hard drive's SCSI ID and certain boot parameters. To enter Rhapsody, you hold down the Caps Lock key until the Rhapsody control panel loads. The Mac restarts, and Rh
apsody boots. Under Rhapsody, you log out with the Caps Lock key down to flip back to the Mac OS.
On developer releases, you expect a few rough edges, and Rhapsody has some with the system configuration. Setting up the boot drive in the Rhapsody control panel requires you to enter the Unix name of the root device (e.g.,
rootdev=sd0
). The documentation is vague on how to do this, particularly for an external SCSI chain with several devices. The best bet: Leave the boot process in the verbose mode (put
-v
in the kernel arguments [args] pane in the Rhapsody control panel). This lets you watch Unix commands execute in a console window during the boot process. Jot down the Unix device name Mach assigns to the SCSI drive in question. Press the Command and Power keys to interrupt the boot, and type r when Unix prompts you. Enter this name in the kernel args pane when you flip back into the Mac OS. When you've got everything set right, remove the verbose command, and Rhapsody boots, displaying
a sliding progress bar just like the Mac OS.
The Workspace Manager process acts like the Mac OS Finder and hides Rhapsody's Unix entrails, to a degree. The lone menu bar, the sample application windows, and the Desktop look amazingly Mac-like. However, when you run HostManager and SimpleNetworkStarter to configure the computer's network settings, NextStep rears its head. The appearance of the menus and windows in these programs is quite different,
as the screenshot
shows. These applications do let you point and click to assign your computer an IP address and set router information. Establishing domain name services or printer services, unfortunately, requires resorting to a text editor and Unix scripts for setup, so Rhapsody's network services aren't quite ready for prime time. With the correct network settings, I was able to use Unix telnet and ftp programs to grab files from Web sites. As of yet, there's no drag-and-dropping of remote files as in AppleTalk.
Tip:
If
you munge a network setting and experience problems booting, use the magic Command-Power key sequence to interrupt the system, restart, and hold down the S key during the boot (or add
-s
to the kernel args pane in the Rhapsody control panel). This gets you into the single-user mode, where you can try to correct things -- providing you know your way around Unix.
Future Platform
Rhapsody comes with a bunch of development tools: GNUC; a linker; a make utility; and Interface Builder, the OpenStep point-and-click software for rapidly laying out an application's interface. There's also Project Builder, which manages the source, object, and header files for programming projects and resembles the Metrowerks CodeWarrior integrated development environment. About 25 sample applications -- with source code -- can help jump-start your coding efforts. Sun's Java compiler and class libraries are also included. The code for a sample text editor, written entirely in Java w
ith calls to the Yellow Box APIs, is provided for Java aficionados.
From a Mac user's perspective, Rhapsody still relies too much on Unix to set up fundamental services. The Jekyll-and-Hyde mixture of NextStep applications and non-HFS file system creates confusion as well. In its favor, Rhapsody did not crash once during my testing. If the engineers can implement user-friendly system configuration tools, and get the Blue Box, QuickTime, and AppleScript working, then Rhapsody stands to deliver a powerful server-class OS that everyone can use. Stay tuned.
illustration_link (27 Kbytes)

Rhapsody adds a Forth command to the Open
Firmware boot process that lets you select which OS to use.
screen_link (32 Kbytes)

The Rhapsody Developer release is a mixture of Mac and NextStep elements.
Tom Thompson (
tom_thompson@byte.com
) is a BYTE senior technical editor at large.