Thomas Gazagnaire

Thomas Gazagnaire

Systems programmer in Paris. thomas@gazagnaire.org

I want software that keeps working for decades, and I believe better tools are what will make those systems last.

The first step is a better language. I have been using OCaml, a pragmatic functional language, and sometimes contributing to its compiler and ecosystem, for the past twenty years. Its strong types and memory safety remove whole classes of bugs before the code runs, and formal methods can then go after much of the rest: the more of them, the better (I wrote more about this in OCaml: memory safety and beyond).

The second is a better way to organise programs: as small, well-scoped libraries, some of them formally verified, shipping only the ones an application needs to keep its footprint small. That is the approach we took with MirageOS, which I co-created at the University of Cambridge: a library operating system that compiles OCaml applications into single-purpose unikernels, leaving out everything the application does not use. To manage its many libraries, I wrote a package manager for OCaml, opam, at OCamlPro in 2012, while preparing the first release of MirageOS. We co-founded Unikernel Systems to bring MirageOS to production, and Docker acquired the company in 2016. The MirageOS network stack now runs inside Docker Desktop on hundreds of millions of developer machines, and in Nitrokey's NetHSM, a hardware security module built on unikernels. Irmin, the Git-like distributed store that I lead, is one of those libraries.

The third is better developer tooling around the language: the build system, the editor support, the documentation and the tests. I have worked on several of these tools over the years, such as Alcotest for tests and mdx for documentation that compiles.

Today I run two companies built on these ideas. Tarides develops and maintains the OCaml platform (Dune, Merlin, odoc) and the opam ecosystem, including the CI systems that check every package submitted to opam. It also provides long-term support, training and consulting for teams building secure infrastructure. Parsimoni brings the same ideas to space: deploying payload software to a satellite still looks like deploying to a server in 2005, with hand-tuned images, bespoke toolchains and months of integration testing. Its product, SpaceOS, gives satellite payloads the Docker workflow, with unikernel images and a space protocol stack written in OCaml.

Before founding Tarides and Parsimoni, I held engineering and leadership roles at Docker, Citrix, OnApp and OCamlPro. My research background spans the University of Cambridge, Inria, ENS Lyon and ENS Rennes.

My code is on GitHub and Tangled.