Presented by

  • Anthony Sorace

    Anthony Sorace
    @a@pdx.social @In 2026? Nope.
    http://a.9srv.net

    Anthony is some sort of engineer. Professionally, his work has focused on system architecture and process analysis, looking at how people can use computers to solve (some of) their problems. On the side, he enjoys messing about with networking, databases, and systems software, largely in the Plan 9 alternate universe. He is a slightly reluctant web programmer but an enthusiastic cook. Unix warped his mind at a young age and he has been using Plan 9 since the late nineteen hundreds, a few weeks before starting a job at Bell Labs working with related technology. He currently serves as a director of the Plan 9 Foundation, a non-profit dedicated to advancing research and education on lightweight distributed systems using these technologies.

Abstract

Development in Plan 9 follows a very traditional workflow, with most software written in C and compilation driven by mk, a make-like tool. But, like the rest of the system, the development environment was written from scratch, providing the opportunity to make different choices throughout the environment. Everything from the naming of the compilers to system conventions for where binaries and libraries are stored was re-evaluated with the networked and heterogeneous nature of Plan 9 in mind. This has provided a number of affordances that are still uncommon in other systems.

In particular, building software on Plan 9 across architectures, from ‘cat’ to the kernel, typically involves setting a single environment variable, then building like normal. The entire userspace system can be rebuilt across architectures this way, with a single command; one server can build the kernels for all supported architectures.

As something of a case study, we’ll look at how the go toolchain has applied these lessons, well outside the Plan 9 world, to make building across both operating systems and architectures surprisingly easy. We’ll also look at an ongoing project to make the Plan 9 development toolchain available in other environments.

The hope of this talk is that folks working on newer toolchains, particularly for newer environments, might be able to productively apply these ideas and make development more pleasant for everyone.