According to Hoyle...
Copyright ©2006 Jonathan Hoyle
Macintosh Software Development 2005-2006: A Year in Review
Last year we began a series of articles each devoted to a cross-platform strategy from a Macintosh programmer's perspective. Thus far, we have covered the following 11 subjects:
- Runtime Revolution
- Java development environments
- BASIC development environments, Part I
- BASIC development environments, Part II
- Converting Legacy Frameworks
This being my 12th article for macCompanion, I have decided to do a year in review to cover the topics affecting Macintosh software developers these past 12 months. I know that most year-in-reviews tend to be written in December to follow the calendar year; however, I think the academic year is a more realistic unit of measure, as Apple tends to make its new development announcements in the summer during its Worldwide Developer Conference (WWDC). Apple will be previewing Mac OS X 10.5 Leopard at the conference this month, so what better time than now to summarize the events that have transpired since the last WWDC?
Last year, Apple dropped a bombshell with its announcement that the Macintosh will be transitioning away from the PowerPC processor series onto <gasp> the Intel processors! Many could not believe their ears. Intel. The enemy. How could Steve do it? After all, it's wasn't too long ago when an Apple commercial displayed the Intel processor strapped onto the back of a snail!
Despite all the big talk about the "Megahertz Myth", the fact still remained that Intel processors continued to improve in speed while the Motorola PowerPC chip stagnated. Steve was not happy that the Motorola G3 and G4 processors, that were the brains of the Mac, were being beaten by Intel's higher performing Pentium lII and IV chips. So he made the big move away from Motorola and went to IBM for (what was supposed to be) the next generation chip, the G5 processor. In return, IBM promised to keep the G5 up to date by continual performance increases, and decrease its footprint so that G5 that could run inside of a portable. Unfortunately, IBM was never very good at keeping its word.
The G5 was introduced with all of its glory at the 2003 WWDC. At the keynote, Steve Jobs promised the audience a 3.0 GHz version of the G5 in time for the following year's conference. When IBM failed to meet that target by WWDC 2004, he had to apologize in the keynote for not having delivered on his word. However, he expected to be able to reach the 3 GHz mark for the 2005 conference. But in reality, no such speed could be attained, and looked nowhere to be in sight. Furthermore, the G5 was never able to be reduced in power consumption and size to be usable for the Powerbook.
IBM cost Steve some pride and, worst of all, his public word: the very thing that he prides himself on. IBM caused Steve some public embarrassment. He was damned if was to let IBM do it again. So, Steve threatened IBM that if they didn't deliver on the promised performance, he would move the entire Macintosh platform to using the Intel processor. I can only imagine the IBM execs laughing in his face at this "obvious bluff".
Lesson to IBM: Don't ever, ever, assume Steve is bluffing. Especially after you've already pissed him off.
The rest, as they say, is history. IBM didn't deliver, so Steve walk away and into the arms of the Intel.
The Intel Transition
Amazingly, the transition went much faster than originally expected. In Steve Jobs' original announcement, the first Intel-based Mac's were not expected until about now (mid-2006) and PowerPC-based Mac would continue to be sold until the end of 2007. Steve said "This is not going to be a transition that happens overnight., it's going to happen over a period of a few years."
As it turned out, "overnight" was a much more accurate description. The first Intel-based Macs shipped in early January 2006, and as I write this, every new Mac at the online Apple store is available for Intel only, with the sole exception of the desktop tower (which itself is likely to be replaced after this month's WWDC). The Intel-based Macintoshes represents one of the fastest and most successful transitions Apple has ever undertaken.
The absolute #1 task for all Macintosh software developers this year was to convert their applications into Universal Binaries, the dual native format that runs native PowerPC or Intel, depending on the architecture. Mac OS X 10.3.9 or higher is required for the operating system to understand the U.B. file type.
Universal Binaries are very much analogous to the old "Fat Binary" format that included both 68K and PowerPC binaries from 10 years ago. Those building Dashboard widgets or Java applications did not have to do anything, as that code runs fine regardless of architecture. Those creating Mach-O applications in Xcode (either Cocoa or Carbon) had only small work to do. CFM-based applications built with Metrowerks CodeWarrior, on the other hand, were very much in trouble, thanks in large part to the incompetence and mismanagement of Freescale, the company which owned Metrowerks (more on this below).
The new version of Xcode, 2.1, added a checkbox selection for target hardware: one checkbox for PowerPC and one for Intel. Checking both gives you a Universal Binary. As I write this, Xcode has been updated to version 2.3. Macintosh software developers defected from CodeWarrior in droves to go to Xcode, the only environment which allows the user to create U.B.'s. Converting CodeWarrior projects to Xcode was the lion's share of the work, as Xcode's compiler (gcc 4.0) was ANSI compliant and fairly strict. Once this was done, Intel compilation became much easier.
Two to three years ago, Metrowerks CodeWarrior was the overwhelming marketshare leader in Macintosh C/C++ development. Over 90% of all shipping Mac applications at the time were built using it. Considered both easier and more powerful than the freeware Xcode from Apple, CodeWarrior was the IDE of choice for the Mac community. In addition to the PowerPC compiler inside CodeWarrior (which could built Classic/PEF, Carbon/PEF, Carbon/Mach-O and Cocoa/Mach-O applications), Metrowerks also had an x86 compiler to build Windows applications. Its x86 compiler had been tested and grown for over 10 years, just as its Mac compiler had. One might think that of all the Macintosh development environments available, CodeWarrior would be the one in the best position for the Intel switch. Alas, such was not the case.
Motorola, the parent company of Metrowerks at the time, spun the latter off to Freescale. Under Freescale's reign, CodeWarrior began to languish. In former years, Metrowerks released annual updates of its IDE (timed usually to coincide WWDC). From version 4 in 1998 to version 8 in 2002, both Macintosh and Windows versions of the IDE were updated. However, something went awry in 2003, as version 9 was released for Macintosh only, with no updates to the Windows or Java compilers. In 2004, CodeWarrior 9 for Windows was finally made available, but its Macintosh cousin stagnated. And to the shock and bewilderment of the Mac user base, Metrowerks failed to even appear at the 2004 WWDC. In yet another bizarre move in the spring of 2005, Freescale sells all of CodeWarrior's x86 compiler technology to Nokia and announced it was getting out of the x86 compilation business altogether. How ironic that Metrowerks would have its salvation in hand for 10 years, but sells it away mere weeks before Steve Jobs announces the Intel switch.
By effectively shooting itself in the head, Freescale drove an overwhelming popular development environment, a near monopoly in fact, into insolvency in just two years. Metrowerks was left with no choice but to abandon the Macintosh market, which is what it announced at the 2005 MacHack conference. A final version 10 of CodeWarrior for the Macintosh was released in late autumn as a download only and at a slashed price of $99. In the spring of 2006, all support and sales of CodeWarrior for the Macintosh was officially terminated.
A few months ago, I wrote a review of this final version of CodeWarrior for macCompanion.
REALbasic & Other Development Environments / Frameworks
As the leading Basic compiler for the Macintosh, REAL Software announced that REALbasic would support compilation for Universal Binaries sometime in 2006. Unfortunately, as of this writing, that no such support has been released. Apple has been selling Intel-based Mac's for over six months now; not being able to create an Intel native application with REALbasic has most certainly hurt its sales. However, REAL Software President and CEO Geoff Perlman has promised to make Universal Binaries its single most important feature, and still expects to release it before the end of the year.
FutureBASIC, a Macintosh-only Basic compiler, is also not yet available as a universal binary, but the authors have promised an update soon. The majority of modern C++ frameworks, even the cross-platform ones, now support building as Universal Binaries. Qt, wxWidgets and CPLAT have all been updated to allow for Intel compilation. Metrowerks PowerPlant has been released into the open source market to SourceForge, but as of this writing, there is still some work left to do with it.
This year there was a singular emphatic message: support Intel compilation. Many application projects have already made the transition, and those which haven't are actively working on such an update. With the rate at which Intel Macs are selling, this should remain all developers' top priorities. With that, I leave you for a month and make preparations for this year's conference.
Next Month: WWDC 2006 Round up! See you in 30!