The iMac came this week, and I've spent quite a bit of time playing with it. It's now landed in Alan's playroom, so at least I won't be tempted by it during the day.
Overall, they've done a great job. Alan (who's five and a half) is able to use the machine fairly fluently. Not only that, but the machine more or less worked out of the box. These are pretty strenuous tests, ones that a commodity PC running any version of Linux would fail pretty badly.
Underneath the hood, it's a pretty good Unix. I was able to compile Ghostscript, ircii, and a few other things with absolutely no difficulty. About the only thing I really miss so far is strace, and that's possibly because I just haven't found the BSD variant yet.
The expectations around Macs are just so different than what I'm used to. Consider this Mac user who feels that one kernel panic in a month is cause for "glowing pride" about stability. I also got a kernel panic doing userish things, but probably putting the machine under more stress than most users (I tend to do that). To me, this kind of stability record means that it needs some serious work. I wish the Darwin team well on this.
Raw hardware price/performance is another area where Mac and PC hardware diverge. I got the least expensive iMac (at $799), and it is obviously made with some of the cheapest parts possible. For one, the 500MHz G3 CPU is roughly equivalent to 600MHz in the x86 world. Try buying a new x86 machine that slow - it'll be a challenge (for contrast, the $599 Dell Dimension 2100 has a 1.1 Celeron, and twice as much RAM, to boot). There's also 64M of PC100 RAM in there, and a 20G hard drive. These aren't insane choices for a low-end system, but even their "high-end" dual 800MHz G4 clocks in with generic PC133 memory. Apple charges a pretty penny for this trailing-edge technology, as well. iMac RAM upgrades run $0.78/MB, while Crucial charges about $0.11/MB. PriceWatch has PC100 memory for $0.045/MB (and PC133 for the same price!), but to me the chance of compatibility or stability problems just wasn't worth it.
Of course, Apple users aren't buying megahertz and simm's, they're buying a system that just works. For the most part, I think they're getting their money's worth.
Diehard Mac enthusiasts will have you believe that Apple hardware comes with some mystical "Quality" missing in x86-based PC's, but I tend to doubt it. I've found a few minor irritants with the machine that you'd think Apple would have fixed. The most annoying to me is the fact the keyboard generates extra press events when you type with "rollover". The way I type "cd ", it comes out as "cdd ". The $11 Mitsumi keyboard that came with my cheapo dual 400MHz Celeron doesn't have any defects like this, and it's quieter and feels better to my fingers.
You get the development environment for free. That's cool. For native OS X applications, you want to use ProjectBuilder, which is a decent IDE based on Jam/MR for the actual build engine. The compiler is GCC, and the debugger is GDB, but the IDE does a pretty good job abstracting those away. You write your apps in Objective-C, on top of the Cocoa framework, which is all actually quite similar to NextStep. There's been a GNUstep project for a while, attempting to clone this environment, and they're no doubt hard at work on the OS X enhancements as well.
There's also Carbon, which is primarily for porting older Mac apps. That's much less interesting to the free software community. Lastly, there's Classic, which boots the actual MacOS 9 operating system in a virtual machine. It works, I suppose, but it feels clunky (even by Linux standards), and it's clear that its main function is to go away as OS X native applications become available.
I like the "app bundle" concept, in which applications are directories containing an executable, localization files, and other resources. I think it's easier for users than the Unix tradition of binaries in /usr/bin/appname, data under /usr/share/appname/, etc. Further, they've got libraries in bundles the same way (called "frameworks"), so your library and header files are together. Even better, it's pretty easy to create a bundle. We'll probably put make targets into the Ghostscript build to make it into an OS X framework.
OS X is visually quite appealing. With all the antialiasing and transparency, it feels "softer" than a comparable Linux, or even Win2k install. I also note that the aa font rendering seems to have changed radically between OS9 and OS X. The former is your standard algorithm of applying the TrueType hints intended for non-aa rendering to the outline, then rendering at 4x and subsampling. In MSIE5 (which is the default browser), a lot of glyphs end up not looking very good. The "2" in Times Roman is a classic case.
In OS X, the hinting is a lot more subtle, so it's quite a bit closer to a non-hinted aa render. It's a tough tradeoff. You get much more accurate rendering of the glyph shapes, but at the cost of lower edge contrast. I get the feeling there's still some hinting in there, but haven't investigated carefully yet. I'll post some screenshots when I do.
You'd think that an overall softer render would have been a good opportunity to crank up the resolution, but no. In fact, the default is 800x600. This is roughly the res I'd like to see on a handheld, not a desktop. Fortunately, it's easy enough to crank it up to 1024x768. Part of this, no doubt, is Apple's penchant for cheap components. While the video tube doesn't suck, it's only 15 inches, it's a plain shadow mask (as opposed to Trinitron), and it has a fairly high "black" reflectance.
I'm confused about whether the underlying software will support a move to higher resolutions or not. All the user interface guidelines are written in terms of pixels, and the UI builder tool (InterfaceBuilder) places components in absolute pixels, rather than the logical layout of Gtk+ and others. This will make it hard to change the resolution, but on the other hand, it might be possible to just apply a scale factor in the rendering engine. I sense some difficulty for Apple here in the future, as non-low-res displays become more common.
I encourage people in the free software community to take a careful look at OS X. They've largely succeeded in creating a usable desktop on top of Unix, which is a goal we're still striving for. They've done a lot of things right, and very few hopelessly wrong (that I can see), even though it's clear that they have a significant journey ahead of them to make the user experience totally seamless. It's worth learning from their experience.
It's cool to see both forrest and mbp interested in Ghostscript. I'm really glad to be working on this project - a year ago, it may not have seemed all that sexy compared with other stuff that was happening, but today stability and maturity sound pretty good to me. There are cool things happening in Ghostscript development too. A lot of what interests me will be useful in the long haul, such as high quality font rendering. I'd like it if the Ghostscript graphics library had roughly the same relationship to the dream free desktop environment of the future as Quartz does to OS X.