What's in a name(space)?
10-27, 08:40–09:05 (Europe/Berlin), Main stage

The one feature every packaging system must have is naming: every package needs an identifier. The naïve approach when designing a new packaging system is to set up a flat namespace. After all, it's simple, and even if you just allow six A-Z characters, that's over 300 million possible names. But how does this work in practice?


This talk surveys existing package management systems in a number of common language ecosystems, including Python, Node, Go, PHP, .NET, and Rust, to investigate how package naming and identification schemes have evolved over time, and how they shape how package creators and users interact with different packaging systems.

The pros and cons of the various approaches in these ecosystems will be demonstrated to help inform maintainers of existing package systems and future creators of new package systems when it's time to choose a naming scheme.

Spoiler: there isn't a single answer that will work for everyone. However, being aware of the pros and cons in advance can help make early decisions, and being aware of the evolution of systems in practice can help decide what future expansion possibilities should be left available.

Adam is a software developer who has worked on a number of interesting and occasionally even useful things in his two decade career. These include prototyping the worst mesh network of all time (based on Android phones), discovering how to reliably lock up a Windows computer by writing an in-browser video editor, and (most usefully) removing the original mysql_* API from PHP.

Today he works for the Rust Foundation to help improve ecosystem security. In his spare time, he plays cricket, kayaks, throws tennis balls for his golden retriever, and tries to convince people that his Australian accent is actually flawless Canadian.