Now ask anyone (well, almost anyone) who's coded Cocoa apps and they'll tell you it's lovely. Shoot, Apple's so proud of the frameworks they provide for devs, they even touted a new one, Core Animation, as one of the 10 things coming in Leopard. But we're still living a dual-existence (triple or quadruple or more, if you get technical) in that you have Cocoa apps, and you have the non-Cocoa apps. Perhaps you know about Java, which is what Limewire uses. Or X11's ability to run apps like GIMP. Both of those have their quirks. Java apps can be all over the place, and X11 doesn't integrate the UI of OSX, among other issues. Carbon is a mix of old-skool API's (implemented in good ol' C if I recall), and permeates Mac apps like Office and Photoshop, where a teardown/rebuild would be too unwieldy. There's also the fact that key apps like Finder and QuickTime are Carbon enough to still have some legacy code from way back when, which might account for some of their quirks too... No holy wars about Cocoa vs. Carbon, OK? I'm with David Weiss on this one. So you have Cocoa, Carbon and everything else.
Getting granular for a moment, look at a tale of two browsers: Safari vs. Firefox. Safari is a Cocoa app, and it is tightly integrated with OS X tools. It maintains the ability to look up words in the Dictionary app with a right-click, and access the OS X Keychain. Firefox is not a (full) Cocoa app, and you can't niftily use a keyboard shortcut to look up a word, nor will it store passwords in Keychain. I've learned to use this "wall" to my advantage. Since the passwords are stored differently, I can automatically log in to systems (like gmail) using two accounts simultaneously. I use my business gmail on one browser, and personal on the other. Unfortunately, you're limited to 3, as all Firefox-based browsers will share their version of Keychain, and all Webkit-derived browsers use Keychain. I say three, because Opera stands alone (and doesn't always play nice with Gmail). There's the conundrum: to the average user, they don't care, but when little non-Cocoa quirks appear, they scratch their heads and wonder why the Mac doesn't just "do stuff" one standard way.
Keep reading for my take on shareware, freeware, and malware in OS X...
I am continually amazed at the amount of shareware and freeware available for Macs. Of course, Apple's developer-friendly (arguable, I understand) environment helps. Used to be, you made an Apple app, you were just kinda slugging it out in space. Let's face it, "Classic" might mean pre-OSX to me, but to a real estate agent, "classic" just means old and worn-out. Since OS 7 the Mac environment got more complicated, slow, wacky and isolated. Like Ted Kaczynski.
What a difference a decade makes. Some folks are making a go of it with Mac shareware. For one thing, niche apps that merely annoy a major publisher -- like Adobe -- are readily available. Transmit is a good example. Panic itself is a poster boy for Mac development anyway, but Transmit is how FTP should work on any platform. But an FTP program from Adobe? Can you imagine? It'd need 3 updater/helper apps, an IRC client, and a WYSIWYG coffee mug designer app and Acrobat Reader to be installed before you could run the thing. Maybe it's the OpenDoc fan in me, but I love these little "indie" apps.
Delicious Monster is another good example. Here's a company run largely in a virtual environment, utilizing Apple dev tools and tech to create this one really cool app: Delicious Library. This is an app so good people repeatedly trot it out to impress their Windows brethren. Same with Comic Life -- so cool it comes preinstalled! And these are apps you find only on the Mac -- which is quite a turnaround from 1997. These are also increasingly Cocoa apps, which makes sense, as they tap those cool Cocoa frameworks...Shoot, Yojimbo exists and works so well precisely because Apple put in some great frameworks (Core Data anyone?)... One might say it is easier to make great apps on the Mac.
On the PC, it's easier to just make an application. Lower the bar in that way also increases the number of dingbats making those "easy" apps. I've programmed Visual Basic. It's way too easy. I say that only half-joking, because VB is fun to play with. You can write some really ugly, annoying apps in VB too. But again, that's probably where you find a lot of the dregs of coding -- never mind the crummy game engines available for PCs. That's a whole other post...
And freeware? Here's where the Mac shows some clear edge too. I think Mac freeware tends to be a little less atrocious. Sure, you have stellar examples as Adium or Journalr. Keep in mind much of what you see in Mac freeware stems from those APIs Apple crams into OS X. Journalr can tie into the video or audio because there are pipes for that. There's .Mac sync for those who care. Leopard promises even more, like total access to iCal's data store, which simplifies all sorts of time management issues. GTD fans rejoice!
I'm not a total Apple apologist. Games, utilities and freeware are much more plentiful on PCs. There is certainly a robust developer community, and MS has gone to great pains to make apps backwards-compatible. The upside is folks who upgrade to XP from Win95 have had some success getting those old apps to run. So there is TONS of software on Windows. There's lots of malware too, with many application websites emblazoned with "100% Malware-free" because it's almost impossible to separate the wheat from the chaff. The funny thing is, if, like most Mac users, you just blaze through the installer, you could still easily put something malicious on your machine. You might not even think twice about typing in your password, not if you downloaded it yourself! But so far there have only been a few examples of this happening. Not the few thousand you see elsewhere...
Still, bad Mac apps stick out. Sometimes the icon just isn't right. Too glossy? Not glossy enough? Or, gasp, no transparency? Sometimes the UI is cumbersome and complicated, although I've seen too simple on a Mac before. Worst offenders go to apps who repeatedly crash or lock up themselves or, rare though it may be, the system itself. For example: I really wanted to try Multidash to manage my widgets. I often undock from a larger monitor, and would love an easier way to swap out my 15" screen with my 2-screen setup. Since I'm ahead of Apple on the "need" curve here (really, did we need another release to wait for this?), I gave Multidash a try. As documented, it would eventually hammer the processors. It also lost settings and eventually wonked up the video output (which was a neat trick). So iI trashed it. Hey, I understand it was a beta, and a darn clever one. It's sad when commercial outfits like Adobe screw it up though, isn't it? I understand porting Photoshop is a chore, so I forgive this (honestly, I do). But making Acrobat reader such a piece of... well, my beef is that your casual computer user will think PDFs need to use Acrobat. They'll download and install it. Guess what? It stinks. Then they blame the Mac. "It's not as fast as my PC." Oh really? Try saving that web page as a PDF, we'll see who finishes first.
Unfortunately, to some Mac users, even the slightest imperfections can incur our wrath. As a result, a number of developers try to improve the Mac apps themselves. Multidash was one example, and Chax is another. Tabs are coming in Leopard, which kills one function of Chax. Widgets made the Konfabulator crowd mad, and who knows, maybe Safari will finally ask me if I really want to close the 32 tabs I spent hours researching before I accidentally close the one about the cat on YouTube. Developers continue to slog it out though, making more cool stuff and innovating Apple's own admittedly excellent work. And yet I can only recall one app fro Windows that'll let me re-arrange the items in the taskbar... I typically avoid a lot of haxies though, because Apple's updates tend to break those. One of the reasons Apple doesn't really want you to use certain Mac-enhancing apps is the user experience. If you become addicted to Inquisitor, and then move to a different machine where it's not installed, all of a sudden you have to change your routine. This isn't always a big deal, but try cutting off (or crashing) Quicksilver -- sorely missed within moments. Granted, I can hardly go back to using pre-2-finger scrolling trackpads, and that's an Apple upgrade.
The benefit of Mac fandom, and in this case, Cocoa fandom, is a better breed of software tools. While arguable, I'd say apps in general are slicker, cooler and easier-to-use on Macs. It's been a long, strange trip for Apple developers though. I remember using HLINE and VLINE to program crummy little blobs on my Apple ][, and recoiling in horror at the hex codes to make "real" games work. Now you can make a platformer with Photoshop! Add in decent Java support, X11, the UNIX underpinnings, and some killer dev tools (free with every machine, I might add), and what's not to love about developing for Macs? As the hardware gets better, Apple will no doubt continue to push more powerful frameworks into Cocoa, which translates into yet more freakin' awesome apps for the rest of us. I raise a mug of fancy hot cocoa to the developers of Mac apps everywhere -- and thanks for all the code!