Simon Stewartsimons@fb.comgithub.com/shs96c@shs96cBuilding Facebook for Android1
Mid 2012: becoming native▪ “We were never able to get the quality that we wanted. Looking back, that’s probablyone of the ...
Engineers committing mobile code3
(but there are spoons)There is no Android team4
A developer’s day5
Build6
The working copy▪ We use git for source control▪ Two branches we care about day-to-day:▪ master▪ stable7
How the code is organizedTexthttp://www.flickr.com/photos/darwinbell/3030214710/8
▪ git checkout -b fancy_feature▪ hack, hack, hack▪ git commit -am ‘Fancy new feature’▪ git rebase origin/stable▪ hack, hac...
Dependency injectionhttp://www.flickr.com/photos/31246066@N04/5253179784/10
Test11
Developers write tests12
Unit testshttp://www.flickr.com/photos/aracelota/4773084433/13
Larger testshttp://www.flickr.com/photos/amphalon/6510474165/14
Commit15
Code review▪ arc diff16
Image macros17
Arcanist▪ The command line counterpart to Phabricator▪ arc lint▪ Runs Android’s own lint tool▪ Checks for common errors:▪ ...
Buildbot19
Dogfood20
Gingerbread▪ Still incredibly popular.▪ Some employees use a Gingerbread device▪ Including our release manager21
Updates▪ Employees use more recent version of the apps▪ Rage shake to report bugshttp://www.flickr.com/photos/raindrift/709...
Release23
Pick twoFeatures, quality, schedule24
Time based releasesTexthttp://www.flickr.com/photos/andyhay/6947688734/25
“Done” isn’t just native code▪ Design▪ Release branch doesn’t take design changes, implies work isn’t quite ready▪ Logging...
Questions?27
Upcoming SlideShare
Loading in...5
×

Droidcon2013 facebook stewart

386

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
386
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Droidcon2013 facebook stewart

  1. 1. Simon Stewartsimons@fb.comgithub.com/shs96c@shs96cBuilding Facebook for Android1
  2. 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. 3. Engineers committing mobile code3
  4. 4. (but there are spoons)There is no Android team4
  5. 5. A developer’s day5
  6. 6. Build6
  7. 7. The working copy▪ We use git for source control▪ Two branches we care about day-to-day:▪ master▪ stable7
  8. 8. How the code is organizedTexthttp://www.flickr.com/photos/darwinbell/3030214710/8
  9. 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. 10. Dependency injectionhttp://www.flickr.com/photos/31246066@N04/5253179784/10
  11. 11. Test11
  12. 12. Developers write tests12
  13. 13. Unit testshttp://www.flickr.com/photos/aracelota/4773084433/13
  14. 14. Larger testshttp://www.flickr.com/photos/amphalon/6510474165/14
  15. 15. Commit15
  16. 16. Code review▪ arc diff16
  17. 17. Image macros17
  18. 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. 19. Buildbot19
  20. 20. Dogfood20
  21. 21. Gingerbread▪ Still incredibly popular.▪ Some employees use a Gingerbread device▪ Including our release manager21
  22. 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. 23. Release23
  24. 24. Pick twoFeatures, quality, schedule24
  25. 25. Time based releasesTexthttp://www.flickr.com/photos/andyhay/6947688734/25
  26. 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. 27. Questions?27
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×