Hey everyone. I have just completed a release of an iOS app, being a web developer.

Let me tell you… the Apple developer ecosystem is sooooooo convoluted! Is it just me or does anyone else feel that way?

Don’t get me wrong. The company is innovative and a trailblazer. It has done so much in terms of hardware-software integration. And I am not even talking about anything before MacOS X or iOS.

I mean … Objective C. XCode. The hodgepodge of a million different things smashed together. I have seen many people say it is elegant… I have seen many ecosystems. Apple’s one is, well, kludge upon kludge.

First there was [foo bar] but then you got also foo.bar and foo.setBar. You null, NULL but also nil, you had YES and NO but also got true and false later. You could swizzle but also you could have C++ features alongside Objective C for a while, for the ultimate in language law degrees. You got #include #import but also @import because hey, @ gave you random superpowers. You had protocol but later got NS versions of everything (like NSCopying) and then ARC bolted on and auto draining pools that worked some of the time.

Swift was much nicer and tried to go back to simplicity. It even helpfully renamed all your methods. But then it had things like exclamation points that you were never supposed to use, and a weird try/catch syntax that could crash your app anyway. And when Swift came out you also got YourApp-swift.h generated magically by XCode to bridge to Objective C, because of course you did. After all, you have to rely on XCode for so many things. Assets go in a special Package format, you see. They used to live on a Resource Fork but the filesystem got changed.

Apple’s class system is also a hodgepodge. You have NS from the good old days, you have Foundation framework, but then you also have a ton of others which duplicate some of the functionality.

But that’s just the start. You’ve got nib, make that xib, make that storyboards, and they are all different. You’ve got constraints of 10 different types but they don’t work as you’d expect with all the various tools. (Man I miss Visual Basic, that was 20-25 years ago!).

The buttons are tiny and functionality like dragging an IBOutlet are hard to discover when clicking does nothing. As a teenager I was on the Apple Human Interface Developers mailing list, and their Guidelines (anyone remember those?) said “no hidden modes”. Well, that is so quaint now, for the last 20 years the new Apple has violated all their HI Guidelines. Oh, and did I mention, you only had a couple page transitions, one of which was a curled page turn, and one was sliding up from the bottom — but sliding down from the top is just not a thing! Write it yourself! If you can.

But that’s not all. Not by a long shot. You have to work with CocoaPods as a package manager along with other ones, and put up with arcane error messages with each new OS version as things break because things that used to be OK are now not. And if that error comes from any of the hundreds of random build settings — good luck, buddy. Here is a video from an expert in the trenches … who is glad to discover someone else has been cataloguing all these build settings for years:

https://www.youtube.com/watch?v=xJLBTIWE-yQ&t=57s

No wonder Apple is trying to move towards an all-Swift future.

Did I mention Apple FORGOT TO RENEW THE CERTIFICATE ON ITS OWN MAC APP STORE — not once but twice?

I imagine it is better actually inside Apple. But hey, I worked inside Bloomberg and I can tell you, that codebase is … idiosyncratic to put it mildly. I guess it is like that inside many companies, but when you build a platform for developers to use, you need to make it clean and cut down on the number of concepts that have to be used, or at least make the concepts all consistent, like BSD.

On the bright side, Apple did usher in the Mac, the iPod, iPhone, Apple TV, many innovations. It did absorb NeXT, try to bridge with Darwin, change CPU architectures a bunch of times, make Grand Central Dispatch, create secure enclaves, and more. So we can give them a pass I guess as a company. But boy does their development ecosystem feel a lot of kludges that accumulated over the years!