Speakerline
Speakers
Proposals
Events
Tags
Edit a proposal
Adam Cuppy
Ahmed Omran
Alan Ridlehoover
Amit Zur
Andrew Mason
Andrew Nesbitt
Andy Andrea
Andy Croll
Arjun Sharda
Asia Hoe
Avdi Grimm
Ben Greenberg
Bhavani Ravi
Brandon Carlson
Brittany Martin
Caleb Thompson
Caren Chang
Chiu-Ki Chan
Christine Seeman
Claudio Baccigalupo
Cody Norman
Devon Estes
Eileen Uchitelle
Emily Giurleo
Emily Samp
Enrico Grillo
Espartaco Palma
Fito von Zastrow
Frances Coronel
Hilary Stohs-Krause
Jalem Raj Rohit
Jemma Issroff
Jenny Shih
Jim Remsik
Joel Chippindale
Justin Searls
Katrina Owen
Kevin Murphy
Kudakwashe Paradzayi
Kylie Stradley
Maeve Revels
Maryann Bell
Matt Bee
Mayra Lucia Navarro
Molly Struve
Nadia Odunayo
Nickolas Means
Noah Gibbs
Olivier Lacan
Ramón Huidobro
Richard Schneeman
Rizky Ariestiyansyah
Saron Yitbarek
Sean Moran-Richards
Shem Magnezi
Srushith Repakula
Stefanni Brasil
Stephanie Minn
Sweta Sanghavi
Syed Faraaz Ahmad
Tekin Suleyman
Thomas Carr
Tom Stuart
Ufuk Kayserilioglu
Valentino Stoll
Victoria Gonda
Vladimir Dementyev
Title
Tags (comma-separated, max 3)
Body
### Abstract As part of our adoption process of Sorbet at Shopify, we needed an automated way to teach Sorbet about our ~400 gem dependencies. We tackled this problem by generating a Ruby Interface file (RBI) for each gem using runtime reflection. Thus, the gem `tapioca` was born. With the recent addition of RBI generation for various DSLs, including Rails, Tapioca has become the perfect complement to Sorbet and is the exclusive tool used at Shopify for gradual type adoption. Come join us and see how Tapioca can make Sorbet taste even better, and how you can also start using it in your Sorbet recipes. ### Details The intended audience of the talk will be people who are thinking about adopting Sorbet in their codebases or have had problems with adoption before. The desired outcome of the talk will be to have empowered the listeners with a new tool to help them on their journey in gradual type adoption. Moreover, we aim to present some of the runtime reflection techniques that we have used to build the tool, which could be useful for a more general audience. A rough outline of the talk will be as follows: - **Intro**: The need for RBI file generation - Static analysis and Sorbet's limitation. - What happens when you depend on types from a gem. - What happens when you create methods at runtime. - RBI format and how it can solve these problems. - **Runtime Reflection**: Ruby reflection APIs - How do you do runtime reflection in Ruby. - How can you use that to generate RBIs for gems. - How can you use that to generate RBIs for DSLs. - **Tapioca**: All this built into Tapioca - How does the gem work. - How can you get started with Sorbet with ease. - Which DSLs are supported out of the box. - How can you add generators for your custom DSLs - **Conclusions and Takeaways** ### Pitch During our 1.5 year experience of adopting Sorbet at Shopify, we've realized that the biggest obstacles to adoption are gem definitions and dynamic methods. Since Sorbet does not analyze the codebase's gem dependencies it needs to be told about the types coming from gems. Moreover, since Sorbet is a static type-checker, it needs to be told about all the methods that are dynamically created at runtime by various DSLs (for example, all the attribute definitions in Active Record models, that don't even have any static artefacts in the codebase). This talk will present an overview of how we've solved these problems at Shopify and how we have shared it as an open-source project for the whole community to use and build upon. It will outline the obstacles new comers could face adopting Sorbet, and outline how they can be overcome using Tapioca. The speaker is the primary author of the open-source `tapioca` gem and has been leading the effort of gradual type adoption at Shopify.
Back to Speaker Directory