Rhapsody and blues
I never meant to be so bad to you.
By now you have heard the news: Photoshop CS4 will not be 64-bit on the Mac, but will be 64-bit on Windows. I discussed the dawn of the 64-bit age and the end of Carbon in my Leopard review, concluding the section with this warning.
In the end, Apple made the hard choice instead of the easy one. I think it will pay off, though the short-term consequences could be pretty grim. After all, just look at how long it’s tak[en] to get an Intel-native version of Microsoft Office for the Mac. Should we expect a 64-bit Cocoa version in, say, 2012? And I have no idea what Adobe’s going to do about 64-bit versions of its products. That’s many millions of lines of Carbon code between those two companies alone. We may be in for a rough patch, so buckle up.
That lack of a 64-bit Photoshop on the Mac is the first big bump. I wrote that “I have no idea what Adobe’s going to do.” It turns out that they chose the obvious answer: port to Cocoa. The consequences are just as obvious: delay.
This is going to be a huge job for Adobe, and is likely the most complex and difficult Cocoa port ever attempted. I can imagine it being surpassed only by a hypothetical Cocoa port of Microsoft Office. But, of course, Office has no pressing need to be 64-bit; Photoshop does.
So now we wait. The speed advantage of 64-bit code on Intel’s x86_64 processors makes this wait particularly galling. The lack of a 64-bit Photoshop on the Mac doesn’t just affect those who work with huge files. It represents a blanket 8-12% speed hit for Mac users when compared with Windows users running Photoshop on the same hardware.
Given these unfortunate facts, some assignment of blame is inevitable. Here are the two poles of this world of hurt:
Blame Apple: If Apple had not discontinued the 64-bit port of Carbon, Adobe could have shipped Photoshop CS4 as a 64-bit Mac OS X application as planned. At WWDC 2006, there were many sessions about developing 64-bit Carbon applications. At WWDC 2007, 64-bit Carbon was canceled. Adobe found this out the same time everyone else did, at WWDC. By canceling 64-bit Carbon so suddenly, Apple screwed Adobe.
Blame Adobe: The death of Carbon was inevitable. Adobe should have seen it coming and planned accordingly. It’s been clear for years that Cocoa offers many advantages to Mac application developers. Adobe should have started its Cocoa port of Photoshop years ago. By willfully ignoring Cocoa for so long, Adobe screwed Apple.
As usual, there’s some truth to both points of view. But the key to understanding this situation—and therefore to knowing how best to apportion blame—is to look to the past.
The end of the innocence
The defining event of the Jobs 2.0 era relationship between Apple and Adobe was the creation and subsequent scuttling of the Rhapsody project. Rhapsody was Apple’s original plan for a new operating system based on the recently purchased NeXT technology.
Rhapsody’s proposition for Mac software developers was simple: write your applications using these NeXT-derived APIs. These are the APIs that eventually became Cocoa, and there was much to recommend them even back then. But for Mac developers with substantial existing code bases, the proposition was more aptly phrased, "rewrite your applications using these NeXT-derived APIs."
It was a hard sell, to be sure. The sweetener that Apple hoped would push the deal over the top was that applications written using this API could also be compiled to run on Windows. And so the complete pitch to the Adobes and Microsofts of the world was this: rewrite your huge existing applications using these APIs and end up with a single code base for both Mac and Windows. Alternately, just rewrite the Mac versions of your applications using these new APIs.
The answer from the Mac development community was, essentially, “Yeah, uh, no thanks.” Remember, this is the Apple of the late 1990s, its power and influence at an all-time low. It’s hard to imagine a company like Adobe or (even more laughably) Microsoft betting the future of its flagship software products on 1997-Apple’s ability to ship and support a “new” API (its NeXT origins and history counting for little among this crowd). This is after years and years of Apple demonstrating a complete inability to ship a modern replacement for its aging operating system. As for rewriting just their Mac applications using a new API, even that represented a tremendous investment of time and resources for a platform that could very well be on its way out. So yeah, no thanks, Apple. We’ll take a pass.
And so Rhapsody was shelved, and Apple’s operating system strategy was revised yet again—blessedly, for the last time. There’d be no Mac/Windows cross-platform API, but there would be a new compatibility API that would let existing Mac applications be recompiled to run on the new OS with only minor modifications (for some definitions of “minor”). Thus, Mac OS X was born, and with it, Carbon.
But by then, there was no going back for either party. All their intentions had been laid bare. On the one hand you had Apple, née NeXT, which had revealed its inner-most fantasies for the future of Mac development, an inflated idea of its own platform’s importance, and a startling disregard for the problems of third-party developers. And on the other, you had the big third-party developers that were finally forced to put politeness, friendship, and (in some cases) emotional attachment aside and tell some hard truths to Apple.
This is the defining moment. This is the schism. This is the when old friends were forced to realize how far they’d drifted apart, and what they really thought of each other. In the case of Adobe, it was particularly painful. Apple was used to playing hardball with Microsoft, but Adobe was always a friend. Apple and Adobe grew up together, and owe much of their success—indeed, perhaps their entire existences—to each other.
Carbon and the eventual success of Mac OS X helped move things forward. Everyone tried to forgive and forget. But it’s all still there, barely under the surface: the inner children of Adobe and Apple still sulking, arms crossed, in their respective corners.
This tension is evident in all dealings between Apple and Adobe. It’s the thing left unsaid as minor disagreements take on an extra edge of animosity. Imagine thought bubbles below all the actual spoken text in a corporate comic strip. Apple: “You didn’t want my new API. I was in trouble. I needed your help and you rejected me.” Adobe: “You wanted me to risk everything for you. Though I wanted to help, I just couldn’t afford to do it, and now you have the nerve to be mad about it. I give and I give but you always want more.”
And so we come back to the cancellation of 64-bit Carbon and its consequences for Adobe and Apple. I said earlier that Apple made the hard choice, but also the correct one. Long-term, maintenance of two full-featured GUI APIs for Mac OS X is an untenable situation. Carbon is, was, and always has been a transitional API, though of course it could not be presented as such for political reasons in the wake of the Rhapsody misfire.
The choice was hard not just because it hurts Adobe and Microsoft, but also because it hurts Apple itself. Apple has its own extremely large Carbon applications, at least one of which is aching to be 64-bit: Final Cut Pro.
If I’m being cynical, however, I can’t help but notice the playing field is not exactly level. When I suggested to some people at Adobe that Apple could perhaps continue its partially complete work on 64-bit Carbon and bury the resulting code inside (for example) the private ProKit.framework shared by Final Cut Pro and other Apple applications, I’m pretty sure I could hear several sets of teeth grinding. I think this scenario is highly unlikely, but the fact that it’s even technically possible highlights the inherent inequities of the relationship—and once again pokes a stick into some old wounds.
For my part, I’m like the mutual friend that just wishes these two crazy kids could work things out. As I’ve said, I think Apple’s decision to sunset Carbon was the right one. I’m also sorely disappointed that Adobe didn’t start its Cocoa porting efforts until forced to by external events. But does this mean that I blame Adobe for this decision? Put another way, though it may not have done what I wanted, did Adobe do what’s best for Adobe?
My initial instinct is to say no. It certainly seems like Adobe would have been better served to start down the Cocoa path years ago, if only as a skunkworks project running in the background. Again, the corporate psychoanalytical angle inevitably resurfaces. Here’s what I would have said to Adobe circa 2003: “Dammit, Adobe, I know you’re still sore about Apple’s attempt to push those NeXT APIs down your throat, and I know you’re annoyed by Apple’s constant passive-aggressive behavior since then, but you’re hurting your Mac customers by willfully ignoring the API that Apple so clearly still wants you to use. If you’re sick of all the bullshit, then just get off the platform. But if you intend to stay, it’s time to get on the Cocoa train. Someday, you may have no choice. Apple’s a lot more powerful now than it was in 1997, especially with all this iPod stuff starting to take off. Swallow your pride and at least start looking into this Cocoa thing.”
But there would have been risks to that approach as well. To make any meaningful progress on a Cocoa port, significant resources would have to be shifted to the project. Cocoa has also evolved a lot in the past few years, which means there would have been a baseline cost for Adobe just to stay above water.
Now let’s look at the risks of doing nothing until forced. We’ve pretty much had the worst case scenario play out for Adobe. All signals were pointing to a smooth 64-bit upgrade path for Carbon Photoshop until a sudden revelation at WWDC 2007 dashed all plans and a Cocoa port had to be started immediately. That means no 64-bit Photoshop CS4 for the Mac, and no guarantee that the 64-bit Cocoa port will be ready in time for CS5. The cost to Mac users is clear, but what’s the cost to Adobe? Will Mac users refuse to buy CS4 because it’s not 64-bit? If so, what will they buy instead? CS4 for Windows? Nothing at all?
Try as I might, I cannot convince myself that the sales lost due to the decision to keep Photoshop on Carbon until forced to do otherwise even comes close to outweighing the benefits to Adobe of this approach. During all the years it wasn’t porting to Cocoa, Adobe had more time, money, and resources for all its other projects. And though it’s not currently able to deliver a 64-bit Photoshop to Mac customers, I believe Adobe will sell a copy of either the Mac 32-bit version or the Windows 64-bit version to nearly all the people who would have actually purchased a 64-bit version of CS4 for the Mac. The lack of a serious Photoshop competitor is ultimately what saves Adobe, and what makes its decision financially and strategically sound, even as it annoys and disappoints many of its customers.
Speculative fiction / friends forever(?)
This leads nicely to the final piece of the puzzle. Imagine if, around 2003, Apple had embarked on a secret project to build a serious Photoshop competitor using Cocoa. Further imagine that this competitor was released, in 64-bit-capable form, just as Adobe was forced to announce to the world that its Carbon-only Photoshop strategy had finally reached its limit. Even if Apple’s Photoshop-killer version 1.0 was a dog, it’d soak up a significant number of disgruntled Mac Photoshop customers, perhaps enough to outweigh the historic benefits Adobe reaped by delaying its Cocoa efforts.
To the best of my knowledge, no such project exists at Apple. Though Apple’s relations with Adobe told it that Photoshop on the Mac should not be taken for granted, and that Adobe was “not enthusiastic” (ahem) about adopting Apple’s favorite API, no plan was made to supplant Photoshop with an Apple-controlled alternative. (Premiere, on the other hand…)
In the end, both Apple and Adobe chose not to mitigate their risks with expensive long-term projects. Adobe believed its investment in Carbon would be protected. Just as Apple created Carbon in the first place to help Adobe, so too would it stand by its friend by bringing the framework into the 64-bit era. And Apple, for its part, continued to believe that its gentle persuasion would eventually bring Adobe around to the Cocoa side of the fence. For all the bad blood and unfortunate consequences, it’s somewhat heartening to realize that the two companies' faith in each other so thoroughly informed their decisions.
(Of course, if Apple does turn out to have a Photoshop killer in the works, it’ll be clear who really had more faith in whom.)
Sizing up the competition
The Cocoa port of Photoshop has disaster written all over it. It’s tempting to count Adobe out at this point, but that’d be a big mistake. Recall when Apple released Aperture 1.0 to, er, less than universal praise. My reaction was to boldly predict that “Aperture will go on to become an extremely successful product, perhaps even the dominant application for professional photographers in the coming years.” My reasoning was straightforward: Apple had proven its ability to create successful professional applications even in markets with strong existing competitors, and Aperture’s market-defining design meant that it had almost no direct competition.
To come at it from another angle, I thought Apple had a big head start with Aperture, and I simply didn’t believe that Adobe, or anyone else could catch it. I was wrong. Lightroom came seemingly from nowhere and capitalized on all of Apple’s Aperture 1.0 mistakes. Lightroom 1.0 was a Cocoa application, and a damned good one. Apple bounced back with Aperture 2.0, but just as quickly Adobe has responded with Lightroom 2.0. And oh, by the way, unlike Aperture, Lightroom 2.0 is 64-bit. The new sound I hear is Apple gulping.
I see no signs of the Rhapsody schism being fully mended any time soon. Apple and Adobe will continue to eye each other warily for many years to come, the battle lines being drawn ever more clearly. If you need a reason to be optimistic about Adobe’s Cocoa port of Photoshop, look no further than Lightroom. If you’d like to wallow in depression, consider the ever-decreasing areas of shared interest between Apple and Adobe. In particular, ponder Adobe’s newfound desire to define its own platforms, first with Flash and now with AIR which is starting to quietly make its way into Adobe’s flagship desktop applications. For all the turmoil over Photoshop and Cocoa, the real storm may be yet to come.
This article originally appeared at Ars Technica. It is reproduced here with permission.