Quellish is an iOS developer who writes on Objective-C and Cocoa, best known for analyzing why the Facebook iOS app is so large.
HN commenters cite his post on the Facebook iOS app, with its roughly 18,000 classes, as evidence of bloated app engineering at Facebook.
I've seen that shit happen on devices with >4GB of RAM. The fact that opening the bank's 2FA app can be enough to destroy the session of the app requesting payment is telling a few things:
a) phone manufacturers play ridiculous games when it comes to hiding that their SoCs are dogshit
b) so. many. apps. just outright suck at testing because they test their apps in emulators where there isn't Facebook and tons of other background crap running and thus never test their implementation of the "application is about to be killed off for lack of resources, save state to persistent storage" code path.
c) Facebook plain sucks. Their iOS app [1] and their android app [2] are both ridiculously bloated and that has led to problems well over a decade ago, and it hasn't gotten better.
d) Advertising, tracking, data mining and other spyware SDKs are just as bad as Facebook. The amount of code and RAM that each application carries just for this crap is insane, partially made worse by neither iOS nor Android supporting code deduplication and shared libraries.
[1] https://quellish.tumblr.com/post/126712999812/how-on-earth-the-facebook-ios-application-is-so
[2] https://news.ycombinator.com/item?id=28533119
Some of FB's ~18,000 Obj-C header files from a post linked in the article: [1]
* FBFeedAwesomizerProfileListCardViewControllerListenerAnnouncer.h
* FBBoostedComponentCreateInputDataCreativeObjectStorySpecLinkDataCallToActionValue.h
* FBEventUpdateNotificationSubscriptionLevelMutationOptimisticPayloadFactoryProtocol-Protocol.h
* FBGroupUpdateRequestToJoinSubscriptionLevelMutationOptimisticPayloadFactoryProtocol-Protocol.h
* FBMemReactionAcornSportsContentSettingsSetShouldNotPushNotificationsResponsePayloadBuilder.h
* FBProfileSetEventsCalendarSubscriptionStatusInputDataContextEventActionHistory.h
* FBReactionUnitUserSettingsDisableUnitTypeMutationOptimisticPayloadFactoryProtocol-Protocol.h
oh my god
[1]: http://quellish.tumblr.com/post/126712999812/how-on-earth-the-facebook-ios-application-is-so
Remember when reached the limit for __TEXT and had to put code in sections that weren’t really meant for it: https://blog.timac.org/2016/1018-analysis-of-the-facebook-app-for-ios/?
Remember when they were taking to long to start up that they pulled stuff into a separate framework just so they could meet launch deadlines: https://blog.timac.org/2017/0410-analysis-of-the-facebook-app-for-ios-v-87-0/?
Remember when the app had 18,000 Objective-C classes: https://quellish.tumblr.com/post/126712999812/how-on-earth-the-facebook-ios-application-is-so?
Facebook’s teams somehow cannot manage their bloat and they keep hiring people to hack the platform they're running on rather than fixing the actual underlying problem.
This is the company that bragged about having 18,000 classes for their iOS app [1] and having to patch the Dalvik Virtual Machine to support new features in their Android app [2]; they are not infallible.
[1] http://quellish.tumblr.com/post/126712999812/how-on-earth-the-facebook-ios-application-is-so
[2] https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920/
> I’m skeptical of the value in doing this.
Its Meta. They have enough money to spare not to need to worry too much about whether there is a good RoI on rewriting some mobile apps.
I very much doubt FB's mobile apps are written for any sort of efficiency, (either in engineering or financial terms) - 18,000 classes in the apple one! https://quellish.tumblr.com/post/126712999812/how-on-earth-the-facebook-ios-application-is-so
I think Facebook has very poor engineering culture. They built their iOS app with 18k classes, then claim that iOS and Git can't handle their 'scale'.
Let's avoid putting here obvious companies and companies who over-engineer, maybe?
http://quellish.tumblr.com/post/126712999812/how-on-earth-the-facebook-ios-application-is-so
https://www.reddit.com/r/programming/comments/3m5n2n/facebook_engineer_ios_cant_handle_our_scale/