orib.dev: The First 9front Hackathon

The first 9front hackathon is over.

Over the week of Aug 5th, a group of 10 developers descended on Malaga to work on 9front, hang out in the pool, and enjoy beer and friends.

This is the hackathon where we rewrote history. k0ga deleted the several hundred lines of quirky C that implemented the file history command, and replaced it with a small shell script that did the same job better.

One major project was scalability, implementing a patch that moved us away from preallocated processes, and towards lazily allocated processes. The main data structures should scale fine now up to a few million procs, but we rapidly run into bottlenecks. The first bottleneck was timers, which are currently in a sorted list. This works fine for a small number of sleeping processes and timeouts, but falls flat on its face around 20-30 thousand concurrent sleeps. I played with a few timer algorithms, and eventually settled on prototyping a timer wheel. Work is underway to get that into the kernel.

There was also a bunch of progress on the ktrans IME, adding /dev/kbtap to rio to allow inserting a filter to input. This allows not only better input methods, but also things like keyboard shortcut handlers, as-you-type spellchecking, and other neat toys, demos, and tools.

Hardware support for various bits of hardware improved. The MNT reform improved greatly, with power management, lcd brightness, and sensor support. Some miscellanious wireless and wired ethernet cards were fixed. A good deal of progress was made on Intel graphics drivers, with output showing up on a number of cards that were previously unsupported or broken. Crashes in the VGA mode setting were solved, and the code cleaned up.

Several fixes to dtracy were added, including fixing aggregates in traces, and making the timers useful for profiling. Several other fixes and code cleanups were started, including giving processes a tag that persists across fork, in order to allow tracing an entire set of process heirarchies.

Some documentation was sketched out about the more obscure parts of our security model and how to best use it, and some experimentation was done around better locking the system down by default.

A good deal of retrocomputing software was ported, including a PDP11 emulator and a version of MacLisp.

Some straggling patches were discussed, reviewed, cleaned up, and landed, including support for DKIM in our mail server, splitting mailboxes, path changes for the 'src' command, and a few others. Others, like the rsc rc patches, had their future decided.

As expected, there was pontificating about the next version of 9p, and how to make it handle latency better. Ideas were floated and rejected, and the difficulties were explored. While no solid conclusions were reached, there are a few things we know are essential to the making the next version better. In parallel, while this will not increase the latency tolerance of 9p, there were some solid ideas to explore around making things more cachable, including walks and directory listings.

But this wasn't the only set of ideas that was discussed. Lots of thought was put into the directions to go with VMX and Unix integration,

As all of this was going on, little comfort of life tweaks were added, and small rough spots were smoothed out and sanded down.

All in all, a good time was had by everyone that attended. We'll do another.

Thanks to all the people who came, and to all the people who didn't come but sent money to support this!