Mobile @ Facebook - QConSF 2013

April 5, 2018 | Author: Anonymous | Category: Technology
Report this link


Description

1. Mobile @ FacebookChristian Legnitto ([email protected]) Mobile release engineering 2. Who is this guy? 3. Who is this guy? Facebook• Manage Mobile Release Engineering • I’m hiring • Run the iOS and Android releases • Ran Facebook.com web pushes for ~3 months 4. Who is this guy? Facebook• Manage Mobile Release Engineering • I’m hiring • Run the iOS and Android releases • Ran Facebook.com web pushes for ~3 monthsMozilla• Firefox release manager • Helped design & implement 6 week releases • Desktop ( 3 platforms ) & mobile ( Android ) • Still a community member 5. Who is this guy? Facebook• Manage Mobile Release Engineering • I’m hiring • Run the iOS and Android releases • Ran Facebook.com web pushes for ~3 monthsMozilla• Firefox release manager • Helped design & implement 6 week releases • Desktop ( 3 platforms ) & mobile ( Android ) • Still a community memberApple• Jaguar → Lion updates • OS X pre-release updates • Safari, Xcode, Java, iApps • Build system, scrubber, PM tools 6. 874,000,000 MAUs 507,000,000 DAUs 7. iPads & iPhones native & web supports iOS6+ 8. native & web+1M beta testerssupports Froyo+15 apks+20K alpha testers 9. How we USED to develop 10. Mobile core team owned mobile Desktop WebiOSGroup messagesGroup messagesGroup messagesChatMessages teamAndroidChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto picker.........Events team Photos team Android core team iOS core team 11. Doesn’t SCALE 12. Mobile core team owned mobile Desktop WebiOSGroup messagesGroup messagesGroup messagesChatMessages teamAndroidChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto pickerEvents team Photos team Android core team iOS core team 13. Mobile core team owned mobile Desktop WebEvents team Photos team Android core team iOS core teamGroup messagesGroup messagesGroup messagesChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albums20iOSChatMessages teamAndroidPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto picker10 30 20 20 14. Mobile core team owned mobile Desktop WebPhotos team Android core team iOS core team(numbers made up)Group messagesGroup messagesGroup messagesChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto albumsPhoto pickerEvents team20iOSChatMessages teamAndroidPhoto pickerPhoto picker10 30 20 20 15. Mobile core team owned mobile Desktop WebEvents team Photos team Android core team iOS core teamGroup messagesGroup messagesGroup messagesChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albums20iOSChatMessages teamAndroidPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto picker10 30 20 20 16. Mobile core team owned mobile Desktop WebPhotos team Android core team iOS core teamGroup messagesGroup messagesChatEvents teamiOSGroup messagesChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsMessages teamAndroidPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto picker10 30 20 2020 17. Mobile core team owned mobile Desktop WebiOSGroup messagesGroup messagesGroup messagesChatChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsMessages teamAndroidPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto pickerEvents team Photos team Android core team iOS core team30 20 2020 10 18. Mobile core team owned mobile Desktop WebiOSGroup messagesGroup messagesGroup messagesChatChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsMessages teamAndroidPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto pickerEvents team Photos team Android core team iOS core team20 2020 60 30 10 19. Mobile core team owned mobile Desktop WebiOSGroup messagesGroup messagesGroup messagesChatChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsMessages teamAndroidPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto picker20 60 30 1020Events team Photos team Android core team iOS core team20 20. Mobile core team owned mobile Desktop WebiOSGroup messagesGroup messagesGroup messagesChatMessages teamAndroidChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto picker20 60 30 102020Events team Photos team Android core team iOS core team 21. Doesn’t produce the BEST product 22. Mobile core team owned mobile Desktop WebiOSGroup messagesGroup messagesGroup messagesChatMessages teamAndroidChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto pickerEvents team Photos team Android core team iOS core team 23. Mobile core team owned mobile Desktop WebiOSGroup messagesGroup messagesGroup messagesChatMessages teamAndroidChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto pickerEvents team Photos team Android core team iOS core teamproduct experts 24. Mobile core team owned mobile Desktop WebiOSGroup messagesGroup messagesGroup messagesChatMessages teamAndroidChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto pickerEvents team Photos team Android core team iOS core teamproduct expertsplatform experts 25. How we USED to ship 26. Feature-based releases 27. Feature-based releasesDecide on features 28. Feature-based releasesDecide on features Furiously work on them 29. Feature-based releasesDecide on features Furiously work on them Test 30. Feature-based releasesDecide on features Furiously work on them Test Ship when all features are done 31. All features are PRIORITY #1 32. Decide on features Desktop Web Group messages Chat Upcoming events Birthdays Photo albums Photo picker... 33. Decide on features Desktop Web 1. Emoji 2. Green dot 3. Naming convosGroup messages Chat Upcoming events Birthdays Photo albums Photo picker... 34. Decide on features Desktop Web 1. Emoji 2. Green dot 3. Naming convosGroup messages1. Reply inline 2. Birthday reminder 3. Gifts integrationUpcoming eventsChatBirthdays Photo albums Photo picker... 35. Decide on features Desktop Web 1. Emoji 2. Green dot 3. Naming convosGroup messages1. Reply inline 2. Birthday reminder 3. Gifts integrationUpcoming events1. Automatic upload 2. Tag suggestions 3. Change cover photoChatBirthdays Photo albums Photo picker... 36. Decide on features Desktop WebAndroid1. Emoji 2. Green dot 3. Naming convosGroup messagesGroup messagesChatChat1. Reply inline 2. Birthday reminder 3. Gifts integrationUpcoming eventsUpcoming eventsBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto pickerPhoto picker......1. Automatic upload 2. Tag suggestions 3. Change cover photo 37. Decide on features Desktop WebAndroid1. Emoji 2. Green dot 3. Naming convosGroup messagesGroup messagesChatChat1. Reply inline 2. Birthday reminder 3. Gifts integrationUpcoming eventsUpcoming eventsBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto pickerPhoto picker......1. Automatic upload 2. Tag suggestions 3. Change cover photo1. Emoji 1. Reply inline 1. Automatic upload 38. Decide on features Desktop WebAndroid1. Emoji 2. Green dot 3. Naming convosGroup messagesGroup messagesChatChat1. Reply inline 2. Birthday reminder 3. Gifts integrationUpcoming eventsUpcoming eventsBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto pickerPhoto picker......1. Automatic upload 2. Tag suggestions 3. Change cover photo1. Emoji 1. Reply inline 1. Automatic upload 2. Green dot 2. Birthday reminder 2. Tag suggestions 39. Decide on features Desktop WebAndroid1. Emoji 2. Green dot 3. Naming convosGroup messagesGroup messagesChatChat1. Reply inline 2. Birthday reminder 3. Gifts integrationUpcoming eventsUpcoming eventsBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto pickerPhoto picker......1. Automatic upload 2. Tag suggestions 3. Change cover photo1. Emoji 1. Reply inline 1. Automatic upload 2. Green dot 2. Birthday reminder 2. Tag suggestions 3. Naming convos 3. Gifts integration 3. Change cover photo 40. The market and company CHANGES RAPIDLY 41. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker...1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo 42. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker...1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo 43. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker...1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo 44. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker...1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo 45. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker...1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo 46. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker...1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo 47. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker...1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo 48. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker...1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo 49. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker...1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo 50. Don’t know when code SHIPS 51. Feature-based releases Can’t judge risk vs reward 52. Feature-based releases Can’t judge risk vs reward80% done? 53. Feature-based releases Can’t judge risk vs reward80% done?Good enough 54. Confuses DEV and RELEASE 55. Development process Create the best product possible → Focus on improving 56. Development process Create the best product possible → Focus on improvingRelease process Ship finished work in a timely manner → Focus on not regressing 57. Took lessons learned from DESKTOP WEB and applied them to MOBILE 58. How we develop NOW 59. Old and busted Desktop WebiOSGroup messagesGroup messagesGroup messagesChatMessages teamAndroidChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto picker.........Events team Photos team Android core team iOS core team 60. New hotness Desktop WebiOSGroup messagesGroup messagesGroup messagesChatMessages teamAndroidChatChatUpcoming eventsUpcoming eventsUpcoming eventsBirthdaysBirthdaysBirthdaysPhoto albumsPhoto albumsPhoto albumsPhoto pickerPhoto pickerPhoto picker.........Events team Photos team Android core team iOS core team 61. Engineers committing mobile code iOS and Android 62. How we ship NOW 63. features quality schedule 64. features quality schedulepick 2 65. features quality schedulepick 2 66. Date-based releases Rule #1We ship on time 67. Date-based releases Rule #2Make users no worse off 68. Date-based releases Rule #3There’s always the next one 69. Date-based releases Rule #4Retreat to safety 70. tiv naAutomated cut every 4 weekse m ile ob4 weeks of development4 weeks of development master3.5 weeks of stabilization release branchRC 71. p to sk deAutomated cut every 1 weekw eb1 week of development1 week of development trunkStabilizeRelease branchrelease branchWeeklyTwice Daily 72. tiv naAutomated cut every 4 weekse m ile ob4 weeks of development4 weeks of development master3.5 weeks of stabilization release branchRC 73. tiv naDogfoodinge m ile obmasterrelease branch 74. How we write CODE 75. Source control Git>100,000 commits>150,000 files>300 engineers 76. Code review Phabricator 77. Continuous integration Buildbot BuildsLint / static analysisTestsFacebook i386Facebook armMessenger i386Messenger arm...regexclangandroidfindbugs...OCUnitsnapshotJUnitrobolectric...https://github.com/facebook/ios-snapshot-test-case 78. Continuous integration BuildbotBefore diffCreate diff(optional)(mandatory)Diff updated Landing queue (mandatory)(optional)Git commit (mandatory) 79. Continuous integration Mac minis 80. Android 81. Building & running tests Buck - build tool• • • •Fast•Distributed Cassandra build cache•buckd for background buildsScalable and extensible “buck clean is a bug” Android and generic Java support 82. Building & running tests Buck - build tool• • • •Fast•Distributed Cassandra build cache•buckd for background buildsScalable and extensible “buck clean is a bug” Android and generic Java support 83. Building & running tests Buck - build tool“Gerrit Code Review recently switched its build process from Maven to Buck, reducing build time by 67-98% while improving build reproducibility, maintainability and developer happiness. The Gerrit project migrated itself out of the Maven tarpit into a”better build.- Shawn Pearce (Google) 84. Building & running tests Buck - join us! Start using Buck: http://facebook.github.io/buck/ Get help in the discussion group: https://groups.google.com/forum/#!forum/buck-build File bugs and submit patches on GitHub: https://github.com/facebook/buck 85. iOS 86. Building & running tests xctool - build tool Makes iOS & Mac continuous integration easier. • CLI tool, runs tests just as Xcode.app would • Can parallelize test runs • Can emit JSON objects for every build/test event • Reporters for Phabricator, JUnit XML • Attractive, concise output 87. Building & running tests xctool - “pretty” reporter 88. Building & running tests xctool - “json-stream” reporter 89. Building & running tests xctool - how it works xctoolxcodebuildxcodebuild-shim.dylib Injectedotest (SenTestingKit)xctest (XCTest)test-shim.dylib Injectedtest-shim.dylib Injected 90. Building & running tests xctool - join us! On GitHub: github.com/facebook/xctool On Homebrew: brew install xctool Also available on Travis-CI 91. Crash reports atos 92. Crash reports atosl 93. Crash reports atoslgithub.com/facebook/atosl 94. Changed how we DEVELOP Changed how we SHIP Changed how we WRITE CODE Kept our CULTURE 95. Facebook is mobile Learn from our experience and use our tools 96. Links to mentioned awesomeness Contact me [email protected], https://fb.me/legnitto, @LegNeato http://github.com/facebook/buckXCToolhttp://github.com/facebook/xctoolatoslhttp://github.com/facebook/atoslSnapshot Test http://github.com/facebook/ios-snapshot-test-case 97. Mobile @ FacebookChristian Legnitto ([email protected]) Mobile release engineering


Comments

Copyright © 2024 UPDOCS Inc.