Which version of OS X should my program target? - macos

We're building an application for OS X, and we can't rely on our users all having upgraded to Snow Leopard, or whatever the latest version is. We want to make sure that as many people as possible can use our app, but we also don't want to throw away some improvements that were made in OS X version if only 1% of users are stuck using earlier versions.
Is there anywhere I can find information on the proportions of people that are using each version of the OS? Or is there some "common wisdom" on the issue that real mac developers know?
We don't need any superfancy graphics or 3d animation stuff, just plain old windowing APIs - but we've already run into one problem where "NSStreamDelegate" isn't supported prior to snow leopard.
Thanks!

Web stats from Quantcast, late February 2010.
North American stats, but might serve as a guideline.
Version %
10.6 27.3
10.5 52.1
10.4 17.2
Other 3.4
Omnigroup also provide some useful insight into updates to their installed base. You can click through to see breakdowns by major and minor versions on their site. For July 2010 they have:
Version %
10.6 53.3
10.5 21.0
10.4 25.6
Other 0.1

I think I'm one of the last holdouts with a still-functioning Powerbook G4. Its upgrade path ends with Tiger. On behalf of all those who won't get rid of computers that still work fine (if a bit slow by modern standards), please target 10.4 !
Of course by objective standards, you probably want to target 10.5. It adds nice programmability improvements, and really, I don't know a single person still using 10.4 other than me.

As for NSStreamDelegate, it has been available as an informal protocol (i.e. a category of NSObject) since 10.3. It is just that Apple decided to make it into a formal protocol, since Objective-C 2 has an #optional methods.
So, it's not that you're using new functionality only available on 10.6.

Related

Is There A Definitive Source for When Xcode Versions are No Longer Supported by Apple?

I'm writing up a slideshow on keeping Xcode versions up to date.
It's not difficult to find out when Xcode versions BEGIN support, but not when Apple officially ENDS support.
Maybe the correct answer is "when the next version comes out," but the Xcode version tends to continue working for quite some time after the next variant comes out, and I know some folks that insist on using the old variant until the wheels fall off.
Eventually, the old version will no longer work on the current OS, and we need to hold back the OS to continue running the Xcode variant.
I need to find that point. I call it "The eBay Threshold." That's when we can no longer run the defined variant of Xcode on a new Mac, and need to buy old used Macs to run it.
As you might guess, this is a point of frustration for me. I hates ISO9001, as practiced by some outfits...
Thanks!
As you note, Apple stops supporting a version when the next version comes out. "When will it stop working" cannot have a definitive source because there is no firm definition of "working" in the absence of regression testing, and Apple does not regression test old versions of Xcode against new OS X releases.
The requirements are of course contradictory (which I expect you know). It makes some sense to demand near-total reproducibility. In that case, you must never upgrade the OS beyond the point release that existed when the next version of Xcode came out. Upgrading the OS beyond that means running Xcode in an untested mode, using "well, it seems to run" as your only criteria. At the very least, you would need to regression test your own software.
Obviously VMs are the best way to achieve this for a build infrastructure. The VMs need to be very carefully protected from outside traffic since they cannot receive even security updates without breaking their reproducibility.
Of course few develop Mac software this way. (This answer only makes sense for Mac development, and even then assumes that you are not submitting to the App Store. MAS and iOS development must keep up with the latest version of Xcode by Apple policy.)

OSX Architecture related

I am developing an application for Mac 10.7 and above (10.7, 10.8, and 10.9 for now).
Based on my search on web -
OSX 10.8 and 10.9 only comes with 64bit flavour
OSX 10.7 supports both 32bit and 64bit Intel.
IN OSX 10.7 - If I develop for 64bit(x86_64) then application will work in 32bit as well.
https://discussions.apple.com/thread/3200553.
In this case, How ARC handled internally?
Can someone please validate and confirm my assumptions above?
Thanks
x86_64 is not emulated on 32 bit machines, so if you want your code to work on those, you'll have to build for it. The discussion you're linking to discusses kernel architecture, which is irrelevant for your purposes.
ARC does not work in 32 bit code, so if you want to support 32 bit machines, you cannot build with ARC (and yes, like many such tradeoffs, choosing to support the older alternative adds work and is potentially error prone).
Your best bet is to check the release notes. But if you try to compile for 32bit with a target SDK that doesn't support it Xcode will loudly tell you.
The last sold 32bit Macs were years ago. I'm but sure the hardware is even supported now.
You will benefit greatly from targeting 64bit only and the latest release possible. With the new strategy to make updates free, it keeps things simple.

Xcode 4 & Mac OSX 10.3?

I'm new at programming on the Mac. I've got me a brand new copy of XCode 4.0. I've got people asking me what versions of MacOSX we'll be able to support but I'm not sure what to tell them.
I see options for selecting an "SDK" and other options for selecting a target version. It seems the lowest I can go is 10.4 though -- even though we'd like to support 10.3, if possible without a lot of pain.
My question is, could anyone give me a quick rundown of how sdk versions and target versions fit into this? As I'm coding, what kind of things do I need to watch out for to make sure I can still support the smallest version of MacOSX? Likewise, how do I figure the G4/G5 (PowerPC) versions of MacOSX into all this? For example, on Windows, if I write an app in c#, I know that all I need to do is make sure an appropriate version of .net framework is installed, regardless of the OS. Does something similar hold true for the MacOSX?
Thanks in advance.
I believe Apple has dropped PowerPC support completely, including Rosetta, in Mac OS X so 10.3 is out of the question.
If you want to support PowerPC, see this related question. It looks like a lot of work.
How can we restore ppc/ppc64 as well as full 10.4/10.5 SDK support to Xcode 4?
With the analogy to the .NET Framework, there isn't anything like that for Mac OS X built-in.
It is true for Mac OS X. If your program targets 10.3 SDK, it will be able to run on 10.3 or greater. I.e. the Base SDK project setting specifies minimum target OS version.
However, supporting 10.3 IS a lot of pain. Even 10.4 is not that easy, for example Objective-C 2.0 (most important, #property, garbage collection) is only available with 10.5 SDK or above.
The common solution in existing projects is to keep an old version of software available for 10.1-10.4 users, while the new versions will require 10.5 or greater (and also usually are Intel-only).
If you're starting a new project, you will probably want to distribute it via Mac AppStore, which only works on 10.6+, which means you can safely pick 10.6 SDK as the lowest target version.
Apple is way more harsh about upgrades than Microsoft. Mac users don't walk around with 10-years old systems on their laptops. The only reasons I can think of to still use 10.3 are using 10-year old mac, not having Internet connection and not knowing what “to update a software” means. So, I wouldn't care even about 10.4, not to say 10.3.

WebGL on older Mac OS X versions (say 10.4)

Not really a programming related question but...
I'd like very much to experiment with WebGL on my spare time. My current 'spare time' machine is a MacBook running Mac OS X Tiger (10.4.xx) and I'm unable to find a new browser supporting this OS. Firefox dropped support, Chrome too, and Safari idem.
I read somewhere that this is due to a Quicktime bug that Apple won't fix.
Does anyone have more information on this issue ?
Does anyone have a clue or track to find a running implementation of WebGL on Mac OS X 10.4 ?
Cheers,
I know a fellow who is maintaining a Firefox 4 port to OS X 10.4.
Check out http://www.floodgap.com/software/tenfourfox/
Edit: Unfortunately I've just found out that this doesn't quite fulfil your main reason for wanting Firefox 4.
From the dev's site:
OpenGL support is presently disabled
in 10.4Fx. This is Apple's fault, as
Mozilla requires non-power-of-two
texture sizes, which require OpenGL 2.
Unfortunately, PPC Tiger does not
support OpenGL 2 at all, and only a
subset of cards support it in PPC
Leopard (the really irritating part is
that Intel Tiger does have OpenGL 2,
and OpenGL 2 came out in 2004!). It
may be enabled in the future for those
handful of configurations on Leopard,
but this won't benefit the majority of
users. Note that many graphics
features will work just fine; they
just won't be hardware-accelerated.
If you can get a build of Firefox which has WebGL to run, but don't have a GPU that supports OpenGL ES 2.0, you might want to try setting the "webgl.osmesalib" about:config option. Even simple programs will probably run at a flip-book frame rate however.

Mac OS X Tiger vs Leopard usage pervasiveness - any study?

I need to decide whether I should support Mac OS X 10.4 / Tiger, and the decision likely hinges on what percentage of mac users are still running Tiger. I didn't find anything too reliable on the interwebs nor on Apple's developer website. Let's ignore the impending Snow Leopard release and it's impact on Mac OS version usage distribution.
Does anyone know of a study that might provide insight? Any other suggestions on how to figure this out? If you quote any numbers/percentages please include a pointer to the source.
Take a look at the Sparkle+ stats, that the Adium project is collecting.
The stats are available here.
OmniGroup keeps track of the system configurations that use their software updater. The current split is roughly 60/40 in Leopard's favor.
Keep in mind that, judging from previous releases, Apple will likely drop official support of Tiger once Snow Leopard is released, which should be any day now.
It really depends on what user audience your software has (whether they're likely to upgrade or not). I don't have a study, but considering how each major update costs money, I'm sure there are many non-power users who are still on older editions.
You're better off targeting Leopard only, especially with Snow Leopard coming out at the end of the week with a lot of changes to key technologies. Apple moves pretty quickly and soon enough supporting Leopard will be your legacy support.
From the Adium Sparkle+ stats that weichsel linked to:
10.3 : 2170 ( 1.3%)
10.4 : 28645 (16.3%)
10.5 or above: 134269 (82.4%)

Resources