Tuesday, April 12, 2011

Unplanned Obsolescence

My software product Solitaire Till Dawn (STD) has had a long history. It is now 20 years old! During that two-decade history, I have had two processors (the Motorola 68000 and the PowerPC), one development environment (Metrowerks CodeWarrior) and one operating system (classic Mac OS, versions 7.0 through 9.whatever), all shot out from under me.

The First Dead Horse
When Apple switched from the Motorola family of CPUs to the PowerPC family, I didn't have to do anything: Apple was conscientious about backward compatibility, and STD ran nicely under emulation. Most users never knew the difference. I did get a lot of concerned mail from users who did know the difference and wanted a nice "efficient" native version, but the truth was that there was no need. STD did not run slowly, and did not use enough CPU even under emulation to noticeably affect the rest of the system. A couple of years after the switch, everybody forgot about the issue and I stopped getting mail about it.

The Second Dead Horse
Then Apple switched operating systems, from the classic Mac OS to the shiny new OS X. This time, it mattered. Technically you could still run STD unmodified, even though it was compiled for a different CPU and written for a different OS (Apple works very hard at backward compatibility). But in this case, it did run slowly and perform poorly, and it would also crash easily (something it never did under classic Mac OS, I hasten to add). It also looked very old-fashioned. I had to re-write STD for OS X and PowerPC. And, as previously chronicled, I made a mistake. I used the Carbon API instead of going all the way to the fully-modern Cocoa, and I stuck with the good old reliable CodeWarrior development system instead of using Apple's new Xcode.

The Third Dead Horse
Then Metrowerks decided to stop supporting CodeWarrior for the Mac. CodeWarrior still ran, and for a while I was able to continue making changes and updates to STD (now STDX). But as OS X evolved, good old CodeWarrior did not keep up, and over time became more and more "old" and less and less "good".

The Fourth Dead Horse
After that, a new blow: Apple switched processors again, abandoning the PowerPC in favor of the Intel line of CPUs. CodeWarrior could not compile Mac code to Intel-native executable. I was now unable to produce a native version of STDX. (Apple claims that Xcode can import a CodeWarrior project and take it over. I tried this, more than once. I never got it to work.)

But although it was now venerable in "computer years" (kind of like "dog years", they go by fast), the latest version of STDX still worked just fine. When OS X 10.6 came out, the PowerPC compatibility layer (called "Rosetta") was no longer installed by default, but Apple made it easy to install if you needed it, so most STDX users were still good to go.

The Fifth Dead Horse, and a Live Lion
But now OS X 10.7 "Lion" is on the horizon. And although it's not released yet and there's time for changes, it seems almost certain that Lion will not support Rosetta at all. If so, the current-yet-antique STDX simply won't run on Lion. For the first time in 20 years, an up-to-date Mac user won't be able to play Solitaire Till Dawn.

My only recourse now is to rewrite STDX using Xcode. I actually started this project quite a while ago, but it goes slowly: it's a big project (you'd be surprised), and I haven't the spare time (and energy) I used to have. I've learned a lesson about clinging to old standards, so this time I'm trying to make the code base as modern as I can; but that also adds time to the project.

My current goal is to create a (not-so)-quick-and-dirty STDX, fully modern and Intel-native, but not containing all the myriad whistles and bells of the previous versions. That will help me get it out the door faster, the sooner to relieve the withdrawal symptoms of STDX fans on Lion. Then over time I'll add old features back in, along with new ones perhaps, until it is once again at its full glory. (All this for the desktop, with iPad and perhaps iPhone/iPod  versions to follow if all goes well.)

I really am working on this, and so is Helen, who has a parallel project taking a different approach. But it really is going slowly. The chances that we'll be ready when Lion is ready are just about nil, so there will be a gap of time. But watch this space, and keep an eye on http://www.semicolon.com for news. It will happen someday, if I can make it happen. In the meantime, your patience and understanding is appreciated.