The content:
- Keynote:
The pre-show comments about there being a lower turnout than in previous years
at WWDC seem to have been false. Hall 1 seems to be as full, or fuller than it was
last year. While the number of MacOS developers may be down, there are enough
NeXT developers to make up for the difference, and then some.
The old six-colored Apple logo is fading into the past. Multiple sources (including Time Magazine) say that Steve Jobs thought the old logo was "too seventies" and has decided on a more modern look. The PowerBook G3s get the "Ice Apple" logo, and the iMac gets a blue Apple. Talking to Apple people during the show, it sounds as though the three available choices are blue, "ice," and black, but Time says that other solid colors are acceptable.
Good news from within Apple. Turnover at Apple, which was previously over 33% is now below the average for Silicon Valley companies (8-10%). Apple is keeping people now, and is actually working very hard to hire back many of the smart people that left.
Apple is now up to 15% of total CPU sales revenue for CompUSA. The "store within a store" concept seems to be working.
Apple's market share is up from 3.5% (the low last year) to over 4% and seems to be growing. Response to the announcement of the new G3 PowerBooks is outstanding, and the just announced iMac is already getting a ton of inquiries via the Apple Store.
Apple now has a significantly simplified hardware product plan. It is described by the following matrix:
Market Consumer Professional Desktop iMac PowerMac G3 Portable TBA (1999) PowerBook G3 There are three parts to Apple's software strategy. They are:
- Mac OS:
The strategy is NOT to kill the Mac OS. This is a big departure from last
year's strategy. This year's plan makes a lot more sense to all the developers,
and Steve admits that in his keynote. He compare's MacOS to Apple's
crown jewels, shows us a picture of a diamond, and announces MacOS X
and Carbon.
There are currently roughly 8000 API points in MacOS. Of these, 2000 are unsafe for a protected-memory system. These 2000 functions points will be going away. This leaves 6000 of the API points supported. While this seems at first to be a problem, after testing current applications, 85 to 95% of the calls made by applications today are supported, since the 2000 includes a number of functions that Apple has been telling developers to quit using since System 7. Also included in the to-be-killed list are technologies that everyone knows are dead, such as AOCE, QuickDraw GX, Publish & Subscribe and other things that got adopted by very few developers.
The remaining APIs (and additions to replace the things that are essential, but still going away) will be collectively known as Carbon. Libraries will be provided so applications written on Carbon can run on MacOS 8. Application developers will be able to have a single source-code base which can run on both MacOS X and MacOS 8. Different binaries will need to be built, but it will remain a single source-base.
The new features added in MacOS X will be:
- Mach 3.0 kernel.
- POSIX support
- Hidden but accessable BSD 4.4
- Protected Memory
- Modern, high-performance Virtual Memory
- Preemptive multi-tasking and multi-threading
- Fast network I/O based on BSD sockets. (This was a point of much contention, and Apple is reinvestigating whether it will be possible to move the networking to Streams)
- Fast File I/O
- Fully PowerPC native
- Will run today's MacOS 8 applications (via the "Blue Box")
The schedule for delivering OS releases is as follows:
Q3 1998 Q1 1999 Q3 1999 Mac OS 8 Allegro (8.5) 8.6 Sonata (9.0?) Rhapsody Customer Release 1.0 MacOS X Beta 1 Customer Release 10.0 Features in MacOS 8.5 are:
- AppleGuide will be HTML based.
- AppleType (Unicode based text, aka ATSUI)
- Navigation Services. A replacement for Standard File. Standard File will be gone in MacOS X. Navigation Services also supports AppleShare browsing on AppleTalk (you can mount a server from a file-save dialog, for example).
- Significantly faster networking. Finder copies now FILL a 100MBit ethernet.
- Nearly everything is scriptable.
- Folder actions. Folders can have scripts attached which execute when something is done with the folder.
- Switchable themes.
- A standard interface to get & set network preferences
- Java
Apple has worked with Microsoft, Metrowerks, and Netscape, and has
agreements from all the players that there will be a unified Java this November.
It will be the Apple produced MRJ (Macintosh Runtime for Java), and will
be compatible with JDK 1.1.6 with the SWING additions. Also of note, Apple
has heard the criticism about their slow virtual machine, and is finally doing
something about it. Todays JVM gets roughly 300 CaffeineMarks. An alpha of
the version they're planning on releasing in November is currently getting
3100 caffeinemarks on a G3/300, and Apple plans to make further improvements
on that by November, so they have the fastest JVM available. Their target is
currently 3900 or so caffeinemarks, but may well end up higher than that.
MRJ 3.0 (in MacOS X?) will support JDK 1.2 and be PPC only.
QuickTime for Java. Extremely cool.
JDirect (not J/Direct, which is a Microsoft thing) will bring Java bindings for the MacOS Toolbox. Apple and Microsoft are beginning to look at standardizing JDirect and J/Direct, but Apple has said that if a certain path that MS has taken does not make sense for Apple, they will not do it. The example given was in looking at extending MS's security model to Apple's JDirect functionality. Might do it, might only do it partially, might not do it at all.
JDirect (Apple) J/Direct (Microsoft) standard Java syntax custom compiler, annotated class files runtime library resolution extensive runtime marshalling simple parameter marshalling platform-dependent string marshalling simple glue, easily generated MS security extended to native methods - QuickTime
has added a number of new things with 3.0, and continues to advance.
The identical APIs are now available on both Mac and Windows, allowing
developers to make cross-platform QuickTime applications easier. In fact,
since QuickTime has brought along much of the MacOS in order to work on
Windows, it's quite easy to write code once and deploy on both Mac and Windows
as long as you're doing things that can be handled by QuickTime.
Among the new features in QuickTime (who once again gave the coolest demos of the show, although the new hardware demos came very close this year) are more importer types, and wired movies. Among the added importers are importers for most of the major graphics formats, most notably TIFF. There are a number of new audio and video compressors, many of which give significantly better compression ratios than earlier codecs (the Sorenson video codec, and Qualcom's ClearVoice are the two that were most memorable). QuickDraw 3D and QuickTime VR are now fully integrated within QuickTime, rather than being separate technologies. Lastly, QT3.0 adds support for "wired movies", in which sprites can have actions such as
Set frame rate to 1,Set frame number to 23, orGoto URL http://quicktime.apple.com. Very cool stuff. See Klugeharp Sprite Sample and FireWalker Sprite Sample to look at some sample wired movies.
- Mac OS:
The strategy is NOT to kill the Mac OS. This is a big departure from last
year's strategy. This year's plan makes a lot more sense to all the developers,
and Steve admits that in his keynote. He compare's MacOS to Apple's
crown jewels, shows us a picture of a diamond, and announces MacOS X
and Carbon.
- Hardware Keynote:
This opened with "Go Speed Racer", as performed by Sponge. Everyone's
awake now. The hardware strategy I outlined above got repeated in more detail,
and they showed off the speed of the iMac. It WHOMPS PII/400s. Nearly
three times as fast as a similar-cost Pentium II system, and more than 50%
faster than the fastest Pentium II you can buy today. For $1299. Sexy.
The only downside of the iMac is that it doesn't have any removable
media capability today, but there will be USB floppy and Zip drives
available by the time it ships.
The Altivec architecture got some mention. Motorola has the complete docs on it, but suffice it to say that it'll speed up some parts of the MacOS in a big way. This is NOT MMX. Tools will be available in the second half of 1998. 3 GFlops on FFTs. Very Sexy.
Technology changes:
Dying technology The replacement Floppy Zip/Jaz/Network/?? ADB (Apple Desktop Bus) USB (Universal Serial Bus) LocalTalk USB (Universal Serial Bus) Macintosh Serial (RS-422) USB (Universal Serial Bus) SCSI FireWire IrTalk IrDA - Carbon:
Applications written to Yellow Box, in Java, or to Carbon each get their own
(protected) memory space. No more gunky low-memory globals.
There will be no 68K emulator available in MacOS X for Carbon, Yellow or Java applications. There will presumably be a 68K emulator available within the Blue Box for compatibility with applications that haven't been upgraded.
VM will always be on.
Preemption can happen at any time. What this means to developers is that things like the VisRegion can change between when you get it and when you draw. More on drawing in the Graphics section.
Unsupported technologies in Carbon:
- AOCE
- QuickDraw GX
- The MIDI Manager
- Telephony Manager
- Data Access Modules
- Classic AppleTalk replaced by Open Transport
- Standard File replaced by Navigation Services
- Memory Manager (no more System Heap)
- Hardware. No more direct access. You'll need to write a driver.
- Plugins. Everything should use CFM.
- Patch Manager. Any feedback about patches you need to make should go to Carbon Feedback
- Yellow Box:
Yellow is NOT going away. Yellow will continue to be the preferred development
platform for new MacOS applications, since it also gives cross-platform (Win32)
support (which will require licensing the Yellow for Win32 library from Apple.
Pricing details aren't yet available, but the price that's been mentioned by a number
of sources is "about $20".) . Application developers can develop for Yellow using
either Java or Objective C. Apple's Objective C compiler will support C and C++
mixed in with the objective C code, but anything that talks to the the Yellow APIs
will need to use ObjC calling conventions. This is a major lose to my mind, but
we'll see what develops. It's really a tricky situation for Apple, since they have a
late-binding model with ObjC/Yellow, and C++ just doesn't support that. On the
other hand, developers don't want to learn ObjC. Perhaps there will be some
wizardry comparable to Carbon by the time this is an issue.
- Driver Kit & I/O Kit
Driver kit is available today as part of Rhapsody DR2. We got CDs as part
of the conference package. DriverKit uses Objective C. Drivers written to
DriverKit will need minimal rewriting to work with IOKit, which will
be available in the same timeframe as MacOS X Beta 1. We'll probably
need to write IOKit drivers for the 4Sight code that talks to their supported
ISDN cards. Perhaps we'll get everything we need from the vendors of
the cards, though.
DriverKit has some neat functionality. It's object-oriented. For many drivers, you need to override very few functions. Unfortunately, it just doesn't fit into the Macintosh world. It lacks hot-swapping and auto- configuration, both of which are essential to make plug & play work the way it ought.
One notable part of DriverKit is IOLog, which works like printf, and directs output to the system log. Useful for debugging drivers when we get to that point.
IOKit is the evolution of DriverKit. It adds hot-swapping and auto- configuration. Basically, IOKit will never reach a steady-state. Think of booting as plugging in all your hardware at once.
The IOKit DDK will run on any version of Rhapsody (including DR2), but to actually execute the drivers, you'll need MacOS X.
- Graphics, Imaging & Printing:
Under MacOS X, the core of the graphics architecture is the WindowServer.
WindowServer provides low-level drawing capabilities. It gives you a window,
maintains the regions you need to know about, and when you're working in a
retained or buffered mode, it automagically handles drawing any window content
in response to updates.
The three modes are:
- Non-retained: This is essentially the same as today's QuickDraw. Applications are responsible for drawing the things that need to be drawn in response to an update event. This is a very familiar model, but will not take advantage of most of the new features of the MacOS X graphics models. It uses the least memory of the three modes.
- Retained: Visible drawing goes directly to screen (as with today's QuickDraw). Drawing that would be obscured (is not part of the VisRgn) goes to an offscreen GWorld, and WindowServer will handle updates for you. This has higher memory-usage than non-retained mode, but makes your code very simple to write. Performance will be slightly lower than non-retained mode (since you will draw obscured bits), but the payback is that application code never has to run in response to an update event.
- Buffered: This is essentially drawing everything to a GWorld, and then letting the WindowServer take care of getting it onto the screen. This mode has the highest memory requirements, since a complete, full bit-depth GWorld exists which backs your window. On the other hand, you never need to worry about when you can draw. If you have synchronization issues, you can tell WindowServer to shut off blitting to screen, begin the critical section, then tell it to turn blitting back on. Simple. Performance varies based on whether your application is actually getting to talk to the screen or not.
Changes from Classic QuickDraw:
- QD Globals are gone. Your GrafPort is per-thread.
- PixMaps -- the last field in the PixMap (formerly reserved) is now used for a pixmap extension.
- ATSUI. Unicode text drawing.
- Fully PPC native. No more 68K bottlenecks or slowdowns.
- RowBytes is now a long!
- floating-point point coordinates.
- Thread safe!
- Window buffering
- PDF is the standard interchange format. PICT is going away. There's no PDF to PICT converter yet, and the standard one will use QuickTime to import to a bitmap. There's a third-party opportunity here.
- Compositing built in.
- 16-bit per channel, up to 64 bits per pixel.
- Affine transforms (scaling, rotation, etc)
- Alpha channel support
- RGBColor is dead. CMColors will be the standard. All colors will go through ColorSync
- The Pen will be a PostScript-style pen, complete with line-joining rules similar to what PostScript has today.
- ClipRgn is gone. Instead, we'll have a real ClipPath to work with. At lower levels, WindowServer will still use ClipRgns, but applications don't have to worry about that mess.
- There will be a new set of APIs for Extended QuickDraw (XQD) which will need to be used for the new features.
- Display PostScript is Dead
- Direct EPS preview is gone. There will be an EPS to PDF converter.
- LaserWriter 8.6 uses Nav Services.
- LW 8.6 spools directly to DTP. No more Spool Folder in the system
- LW 8.6 has support for Streams and Hoses. New way to hook into the print stream to either modify it as it goes by, or send the data via a different protocol.
- Carbon will have new printing APIs. They'll be similar to the current ones, but will lose the low-level APIs. PrGeneral will be replaced by a number (20 or so) of direct calls. The Print Record will be totally opaque, and accessor functions will be provided.
- Print Drivers will be PowerPC native. Say goodbye to PrGlue.
- Summary & Conclusions:
I needed to delete this section since it contained some proprietary information.
Other people's views:
- Henry Norr on MacOSX Networking
- Jorg Brown on Mac OS X has a good picture of the MacOS X architecture.
- Macworld's Mac OS X Explained
- Apple's WWDC Roundup
- Don Crabb on Rhapsody Broken Link. Sigh.