droidcon2013 facebook stewart

27
Simon Stewart [email protected] github.com/shs96c @shs96c Building Facebook for Android 1

Upload: droidcon-berlin

Post on 09-May-2015

377 views

Category:

Technology


0 download

TRANSCRIPT

Page 2: Droidcon2013 facebook stewart

Mid !"#!: becoming native▪ “We were never able to get the quality that we wanted. Looking back, that’s probably

one of the biggest if not the biggest mistake [we made]”

http://www.flickr.com/photos/anandham/4499539060/2

Page 3: Droidcon2013 facebook stewart

Engineers committing mobile code

3

Page 4: Droidcon2013 facebook stewart

(but there are spoons)

There is no Android team

4

Page 5: Droidcon2013 facebook stewart

A developer’s day

5

Page 6: Droidcon2013 facebook stewart

Build

6

Page 7: Droidcon2013 facebook stewart

The working copy▪ We use git for source control

▪ Two branches we care about day-to-day:

▪ master

▪ stable

7

Page 8: Droidcon2013 facebook stewart

How the code is organized

Text

http://www.flickr.com/photos/darwinbell/3030214710/

8

Page 9: Droidcon2013 facebook stewart

▪ 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~!

▪ arc diff

9

Page 10: Droidcon2013 facebook stewart

Dependency injection

http://www.flickr.com/photos/31246066@N04/5253179784/

10

Page 11: Droidcon2013 facebook stewart

Test

11

Page 12: Droidcon2013 facebook stewart

Developers write tests

12

Page 13: Droidcon2013 facebook stewart

Unit tests

http://www.flickr.com/photos/aracelota/4773084433/

13

Page 14: Droidcon2013 facebook stewart

Larger tests

http://www.flickr.com/photos/amphalon/6510474165/

14

Page 15: Droidcon2013 facebook stewart

Commit

15

Page 16: Droidcon2013 facebook stewart

Code review▪ arc diff

16

Page 17: Droidcon2013 facebook stewart

Image macros

17

Page 18: Droidcon2013 facebook stewart

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 tree

18

Page 19: Droidcon2013 facebook stewart

Buildbot

19

Page 20: Droidcon2013 facebook stewart

Dogfood

20

Page 21: Droidcon2013 facebook stewart

Gingerbread▪ Still incredibly popular.

▪ Some employees use a Gingerbread device

▪ Including our release manager

21

Page 22: Droidcon2013 facebook stewart

Updates▪ Employees use more recent version of the apps

▪ Rage shake to report bugs

http://www.flickr.com/photos/raindrift/7095238893/in/set-72157629492908038

22

Page 23: Droidcon2013 facebook stewart

Release

23

Page 24: Droidcon2013 facebook stewart

Pick two

Features, quality, schedule

24

Page 25: Droidcon2013 facebook stewart

Time based releases

Text

http://www.flickr.com/photos/andyhay/6947688734/

25

Page 26: Droidcon2013 facebook stewart

“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 review

26

Page 27: Droidcon2013 facebook stewart

Questions?

27