Type systems have long been used to enforce compile-time checks on data, to ensure greater program safety. But what happens when you have a distributed system? How easily can you define, and enforce, high-level abstractions and data types across multiple machines, processes, and languages? In this talk, David Renshaw describes Cap’n Proto, his system for describing such a type system. He also describes the type system in Rust, in which Cap’n Proto is implemented — and discusses how type systems can (and should) be used to encourage sharing of data, in a robust and predictable way.