dongmin said:
1. You have it backwards. Cocoa apps will be the easiest to port. Carbon apps not written in Xcode will require the most effort to port.
Carbon apps will port fairly quickly. Carbon still exists on x86.
Not using Xcode is the big deal here, because MetroWerks won't be shipping an x86 version of Code Warrior (since they sold their x86 compiler division off many years ago.) If your app depends on their PowerPlant libraries, you'll have to re-work it to no longer need them. That is what will take a long time.
The longest porting job, however, will be pre-Carbon apps. The ones that today require the Classic environment. They're not going to port over at all until they're ported up to Carbon. Depending on how badly-written the app is, this may be a nightmare job.
dongmin said:
2. The Adobe apps are still Carbon, as far as I know, so it'll take more effort than most.
But if they're written using only the Mac APIs and are not using third-party toolkits, then they should quickly port over to Xcode and recompile for x86 without much work.
dongmin said:
Adobe was pretty slow in porting their apps to OS X. I'd imagine the same for porting to Intel. There's a reason Steve demoed photoshop on Rosetta.
That slowness was because they were porting pre-Carbon apps to Carbon. And yeah, they took an insanely long time. The Carbon libraries were available all the way back in the days of System 8!
dongmin said:
3. The toughest apps to port will be apps that rely on Altivec for performance. Rosetta does not run Altivec apps, nor any apps that require G4 or G5. So a lot of pro apps will need to be re-written if they are to run at all on Intel. Not a trivial task.
Maybe, maybe not.
Apple has had their Accelerate Framework out since Mac OS 10.3. Apps that use it for all their AltiVec access won't have to port that code at all. Ditto for apps that indirectly access AltiVec via other Apple object classes, APIs and frameworks.
Code that directly makes AltiVec calls will have to be ported. But Apple has already published guidelines for this. (Either use conditional compilation and macros to selectively compile code as AltiVec or SSE, or port the code to the Accelerate Framework.) It shouldn't be hard to port this, although it may be time consuming, depending on how the app is organized.