Droidcon2013 facebook stewart
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Droidcon2013 facebook stewart

on

  • 640 views

 

Statistics

Views

Total Views
640
Views on SlideShare
523
Embed Views
117

Actions

Likes
1
Downloads
9
Comments
0

1 Embed 117

http://de.droidcon.com 117

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Droidcon2013 facebook stewart Presentation Transcript

  • 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