Tangent of One
Apple does some spectacularly great moves (iTunes Music Store, iPod, iMac) and bungles a whole mess of stuff (Mac OS X, iPhoto, iMovie 3) over and over again.
A developer making Mac software is today presented with a very large mish-mash of technologies in Mac OS X. You have pure UNIX junk deep down in OS X. You got higher level CoreFoundation and Carbon plus the whole raft of QuickTime APIs, OpenGL (you can make a complete menubar/window double-clickable app with OpenGL) and Quartz in addition to QuickDraw legacy graphics stuff.
Above all that you got Cocoa which largely does its own thing building on top of stuff that is quite capable of making a fully functional app in their own right (Carbon/CoreFoundation/QuickTime).
Apple has consistently pushed hard on Cocoa and given it a lot of the gee-whiz featurs first and foremost (Drawers, Toolbars, easy Alpha transparency). Sure Cocoa is a good framework, but Cocoa is not the OS like Carbon and Quartz are (the windowserver is not made with Cocoa). PowerPlant or MacApp (Photoshop was built with MacApp) is a good framework, but its not the Mac OS.
A prime example of what Apple did wrong with Mac OS X is found in the Finder. From every angle the Mac OS X Finder is crap. Not because its built with Carbon instead of Cocoa (iCal, iPhoto, iMovie 3 all Cocoa all have serious performance and stability issues), but because in creating the "new" Finder many features and UI conventions were completely thrown out for no valid reason (the code worked fine in OS 9, why can't it also work on OS X with updates?). What they added was half-baked UI junk that would make any interface designer puke.
The Finder uses a totally custom Column View API that has some large performance and usability issues on older (pre Jaguar) Mac OS X versions. Of course the public API for Column View is severely limited - it is basically view only with no in-place editing and can only initiate drag operations (not receive them into particular items like the Finder's Column View can). And forget about alternating colors in List View using Carbon (except for iTunes, Apple's baby, natch).
This is yet another classic example of Apple doing what's best for Apple with private/protected features and then screwing anyone who would dare use anything other than Cocoa. Sounds like a certain software company north of Apple in a state called Washington?
I have also seen evidence of Apple deliberately removing info from programming resources that third-parties could use to make a Finder replacement complete with a desktop layer window, in ADDITION to the severely limited Column View that is only useful for the pathetic Navigation Services windows.
Oh boy Navigation Services. What was wrong with having menu-buttons for recently used items and favorites and a list view? How is one ever-changing menu and column view with botched preview any better? And why does a Mac have a frickin PATH text field? Can anyone honestly remember 5 layers of folder names on one of the many attached disks on their system which come under /Volumes not / aka root?.
And how does hiding the .app extension at all times help the user when every other file type can show/hide its extension? Is that app a bundle or what? I thought bundled Apps were next to Godliness and forked-apps were the Devil Incarnate (of course when you have flat file systems all over the place and the need to accommodate software from the 1970s that works by typing various combinations of letters and symbols into a text window thats what you end up with by default)?
Another case of Apple screwing users and developers: Internet Config. Created by a legendary Apple guy (the eskimo!) and finally adopted into the Mac OS proper in the Mac OS 8.x period. In Mac OS X, where file type extension mapping is all but MANDARTORY this huge repository of type/extension mapping is IGNORED in favor of a closed, proprietary system called Launch Services. An API that only Apple engineers fully understand instead of the open and widely used APIs of Internet Config.
Apple didn't even bother to make an interface for Internet Config beyond simple internet app preferences, and then promptly migrated to Launch Services for all of these settings too leaving a deprecated but totally useful and robust system in place to confuse (non-Cocoa) developers.
Apple has the big shots on board Mac OS X now, locked into the Mach-slOw executable format and related dev tools. Users are accepting file type extensions that severely limit file management and a Finder that 3 years later still can't match the Mac OS 9 Finder. Carbon lags behind Cocoa in feature matching by several major point releases and is now barely used by any Apple software anymore (FCP, iTunes and whatever they got from Emagic and Shake?). Be prepared for a mock funeral for Carbon as an app-level technology. Watch Carbon move down to a dirty, grungy midle-ware that Apple reluctantly uses to enhance Cocoa behind the scenes (you think Cocoa can do QuickTime or Text to Speech without Carbon?)
Why oh why do I feel like a survivor of the Super Flu in The Stand looking around and wondering what the hell happened to the world. Yes the Mac and the Mac OS wasn't perfect before Job's return, but it could have been fixed without throwing everything that made the Mac a Mac out in favor of NeXTies ideas of what an OS should be/look like/work.
And no, Copland was not meant to be what Mac OS X is. Copland was meant to be a transitional OS to bridge the gaps between the old shared memory space/cooperative multitasking world and the new microkernel multithreaded/multitasking protected memory era without sacrificing EVERYTHING that made the Mac unique and quite usable.
Everyone may be heading to Las Vegas, I am heading to Colorado. Screw this mindless parade of Mac OS X CLI using Cocoa zealots who think anything that came before is ****. Blah.
Maybe SARS will mutate into Super Flu and wipe the earth clean so we can just start over from scratch. Geeze I like the Mac and my iPod, but this whole Mac OS X thing is pushing me away every single day.