Leopard Only?

My original intention of posting here at least once a week hasn't exactly gone to plan, as after being up for nearly 2 months now I've only made 3 posts, and that includes the initial 'Hello World!' post which doesn't really count. I could say that I've been really busy, but to be honest the past couple of weeks haven't been to bad, after an initial period of spending nearly all my free time outside of work on getting some uni stuff completed.

Anyway, back to the topic which is Mac OS X Leopard. I managed to get Leopard installed about a week after it was released. I know, being a Mac developer you would of thought I'd have it installed earlier than that, its just I was waiting to see if there were any signs of any major flaws. After using it for a couple weeks I can say that I am very impressed, with the only issue so far being the fact that my MacBook Pro won't automatically sleep anymore, which I'm sure will be fixed with a future update.

Even though I knew about Leopard's new up-and-coming features (especially the developer ones) before it was released, now that I finally have my hands on it I've found myself debating whether I should be developing my applications for Leopard only. The easy answer to this would be no and continue to develop my apps as I did before Leopard was released without taking advantage of all the new developer features, in particular Objective-C 2.0 which among other things includes garbage collection and properties. When I first thought of this I had Switch in mind, which as it currently stands is still unreleased and to be honest is a long way off from it. The attraction to making Switch Leopard only was based on the fact that it provides so much of the functionality that I've either had to implement myself or integrate it into the app using open source code. I'm pretty sure that Switch's code base would dramatically reduce in size if I were to leverage all of Leopard's new features. For example, using properties to code Switch's model classes, would result in their size to drop from hundreds of lines, which consists mostly of accessor methods to a few dozen simply because it would only require the property declarations and the accessors would be generated automatically. Other prime examples of this include the use of FSEvent instead of messing with kQueues for file system monitoring, NSGradient instead of CTGradient and the removal of huge chunks of code that deal with simple 2D animations that Core Animation would handle with ease and probably a lot more efficiently.

I'm sure a more established Mac developer wouldn't think twice about making one of their apps specific to one OS version as they've most likely got an established following and in doing so would alienate many users. Some people might say that I have an advantage in that the app in question is yet to be released and therefore I should jump at the chance of taking advantage of all the new features and functionality that Leopard provides. After thinking this over for a long time and going from the initial position of going fully Leopard only and effectively re- writing a lot of Switch's code, I've now come back around and I'm pretty certain that I'll continue to develop Switch to be compatible with Tiger.

On the subject of Switch's development, I haven't actually touched any of its code for at least a couple of months now for reasons stated in an earlier post, but also because I'm currently working on a Safari 3 compatible version of SafariTabs which I'm hoping to release very soon.