.plan-26-20: Putting OxCaml in a box and OCaml in orbit (again)

Consolidating my OCaml trees for easier OxCaml deployment, shipping native system packages for OxCaml which then got into space, and remembering Peter Neumann

I've had a heads-down week spent consolidating my OCaml trees (pun intended) so that deploying OxCaml is easier. We've started generating test TESSERA embeddings for a forthcoming v1.1 model using OxCaml and so it's quite important to get my monorepo under control.

1 OxCaml in a box

One concrete output comes from my investigations about how native system packages for OxCaml could work. I had to root around a bunch of instructions on various distro wikis to figure out how system packagers work these days, but now apt install oxcaml-compiler on Debian/Ubuntu, as well as the other commands for Fedora, Arch and Homebrew, all work from one installer script.

All this trouble is necessary because of how staggeringly complex adding relocatability to a build system is. The master of builds, David Allsopp, has been kindly assisting me as I explore this integration in oi. I'm almost ready to start talking about oi as this relocatability for oxcaml is the last thing on my list before a preview release!

2 OCaml in orbit, again

I've also been helping Thomas Gazagnaire with Borealis, the pure-OCaml CCSDS stack now flying in low earth orbit. It hit the front page of Hacker News mid-week, which is always fun.

OCaml running in space: the proof's in the VT220 console
OCaml running in space: the proof's in the VT220 console

I was quite surprised to see in the discussion that another group ran OCaml on the GHGSat satellites back in 2016:

OCaml was very much part of the GHG measurements. On the satellite it was controlling the cameras, acquiring the images, losslessly compressing them, encrypting them and transferring them to the platform controller using a clunky but mandated CSP-based file tranfer protocol. On the ground, OCaml was running almost the entire data processing chain, including spectroscopy, image corrections, retrievals and post-retrieval ad hoc bias corrections, as well as simulations.

I simply used an mmap()'d Bigarrays to do parallel processing (back then OCaml wasn't multi-core.) At a later stage I replaced a few bits of code (e.g. some sparse matrix routines) with Fortran. The only processing-related part that wasn't OCaml (besides the shells scripts to glue the things together) was the image alignment algorithm which was written by someone else in C++. I even had a job scheduling system written in OCaml.

-- rho-soul-kg-m3, HN, May 2026

So this turned into a nice chat on HN about many of the advances since OCaml 5.0 that make this sort of usecase much easier.

3 Digesting AI disclosure feedback

I also posted an update digesting the public and private feedback on my voluntary AI disclosure proposal from a few months ago.

I'm not entirely convinced myself this will see any adoption, but I felt I had to make the effort. I do believe that the three concrete steps I proposed might be useful (promoting maintenance-intent to a first-class opam field, better tooling for filtering/merging multiple opam repositories, and revisiting a vouching-based reputation system).

4 In memorium: Peter G. Neumann

I was extremely sad to hear that Peter passed on Sunday at the age of 93. I worked with him extensively in early days of CTSRD and MRC2 which funded a lot of our work on MirageOS. Peter was the loveliest, most supportive and eternally jolly collaborator, and visiting him in SRI was always joyful and quirky.

The NYT did a lovely obituary, and I'm going to spend some time finding secondary sources to refresh his Wikipedia page. If you have any good secondary sources you'd like included please do let me know!

References

[1]Madhavapeddy (2026). A Proposal for Voluntary AI Disclosure in OCaml Code. 10.59350/cxypn-ysv27
[2]Sivaramakrishnan et al (2020). Retrofitting parallelism onto OCaml. 10.1145/3408995