I recall at one point when I was testing a game engine with someone, we ended up spending a night or two chasing a bug in our code wherein the struct for the color format changed between two contiguous OS X versions. The fellow I was helping was the primary coder, and I assume he fixed the issue with the use of some C pre-processor #ifdef statements or something else far more cryptic. This was a real kick to the cabbage though. Ultimately, my experience as a developer was hardly so rosy as the experience the experience that I had, on average, as a user.
Honestly though, I’m surprised that Apple hasn’t switched their instruction set architecture already. They were making menacing vibrations about doing that a good 10 years ago at least, if memory serves. I guess said vibrations actually came about as a result of them declaring it necessary to begin compiling C/C++/ObjC code using some particular compiler target, but the subtext was simply, “Don’t count on our computers having the same microarchitecture between the current crop of machines and the next.”
Ultimately though, I’m just bitter. The last Macbook I owned met with a frightening and ignominious death. Suffice to say, some unsavory characters rooted it and changed my encryption key to lock me out of the thing. Suffice to say, I’ve never been able to use it since.
For the record though, I won’t be defending Windows any sooner than OS X.
The deprecation of OpenGL is the real tragedy here. That API still has much to commend it and to offer the world, in my humblest of opinions. Heck, at the very front of the Vulkan Redbook the authors make a statement to the effect that Vulkan is not so hot for whipping up singular applications. Instead its aim is middleware. I rather wonder how Metal will compare.
I wish I could imagine a good reason that Apple is going with Metal instead of Vulkan, but I suspect the reason is not good at all.
To be fair though, Microsoft throws its own proprietary heft around. I reckon they just don’t meet with such unexpected and stunning success at it. Ultimately, ecosystem fragmentation hurts the whole ecosystem. This very phenomena has begat everything from Forth to Java.
Hopefully frameworks such as SDL will be able to obviate some of the need to write large swathes of OS X-specific code, though I cannot help thinking that this is precisely what Apple is attempting to make impossible. Certainly, OS X is a unique think, but I cannot think of it as being so unique that it is worthwhile to write large functional chunks of my code twice to accommodate its desire to make itself a unique pain in my ass.
Again though, Windows isn’t off the hook here. What the Hell, Microsoft, why the heck you gotta use a weird, special name for your “main” function? An ultra-specific example of a case where Redmond’s bastard child is no better than the rest where concerns useless extension of functionality for the sake of being different where difference is typically neither appreciated nor desirable.

