class: center, middle # Application Services Overview 🦀 📱 💻 ## Providing cross-platform component for Mozilla's products ##### By Tarik Eshaq --- # Agenda 📓 - Quick overview of **why** Application Services was created ❓ - What Application Services is - How we ship to our different consumers - An overview of the repository - Some successes we've seen with Application Services - A demo of how shipping a feature in application services --- class: center, middle # Why ❓ --- class: center, middle # Why ❓ - Shipping a consistent experience across products is a hard problem --- class: center, middle # Why ❓ - Shipping a consistent experience across products is a hard problem - Mozilla has various products, and is expecting more on the way --- # Why ❓ ## Sync as a case study ### Before: - Sync used to have 3 implementations - iOS - Android - Desktop --- # Why ❓ ## Sync as a case study ### Before: - Sync used to have 3 implementations - iOS - Android - Desktop - It was difficult to maintain - Difficult to implement new syncable features - It was duplicated code that did the same thing --- class: center, middle # Application Services 🦀 ## Collection of cross-platform Rust components --- # Application Services 🦀 ## Goals - Define shared complex business logic once - Provide consumers with an idiomatic experience in their own native language - Minimal overhead --- # Application Services 🦀 ## How it works <p align="center"> <img src="https://docs.google.com/drawings/d/e/2PACX-1vQ_h_4rKfY2k7XXXNEW8rpts0uePO47XNMjn9nYAxjfuzSirhkjCLNujCOcSNptO8hGVEVSxnyN7PRo/pub?w=2000&h=380"> </p> --- # Application Services 🦀 ## How it works <p align="center"> <img src="https://docs.google.com/drawings/d/e/2PACX-1vQR7OIsbiRoQxw5vNdhVUN4_ndMhBQ4omCyrsO3HWFsveCNxAa1TnwnKwQ2PPFg9jOe0OZRwavdirzN/pub?w=2000&h=380"> </p> --- # Application Services 🦀 ## How it works <p align="center"> <img src="https://docs.google.com/drawings/d/e/2PACX-1vRdaFMv0DWbSy9cEDUOwSWj1Y2lBkkAH6oyPOwxb8EVwPg8bYCkRKCE9mDQ9PNKeRORbTU2yZeA2UtG/pub?w=2000&h=380"> </p> --- # Application Services 🦀 ## How it works <p align="center"> <img src="https://docs.google.com/drawings/d/e/2PACX-1vQEZca8cL9sbxtonEloS1osSwGu1lYp2k6ArZroSt9_UwYIwQTWdJ78earVCRkeAJP_qRpmre7JjjPc/pub?w=2000&h=380"> </p> --- # Application Services 🦀 ## How it works <p align="center"> <img src="https://docs.google.com/drawings/d/e/2PACX-1vTUVAWktk9XhXrPT4MXQQtn4AWYEs80haCmF2BK5yVE-ho19Be4jf9DEUvg2odQ_b25jM7wjZyL1iMJ/pub?w=2000&h=380"> </p> --- # Application Services 🦀 ## How it works <p align="center"> <img src="https://docs.google.com/drawings/d/e/2PACX-1vRgldu_JCP6R3727G0q0CUY13x8xtsjv1xAAL3wA5Zz2Sl4KHPj6fxd-hzi7SM50A4rMOpGDOpPGWJs/pub?w=2000&h=380"> </p> --- class: center, middle # Application Services 🦀 ## How we ship it --- # How we ship in iOS 🦀 <p align="center"> <img src="https://docs.google.com/drawings/d/e/2PACX-1vQ935T92RPUI1pc1CseczWlzg5wmflR9rwf88IH7q1fEiRbnf60Z7YEvacCTGZegBnfYfas7_Il-XKN/pub?w=2000&h=500"> </p> --- # How we ship in Android 🦀 <p align="center"> <img src="https://docs.google.com/drawings/d/e/2PACX-1vSMOA9RnDguhwClbOf94jZpXUPVvcDqEcjtJxYbJWjvZ9_oF0cqaqb3LGhZD6fnpD5_ZjB8r564MT5e/pub?w=2000&h=500"> </p> --- # How we ship in Desktop 🦀 <p align="center"> <img src="https://docs.google.com/drawings/d/e/2PACX-1vScO4WOq4BBxOCNO7mfoNqiPsMZj4ITb_JDe9oE-qfy2T2579U-A-ukG1RT68yePSDOjI4es41y8hPl/pub?w=2000&h=500"> </p> --- class: center, middle # Repository Overview 🦀 🐙 --- class: center, middle # Successes (so far!) 🦀 --- # Successes (so far!) 🦀 - Both **Firefox iOS and Firefox Android** use application services for **all** of their storage and sync of syncable components - Tabs syncing is now shared across **all three Firefox browsers** - All of **Firefox iOS, Focus iOS, Firefox Android, and Focus Android** use the application-services Nimbus implementation --- class: center, middle # Demo 🦀 ## Ship a feature to multiple platforms by starting it in application services --- # Demo 🦀 - What if we can ship an experimental, cross-product experience? - What if we can measure impact of an experiment on one product, on our other products? --- # Demo 🦀 - What if Nimbus can Sync its enrolments? --- class: center, middle # Thank you 🙏 --- class: center, middle # Questions ❓