What follows is my distillation of the notes I took during WWDC 1999. I tried to document things as I went through the conference, but I'm sure I missed something. Nonetheless, this is useful for me as a review. I hope it's useful for you, too. Note that this is my take on things, and in some cases I'm expressing my opinion based on what I know. Since my knowledge may be incomplete or confused, don't take this as gospel.
Table of Contents:
- Keynote
- Mac OS X Overview
- QuickTime 4
- Apple Masters
- Marketing Keynote
- Hardware Keynote
- QuickTime Internet
- Mac OS X Graphics
- AppleScript
- Keychain
- Carbon Printing
- Open Transport
- Mac OS X Networking
- Open Transport on Carbon
- Summary & Analysis
Keynote
- Last year, I thought the number of developers wasn't down too much. This year I saw that the number was definitely up. Rather than being in Hall 1, the keynotes and the big sessions are in Hall 2. I'm not sure if it's bigger than 1, but I think it is. And it was pretty full for the keynote. According to Steve, there are 2514 paid developers at WWDC this year. There are also a number of executives in the crowd (who have special "executive briefings" to go to, but share the keynotes with the rest of us) and a large number of Apple employees around.
- One other number before getting into the observations: Steve says here have been 3100 applications shipped since the introduction of the iMac on May 6, 1998. That's a lot.
- The other big announcement is that Dragon is on the Mac now. They'll have voice recognition shipping before the end of the year. That's kinda cool, but there's no demo yet. We'll see how it turns out.
- The product matrix still looks the same as last year. The boxes have been filled in, except for the consumer portable, which is scheduled for "late 1999".
- Sears is going to be selling iMacs. That's a pretty big boost.
- iMac numbers: about 15% converts from Windows, about 20% new buyers. About 80% of iMac buyers get on the internet primarily with their new iMac. Most make it on the first day.
- New PowerBooks announced. 5.9 lbs, and 20% thinner than the one I'm typing on. There's a 400MHz model with DVD and a 6G HD for $3500, and a 333MHz with CD for $2500. They're going to be giving away 50 of them during the conference. Hope I win, but so does everyone else. They sound pretty cool, and lighter weight will definitely be a good thing.
- OpenGL is on the Mac. No mention of QD3D, but that did happen under the previous administration, so it makes sense that Steve doesn't mention it.
- MRJ 2.1.2 is out. It's the 1.1.7 JDK & SWING. It's not as fast as the fastest Java on Windows, but it's a lot better than MRJ 2.0 was. The next thing on the list is improved speed.
- QuickTime 4. The addition of streaming, with the open source server looks like it's going to put Real Networks in a bad way.
- 8.6. Out today. The CD's get handed out after the keynote. The biggest improvement looks to be a 37% better battery life. More on this later.
- Sonata:
Sherlock2 will be new. It's kinda spiffy, but the main thing I noticed is that ad-pane that runs in the bottom of it. I'm thinking MacHack this year might have to be dedicated to killing that ad pane. Another handy bit of Sherlock2 is the ability to do things like comparison-shop for books. I'm going to need to play with it before I can say more, but it looks pretty cool.
The keychain is back in Sonata. This means you can have multiple users, and each one can have a different set of passwords for a different set of servers. It's the way PowerTalk should've been.
There's also built-in encryption in Sonata. Elliptic Curve, perhaps? I didn't jot the note immediately, so I'm unsure. I'm sure it'll get mentioned again later. - Mac OS X:
There are four layers.
Darwin is the codename for the Mach (3.0) Microkernel and BSD. It includes "a modern networking stack" which draws hoots of derision from the people around me who know about networking.
Quartz is the imaging engine. It has some cool features including some nice compositing.
The application model is next. There are three choices: Classic (formerly Blue), Carbon, and Cocoa (formerly Yellow). Java comes in through Cocoa, but is listed as a fourth model in some slides.
There's a new file/network browser. It looks a lot like the NeXT worskspace, and I don't like it. Steve is very adamant that this tests well with users, but there really needs to be a way for power users to reclaim some of that lost real estate.
They're also including an email client in the system (with all the wizzy graphics inline that you see in NeXT's email today). The folks who write email clients don't seem terribly happy. I don't know if I am, either. I suspect it's going to make for a lot of email headaches when you're talking to someone who's not running Mac OS X (or you're the recipient of mail from someone on OS X). Steve Jobs seems to think it's a full-featured email client, but I've never seen the kind of filtering I depend on to get rid of spam. - Mac OS X Schedule:
- Developer Preview 1 - May 10, 1999. We got the CDs after the keynote.
- Developer Preview 2 - Fall, 1999.
- 10.0 "Early '00"
Mac OS X Overview
- The idea is to combine the strengths of Mac OS X server with those of Mac OS 8.
- Layers (see above) are good. It means they can swap out bits as needed.
- We're already seeing some convergence of the client and server. This isn't happening with Win98/NT, and the Apple folks are quick to point that out.
- The IOKit now uses Embedded C++. This is a change-point from last year, and a welcome one. Some of us just aren't very excited about Objective C.
- The BlueBox is no longer in a box. Due to some cool stuff in Quartz, there are no screen swaps needed to switch to/from Blue applications. Good.
- The Carbon APIs are final. We have 'em on the CD. More on this later.
- Multiple localizations can be put into a single "package", which is basically a magic folder that holds your application and all its resources.
- There's that new "enhanced" finder again. You can have multiple browsers (which wasn't made clear in this session). I still don't see where the gain is for people who already are familiar with the Mac, and the visual path to where you are is darned annoying. It also doesn't seem to help with the oh DAMN!, where did I just put that file? problem.
QuickTime 4
- There's a new installer. It's incremental. The basic QT4 is 2.8M. Compare to QT3@6.8M. If a codec that's needed is missing, QT will automagically prompt you to download it from Apple's server. Interestingly enough, nobody ever mentions that it's actually a "MindVision" product. I wonder if that's politics or ego.
- VR is much smoother & prettier. They finally ripped out some of the code needed to make it work on a 33MHz 68030 and it's much better looking now.
- GX colorspaces are supported in QT now.
- Sneak feature in 8.5: GWorlds now have 32-bit Rowbytes.
- Flashpix support is in QT4
- There are now Graphics Exporters. Cool. I don't need to know squat about file formats. Just let QT deal with 'em.
- Here's an idea. Since the QT Streaming Server is Open Source, we should port it to Mac OS 8 on top of OT. When the performance turns out to be far superior to the one on Mac OS X, maybe that'll convince the Apple folks to talk to Mentat and get a good networking architecture on Mac OS X.
AppleMasters
- This was a pretty cool part of the program last year. This year it was even better. The Masters were Gregory Hines, John Knoll, Herbie Hancock, Paul Davis and Sinbad.
- Gregory Hines: Gregory talked a bit about how he loves his mac and tap danced to accompany it. He's pretty good, and it was a lot of fun to watch.
- John Knoll is one of the two original Photoshop guys. Currently he's at Industrial Light & Magic and he showed us some of the bits he's rendered on his Mac. This usually happens because he has an idea at home, but in some cases it was because all the "real" machines at ILM were busy, and he went home to use a Mac. One of the cooler things is that John brought his 10Gigabyte FireWire hard drive and just plugged it in. I've got a serious case of hardware lust for that kind of ease of use and the cool little box you can put in your pocket.
- Herbie Hancock: Herbie noodled around putting some additional music on top of a scene from Harlem Nights. Again, pretty cool. Interestingly enough, Apple doesn't have a page for him yet. Hope he doesn't feel left out.
- Paul Davis: Paul showed off his Painter-created animations again. I wasn't wowed by it last year, and I wasn't again this year. It's kind of cool that he gets to be creative on a Mac, and it's definitely an art-form that would be nearly impossible to do without one, but I just don't appreciate it much.
- At this point, Sinbad was supposed to come onstage, but he was running late, so Herbie and Gregory improvised a duet. This had absolutely nothing to do with the Mac. It was just two guys jamming together. It was definitely the coolest part of the show.
- Sinbad: Sinbad was funny most of the time. He offered some dating tips to the nerds, and that was the theme that he kept coming back to. The gist of it was that he thought it was cool that someone else was slaving at making good software so he didn't have to. It dragged a little when he ran out of canned material and did an "Ask me anything" bit with the audience. Expecting questions that are good comedic material from nerds is probably asking too much.
- There was also a video-cameo from Jennifer Jason Leigh. When she was on the Rosie O'Donnell show, she talked about how much she loved her Mac.
Marketing Keynote
(Mitch Mandich):- Twenty percent market share in Japan. Twelve and a half percent here in the US. This doesn't suck. Apple is getting free (and unexpected) advertising from folks like MTV. Apparently the iMac is considered a "cool thing" for Generation Y (or the echo of the Baby Boom, for those not up on the latest terminology). Mitch went on for a while telling us how this was a good thing, since these kids influence their parents' decisions in a pretty significant way.
- Better presence in stores. One of the things Apple is working on is self-repairing (and with some added hardware) self-restarting demo software. This should make for a lot fewer machines just sitting there with a blank screen. Apple is also introducing a "Mystery Shopper" program in which they evaluate the total shopping experience and reward sales people accordingly. This should be completed by August 31, and we'll see how it does. The CompUSA in Edina could sure use some help. Mitch actually commented that he wanted to know about the good and bad experiences. I didn't jot down his email address, but it can probably be found "out there".
- Developers can get a free catalog listing in the MacMall Software Buyers Guide. Send email to macdev@pcmall.com for more information. That's a pretty good program, I think.
- Best Buy still hasn't figured out how to manage colors, so they're out of the iMac chain. The solution: add Sears. This is a lot bigger deal than it sounds when you see the map of geographic coverage with and without Sears in the mix. There's a whole lot of rural America where you need to drive hundreds of miles to buy a Mac today. Add Sears to the mix, and the only places that aren't covered are the desert in Nevada and Utah. The other big thing about adding Sears is that the normal Sears buyer is a first-time computer buyer, and that's a great market for the iMac. The only downer that comes to mind is Why didn't they do this a year ago?
Hardware keynote
(Jon Rubenstein & Phil Schiller):- The grid from last year remains. The consumer-portable portion of it still remains a question-mark. 32% of iMac purchases in the US, and 47% in Japan are first-time computer buyers. These are folks who are looking to buy software.
- There's lots of placement. TV shows, movies, etc. The interesting thing is that even companies like Crate & Barrel are putting iMacs on furniture in their catalogs.Also an appearance at the White House Easter Egg Roll.
- The Epson 740i comes in the five iMac colors. This made Time and Newsweek, and is an interesting problem for hardware developers. You'll probably sell more if you make colors, but you've got the same color-management problem that Apple does. On the other hand, colored peripherals are going nuts in Japan.
- The newest (pro) Desktop machines continue to be impressive.
- The 400MHz Powerbook continues to rock the competition. They've moved copper into PowerBooks.
- All machines are now New World ROM (i.e. ROM in RAM).
- Here's a comparison:
G4 (AltiVec) Pentium III Transistors 10.5 Million 9.5 Million Die Size 83mm^2 130mm^2 Power Consumption <12 Watts 40 Watts - AltiVec (G4): The AltiVec triples memory bandwidth, with faster (2x) access. This makes things a lot faster. On the G3, the Branch, Integer and Floating Point units can all run concurrently. On the AltiVec, you add the vector unit. It's got 32 128-bit registers, and adds 162 new (orthogonal) instructions. Comparing AltiVec to G3, there's a 1.5 to 8x speedup for machines running with the same clock speed. The other thing is that, since Apple wants to keep the performance balanced, there will be speedups in all the subsystems, too (most importantly memory). Delivery should be before WWDC 2000. Maybe I'll save my hardware lust for a G4 machine....
- Analog audio is going away. Expect speakers to be USB devices in the future.
- Power Management: Expect full power management on all systems. Beyond just saving energy in PowerBooks, this can save heat and energy in desktop machines. Maybe this means I won't be bombarded by the sound of fans in a year or two. For software developers, this means that you might see a whole subsystem shutting down if unused, even while the rest of the machine plugs along. This is similar to the hard-drive spinning down.
- There will be a new Time Manager. It will be fully PPC native, and more importantly, won't touch the PCI bus. Big performance deal when you're doing something like importing real- time video through the PCI bus, and you don't want to screw up the video in order to put time-codes on it.
- SCSI will continue to be the standard for high performance drives, but only with an additional card. ATA is the default. And as John Knoll showed in the Masters presentation, FireWiire drives may be the best answer from an ease-of-use standpoint. We'll have to see how they actually do for bandwidth, but gien the FireWire specs, SCSI will continue to be the fastest answer unless the data never has to go into the computer.
- USB will be everywhere. Mac Serial is really going away. One of the cool things they're doing is "drivers on demand". What this means is that if you plug in a USB device, and the driver for it isn't available, you'll be asked if you want to fetch the driver. If you do, your computer will connect to the net, and download the driver from the site Apple points to.
- FireWire: There will be no FireWire on consumer machines. In the Coming Soon category: multiple cameras on the FireWire bus. Also DV -> FireWire hard drives directly (i.e. the computer will just start things going, and then it steps out of the picture). Support for DVC-Pro 50 is coming. This is a new DV standard that is higher quality. This is the answer for sucking things for broadcast (or better) quality. Video is a big deal. Apple's putting a lot of work into this, and wants to lock up the market. Finally, I need to repeat this: FireWire Hard Drives Are COOL.
QuickTime Internet
- Important idea for developers:
With streaming movies, the size and duration of a movie can change.
mcActionControllerSizeChangedis the message to look for. - There's a URL Data Handler. It handles the common types you're going to be using. Other types will need a new Data Handler. The Data Ref is a handle to a C String.
- Example of how to use the QuickTime plug-in on a web page:
<embed src="dummy.mov" width=initialwidth height=initialheight qtsrc="rtsp://mysite.com/my.mov">Note that theqtsrctag has a lot of options. http://www.apple.com/quicktime/authoring/embed.html has all the information. - Streaming movies will do best if they're hinted, but you can do this by exporting the Movie from QuickTime Player (the new MoviePlayer). No need for a separate, expensive application.
Mac OS X Graphics
- There's Quartz. It's a new (client-server) windowing system.
- The steps to getting there were:
- Nuke DPS
- Propagate & Integrate Printing, ColorSync, QuickTime, etc.
- Prod the developers to adopt it & make SDKs
- The picture of how the pieces fit together:
Carbon/Classic (née Blue) Cocoa (née Yellow) QuickDraw Core Graphics LWWS Client LWWS Client LightWeight Window Server - The WindowServer doesn't actually do any drawing. The Client Libraries do that. The purpose of the LWWS is to arbitrate and dispatch things. It also handles buffering, offscreens, etc.
- There's a new model for Graphics Acceleration. Yellow Chicken goes away. No further information was given.
- Core Graphics: 2D - It's a PDF model. There's transparency, compositing, and masking added. Core Graphics replaces DPS. It eats PDF. ColorSync and ATS support will be built in. Points now use floating-point numbers.
- There will be a "Universal" printing GrafPort provided by Core Graphics for printing. The spool files will be PDF (by default), but developers can use any spool file format they want. Doing so may well restrict the ways you'll be able to interact with other printers. Limitations in the printing model will be similar to those you see under LW8 today, in that Regions and complicated transfer modes may not print correctly.
- Time for another picture:
PDF PICT QD SVG Quartz/Core Graphics PDF PS Screen Printer - Use Graphic Importers in applications. If you want to support a new format, the best way to do this is to write a codec.
- SVG will be important. It's a new standard, and the specs are somewhere at The W3C
- The Graphics APIs may change, but the current version is on the Developer Preview 1 CDs we got.
- There are three levels of support:
- In an existing application that you're looking to get to Mac OS X ASAP, you provide a minimal level of support by using Graphic Importers, make sure you work with buffering enabled, and you may need to add some QuickDraw flushes to keep things in the right state.
- The next level of support is to factor your rendering code, and use Core Graphics for your printing loop. You should also support SVG.
- For new applications, you should just write to the Cocoa APIs, and all will be well. Of course you'll have to learn a whole new set of APIs, but we knew that last year.
- Feedback should go to graphics-feedback@apple.com
AppleScript
- Things continue to move forward. There's a cool new thingie called:
using terms fromwhich lets you avoid the icky nested tell blocks, and also lets you compile using a dictionary from an application on your machine, even though the script will be talking to an application on another machine. It looks like it'll simplify scripts a little. - Program to Program Communication (PPC) over IP is coming along, thanks to mucho help from the Open Transport folks.
- Printing will be scriptable. This wasn't a surprise to me (I'm working on the Technote), but it drew a pretty good round of applause from folks in the AppleScript session. I wish the printing folks had been there to see it.
Keychain
- The keychain will be based on CDSA.
- The keychain will have a scriptable API.
- Keychain support requires:
- Appearance
- Drag Manager
- Navigation Services
- Core Foundation Library
- Keychain 2.0 will be in Sonata. It will be API compatible with Keychain 1.0, except for one added call that I didn't note.
- Certificates are X.509. No support for PGP certificates. Sigh.
- The keychain is encrypted with 128-bit RC2. This seems a little small to me, since in the AltiVec session, they showed factoring a (roughly) 1kBit number onstage.
- The user has to give each application permission to access the keychain, unless the user turns that feature off. This is good from a security standpoint, but I worry that most users will just shut it off the first time they encounter it.
- Keychain Manager does all the UI for you. This precludes using it at times when UI is unsafe.
- AppleShare passwords can be added to the keychain, but they're still too short to be really secure. Pfui.
Carbon Printing (Tioga)
- Using the Carbon Printing APIs gives you printing on both MacOS X and Mac OS 8.1 and later (with CarbonLib, natch)
- On Mac OS 8, Apple will "handle" the hidden and/or undocumented fields in third-party print drivers for you. That's quite a challenge, I'm thinking. It'll be cool if they can pull it off.
- Do Not intermix Carbon (PMApplication.h) and "classic" (Printing.h) calls. That Would Be Bad.
- The Print Record has been split into two structures. The Page Format and the Print Settings. They're both opaque and there are accessors to get at the innards.
- Things are much more strictly scoped. You need to call the functions in the right order, or you will get an error. Yay!
- There will be a few added calls for printing without UI.
PMSubmitDocument(FSSpec &);lets you submit a document you've written to the local drive.PMSubmitDocumentRef(URL);will let you submit a document from a Web-Server. Hopefully this means that browsers will finally be able to get printing right. If not, they're complete idiots, since they only have to make a single call, right? - There will be new queries to find out what's up with the printer:
PMGetPrinterFontsandPMGetPrinterMediado about what you'd expect. I'm not really sure why this is necessary except for applications that want to write their own PostScript, and they should have enough of a clue to do their own queries. - Tioga will be available in Developer Preview 2.
- Job Tickets: The Tioga Job Ticket will contain information like the print settings, (copies, n-up, etc), the Job Information (such as the target printer, the user-name, etc), and Document Information (the document name, type, size, author information, etc). The idea is that by decoupling the job ticket from the spool file, it'll be easier to route a job to a different printer once it's been queued. Sounds reasonable to me.
- Spool File: PDF will be the default spool file format, but PICT and PICT with embedded PS (via PicComments) will be available. Third-parties can also add their own spool file formats, but are discouraged from doing so, since having your own spool file format means the user won't be able to reroute your jobs to another printer.
- The Queue Manager (the application that handles passing the print job to the right machine or driver) will talk Internet Printing Protocol (IPP) to each other.
- The Job Manager (which, it was joked, is a perfect manager, since it doesn't do much) handles things like copies, collation, n-up, etc. It calls Converters (e.g. to convert from PDF to raster or PostScript), Printer Modules (the new equivalent of printer drivers) and IO Modules (which are similar to Custom Hoses For LaserWriter 8.6) to do the real work.
- Converters: The default converters are: PDF to Raster, PDF to PS, PICT to PS, PICT to Raster, and PDF to PICT. An SDK for developing converters will be available, but isn't today.
- Printer Modules are the Tioga equivalent to Printer Drivers. They prepare the data for downloading to the actual printer, and support the custom features of a specific printer. Apple will be providing a PostScript Printer Module, which will have functionality similar to LaserWriter 8. Third parties can use an Apple-supplied SDK to develop their own printer modules.
- IOModules are the bits used to send the job to the printer. Apple is supplying PAP, LPR, USB, FireWire, IPP and write to disk IOModules. Third parties can develop their own IOModules if they use a protocol not supported by Apple or have other special needs.
- Compatibility: Apple will support classic (today's) printer drivers from Carbon and Cocoa via a special application that will run within the Blue portion of Mac OS X. Classic applications can also print to Tioga using the Carbon Printing APIs. Mac OS 8 and Mac OS X clients and servers should be able to print to each other, too. Also, when Windows supports IPP, we should be able to interoperate with those deluded folks using the wrong OS, too.
- Print Center is the application the user will be interacting with. It replaces the Chooser and Desktop Printing and collects a lot of the administrative stuff within a single location. Third parties will most likely have their printer configuration applications or modules (that part of the design isn't complete) called by Print Center.
- The new printing dialogs let the user reorder things within the dialog. Basically there's a scrolling list of settings (copies, n-up, etc) that the user can order however she'd like. This is pretty cool. However, if an application calls AppendDITL to add items to the dialogs, the application panel is going to look fairly ugly. Hopefully app developers will adopt the new APIs for adding items to the print dialog.
Open Transport
- Many of the improvements that were promised last year are now in. There are still a number of items on the to-do list, but quite a few have been crossed off. This is good news. OT just keeps getting better.
- The next release will move to Mentat Streams 3.3 and TCP 3.5. More improvements. Good Thing. Because of these changes, developers should make sure to test networking code thoroughly with Sonata.
- Network setup API is adding notifications. Applications can now detect when something changes in the setup.
- Get off the prefs files. There's the Network Setup API. Use it. It's also a lot easier to use than mucking with the preferences file directly.
- PPC (Program-Program Communications) is going over IP. You'll be able to AppleScript remote machines without AppleTalk.
- Improvements in DHCP
- 8.1 (1.3.1) Got a new IP address every time the stack loaded/unloaded.
- 8.5 If no address can be found, it goes into an auto-net range
- 8.6
- On failure, look for a new DHCP server.
- "Load Only When Needed" is ignored for non-PPP DHCP links
- 8.Next Retry the address until your lease expires
- Down to 2 libraries now! Woo! This should mean a lot fewer problems trying to figure out which libraries you need to link with your networking application.
- Futures:
- Keychain is supposed to be there in Sonata
- Multi-link Human Interface and APIs will be added
- IPSec(v4) APIs
- IPv6
Address and port structures change - code changes may be needed
Guildelines:
- Don't parse address strings yourself. Use AF_DNS addr)
- Or use URL_Access (sub-woofer)
- Allocate the maximum buffer size reported to you in the TEndpointInfo
- Bind to null, null - don't try and be a specific address
- Get off the old APIs
- Get off ASLM
- Get MoreNetworkSetup
Mac OS X Networking
- OS X Server still has a dual networking stack
- OS X Client will be based on FreeBSD 3.x network stack.
- LibcAT will need to be used for things that aren't part of the standard sockets implementation (such as AppleTalk)
- There will be a single shared IP address for both OS X and Blue layer. They've been saying this since last year, but the fact that it still isn't done points out just how complex this really is.
- IPv6 will be in Developer Preview 2 (they hope)
- IPv6 will add autoconfig
- Network Kernel Extensions (NKEs) are the big good news. They allow a way to hook into the OS X networking stack without having to recompile the kernel. This is a big thing, and mostly silenced the streams vs. socket debate that went on last year.
Open Transport on Carbon
- Socket APIs will be "native", but OT will be available on Carbon.
The big news is that to use OT on Carbon, most of the functions you use today will be available,
but there will be an added
OTClientContextPtrparameter that will be needed. To me, this is appalling. To make code that will compile for both Carbon and Mac OS 8 (pre-Carbon), you'll need ifdefs with the same function and different parameter lists. Apple should know better than this, and I strongly urge you to send feedback to that effect to Apple's Carbon Feedback email address. 12 entry points will be affected. - The good news is that the statically linked Open Transport libraries will be going away. The bad news is that you'll have to pass the context pointer into the shared libraries.
TARGET_API_MAC_CARBONis the symbol you'll need to look for in your ifdefs.- There is no plan to support the following protocols: ADSP, DDP, NBP, PAP, ZIP, ATP, PPP
- Eliminating AppleTalk is a worthy goal. The idea is that applications will quit using AppleTalk and will move to IP-based protocols. The problem is that there will be no way for an application that needs to talk AppleTalk (which is quite common in the printing world that I'm part of) can have a single binary that works on OS 8 and OS X. Again, I encourage folks in straits similar to mine to drop a note to Apple's Carbon Feedback email address.
- Open Transport uses asynchronous calls. BSD networking is based on synchronous calls. This makes things a little challenging for putting OT on top of BSD for Carbon. The solution is that Apple is using preemptive threads and has added an event notifier to the kernel. In Carbon, cooperative threads will be used.
- Make sure you only link against CarbonLib, and not against any current OT libraries.
- Address buffers are likely to change size. This was mentioned in Lefty's OT talk earlier, but it's well worth emphasizing here. You should check the address field of the TEndPointInfo to see how big of an NetBuf you need to allocate.
Summary & Analysis
- Mac OS X:
Developer Preview 1 was released at the Conference, but in spite of that, there are still quite a few parts of OS X that just aren't ready. Tioga (Printing) won't be ready until at least preview 2 this fall. The idea isn't bad, but there are quite a few parts that are either taking longer to complete than initially expected, or are still changing, as Apple figures out how to best make things work. - Carbon:
Carbon is, for the most part, good news. There are a few glitches, such as the lack of Appletalk support in Carbon, and the fact that Open Transport functions now have different parameters under Carbon than they do today, but hopefully these issues will be corrected before long.
It's a real shame that there's a version of CarbonLib available today (and that has been called final) that has these misfeatures, but there are smart folks on the Carbon team, and hopefully they'll resolve the problems quickly. Then again, maybe they'll convince me I'm mistaken in my criticism. - Mac OS 8:
The current Mac OS was definitely the brightest star of the conference. Apple is taking the OS they've been working with for the past 15 years and modernizing it. A lot of this process happened during the transition to PowerPC, but there were still parts of the OS that had 68K code, even when running on a PowerMac. With Sonata we should see an entirely PowerPC Native OS, and applications running on top of Carbon will see not only speed, but stability improvements. QuickTime is more full-featured than ever, and is a pretty serious OS in its own right. OpenTransport is improving incrementally, and will continue to improve as long as Mac OS 8 stays alive. These improvements are raising the bar for what people expect of a Macintosh, and the Mac OS X team is going to be hard pressed to make it over that bar. - The good news:
Apple has turned sales around, and the company looks to be on firm footing again. The iMac has helped reinvent Apple as an Internet Company, and that's a good thing.
The Mac OS 8 team is continuing to improve the OS, and the Mac is getting easier to use, while still not changing so much that current users will feel lost. There are some real big wins, most notably QuickTime, Open Transport, and Sherlock 2. Developers seem a lot more excited this year, and Apple hasn't changed their direction much in the past year. Steady forward progress is what Apple needed, and they've gotten it. - The bad news:
There seems to be a lot of Not Invented Here syndrome within the Mac OS X team. They're embracing Open Source for some things, but in many cases seem to have convinced themselves that things that came out of the old Apple aren't even worth looking at.
A prime example is Open Transport, which is a higher performance (at least today), more modern, and more extensible networking architecture than BSD networking. I've heard various reasons for the insistance on BSD networking, but regardless, I think the better networking architecture will be on Mac OS 8 for the foreseeable future.
Another example is the Core Foundation. Rather than having functions that either return error codes consistently or consistently throw exceptions, the Core Foundation does neither. This doesn't render it totally useless, but it also doesn't encourage developers to adopt it. Many people are more comfortable with STL (the Standard Template Library) now, since it's a standard part of the C++ language. This is definitely an area where I expect things to change as Apple gets more feedback from developers.
Finally, the Keychain folks, even though they're developing for Sonata, seem to have been infected by this NIH syndrome. There's a very good encryption solution out there today in PGP, but they seem to have no provisions at all for using it. This is probably due at least in part to the incredibly bogus US encryption laws, but it sure seems like the Apple folks could be doing more. - Overall comments:
I left the conference with a good feeling. This has been tempered somewhat with time and more thought, but I think Apple's still mostly on the right track. However, I don't see any compelling reason to program for Mac OS X today. I may take a few smaller applications and carbonize (or carbonate, as one presenter spoke it) them to see what's involved, but as a consultant, I don't have any applications so large that I need to start updating them today.
The real make or break for Mac OS X is going to be large application support. Are the applications I use every day going to be available on Mac OS X? Are the applications my customers use going to be available on Mac OS X? I think they will be -- eventually. I don't think I need to worry about OS X today, but since there's plenty of work to do on Mac OS 8, that's fine with me.