By John Gruber
Keyboard Maestro: The most powerful Mac productivity and automation app available.
A few various observations and comments regarding Adobe’s announcement that Photoshop CS4 will be available in a 64-bit version for Windows, but will only be 32-bit for Mac OS X.
The first is that this is not, in and of itself, that big a deal, at least for the vast majority of Photoshop users. To a non-programmer, “64-bit” perhaps sounds twice as fast as “32-bit”, but that’s not how it works or what it means. According to Adobe’s John Nack, in most cases, for the vast majority of real-world files, Photoshop in 64-bit mode will be “around 8–12 percent” faster. But in cases involving massive data sets — those requiring more than 4 GB of memory (the 32-bit limit) — the speedup can be an entire order of magnitude:
For example, opening a 3.75 gigapixel image on a 4-core machine with 32GB RAM is about 10× faster.
Keep in mind that a Canon 1Ds Mark III — which sells at Amazon for $8,000 — generates 21 megapixel images. 3.75 gigapixels is 3,750 megapixels. You probably don’t have images like that.
It’s also the case that unlike Leopard, which is a single OS that can simultaneously run both 32- and 64-bit apps natively, Windows Vista comes in wholly separate 32- and 64-bit versions. And as far as I can tell, the vast majority of Windows users use the 32-bit version. (If anyone can find market share information regarding 64-bit Vista, please let me know.)
But faster is faster, and even a 10 percent gain is important to serious Photoshop users. The uncomfortable truth is that the fastest way to run Photoshop CS4 on a Mac will be to run it under Windows. It’ll be particularly interesting to see benchmarks comparing 64-bit Photoshop on Mac OS X using VMware against the native 32-bit Mac version. (Parallels doesn’t support 64-bit OSes.)
The big deal is CS5, the next-next version of Photoshop. The only supported 64-bit APIs (for UI code) on Mac OS X are Cocoa, and Adobe wants Photoshop to run in 64-bit mode on the Mac, so they’re rewriting the app in Cocoa. That’s huge. Nack writes:
No one has ever ported an application the size of Photoshop from Carbon to Cocoa (as I mentioned earlier, after 9 years as an Apple product Final Cut Pro remains Carbon-based), so we’re dealing with unknown territory.
I don’t think that’s an exaggeration. I don’t think Adobe can flat-out promise that CS5 is going to be Cocoa (or 64-bit) because they don’t know how long it’s going to take. The cross-platform angle is also interesting. Microsoft, for example, develops the Mac versions of its Office apps from an entirely separate application code base than the Windows ones. They ship on different schedules, have entirely separate engineering teams, and have very different UIs. Adobe, on the other hand, develops its Creative Suite apps from a shared code base. New versions ship simultaneously for both Mac and Windows, and they have very similar, if not nearly identical, UIs (for better or for worse).
Carbon and Cocoa are not competing application frameworks. Carbon is conceptually a lower-level technology than Cocoa. Cocoa is an application framework, but Carbon is a set of APIs that developers use to write their own application frameworks. What Adobe has done with the CS suite is develop a cross-platform C++ framework of its own. There’s a reason why most cross-platform apps use Carbon.
In Adobe’s favor, though, is Lightroom — existence proof that a high-quality cross-platform Mac/Windows application can use Cocoa for the Mac side.
One aspect of the saga that Nack sidesteps — perhaps for political reasons, or perhaps because he’s gracious — is the degree to which Apple pulled the rug out from under Adobe’s feet at WWDC 2007 last June. When Leopard was first announced at WWDC 2006 nine months prior, it included full 64-bit support for both Carbon and Cocoa.
64-bit Carbon wasn’t promised to be coming “sometime”, like with, say, resolution independence. It was promised for 10.5.0. And it existed — developer seeds of Leopard up through WWDC 2007 had in-progress 64-bit Carbon libraries, and Adobe engineers were developing against them. Several sources1 have confirmed to me that Adobe found out that Apple was dropping support for 64-bit Carbon at the same time everyone else outside Apple did: on the first day of WWDC 2007.
If Apple had shipped Leopard with the 64-bit Carbon support promised at WWDC 2006, Photoshop CS4 would run in 64-bit mode on the Mac.
The unfortunate coincidence is that WWDC 2006 — when 64-bit Carbon was announced — was right around the time when Adobe was hitting the home stretch on CS3 and planning for CS4. (Photoshop CS4 is currently in beta testing, and so the CS4 suite is probably slated to ship soon-ish.) If Apple had announced then that the only 64-bit path was going to be Cocoa, would it have made a difference? It probably wouldn’t have made a difference for CS4, given that it was only nine months, but it would have saved Adobe nine months of wasted time.
My point here isn’t to cast blame on Apple, though. My take is that both Apple and Adobe made reasonable and honest decisions each step of the way. I think Apple meant what they announced, and in August 2006 fully intended to deliver 64-bit Carbon support in 10.5.0. But the situation and Apple’s priorities changed when Leopard fell so far behind schedule (or, perhaps better put, when it became clear just how far behind schedule Leopard had been all along). When Apple announced that Leopard would miss its original June 2007 ship date, they pushed it back four months to “October”, and as it turned out they barely made that. When facts change, plans change.
One argument against Adobe is that they somehow should have known better and began a Cocoa port sooner. But the truth is that this 64-bit issue is the first really compelling reason for a developer like Adobe to port an existing large Carbon app to Cocoa. What users want are new and improved features; a port from Carbon to Cocoa is going to require a tremendous amount of effort just to re-implement what Photoshop already does.2
Adobe perhaps also assumed — and reasonably so — that if the day were ever going to come that they’d be forced to port Photoshop to Cocoa, that Apple would give them enough lead time to plan for it far in advance. Remember, too, that Apple itself still has major Carbon applications. Final Cut, for example, is a prime example of the sort of memory-intensive media processing app (like Photoshop) that should benefit greatly from 64-bit support. And iTunes is a perfect example of the sort of cross-platform Mac/Windows codebase that’s a more natural fit with Carbon than Cocoa.
So I think it’s hard to argue that Adobe should have somehow known the end was near for Carbon when even Apple didn’t know.
Sources who, as they say, requested anonymity on the grounds that they enjoy their jobs. ↩︎
It’s certainly not the case that every line of code in Photoshop needs to be re-written. Clearly, many of Photoshop’s internal algorithms reside in cross-platform libraries that don’t involve the GUI. But there’s an awful lot of code that does, and it’s not all in one place. ↩︎