Mac OS X – How to Decide Backward Compatibility for a New Application

backward compatibilitymacosx

I'm currently contemplating writing an OS X version of my Windows software. My Windows application still supports Windows XP, and I know that if I drop support for it now, our customers will cry bloody murder.

I'm new to OS X development, and as I learn the technology, APIs, etc., I realized that if I'm going to provide comparable level of backward compatibility (e.g. down to OS X 10.5), I would not be able to use many things that look very useful and relevant in my case (ARC, XPC communications, many others). This is quite different from Windows, in my opinion, where there are very little changed between Windows XP and Windows 7 from desktop application developer's standpoint.

So, on one hand, it seems like a complete waste to stick to 2007 or 2009-level API in 2012. On the other hand, according to NetMarketShare report and Stat Owl report Mac OS X 10.5 and 10.6 market share is still 11% and 35%-40% respectively. However, I'm not sure if these older OS users are my target audience (buyers of software utilities) if they didn't bother to upgrade their OS…

My question: Are there any other reasons I should take into account when deciding if I target 10.5 or 10.6 or 10.7 for a new application?

Best Answer

You'll probably find that the majority of people that did not upgrade, are also not installing new applications and only use the ones they already have.

Depending on what your application is going to do, it may even be much more difficult to develop it to support older systems and at the same time work on newer systems according to the newer system conventions. If you already had an application developed for the older system things would be somewhat different as you would just upgrade it dropping support for the older system and letting people that did not upgrade use the older version. But if you start from scratch, depending on what your application is going to do, I wouldn't be too much surprised if it turned out that it would be easier to write two different applications and that the one for the old system took longer to write than the one for the new system.

I'd say targeting 10.4 Tiger is a total nonsense. Supporting 10.7 Lion is probably almost a must. Since you are writing a new application, people with 10.8 Mountain Lion will expect full support for Mountain Lion paradigms (not having it would cast a very bad shadow on your app even in the eyes of those that did not upgrade).

So 10.8 and 10.7 support having on both the native feeling of the platform is your first priority. That may already give you some headache. How back to go really depends on how long you think it'll take you to develop the application and what features your application will have. If you are going to integrate with iCloud to support inter-machine synchronization and maybe also integration with iPhone/iPad, you probably should forget anything below 10.7 or do a different application altogether for those systems. On the other hand if your application does not have data, has no reason to integrate across the different systems owned by the same user (or does it in a proprietary way), is not going to use any of the new APIs or any of the APIs that have changed, then maybe support for 10.6 Snow Leopard and 10.5 Leopard could be added without too much trouble.

But before you even think of supporting earlier than 10.7 systems, you should absolutely verify that there is a real demand for it. Do not just look at the % of still alive machines with those systems. You should verify that those users actually are still buying new applications (which, IMHO is unlikely).

Related Topic