Summary
An Urbit ship should maintain itself so that a user does not need to intervene to keep it running properly. In order for this to be true, the ship needs to be reliable, handle upgrades properly, and manage its resources (e.g. RAM and disk space) efficiently.
Projects
Completed
Ames Bug Fixing
Multiple bugs were introduced by a major release in mid-2022, called the "gall
request queue fix". `~norsyr-torryn` is fixing these bugs.
Completed
Epoch System
Chunk Event Log into Epochs
Completed
Refactor Ames Vane
The Ames vane could be shorter, easier to read, more performant, and easier to prove correct.
Current
Breadth-First Arvo Move Order
Ensures chronological move processing order, allows for a new concept of simultaneity among vane activations, and should be easier to reason about than depth-first move processing.
Future
Arvo/Vere Error Handling
There are a number of cases where Arvo can crash in a way where it gets into an inconsistent state (e.g. Clay does not always handle Ames crashes properly) or gets stuck on something and fails to continue to make progress.
Future
Automatic Binary Upgrades
Arvo updates itself over the air, but current Vere does not. We should let the binary update itself by downloading a new version and replacing itself with that, instead of forcing the user to run terminal commands to stay up to date.
Future
Automatic Error Handling on Replay
If Vere hits a nondeterministic error on replay, it should retry instead of giving up and crashing.
Future
Automatic Memory Pack/Trim/Meld
Future
Better Arvo/Vere Version Negotiation
Improving the Arvo/Vere version negotiation will increase release rate by reducing the amount of work it takes to release a new Kelvin version.
Future
Clay Sync Error Handling
The filesystem I/O driver doesn't handle filesystem errors properly, which can cause desynchronization between Unix and Clay. Fixing this would improve developer experience and general reliability.
Future
Mars/Urth Split
Move event log management into the same Unix process that manages
snapshots.
Future
Add +on-rift or Similar For Userspace Breach Handling
Applications often have bugs when a peer breaches. Modifying the userspace/kernelspace API to give Gall agents clearer information about breaches should improve application reliability and developer experience.
Future
Timer Improvements
Urbit's timer system could be better in several ways.
Future
Vere Error Handling
There are a number of places where Vere crashes where it should instead handle the error and continue.
Future
Versioned Pokes and Subscriptions
Standardizing application protocol versioning in the kernel should improve developer experience and lead to more applications behaving correctly across upgrades, thereby improving user experience too.