Living Photoshop

March 23, 2006

Macintosh and the Intel switch.

By now you have probably figured out that we aren't releasing Universal Binaries of our current application versions.  If you haven't, all you need to know is pretty explicitly spelled out here.

"But, c'mon", I hear people saying, "Steve said it was just a recompile!"  Or, "Back during the PowerPC transition, you guys released a patch!"

Well, this time is different.  And I really wish it weren't.  But let me tell you how...

When that original PowerPC transition was done, Apple did something clever.  Very clever.  The emulator that ran 68k code would recognize when it was calling out to PPC code, and would fiddle with things on the stack using the Universal Procedure calling vector.  A lot of gobbledy gook meaning that a 68k binary could call out to PPC code that could then execute at native speeds.  Well, for those that don't know, Photoshop has a bunch of routines all tucked away to do the real heavy lifting - the bottlenecks.  Most of Photoshop's CPU time is spent in these routines.  Even better, you can replace these routines using a plug-in.  There's the Multiprocessor extension plug-in, which replaces some routines with ones that know how to divide work up among multiple processors.  And some which use the multimedia instruction sets that are available to varying degrees on different processors.  And, in the case of the PPC transition, we could replace them with PPC native versions.  With a plug-in, Photoshop could get a majority of the speed up as if it were a fully native application, but - and it's a key point here - without having to recompile the vast majority of the Photoshop code, along with the resulting testing hit, mounds of debugging, and everything else that would imply.  Most of the gain with a fraction of the cost, it made sense to do a mid-cycle update consisting, essentially, of that plug-in.

Doing that this time around was just not possible for a variety of reasons.  It means is that this time, there's no limited-cost option for getting most of the performance available on the platform for Photoshop in a short amount of time.  In other words, no shortcuts.

That leaves doing the work for real - taking the whole application over into XCode and recompiling as a Universal Binary.  And that's no small task.  You see, as software has matured so have the development environments we've used - Visual Studio and Metrowerks - they've adapted to handle the ever-growing applications using them.  From having projects with large numbers of files that open quickly, to having compact debugging information, to having stable project formats that are text-merge-able in a source control system.  These are things XCode is playing catch-up on.  Now, Apple is doing an amazing job at catching up rapidly, but the truth is we don't yet have a shipping XCode in hand that handles a large application well.  And switching compilers always involves more work than you would think in a codebase of this size.

Now, I'm an engineer, and I'm all for getting products out in front of customers so they can use their machines to their fullest as soon as possible, but there is just no way putting out a Universal Binary of Photoshop CS2 would make any sort of sense.  If you think about switching tool sets, with the resulting huge amount of work for both engineering and quality engineering, if you think about how far past the Photoshop CS2 release we already are, and if you include not having the workstation-class machines ready yet, I think you'd have to agree - far better to focus on making sure Photoshop CS3 is able to absolutely squeeze every ounce of power out of what I'm sure will be pretty spankin' Intel-based towers by that point than to do tons of work moving an old code base to new tools.

-Scott

Posted by Scott Byer at 09:30 AM on March 23, 2006

Comments

Rob — 10:03 AM on March 23, 2006

Thank you for posting this. Using blogs for direct communication between engineers and customers gives us users something real to point to in the face of the endless uninformed speculation on the Web.

Weyert de Boer — 11:04 AM on March 23, 2006

Nice interesting post! No Adobe only should consider a Windows+Mac bundle of the Creative Suite!

Peter Witham — 11:23 AM on March 23, 2006

Thanks for this post. Being a software developer I can understand the problems involved and appreciate the explanation, all things considered a 2007 timeline is pretty quick given the tasks at hand.

Tetra — 05:49 PM on March 23, 2006

Glad to know that I spent $999 for support that consists of, "Durr. We can't be bothered. Give us more money next year and we'll think about it."

Kind of funny that companies with software as complex (if not more so) than CS2 aren't having the same problems. Oops. Thanks for passing the buck to your customers.

Davey — 05:52 PM on March 23, 2006

Thanks for the post :-). It's good to hear exactly what's holding Photoshop back from someone actually working on it!

Cole Camplese — 05:58 PM on March 23, 2006

Great post ... if you don't mind I'll be pointing my students your way. Your direct, open, and honest communication has brought me new insight into why CS2 will be fine on my MacBook Pro -- for now! Thanks for posting.

Steve Kirks — 06:10 PM on March 23, 2006

Very well put and easy to understand. Apple gave developers plenty of warning over the last 5 years about programming practices. When other developers were moving to Xcode, what was Adobe doing?

(Not asked with sarcasm)

Jon H — 07:05 PM on March 23, 2006

Aw, come on Scott, don't you have some old NeXTSTEP code that you could bash into shape for OS X?

(Just kidding, that'd be painful.)

Scott Byer — 07:12 PM on March 23, 2006

Steve,

We evaluated XCode last time around when we needed to move to the Mach-O object file format. Because of the many quirks of having a large, complex, older codebase, the evaluation showed that tackling both the Mach-O conversion and an XCode conversion in one cycle wasn't achievable, and it had to get put off.

-Scott

Scott Byer — 07:18 PM on March 23, 2006

Jon, don't laugh!

I do still have some small NeXTSTEP utilities I wrote for myself hanging around in my home directory. Even if I could get them going again, I don't think I could quite pass them off as a large painting app. :-)

-Scott

Mike — 07:43 PM on March 23, 2006

I thought that a good portion of the speed gains from Rosetta came from the fact that it calls out to the system's native-code libraries? So while the app itself may be interpreted, the system calls run at native speeds.


So it would seem that the ability in question (calling out to a native library) already appears to exist...

Ryan Gardner — 09:22 PM on March 23, 2006

If you send me the code, I'll make the conversion for you. I'm pretty good at converting Metrowerks projects over to XCode.... :P

me — 09:29 PM on March 23, 2006

Give me a break people. Adobe can do whatever they want. As if you're goiing to go use a different product? It's like complaining to Microsoft at this point about MS Office. What other choice to you have when the whole world uses Office? Adobe and Microsoft now run the show and can basically do what they want. So, put off buying that MacBook Pro if you don't like how Photoshop runs on it... That doesn't cost Adobe anything... what's the motivation for them to get an Xcode version of Photoshop released right away? None.

Oliver — 09:35 PM on March 23, 2006

Tetra, like what? Apple Pro software isn't universal yet, Microsoft Office isn't yet. There are quite a few complex applications that are not universal yet probably for these very same reasons. I would assume it is no easy task in converting projects from CodeWarrior to XCode.

Dave — 09:57 PM on March 23, 2006

Thanks for an honest answer to the problem. Sometimes corporations and marketers feel that double speak and hints to the future keep end customers happy but the truth, even when hard to hear, is always the best medicine. While I suspect late 2006 or likely 2007 is the best we can hope for at least I now understand the issue far better.

Thank you.

Joel Day — 09:59 PM on March 23, 2006

Rewrite Photoshop and Illustrator into one application, in Cocoa. Heh.

Nick Hawkins — 09:59 PM on March 23, 2006

This is very helpful to know for those of us who are Photoshop enthusiasts and are thinking about the migration to Intel-based OSX to support our work.

Scott — 10:03 PM on March 23, 2006

Tetra,

Last I checked adobe did not ask Apple to change the architectures. The companys you speak of may were probably not emulating 68k code. If you were a programmer you would understand this. I would rather wait for CS3 then development be put off for months to release a hacked up version full of bugs for Intel macs. When CS2 was released, no one at adobe would have ever thought Apple would change architectures again.

Scott — 10:06 PM on March 23, 2006

Not for nothing, but this sounds like a bit of BS. So many applications are coming out everyday as updated universal binaries. Heck, Apple themselves are coming out with universals of their pro-apps... Of course they have more time to prepare, but still, these are big apps.

I think Adobe's and MS's reasoning for not releasing universal binaries of current apps are twofold:

1) The old binary runs, albeit slowly, on intel hardware. People that are currently running this software probably have machines that they can live with for the next year or so, so the company doesn't see the need to spend the money to update these apps, as their customer base will make their purchasing decisions accordingly.

2) What better reason is there to force a Creative Suite upgrade than only making universals available in the next version only. Common... This is not the first time that Adobe, and other publishers, have forced an upgrade to bring in income.

If you think about it, this puts adobe in a great position. Why offer a free "patch" to bring universal compatibilitiy when they can force all users wanting native speeds to buy an expensive upgrade.

This also forces anyone using the Adobe apps that NEED to upgrade their hardware to also have to update their software.

Lastly, this could quite possibly be a great financial boon for Adobe, as quite a large portion of creative suite users are Mac users, thus forcing that whole population of users to upgrade.

Jesse Donat — 10:07 PM on March 23, 2006

Would it be any easier to port the Windows version to intel mac?

coreen — 10:10 PM on March 23, 2006

This may sound a bit harsh.

So what your saying is that the last transition was the one where you slacked off and gave the customer a second rate set of tools. I am not trying to be mean or anything but it just sounds like you should have been working on eliminating the old 68k code completely so you would not have to rely on emulators and plug-ins. AND if i remeber last time Adobe was one of the last ones out of the gate to go native...or pseudo-native as it were(besides ..the ahem "other company" but at least they got it right the first time). Then during that time you managed to really concentrate of windows version and its performance. If I were your boss... you'd have been fired for lack of forthought in an ever changing business. Adobe has had enough time and resources to be prepared for something like this. Steve admitted to working on intel processors years back in a keynote. I am so glad i never bought CS2. I will stick with CS1 for now i guess. I appreciate your explanation but it really didn't garner any sympathy. If I misunderstood anything please correct me.

mejason69 — 10:12 PM on March 23, 2006

Here Here I totally agree!!!

Better to have one good product than two half ass products!!

OSX — 10:21 PM on March 23, 2006

I'm a long time NeXT user as well. I don't mean to sound bitter, but you know what? I think it's time Adobe actually did some hard work. They've been charging folks an awful lot for those upgrades throughout the years. When I think how little Photoshop has really changed over the years, all I can say, is, get to work! Many "photoshop"type features are handled directly in the OS these days. How hard can it be? Maybe whipping out some of that NeXT code might be a good thing. ;-)

Joshua Ochs — 10:23 PM on March 23, 2006

This is just wonderful in so many ways. We really need straight talk from engineering on things like this. I can't count the number of times I've been stymied by people who would only toss the corporate line when a simple explanation, roadmap, or a few details would have made a world of difference. Bravo!

Meanwhile, Apple should probably be cut some slack on the Intel transition as well. Remember that with PowerPC they were at least partially involved with the chip design requirements, and had years to come up with the nifty dynamic emulator they released. Here they had much less time, and no input at all into the architecture. Really, the whole Rosetta environment came from Transitive, not from Apple.

Other much less complex programs have sometimes adopted a hybrid approach - have one process call another to get around the "whole process emulation" limitation of Rosetta. For example, the Missing Sync uses this to provide PowerPC syncing compatibility from within a native Intel application and framework. I realize that Photoshop and others are infinitely more complex and plugins are not the same as calling external processes, but couldn't something like that have been worked out as a similar stopgap to the PowerPlug of yore?

iTech — 10:23 PM on March 23, 2006

Adobe: Your form uses invalid Tab sequence.

Michael Williams — 10:27 PM on March 23, 2006

Tetra,

Sounds like $999 for your PPC based adobe tools are going to give you just that - support on ppc. Clearly you've never worked in software otherwise you would know putting together a world-class application is a lot of work, especially when you have multiple platforms to test. I live and brethe in commercial software development, and I can tell you the amount of effort if supporting a new platform... and no I don't work for Adobe.

So next time you buy a new piece of hardware, you should do some research to see if *your* applications will run... clearly this wasn't done /before/ you made your purchase.

pdx — 10:42 PM on March 23, 2006

This was absolutely great. Having a blog like this is a hundred times better than what Macromedia had been doing. I'd love to read a post about how, if at all, Apple's move from 64 bit to 32 bit (in their first Intel Chip choices) effects this transition?

Joe1 — 10:49 PM on March 23, 2006

I found your post refreshingly forthcoming and technically interesting. Thank you.

david — 10:56 PM on March 23, 2006

Who cares if Adobe is slow to go universal. Maybe the people who were so quick to run out and buy an intel Mac should have waited to see what apps would be available. Please, stop blaming Adobe for your lack of foresight. Besides, if you are so hot to run Adobe Photoshop on intel buy a Dell. Otherwise, stop being a Monday quarterback. Its not like Apple is a huge market share customer. Maybe Adobe wants to spare customers who pay a premium for their superior products from all the bugs and hassles with a quick patch. I think the blame should be put on Apple. They should have taken the time to not release products with so many issues. Rosetta...please!!!! Apple use to mean quality. It looks like Adobe is acting in the best interests of their customers, something Apple needs to go back to doing.

Jean-Denis Muys — 11:09 PM on March 23, 2006

Well, I think there is still a way to make the bottleneck approach work. A new set of PowerPC bottlenecks could use IPC to hand out the real job to another, Intel-based process.

There would be *some* overhead compared to a fully native implementation, but the limited knowledge I have of Photoshop leads me to believe this would still be a large improvement.

-JD-

Jeremy — 11:15 PM on March 23, 2006

Scott, thanks for the informative blog. I know this isn't your department, but looking at the pdf you linked to, I didn't see any mention of Macro... er Adobe Director. Since our entire business is based on Director, this is more than a little disconcerting. Any info?

(I don't need any mocking comments from the crowd about how we shouldn't base a business on a single tool. After all how many of your business's depend on Photoshop?? It just so happens Director is *perfect* for what we do. No other tool, certainly not Flash, comes close.)

Timothy — 11:16 PM on March 23, 2006

Just wanted to say thanks for the explanation. I'm a graphic designer with a small marketing firm, and the "IT" guy since I'm already paid and cheaper than outsourcing all our IT work. Now I have somewhere to direct my boss when she asks why I told her not to purchase CS2 yet, and to wait until the new version. We plan on purchasing Intel towers after they've been out for a bit, and I didn't want us to spend the money on software that wouldn't be a full capability. As I said we're a small firm and can't toss money around like the big guys. Again, thanks for tell the customer what's going on, it's rare that a company of your size actually speaks to the public this candidly.

Tim — 11:41 PM on March 23, 2006

Scott, why do you have to move to Xcode to build a Universal Binary? Surely getting the code to build with GCC 4 is the real issue.

G.A. Brannon — 12:01 AM on March 24, 2006

one of the best reasons not to switch to apple as if I needed another one

Ulan McKnight — 12:25 AM on March 24, 2006

Thank you for the post Scott. As a developer I have to wonder about Adobe's motivations. Everyone who has worked in multiple environs knows that XCode is not as robust as the alternatives. However, Apple has been very consistent in their push to move folks to XCode. Apple said we had to learn to use it. Sounds to me like Adobe made a bad bet and is now paying for it.

If a major portion of your customers wait for and purchase CS3, then you may have spent your dev dollars wisely. Looking at Quark vs. InDesign, I imagine you are hoping that no "good-enough" CS competitor jumps into the ring before you are suited up.

Personally, I think it is a real shame that a company with as many resources as Adobe did not prepare for the switch to Intel better. Not trying to bash you for opening up and being honest but it sounds to me (Visual Studio) that Adobe has tied their cart rather tightly to the M$ wagon. Delays in Vista... Delays in Adobe apps for OS X on Intel. 2006 does not look like a very bright year for innovation and happy customers.

PS: I sound a little tweaked 'cuz I am delaying my purchase of three Intel Macs 'til I can run CS2 (or "good enough" graphic apps) at native speeds. If I have to run Windows on Mac hardware, so be it. Unfortunately, waiting 6 months or more is just not an option. I will find alternatives.

Dean Blackburn — 12:39 AM on March 24, 2006

My question is simple - assuming that we're waiting on CS3 and tower-class machines... Is Adobe putting any visible effort into speeding up the dev process for "Universal CS3" now that Apple has made it clear that they will be something like 6-9 months early completing the transition to Intel? Obviously, the faster you go, the harder it is to squash every bug, but with apps as large as CS/Quark/what have you, it seems the consumer always* ends up doing most of the QC on the initial release anyway... So, with that in mind, why not* try to get the next version out a bit sooner?

Scott Stevenson — 12:47 AM on March 24, 2006

Scott, it seems to me that the lineage of the code and assumptions about PPC might pose a bit of a challenge too. Adobe's apps are multi-platform so I assume there's some abstraction, but I can't believe this is true everywhere.

If one was to read this post without any context, they might get the impresssion that the IDE is the only factor. What would you say the split is between the two issues?

Andi — 01:03 AM on March 24, 2006

As a professional software developer I have worked on small private and very large commercial projects, using Codewarrior, VS and XCode on multiple platforms. Not keeping your codebase up-to-date and easily switchable from one tool set to another is lack of foresight and planning.

Yes, maybe your codebase is old and complex. Time for a rewrite, buddy. If you don't do it, your competitors might just overtake you.
Only big companies like Adobe can afford to ignore that and survive. And the users suffer.

Ralf Koller — 01:10 AM on March 24, 2006

will photoshop cs3 be a cocoa app if you are rewriting it from ground up?

Jens Tenhaeff — 01:28 AM on March 24, 2006

Interesting read, and since I'm not a techie I'll buy into your reasoning. A beast like Photoshop with more than 18 years of code under its belt is gonna be a plumber's nightmare to move to a new dev-enviroment.

Still, I wonder about InDesign. This one is rather new (compared to PS or AI) and - presumeably - not as convoluted as Photoshop. Any chance to bring that up to universal? Or is it a marketing descision not to release individual updates to the individual components of CS?

pdc — 01:30 AM on March 24, 2006

Have you evaluated other ways of getting around the bottleneck? A cheeky RPC to a native daemon + shared memory could go a really long way, and give y'all some time to do things in a more ... elegant way.

tim — 02:30 AM on March 24, 2006

Thanks for an excellent insight.

It's articles like this that underline the power of blogs.

DocB — 02:32 AM on March 24, 2006

Nice to see a real explanation rather than corp speak. I for one am willing to wait for a quality product.

Foo Yong Hwee — 02:50 AM on March 24, 2006

Thanks for enlightening us! Am waiting for the next release.

Simon — 02:56 AM on March 24, 2006

that makes complete sense and conferms what a few people thought was happening. its a good strategy and ends up being better for the end user.

Adobe HR Department — 03:08 AM on March 24, 2006

Thank you for your comments. You're fired now.

Move along. Nothing to see here.

Claudio — 03:44 AM on March 24, 2006

Scott,
Apple herself is aware of the complexity of this port, so the guidelines suggest to first compile your project as Mach-O in your actual development tool, and then port the project to Xcode.

These things make me strongly believe that we need in the near future a standardized common format for software projects.

Thanks for this post, anyway.

Arcus — 04:29 AM on March 24, 2006

Sounds like an oportunity for another company opened. Since photoshop is used like q-tip I dont think it will be replaced quickly but we can sure try. GIMP anyone. OSS to the rescue here. Time to start losing marketshare.

Pete — 04:56 AM on March 24, 2006

Ive noticed a performance hit, especially in memory usage,
with CS2 when compared to CS1.

I hope the switch to XCode will improve this and and also improve performance of CS3 on the PowerPC platform.

bob — 05:11 AM on March 24, 2006

bum

Brian Most — 05:35 AM on March 24, 2006

The combination of Intel plugins with a PPC caller or vice-versa could still be achieved by calling new processes instead of calling shared libraries. Make a glue layer for the PPC Photoshop app that turns plugin API calls into interprocess calls to an Intel plugin server process. The plugin server process would then load and call Intel plugins for the heavy lifting. You can still share memory between a rosetta and native process, so there's no data copying overhead introduced. And the plugin server would be dead simple, doing nothing more than loading and calling library functions and doing some data format twiddling.

With a project the size of Photoshop, wouldn't you want to do something like this internally anyway? For the CS3 Intel-Mac porting effort, one would think you guys wanted to break schedule dependencies between the base app and plugins.

Realist — 05:49 AM on March 24, 2006

What a load of horseshit, Scott.

Apple has been telling developers to move to Xcode...FIVE YEARS AGO.

The least Adobe could have done is parallel Metrowerks/Xcode development of Photoshop so that the day where Adobe had no choice but to use Xcode, they'd have most the pieces running.

There was no surprise. You guys didn't get caught with your pants down (if you did, then Adobe is incompetent...Adobe isn't incompetent, right?) Plain and simple, you guys just didn't want to spend time and money on parallel development and, in the end, you will lose because of that decision.

neoguri — 05:50 AM on March 24, 2006

Great post. Very insightful. I can not even begin to image what a large operation migrating from Metrowerks & Visual Studio must to Xcode must be. Good luck with that!!!

Mark — 06:05 AM on March 24, 2006

Like many large companies, I think Adobe simply bet that it could wait another 2-3 years before making the switch to Xcode. Apparently they did not see the big hints that Apple kept making to developers.

The fact is Adobe (and Microsoft) lost this bet and it is the customer that ultimately pays for this (waiting for these mega-beasts to get their act together).

Finally, There is NO EXCUSE for Adobe launching Elements 4.0 as PPC-only. A product that was launched 7-months AFTER the Intel switch was announced.

There are plenty of technical excuses that can be had for delays, but ultimately they are just that, excuses.

Jeremy P — 06:21 AM on March 24, 2006

Scott,

Thanks for a clear explanation. It makes a lot of sense technically. I love Photoshop. It is an amazing tool that has been a mainstay of my work for a very long time. And I also love Apple.

However, my first thought regarding Adobe's position was that it was a backlash against Apple. Ha! Now we've got them! This will teach them to make competing products... Mwahahaha. And I'm sure that is why you are having to blog this in the first place. Many of your loyal customers are thinking this.

Waiting anxiously for an accelerated release of CS3...

jeremy

DD — 06:21 AM on March 24, 2006

I hope Adobe uses the transition as an opportunity to think ahead. For example, will Adobe be using the Core Graphics facility that Apple built in to OSX?

DD

Frode Hegland — 06:36 AM on March 24, 2006

I am not sure I understand. Photoshop is available for Windows and Intel chips right? So why can't that 'heavy lifting' code be used for Intel Mac? Either way, I haven't upgraded since version 8 and am not running out to buy an Intel Mac, so I'm probably not the guy you should please. Really appreciate this blog though :-)

Jason — 06:52 AM on March 24, 2006

Thanks much for the info; we're all looking forward to CS3.

However, since you guys are already deep in Photoshop code doing the OSX/Intel port, how about also whipping together a Linux port (Ubuntu would make a great candidate for a target Linux OS!).

Randy McSorley — 06:59 AM on March 24, 2006

One of the things I love most about Photoshop - as well as the entire Creative Suite - is that it's rock-solid and dependable. I would much rather wait for a Universal Binary CS3 that risk a flaky CS2.

Good call, Adobe. And thanks for this blog!

olly — 07:00 AM on March 24, 2006

Thanks for the explanation Scott. It's so refreshing to hear a developer's point of view on issues such as this.

Roll on CS3 (and those Mactel towers...)

Jamie Kelly — 07:12 AM on March 24, 2006

Hi Scott,

Will CS3 take advantage of the Fonts palette that 'true' OS X apps use?

The one thing that really lets Photoshop down IMO is the way it handles fonts. Using FontExplorer X I can activate/deactivate fonts in all apps no problems, but Photoshop always struggles, sometimes not working.

Norbert M. Doerner — 07:13 AM on March 24, 2006

Thanks for that interesting tidbit. I can only agree to most of it. The Xcode text editing is still a quite painful experience compared to the old CodeWarrior (opening a source file of any size in Xcode takes about four seconds to populate the functions menu, regardsless of the number of lines of source in the file! And that is on a G5 Quad!!!)
But I am very happy that you make this public, as that will increase the pressure on the Xcode devleopment team to speed up, and make Xcode better for all of us.
And that doesn't mean that the Xcode team isn't hard at work, on the contrary, they are doing great, but there is still a long way to go.

Eren — 07:17 AM on March 24, 2006

Are you telling me there's no way to develop for osx on intel other than XCode?

eduardo cesconetto — 07:26 AM on March 24, 2006

I think that by not putting all the men-hours and doing an extra effort to please the Mac community Adobe is disrespecting it's costumers.

Rumor Girls — 07:55 AM on March 24, 2006

Excellent..thanks for the info! :)

John M. Stafford — 08:00 AM on March 24, 2006

All I really care about is having CS3 make the pen tool work the same way it did in Photoshop 7. Nothing made me more distraught than loading CS2 and discovering that I had LOST key functionality. Then please get the Illustrator team to use the same pen tool code. Okay a docking tool palette would be nice too.

Mark Bolick — 08:02 AM on March 24, 2006

Scott,
I noticed this week that Propellerhead software is realeasing both an Intel and PowerPC version of Reason, not a Universal since they did not want to move to Xcode and still use Codewarrior. Has Adobe considered doing the same? After all, you're pretty much looking at installing on one system (maybe two with a laptop). I'm wondering if there is actually a pressing reason to deal with a Universal Binary at all?

Dave Thorup — 08:14 AM on March 24, 2006

Scott, thanks for a great post that addresses some of the harsh realities of the transition. As a fellow engineer working on transitioning a bunch of large, CodeWarrior-based applications I know just how hard and time-consuming it is. It's unfortunate that the uninformed masses think it's something easy and trivial.

Plus, Apple wasn't even supposed to be shipping Intel-Macs yet. If you had to make plans, like all of us did at last year's WWDC, then you'd be planning for the first Intel-Macs to show up in June of this year. Now everybody is blaming us, the third-party developers, for not having our applications ready.

And you're right, using Xcode for large applications can be painful. When you open even just a handful of files (say 6 or 7) then for some reason Xcode just slows down. I really wish they'd do something to speed it up, there's no reason for such a slowdown when you open lots of windows.

I can't agree with this though:

...having stable project formats that are text-merge-able in a source control system.

CodeWarrior has never had text-merge-able, stable project formats (CW 10 doesn't count). Their project files have always been binary and they change the format from version to version. While Xcode's format hasn't been very stable at least it's always been a text-based format.

George Bailey — 08:16 AM on March 24, 2006

Very well put. And Tetra, the product you bought still works. If you think it came with a guarantee of running on a completely different architecture, well, you're just not thinking clearly.

Tom Ledbetter — 08:22 AM on March 24, 2006

Sounds like the upgrades are going to cost us a fortune! How about the Marcormedia products? Did they plan correctly?

Nate Silva — 08:25 AM on March 24, 2006

Is Metrowerks dead? If they supported Intel compilation it would really be “just a recompile.” If CodeWarrior is dead, then Adobe was going to have to switch to XCode anyway. Which, I realize, is a hell of a lot of work.

justanothercoder — 08:28 AM on March 24, 2006

You put out on engineering perspective quite well. But where is the customer perspective? As a customer do i want to care about old code base/new code base/old tools/new tools combo?
As an engineer you are supposed to solve the issues, and from your own admission, your code base is tied to the tools.

Not having a universal binary splits the market very nicely though. It means that you are forcing the users into using a specific platform for speed or features or have the potential to do so. The over riding reason why you guys don't have a universal binary is not an engineering problem but a marketing decision.

Len Rooney — 08:33 AM on March 24, 2006

A great read, thanks!

I realize that you probably have to maintain a feature parity with Window's version of Photoshop, but can we expect to see you do anything Apple's Core Image code or similar real-time filter effects?

Thomas Blom — 08:42 AM on March 24, 2006

Steve,

Thank you for the insight. Best of luck for the porting job! However, do you have any knowledge what kind of development environment Apple uses for their "pro" applications? Is it XCode? I am just curous, not trying to blame anyone or so. I mean, they are probably to be considered as large applications? Or is there an Apple-exclusive in-house environment?

Marianne Young — 08:44 AM on March 24, 2006

Hi!

This is sooo much better and much more eloquently elaborated than the generic answers I see on our FAQs.

Appreciate the insight and the honesty. Thank you!

Prepressman — 08:44 AM on March 24, 2006

Oh come on!! The fact of the matter is Adobe CEO's wanted to standardize on Windows and write off Apple completely.

I've seen the material Aodbe had printed up suggesting people use a Windows PC with Photoshop as it was faster and more productive.

Steve Jobs turning Apple around has caused some headaches for you, quit crying and roll up your sleeves and get to work.

Sussed — 08:45 AM on March 24, 2006

Nice to know what the hold up is, thanks for some light on this issue.
...Though it kind'a reinforced my feeling that Photoshop (and Illustrator) is bloated with code from years of "work around" fixes and short cut innovation taking the cheep, easy way out. Adobe products once seem to have nice lively feel to them with a lean memory/processing footprint. But over the years that footprint has gotten bigger and unwieldy with very little to show for it (CS1 the pinnacle). I'm hoping that this change to the code will force trimming of the fat to this and all Adobe products.

Jacob Munoz — 08:49 AM on March 24, 2006

I don't blame you guys for not wanting to undertake this gargantuan task, Apple should be providing a better migration path than they are. For the love of ___ - they've changed the system's endian as well, just do me a favor and shoot me in the face before I go ranting at Steve Jobs...

Matthew Higgs — 08:49 AM on March 24, 2006

My company runs a significant Mac studio. Personally, I have run Mac OS X since beta without a single issue. Most of our staff run G4-5s that just run and run and keep on running... Those staff in admin running that other operating system, that just keeps serving up conflict after conflict, I feel sorry for... For our Mac guys however, there is no way we will upgrade hardware until CS3 with Universal Binaries is here. So Adobe, it's up to you... All the very best!

Apple Engineer — 08:50 AM on March 24, 2006

I'm not going to pretend XCode doesn't suck. It does, and not just for large projects.

But there's no reason you have to use XCode to make Photoshop compile. I know Apple calls the dev tools "XCode" as a whole, but really they're mostly just gcc. You can use gcc and a makefile (heck, use ANT instead of you want, a Perl script or just an sh script).

I know this doesn't solve everything, since I understand gcc itself has some problems with your code. But it'll be a lot more profitable than banging your head against XCode trying to bend it to your will.

The PowerPC mixed-mode/UPP stuff may have been fun for developers, but it caused significant compromises within the Mac system. It contaminated the entire system with compromises, all the way to the interrupt handlers. It even required changes to the kernel in MacOS X. Just the parameter marshalling stuff alone (that converted calling conventions) was quite hefty.

Not providing it this time ment fewer hacks in the Mac OS X system. And providing it would have been near impossible anyway. When interfacing between Power PC and 68K, there were two issues. First is converting the calling conventions, I already addressed that. Second is making sure that any data structure you passed between the two was the right "shape" so that when you dereferenced a pointer to a structure or array you got the same field or entry on both sides.

And well, that second part is the tough part. Why? Because with the Intel switch, the Mac went from big-endian to little endian. You'd have to change your code to go through accessors to access everything, so it could figure out whether it should be little-endian or big-endian. You couldn't even convert the data structures in place at the call boundary, because what if another thread tries to access that structure, and you've just flipped its endianness around?

So please lay off the implications that Apple just didn't want to accomodate you. Apple may be backstabbing their developers (esp. Adobe) in the marketplace, but so far they haven't intentionally made it difficult to develop for the Mac.

And although I understand how difficult it is to requalify a product, I also know that you typically balance that against expected revenue from the product. So the choice is spending a lot of time and money making CS2 work and releasing a (presumably free) upgrade, or else spending a lot of time and money making CS3 work to the tune of hundreds of dollars in upgrade fees per seat. It seems a lot less of an altruistic "do the platform justice" decision as a monetary one. And well, Adobe is in business to make money, so I understand the decision.

I also want to extend a small bit of sympathy for the weird lineup of machines Apple has made available. Much of the development work at the large scale software companies I've seen is traditionally done on tower machines. This is for speed and because you can use a huge screen and a KVM. And Apple has made what available to Intel developers? Laptops, iMacs and Mac Minis? I know the Minis are speedy, but the 2.5" drive means compiles aren't as fast as they could be. iMacs come out ahead on the drive front, but only come with 20" monitors and the monitor is included so you end up buying a new monitor from Apple that you really didn't need.

I know there are the prototype towers, but if you look at Intel's roadmap, P4 is dead and so it doesn't seem like those machines are representative of what Apple will ship to customers, so they seem like poor development machines too.

I may be angry that Office, Photoshop (and FCP) aren't Intel native yet. But that doesn't mean I don't understand why it is the case. It still hurts though, it's going to hurt the platform a lot.

Nick Woolridge — 08:51 AM on March 24, 2006

I appreciate that Adobe faced a difficult task in making the conversion, but it was certainly not impossible.

Other developers, such as Maxon, the makers of Cinema 4D, have released free universal updates to their apps. Maxon faced a similar problem: they were dependant upon Metrowerks, and had a large, complex codebase (for instance, their Bodypaint 3d painting module alone replicates probably more than half of Photoshop's functionality, in a 3D environment!). Despite the difficulties, they had the will to forge ahead, and have reaped a PR windfall, and seen the performance of their code improve as well.

Julien G — 08:57 AM on March 24, 2006

Except that (as Steve said) this is really two things:
1. Moving to xCode, which while a fair bit of work should require minimal code changes.

and

2. The move to x86. The only problems here should be in UI, as your backend already copes with the little endian x86. (and if the backend is split between the two OS' this is a good chance to unify them)

Yes you have a huge legacy code base, yes moving to xCode means redoing the build (as an alternative you could always shun the IDE and just use good old *nix makefiles of which the basics have remained standard for over 30 years) and if you are genuinely finding bugs in xCode Apple should have their guys over at your offices fixing them. But your post is just the fluff that's so common from large software houses. CS2 was released *after* everyone knew about the intel switch and you would have already recieved your test machiens, there's very justifiable reasons for this.

You claim:
"far better to focus on ... Photoshop CS3 ... than to do tons of work moving an old code base to new tools."
Except it will just be an older code base, and this sort of work is not normally done by the same people that go around implementing new features.

Ryan Nix — 09:06 AM on March 24, 2006

THANK YOU SCOTT for actually explaining this. I work for large ad agency in Chicago that has a 300 user license of CS 2, and we could never get a straight answer out of our rep. In fact, he said CS2 wouldn't run at all on the new Intel machines and no one could fully explain why Adobe wouldn't make a universal binary. Thanks for doing this! :)

G — 09:10 AM on March 24, 2006

Interesting. I'd love to see vast portions of the Photoshop interface rewritten to use cocoa objects as much as possible.

Geoff Miller — 09:12 AM on March 24, 2006

Isn't part of the problem that Adobe never moved to Cocoa, which would have made the whole, "it's just a recompile" thing closer to a real statement? Staying with a codebase that never moved forward would make for a painful port. Looks like Adobe gets to be the ugly step child instead of Quark this time around. Hopefully, His Steveness won't need to get all snarky like he did with Quark.

Still, a 2007 delivery sucks for whole upgrade cycle. I wonder how much Adobe (marketing/management) cares that they will essentially be holding up the entire migration cycle - and help soften the blow by giving their customer base some sort of bone for having to wait this out.

Leopold Porkstacker — 09:18 AM on March 24, 2006

If/when you do get around to recoding, please also be sure to completely change the interface again so that we'll have to attend your training seminars. I mean afterall, we are Mac users, and people think we are made of money.

-he who stacks pork

Dave Snider — 09:24 AM on March 24, 2006

I just wanted to say I totally applaud you guys for being frank about the situation to your customers. While I was initially pissed about the problem, your reasoning makes sense.

I'll just wait patiently and buy a tower. My g5 is doing fine.

And of course, this just means CS3 better be awesome :)

James — 09:28 AM on March 24, 2006

Sounds familiar. Apple gets away with this stuff all to often. At least they have started to document some of their code.

Its kinda telling because wasn't their a time when the ONLY application you really used a mac for was photoshop?

brian warren — 09:40 AM on March 24, 2006

I think it's awesome that you guys are blogging stuff like this. Thanks for the update.

I'd love to pick up CS2, but I know I'm going to be running on intel in the future, and can't afford to upgrade to CS2 and CS3. Do you guys plan on offering free upgrades to cs2 buyers who purchase past a specific date? I'll buy CS2 asap after that date if you do.

Woodster — 09:46 AM on March 24, 2006

It's no wonder engineers so often prefer to stick to writing code and leaving the customer-relations to the product managers. When I see the ignorant minions on this list yapping with statements like "you'd have been fired for lack of forthought in an ever changing business" it makes me wonder why Scott even bothers.

But it doesn't a lot of thought: He bothers because he's crafted a portion of this product. He is a creator. In every engineer there is an element of artist - perhaps not one using Photoshop - but one that's proud of his work and wants to see it thrive. His company's interest should be financially motivated, but based on how he wrotes, I would say that his desire to post is not a financial motiviation, it's a passion for the art of coding. And it's because he feels he can explain an aspect of the story a little bit better than the public relations can. He's right.

Every major software company with a cross platform product more than a couple years old is going to have done it the same way: Using a common C++ codebase with Visual Studio for the Windows build and CodeWarrior for the Mac build. Now everyone needs to move from CodeWarrior to Xcode because CodeWarrior has thrown in the towel and is no longer competing with Apple in the IDE/compiler market. (Why would they?) Xcode demos well, looks pretty, simplifies a lot of things, and it's maturing. Rapidly. But it has its differences. A planned, structured migration is the proper way to move.

This move to Xcode isn't about CS3. It's about CS6 and CS8 and every other future OSX product that ships from Adobe.

Rome wasn't built in a day. If it was, Adobe would have hired their engineers.

Stewie — 10:06 AM on March 24, 2006

I'm sure that the switch is not an easy one and I would be lying to say I understand all the details completely.

I do however use Adobe products and have seen the trend of their products go from being feature based upgrades to marketing based.

I have no doubt that a large part of this is a marketing ploy. Not enough to gain with converting CS2 but to push people to upgrade to CS3? Now that is a sound marketing descion.

Adobe like many other companies have been adding bells and whistles to their applications to spark interest and get that upgrade sale. They constantly been lacking in fixing or adding common sense functionality to their applications. Have you ever tried using the align tools in Illustrator? They are abismal but they stay that way. I know it's an "inferior" product but try using Corel Draw and you'll see a lot of common sense functionality at it's best. Align tools that work, printing that's a breeze, selection tools that select only what you click on and so on.

History has shown that not all the best products succeed. Windows over Apple, VHS over Beta etc.

While I don't deny Adobe the right to make a sound business choice I don't believe they always make it to help their customers as much as their stockholders.

We applauded Adobe for coming up with Indesign to break the strangle hold Quark had and making us use that piece of junk. But there is nobody to do the same to Adobe when it comes to Photoshop and Illustrator. It's a shame because they are good applications that seem to becoming "Microsofted" bloatware. If they can get back with this release of CS3 to enchancing it's rudimentary features than it will be worth the wait.

I can wait for CS3 and I have been using Apple products for years and have no intention of switching. I also know never to buy a first release of a major technology. I'll wait till the intel switch is a generation further along and then Adbobe should be about ready. I just hope It be a system hog more than it already is.

So:

You didn't bother to really write your programs for the PPC. But it didn't matter much. Nobody noticed.

And so now, you won't bother to really rewrite them for Universal.

I can understand that. It means "**** you" to the customer.

Or in my case, as much as possible, former customer.

You have my permission to look up, but not publicize, my adobe purchases in the past. I'm always sabadash.

"-"

FrameMaker Mac User — 10:38 AM on March 24, 2006

Frankly I'm not too surprised to hear that Adobe won't be able to get CS3 working on Intel-based Macs. Honestly I've lost a ton of respect for Adobe lately. Between the difficulty of running some Adobe apps on case-sensitive file systems and the dropping of FrameMaker for Mac supposedly because the prior (Classic only in an OS X world) version sold poorly, Adobe's not been looking good lately to me.

Actually, considering the lack of an OS X version of FrameMaker and the rumors surrounding it, I wouldn't be too surprised to later hear that Adobe had killed its efforts to port its other products to the new platform.

bigmouthontour — 10:40 AM on March 24, 2006

Good to have a comparison with the 68K to PPC transition, which was a breeze. I worked for an Apple reseller at the time.

However, the position Adobe finds itself in only makes me wonder why Adobe was quicker to move its codebase to Xcode earlier.

If Xcode is catching up to other more advanced IDEs then surely it would make sense to move before the code increases in size and complexity (which is has traditionally done with successive releases) becomes unmanageable. Or were Adobe waiting for Xcode to reach a certain point.

It's a bit of both Apple and Adobe, but as usual the consumer loses.

docmanhattan — 11:03 AM on March 24, 2006

Reading through this long list of comments, you'd get the impression that people have been forced to buy Intel-based Macs. (I'm sure someone will pipe up and say I HAD to buy it...)

As someone astutely pointed out, however, perhaps those that rely on a specific application should consider what is supported before jumping to the latest and greatest hardware. Doing the opposite and assuming everything to run the same is irresponsible.

stingerman — 11:14 AM on March 24, 2006

Scott,

Thanks for the post. One point: It is possible to develop a plugin that calls another intel native process. Your current Plugin architecture should make this easy. Since the key plugins, such as the multiprocessor plugin, should have no presentation layer, this should be a home run.

There was another post higher up that mentioned the same thing. What are the chances that Adobe will do this? Marketwise surely you guys see that such an interim update will motivate PS7 and CS users to go to CS2 today. And their are abundant users that will upgrade, if they thought it was worth it. Most users will not delay their purchase of macbooks, on the contrary they will look for alternatives. You know in this business, the mighty fall overnight, recall WP. Heck, if I was MSFT, I would release a Mac only universal of their new drawing tools which are currently just for Windows.

How about Apple bringing Shake Painting functions down to Aperture? How about Corel, using this to re-enter the Mac market? How about a third party even?

stingerman — 11:23 AM on March 24, 2006

CS2 is supported on the MacBook, but under Rosetta. For many who are upgrading from

The real issue is, is it possible for Adobe to develop a patch to CS2 to leverage the new processors. I think the answer is Yes, it is doable. Apple is doing it with Rosetta calling native OS frameworks. Adobe can easily do the same thing. A developer relishes challenges like this; especially when the solution is not rocket science, just good old computer science.

Someone — 11:31 AM on March 24, 2006

CodeWarrior aren't really throwing in the towel because of XCode - it's because of Eclipse and MS VS.

Besides, a decent cross platform automated build system will not use *any* IDE.

Rather, you will have either a proto-makefile system that can generate "good old UNIX makefiles (and VS nmake files)" as well as potentially IDE solution files for e.g. VS; or a make-a-like like jam, scons, cmake and so on.

You then dispatch your cross-platform automated build onto various different operating systems to build in parallel. It all happens non-interactively from the command line.

Unfortunately, developing such a system is never a high priority for companies, since it does not in itself bring in a profit. Having dedicated engineers working on infrastructure is a rare luxury. It is deeply non-trivial.

Bruce Bullis — 11:47 AM on March 24, 2006

> Good to have a comparison with the 68K to PPC transition, which was a breeze.

Hilarious.

Sorry you had to be a lightning rod, Scott; keep up the good work.

Mike — 11:49 AM on March 24, 2006

As usual the internet is fully of idiots who don't understand about developing software on a large scale and the tradeoffs and decisions and limitations that come with it. Especially with a codebase as old as Photoshop. Thanks for the blog post.

Don — 11:52 AM on March 24, 2006

"Apple Engineer" stated that, "Apple may be backstabbing their developers (esp. Adobe) in the marketplace..."

Excuse me? Apple waited patiently FOR YEARS for Adobe to produce applications to took advantage of unique Apple technologies. It got tired of waiting so it finally released its own world-beating applications based on those technologies.

Adobe could have done so but it was apparently more concerned about kowtowing to the Windows market. It was Adobe that was doing the backstabbing, "Apple Engineer."

This nonsense ('XCode can't handle large applications') and general excuse-making regarding the switch to Intel-native code is more of the same. Come to think of it, Adobe is backstabbing its own customers, too. Nice going, Adobe.

Michael R McKinney — 12:08 PM on March 24, 2006

+

Scott, nice job of addressing a complex issue, despite so many negative comments. I'm a CS1 and CS2 user on several Mac G4s, and still getting ample performance in numerous professional environments. For those who have graduated to G5 and Intel Macs, perhaps this is one suggestion Adobe (or Apple) should consider:

How about a performance chart of CS2 apps running on a G4 system, a G5 system, and an Intel Mac under Rosetta? Heck, throw in a Windows performance bar just as a useful comparison tool. Why?

Surely I'm not the only pro Mac user still running a G4 system. So how does Dual-Core Intel/Rosetta Photoshop performance compare to 1GHz G4 performance? I might find it compelling to upgrade to MacTel now, for genuine performance gains, even though an Intel-compatible CS3 is a year or so away.

OK, that having been said, from a practical perspective for Adobe itself, beware of Quark. You guys gained share on them because of InDesign's rapid transition to OS X. Quark seems to be trying to do the reverse with the MacTel switch.

Random related question: Now that you guys own Dreamweaver, what's the fate of GoLive in CS3? Will you merge the two apps, or will GoLive get the axe to the admittedly more popular web editor? Please no, if that's the case: I find GoLive superior, and have used it since long before Adobe bought it.

Pass that along to your web folks if possible, and best wishes with Photoshop CS3.

mrmgraphics

Scott Byer — 12:14 PM on March 24, 2006

Everyone, thanks for the interesting comments. It's taken me a bit to catch up, but I have read everything.

Apologies for my initial poor choice of words that implied Apple just chose not to accomodate us on calling out to native code. A bad mental lapse on my part. The Apple engineer commenting above was very kind in not taking me to task more for that.

While the solution of calling across to a native task using shared memory is interesting, there would still be latency issues for small operations that I don't think customers would tolerate, and it would still require significant work within the application itself to enable. That puts it beyond what is reasonable to do in an update.

And, I am actually looking forward to moving to XCode, as Dave is right, CodeWarrior never did succeed at providing text-mergable projects. I'm sure XCode will. And as some have noted, the IDE isn't the whole issue, getting things compiling on GCC again is a big part of the process. If you visit the CodeWarrior for Mac OS page, you'll find that there was no alternative.

For those left with the impression that there was any 68k code left in the app at all, let me correct that - the PowerPC accelerator plug-ins was just a transition strategy. Photoshop has been fully native PPC and highly optimized on the Macintosh platform for a long time now. When Photoshop CS3 ships as a Universal Binary, the Intel side will also be highly optimized.

I think it's fair that some users vent at us for the speed of this transition. I wish it could be done faster. And no, we really didn't have an inkling the Intel transition was coming until Steve announced it in June.

For those things under our control, the Photoshop team continues to try and make choices strongly based on what we think is best for the customer. It's fair to disagree with our choices, and we're always open to valid arguments about that.

-Scott

Gavin — 12:20 PM on March 24, 2006

There are a lot of negative comments going on here, and I think that's uncool. First off, even if there was some way that Adobe engineers could magically recompile their applications to the Intel platform, and they were just holding out to force people to upgrade, "calling" them on it isn't going to change their minds.

Now, I don't believe that users are being held out on. It's a tough thing to port a huge, very specialised codebase over from one platform to another. Especially when the codebase no doubt has a lot of history. If this wasn't true, you could bet that the Mac platform would have a lot of games!

Another thing to keep in mind is that calling down an engineer that was kind enough to cut through the market speak isn't good. We want to encourage this sort of thing, not discourage it. I would love to hear more sorts of things like this, reports straight from the source.

Michael Houghton — 12:38 PM on March 24, 2006

Scott,

It seems to me that there is an unanswered question here, and maybe you can answer it, maybe you cannot.

If Vista is delayed again, will we see an OS X version of CS3 come out anyway?

Erasamus B. Dragin — 01:00 PM on March 24, 2006

STOP WHINING AND GET TO CODING

Chris — 01:02 PM on March 24, 2006

I know folks who depend on Photoshop to get professional work done, but I've found the learning curve bad enough that I've never been able to make it part of my usual tool set. Updating the UI would of course confuse the existing user base, so I won't plea for that.

I do wonder why it is that Adobe's apps that have functionality also offered by competitors' apps (e.g., JPG rotation; PDF viewing) seem much slower on Apple's system. I would have thought that with a code base tailored over time to solve specific graphic and display issues, Adobe would have a performance leader on its hands. Does Adobe have high performance that I'm missing?

What's really going on under the hood that makes picture size reduction, etc. so much slower than with competing apps?

Good luck with the v3 work; I know there will be great demand for it when it ships.

huxley — 01:13 PM on March 24, 2006
CodeWarrior has thrown in the towel and is no longer competing with Apple in the IDE/compiler market. (Why would they?)

Metrowerks threw in the towel the day they were bought by Motorola (now Freescale).

clopez — 01:19 PM on March 24, 2006

Nicely put, your honesty is (I believe) greatly appreciated.
Just a couple of questions:
Am I correct in assuming that Photoshop still has a HUGE amount of legacy 68k code int it?
Why won't Adobe release anything for Linux (except for the Reader, of course)?

Marc Driftmeyer — 01:21 PM on March 24, 2006

There are a lot of negative comments because back in 1997 WWDC when Carbon was first released to developers the writing was on the wall. Carbon was a negotiation between Adobe, Macromedia, Microsoft and Apple. Nine years have nearly passed since its announcement. The developers are rarely in charge of making the business case decisions.

With that being said it is clear that Adobe has not wanted to invest deeply into Apple's direction and wanted to do the minimum required to keep their apps reflective of the revenue streams the Windows and Apple platforms produce relative to one another.

However, years of not hiring seasoned Openstep developers to move your codebase into a Cocoa solution as part of R&D is a mistake and one fiscally they will feel. They will feel it in their stock price as well. Adobe has been anti-ObjectiveC from the start. Nothing has changed overall. I'm sure there are a few who want to use Cocoa.

If they were really intelligent they could have driven 4 miles to Omnigroup in Seattle who have worked on Cocoa appsuites for ATT Wireless/McCaw and the hundreds of millions of lines of code that call center suite entailed and asked them how those teams [Platinum/Ubermind, Omni, Best and other grunts] pulled it off; and if possible could they consult with Adobe.

Every company makes choices. Take the bullet early or delay it. History shows what delaying always provides.

Rick Schaut — 01:25 PM on March 24, 2006

Well put, Scott. Nice post. Just a few things worth adding:

1) The relationship between the size of a code base and the amount of work needed to move that code base from one build system to another is not linear. It's exponential. Twice the code means, roughly, ten times the amount of work. Larger applications are far more likely to make use of more esoteric language features, and involve much more complex build systems, than do small, or even medium-sized, programs.

2) An important issue with XCode vis-a-vis large projects is the size of the default format for debugging information. STABS is very verbose. Combine that with the very large symbol names common in modern C++ programs, and the size of your debug build gets positively huge. I have it on very solid information that the debugging build of a very well-known Mac application (not the one on which I work) actually managed to hit the VM wall!

Rick Schaut — 01:29 PM on March 24, 2006

Mr. Driftmeyer,

If this really is a Cocoa vs. Carbon issue, then why is the Finder still a Carbon app?

Steve — 01:29 PM on March 24, 2006

Thanks for the entry-- very informative. I agree with whoever it was that said one great app is much better than two half-assed apps.

I'm a Photoshop hobbiest and running PS with Rosetta has been fine for me. I understand it won't cut it for a professional, but shouldn't Pros be using PowerMacs anyway (obviously Intel PMs aren't out yet)? And if you bought a MacBook Pro to make a living with photoshop, you knew what you were getting, so you really can't complain.

-Steve

JR — 03:05 PM on March 24, 2006

I appreciate the candor of the information you are providing in this BLOG. Thank you, it is insightful. However, this discussion misses a huge portion of the reality of Adobe's slow porting of its suite to Intel Macs.

First, like many large, upgrade and support revenue dependent software companies, Adobe simply isn't very agile, and cannot move quickly to address significant platform changes like the PPC->Intel move, especially when they're left in the dark by Apple's secretive ways.

Second, the inside-the-company reality is not pretty. Following Adobe's Macromedia merger or acquisition (depends on your POV), the people inside the company are in the midst of playing a massive political and cultural war. Some of these battles are overt and ugly, others are subliminal and political. But, the simple fact is that a merger of competitors is a seriously nasty business, and no one inside Adobe will openly admit it.

The net result is that Adobe's productivity, vis-a-vis substantive product releases will take 2+ years of political infighting to recover from, and that's if they do it well. What customers will come to see is a series of releases that are less substantive and more superficial.

No one should blame the employee's, who are simply living through a business decision that greatly affected all aspects of the organization, and all the way from UI standards to platform support.

I've lived this nightmare, and I wish them well, partly because I'm a Mac user and I want their products to excel on my chosen platform, and partly out of respect for the difficulties of their circumstance.

GccEmacs guy — 03:09 PM on March 24, 2006

Why not simply use GCC + Emacs.
That can handle large code bases.

Allan White — 03:13 PM on March 24, 2006

Scott, how has the Lightroom development experience informed other software group's decisions? Lightroom looks like it was developed with Xcode, true?

Put another way, has their experience translated into new in-house capabilities for other products?

Great post, good info!

Chris Cox — 03:35 PM on March 24, 2006

Adobe has been working with Apple to make XCode useable for many years. But XCode never got to a point where it was a serious contender. So, Adobe went with the only choice that worked.

Adobe is doing as much as possible, as fast as possible to make the MacIntel transition work -- but there's only so much you can do with tools that don't work (yet).

If you really think that is not the case, then you almost certainly are not trying to use XCode/GCC with a large application. Other companies with comparable applications are feeling exactly the same pain as Adobe (engineers do compare notes, ya know). A few companies have run into even bigger problems than Adobe has.


Other tidbits:

IPC/RPC - WAY too slow. We already looked into it a while back. We had a couple of similar ideas -- all had too high a latency.

Yes, a well known application (not mine, though) couldn't launch debug builds with STABS because the binary and symbols took up the entire 4 Gig address space. I'd laugh harder if I didn't know the engineers fighting with it. Apple is working (very rapidly) to solve the problem.

No, Photoshop has no legacy 68K code, and hasn't had any since the 68K macs disappeared.

Cocoa - no, that would be an even bigger problem (for no user visible gains, and lots of user visible slowdowns and problems).

Yes, as an engineer, it's kind of painful to watch all the armchair quarterbacks with no actual knowledge of the situation make such ridiculous claims. But sometimes they're pretty funny (kind of like watching someone learn to swim and proclaim that they're ready for the Olympics). The problem is that you can't always tell the experts from the n00bs based on their typing.

Shane Ley — 04:44 PM on March 24, 2006

I can't believe I'm seeing so many of these comments. So many of you are idiots. No surprise there!

Apple chose to make a platform change. But you don't criticise Apple for this, instead blaming application developers like Adobe for Apple's mistake.

Believe it or not, but most software companies don't give two hoots about Apple, and you should be thankful that Adobe actually do, but this doesn't give Apple the right to demand they move their build environment to Apple's build environment. Believe it or not, but the Windows version is AT LEAST as important, and I don't blame them for one minute for not changing development tools and widget API's to suit Apple's demands. Any such move would also likely inhibit work on their upcoming product line for both platforms for the sake of Apple.

Will you Apple whackjobs, for once in your lives, break free of the reality distortion field, and put the blame where it really deserves to be! You are giving Apple users a bad name.

The very reason developers usually stay as far away from end users as possible is shit like this. I wouldn't be surprised if Scott discontinued his very open posting on matters like this, to avoid flames from idiots like you people!

Thankyou Scott for your open post. I'm sorry it turned into such a controversy.

newcastle — 04:48 PM on March 24, 2006

Adobe may not release a Universal version of Photoshop until mid-2007, company CEO Bruce Chizen told Forbes today.

http://www.forbes.com/2006/03/23/adobe-chizen-earnings_cz_dal_0324adobe.html?partner=links

Mac — 05:06 PM on March 24, 2006

It's a bit hard to feel sorry for you for all the work you have to do, instead I feel sorry for your customers. Other comples/large systems have been moved to UB so I don't see why PS would be different. You've known about this for quite some time, so get over yourselves and get us some UB apps allready.

Blig — 06:02 PM on March 24, 2006

Xcode can't handle big apps?

The Final Cut Suite is scheduled to be released in the next 5 days as Universal.

Are you telling us that Xcode wasn't used on Final Cut, Motion, Logic or Aperture (also due in the next 5 days)? I understand Apple may have had a huge head start on porting-- but they're using the tools.

Dave Thorup — 06:17 PM on March 24, 2006

Scott (and Chris),

Thanks again for posting your insights into a very difficult transition process. It's more humorous than anything to listen to the self-proclaimed experts at how easy the transition is and that Adobe is being so horrible to their customers. It's annoying though that there are so many of them and none of them really have a clue what they're talking about.

The truth of the matter is that this is a very difficult and complex transition for many companies. Just because it was easy for one application does not mean that it will be easy for another. Also, many people think that just switching to Xcode is all you have to do and you're done. Well, my friends, that just is not the case. That is only the first step, I say again, the FIRST step in a long and complex process.

Now for those that think they know what they're talking about you should really try listening to Scott, he knows what he's talking about.

In fact, for those that would like to know the real experts in the field you should read what Chris Cox, Rick Schaut & Apple Engineer have to say as well as Scott. They know what they're talking about.

ming — 06:27 PM on March 24, 2006

Very nice post with lots of interesting comments. Obviously theres a lot of Apple users here. I agree that "Believe it or not, but most software companies don't give two hoots about Apple, and you should be thankful that Adobe actually do, but this doesn't give Apple the right to demand they move their build environment to Apple's build environment." Seriously, not only just me, but a lot of Photoshop experts users also in a way admit working on the Windows platform is a better experience (i.e. faster). It is a long myth that the PPC is better with Photoshop.

Seriously, I do not understand why studios still choose Apple platform for "the" platform to use. Since it is almost guranteed that any great software will work as great if not better on the Windows platform rather than the Apple platform (if in the first place the great software builds for Mac also).

999 dollars for old software (but in new box) — 07:33 PM on March 24, 2006

I guess this tells how 'innovative' Adobe apps really are, amazing that there was that much junk left in. But hey, I guess you just used Photoshop to make a nice looking box, and then just put a new price tag on it! Really, complaining about this is silly, you make software, what the hell have you guys been working on? It doesn't sound like you even have the flexibilty to create new software - let's here it for the up and coming software houses, maybe instead of complaining they'll make an app that's worth 999$.

TeeJay — 02:03 AM on March 25, 2006

Can I please pre-order CS3 for min new Intel MacBook... Just to motivate you guy :)
- Keep up the good work!

Cheers,
TeJay

MacTruth — 02:04 AM on March 25, 2006

Thank you Scott for your openess.

As a mac user, I'm ashamed by the stupid reaction some people dared to published exposing their sheer stupidity to the world.

You and some other devs, explain the whys and there's still, down to the end of the thread people saying "Other comples/large systems have been moved to UB so I don't see why PS would be different."

Don't they actually know hhow to read ?

I'm here to recall those people that no Apple Pro application is actually shipping. Even better, Apple will charge a fee, and a hefty one for them. They even dare to impose a fee for the just relleased aperture before backing off due to the bad press it already had (I think aperture is great but not ready for prime time yet).

Moreover a 100% owned Apple company, FileMaker, will (as they support says) be universal binaries in their next paid upgrade.

Moreover both aperture and filemaker shipped months after june 2005 !

So, when Apple and filemaker, will charge you and will make you wait for a new universal binarie version, why are you slapping adobe.

Even better, we all slapped adobe in the ppc transistion with griefs about some 68K legacy code lying somewhere. Uninformed people still think CS2 has some (while it doesn't).

We said adobe was doing minimal support.

Now that they actually rewrite most of the stuff for good, something we all asked for, some of us ae actually sayying, please put somme ppc code in CS2 to be quick.

Finally most of the complainers aren't actually using photoshop in a pro fashion, the pro care about the job, the job is perfectly ok on their G5, and Quads. Their G5 didn't stopped to work the day steve announced the intel transition (twhich is a good thing)

coreen — 02:09 AM on March 25, 2006

thankyou for clearing up my misconception. You did give the impression that part of the reason your transition is going slow was because of old and outdated code work arounds based on the 68k code. I stand corrected. As I am not an engineer I look at it more from a business standpoint. Photoshop and illustrator are the backbone of the media creation suite and i will look forward to using CS3 on my current intel based mac. Fortunately for me Rosetta does the job for now and there are other media creation options. i do still feel that you should place some kind of universal binary patch to make it less reliant on rosetta in the interim. Giving some kind of boost to the software as some kind of concession to you mac customer base.

John C. Randolph — 03:19 AM on March 25, 2006

Guys,

For the record, Scott is quite familiar with Cocoa (or at least NeXTSTEP, I haven't been in touch with him since I bought a NeXTSTATION from him something over a decade ago), and he's certainly not the only person there who knows Cocoa.It's true that starting from a clean sheet today, using Cocoa and CoreImage, one could write a far better product than Photoshop, but the fact is that Adobe has a massive installed base to consider. Releasing an app that replaces photoshop doesn't suffice: they must also deal with all the third-party add-ons that their customers depend on.

Adobe painted themselves into a corner, and didn't move decisively to extricate themselves from CodeWarrior four years ago, probably because they didn't have a crystal ball.

It's easy to bash them for a lack of foresight, but they are where they are, and they didn't get into this situation just to piss people off. They made decisions based on the information available to them at the time.

-jcr

Alex Reid — 03:20 AM on March 25, 2006

Neat; thanks for being so open about this. I have Elements, since my needs are nowhere near Photoshop level – I assume that the work on CS will make it much easier to port that.

This is one important difference between Adobe (and, for that matter, Microsoft) and Apple is the way that both have embraced blogs as a wonderful way to keep customers in contact with the engineers who work on the product they use. Apple has held on to this idea that absolutely everything must be kept secret at all costs, even when it really isn't necessary. Maybe for things like the unveiling of the latest iPod, but it'd be nice to know how their transition is going.

NotAFan — 05:05 AM on March 25, 2006

You lying prick, there's all sorts of ways to get the current one working better, but you're just going to sit on your ass, blaming XCode for your laziness.

a non-pro user — 06:45 AM on March 25, 2006

But really, it's not as if people jump from expensive systems to expensive systems on a whim. There has to be a reason to switch. Seeing as there isn't a new intel-mac tower to use with cs2. why not wait and get both together?

dave — 07:58 AM on March 25, 2006


dont you guys think maybe adobe / macromedia is going to do something a little more than port over apps into universal binaries?

if they do an entire re-write, doesnt it give them the opportunity to really CLEAN things up? provide more hooks between apps.. or better yet, merge functionality?

flash + illustrator/freehand = major excitment.

flash + (some) director = bonerland.

illustrator + photoshop = bonerland.

ha. i said bonerland. do any of you people actually USE the apps the way ad agencies/designers/etc use them? you're all talking like propeller heads! :)

unixgeek — 08:25 AM on March 25, 2006

I haven't used Xcode for any large development, so I won't try to defend it. However, I have to take issue with the implication that Visual Studio deals well with large projects. My employer's primary software product only has about 10,000 source files, and it takes forever to load up in VS. (VS2005 is a bit better than VS2003, but it's still much slower than it needs to be.) It also takes its sweet time walking through all of the contained projects just to determine that they are up-to-date.

I have had way more than seven files open at once in Xcode, though, and there isn't any noticable slowdown (at least on 2.2.1). Older versions of Xcode and ProjectBuilder were often unbearable with only a couple of files open, though.

As for Rick Schaut's comments regarding the debugging information: there is no need to build the entire product in debug at one time. I maintain the cross-platformness (five different Unices) of the above -mentioned product, and debugging information on any of these can easily be generated only on individual object files if desired. The first step I take for debugging any customer's issue is to first try to replicate it on my Mac so that I don't have to make a big debug product in Visual Studio, and wait the minutes it takes VS to link things. Xcode's debugger is not as strong as Visual Studio's, but it's all based on gdb, so I can always get to what I really need.

The key to all of this, on a large project, is to build the heavy part of the code in a command-line system. IDEs are nice for quickly bopping across files, but they are difficult to manage when a large number of files is in play. I find it very frustrating to attempt to deal with development on our Visual Studio projects, because it is so slow and makes it difficult to find the file I want to edit. (I can't imagine how one would tolerate this in Xcode! At least VS keeps its targets in separate project files, so you can easily work with just a subset of targets.)

When faced with the task of reorganising our build system five years ago, I toyed with making location-independent Makefiles, but I finally just switched over to Perforce's freewave "jam". I have found this to be a very scalable approach, and much faster than just about anything I've seen at determining dependencies.

Scott Westfall — 11:24 AM on March 25, 2006

Checkout SlickEdit for developing on OS X. Yes, we run as an X11 app, but version 11--due out in early April--is being distributed as a universal binary. And we are reknowned for our ability to handle large applications.

Email me at swestfall@slickedit.com if you have questions.

Forbes — 12:19 PM on March 25, 2006

That Forbes article makes it sound like either your CEO is lying (and you accidently let the cat out of the bag: i.e., no universal version is actually forthcoming) or that you are out of the loop. Which is it, I wonder...

MikeFM — 12:28 PM on March 25, 2006

As a programmer myself it seems you could have written these programs to be more portable. I understand that Photoshop is a big and somewhat old program with parts that are probably closely tied to the hardware for speed reasons but I hope that this kind of move encourages you to clean your code up so that porting to additional platforms is easier.

I'd not mind seeing a port of Illustrator to Linux and for an app designed to be portable it should be easy enough to do so that it could be profitable for you too.

Pedro Estarque — 01:25 PM on March 25, 2006

Thanks Scott for opening up.
I'm very interested in the subject and I've been reading the ever increasing comments since your publish, but didn't fell like commenting because I thought I couldn't add much.

But someone just said that bringing Photoshop to Cocoa wouldn't bring any benefits to the user interface, so I had to step in.
Photoshop on OSX always felt like a hack. You can't minimize the pallets, and if you drag them, you get a dotted representation of it and not the full window, like in classic. It's also one of the few apps that still shows the clock instead of the spinning beachball ( not that I like it, I still find the clock much nicer, only I doubt it was an aesthetic decision ). Besides, if you have a progress bar running you just can't click on any other open window or anything at all. The entire app is stuck with it and you can only drag it or hit cancel.

I'm not saying that this can't be done in carbon, just that this API allowed for much of the legacy GUI code to run on OSX, and as such, leading to this old style behaviors. Had it been rewritten, we could get a lot of niceties for free, like spelling, dictionary, font panel...and who knows, maybe even a better screen redraw than the old quickdraw.

jbondo — 01:47 PM on March 25, 2006

C'mon Adobe, you must have known about the transition to Intel for a long time, and more importantly about Apple's push towards Xcode! Because this situation is hurting Apple and its Intel transition, they must have told you. You're saying they haven't, and if that's true, then Apple has made a big mistake.

If they did tell you, then you've made a very bad decision by not investing the time sooner, and because of this bad decision, you've left the many users who want to switch to the platform of the future in the cold.

Unfortunately, you're sitting heavily on the market, so we don't have any real alternatives. I hate monopoly!

Simon — 03:16 PM on March 25, 2006

Photoshop CS2 shipped before Apple even released an Intel-based system. Steve Jobs mentioned that it was going to be a hard transition for Metrowerks users. Adobe and Microsoft are the biggest Mac ISV's and they both use Metrowerks. These are all good reasons why no Intel-native Mac Photoshop yet.

Photoshop CS2 runs faster on a MacBook Pro than on a PowerBook G4 and that is what we have right now. So if you are running a MacBook Pro be happy that Photoshop is running at faster than G4 speeds (even if only barely). It is better than more PowerBook G4's with 1.67 GHz processors. If you want a desktop machine you have quad G5's to choose from for quite some time now. If you bought an Intel-based iMac or Mac mini to run Photoshop in 2006 then you are an ass. Nobody told you that you could do this. Nobody implied it was a good idea. The current Intel-based Macs are great for running Apple's consumer software and everything else is in beta right now and for the next year or so.

And when it's all done it will have been an amazing transition that nobody would have believed possible just a few short years ago.

Besides, if you really need native software now, somebody can just whip up a "Cocoa Photoshop Killer" in no time now that Adobe has stumbled, ha ha.