Droidcon2013 facebook stewart

Uploaded on


  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Simon Stewartsimons@fb.comgithub.com/shs96c@shs96cBuilding Facebook for Android1
  • 2. Mid 2012: becoming native▪ “We were never able to get the quality that we wanted. Looking back, that’s probablyone of the biggest if not the biggest mistake [we made]”http://www.flickr.com/photos/anandham/4499539060/2
  • 3. Engineers committing mobile code3
  • 4. (but there are spoons)There is no Android team4
  • 5. A developer’s day5
  • 6. Build6
  • 7. The working copy▪ We use git for source control▪ Two branches we care about day-to-day:▪ master▪ stable7
  • 8. How the code is organizedTexthttp://www.flickr.com/photos/darwinbell/3030214710/8
  • 9. ▪ git checkout -b fancy_feature▪ hack, hack, hack▪ git commit -am ‘Fancy new feature’▪ git rebase origin/stable▪ hack, hack, hack,▪ git commit -am ‘checkpoint’▪ git rebase -i HEAD~2▪ arc diff9
  • 10. Dependency injectionhttp://www.flickr.com/photos/31246066@N04/5253179784/10
  • 11. Test11
  • 12. Developers write tests12
  • 13. Unit testshttp://www.flickr.com/photos/aracelota/4773084433/13
  • 14. Larger testshttp://www.flickr.com/photos/amphalon/6510474165/14
  • 15. Commit15
  • 16. Code review▪ arc diff16
  • 17. Image macros17
  • 18. Arcanist▪ The command line counterpart to Phabricator▪ arc lint▪ Runs Android’s own lint tool▪ Checks for common errors:▪ Null pointers▪ Using APIs unavailable in all supported Android versions▪ arc land▪ Pushes code into the tree18
  • 19. Buildbot19
  • 20. Dogfood20
  • 21. Gingerbread▪ Still incredibly popular.▪ Some employees use a Gingerbread device▪ Including our release manager21
  • 22. Updates▪ Employees use more recent version of the apps▪ Rage shake to report bugshttp://www.flickr.com/photos/raindrift/7095238893/in/set-7215762949290803822
  • 23. Release23
  • 24. Pick twoFeatures, quality, schedule24
  • 25. Time based releasesTexthttp://www.flickr.com/photos/andyhay/6947688734/25
  • 26. “Done” isn’t just native code▪ Design▪ Release branch doesn’t take design changes, implies work isn’t quite ready▪ Logging▪ How do we know we aren’t regressing without data?▪ Server-Side▪ We need to test the interactions our users will see▪ Privacy and Legal review▪ Just as important as code review26
  • 27. Questions?27