Facebook Paper - what 3rd party libraries are used for what parts of the app?

animation, facebook, ios, iphone, objective-c

Solution

Quote from an engineer working on paper:

The engineering complexity here is finding a way to fully utilize the multicore architecture of newer iPhones on top of the UIKit framework which has no support for multithreading. Significant work went into creating a framework for doing rendering work on multiple threads, and we spent a long time finding the balance between performance and complexity.

Full length article here: http://www.quora.com/Facebook-Launches-Paper-January-2014/What-was-it-like-to-help-develop-Paper/answer/Jason-Barrett-Prado?srid=iaDC&share=1

Problem

I just download Facebook Paper app for iOS. There's a lot of great stuff in this app, specifically animation wise. It runs smooth as butter for me too - some really great stuff going on behind the scenes evidently. What I'd like to know is what libraries are used for which features of the app (3rd parties libraries used are listed below. There's a truckload of them). Basically, how did they get it looking and working as well as it does - which of these libraries can I use to do the same? Since this is a pretty broad question, specifically I'd like to know about animations - fold, swipe down, tap on a settings section, tap an icon. Was a third party library used - how did Facebook achieve the smoothness and complexity of animations that are there? All 3rd party libraries from Facebook paper are listed below. ``` ACE Appirater Reachability AQGridView bitvect Boost Breadcrumb breakpad Chromium CocoaHTTPServer CocoaLumberjack DCRoundSwitch DTCoreText EGODatabase expat FFT by Mark Oleson FFT by Takuya Ooura gh-kit gh-unit Google Toolbox for Mac google-web-toolkit gtest gyp IEEE 754r Half Precision floating... HPGrowingTextView InAppSettingsKit ios5-cookbook ios-8601-parser-unparser jqueryjs JSONKit leveldb LibComponentLogging-Core LibComponentLogging-NSLog libjingle libjpeg-turbo libjpeg libPhoneNumber-iOS libphonenumber libsrtp libvpx libyuv llvmreturn MAZeroingWeakRef minizip mizpanel-iphone mosquitto MessagePack Objective C Imple... MessagePack msinttypes OpenCV Tutorials nimbus NJKWebViewProgress unmodified objc4 ObjQREncoder OCHamcrest OCMock OCPDFGen OmniGroup OmniUI OpenSSL OpenUDID opus peertalk PhotoScroller PHP PLCrashReporter pmtk3 Pocket-ObjC-SDK portaudio protobuf PSTCollectionView SUtilities RestKit Ring Buffer Utility SDURLCache SDWebImage SOCKit SPDY-for-iPhone spdylay spreadsort ssziparchive TDOauth tiqr UAModalPanel webkit webp webrtc WebViewJavascriptBridge XMLReader yaml-cpp yasm zlib zxing ```

Original source