According to Simon Whitaker, Facebook had to develop their own frameworks for iOS because Apple's couldn't take the heat

Sep 24, 2015 22:48 GMT  ·  By

My guess is that you haven't heard anyone saying that Apple's iOS frameworks and their Xcode integrated development environment aren't considered a viable solution for some company's infrastructure.

Fact is, though, that development tools and frameworks provided by Apple for iOS are usually enough for any development team to be able to deliver a working iOS app without the need for specially designed tools to finish the job.

However, Simon Whitaker, a London-based Facebook engineer, has a completely different view of exactly what Apple's development frameworks and IDE are capable of.

In his opinion, most of what Apple considers frameworks suitable for any iOS app are completely inadequate for the development team behind Facebook's iOS application.

As Whitaker stated in his presentation at iOS Dev UK 2015 (PDF link), Apple's Core Data, UIKit, and AutoLayout can't handle Facebook's scale, and the Facebook iOS development took it upon themselves to create their own frameworks to help them provide a smooth user experience to all iOS users who would install their app.

Simon goes on to say in his presentation that they replaced Core Data with Mem Models, an in-house created framework, UiKIt with the Facebook-made ComponentKit, and Apple's AutoLayout with AsyncDisplayKit.

The huge number of classes in Facebook's iOS app makes Xcode counterproductive

Moreover, to add insult to injury, Facebook isn't able to use Apple's Xcode IDE because their iOS app contains 18,000 classes, as discovered by a curious developer who did a binary class-dump on Facebook's iOS app.

Having so many classes is both the result of code duplication, with Facebook engineers from different teams working on the same problem, and because Facebook has to design their own solutions for problems solved by Apple with frameworks that don't scale very nicely when having to deal with Facebook's needs.

Getting back to Xcode, the huge number of classes in Facebook's iOS app renders Apple's IDE absolutely useless, because it takes Facebook's engineers ages to load them and compile a new build.

This is why Facebook has also designed their own IDE, called Nuclide and based on Github's Atom code editor.

We'll leave it to you to decide if the number of classes in Facebook's app is the reason why the tools Apple has designed for developing iOS applications are inadequate in Facebook's case, or if the actual reason behind it is a serious case of code cleanup amnesia.

Either way, Simon makes a strong case when describing in his iOS Dev UK 2015 presentation the challenges Facebook has faced using some of Apple's frameworks when building their iOS app.

If you've made up your own mind regarding this subject, leave us a word in the comments section below.

Facebook vs. iOS (3 Images)

The Facebook iOS app has 18,000 classes
X can't handle our scaleFacebook source control
Open gallery