Putting Concepts Into Boxes: A Survey of Packaging Systems and Patterns of Code Reuse
11-09, 19:50–20:10 (UTC), Room I

In the past 30 years or so of widespread code reuse, programming language communities have come up with various approaches to solving problems of code reuse. These efforts are often developed in isolation, leading to a divergence in concepts and terminology. What can we learn from one another? And how can we use this understanding to make better tools for managing software dependencies?


A native speaker of a language can communicate automatically without giving a second thought about how they do it. Likewise, a software developer who works exclusively in an ecosystem can be quite productive without really understanding how their code gets turned into programs.

When you learn another language, you gain completely different kind of understanding. You start to reason about concepts formally rather than intuitively. You discover that ideas that you took for granted in one may be radically different (or missing entirely) in another. You come away with knowledge of the new, a new perspective of the familiar, and an appreciation for the unknown.

In this talk, we'll take a look at the landscape of packaging systems. We'll attempt to identify and formalize concepts they share in common, and distinguish the incidental and inherent differences among them. By doing so, we hope to provide useful models for building tools within and across software ecosystems.

Mattt is a software engineer at GitHub working on the Swift package registry. He's the founder of NSHipster, a journal of the overlooked bits in Objective-C, Swift, and Cocoa. Previously, he worked at Apple as a technical writer, contributing to The Swift Programming Language, Swift Package Manager, and Swift.org.