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.
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.
Breadth-First Arvo Move Order
Switching from Arvo's current "depth-first" move order to "breadth-first" intends to improve the reliability of parts of the kernel, including upgrades and breach handling, by switching to chronological ordering of intra-event delivery of moves to vanes.
Jet Dashboard Experiments
Experimenting with different designs for the jet dashboard could improve performance, security, and general simplicity of the codebase.
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.
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.
Automatic Error Handling on Replay
If Vere hits a nondeterministic error on replay, it should retry instead of giving up and crashing.
Automatic Memory Pack/Trim/Meld
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.
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.
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.
Refactor Ames Vane
The Ames vane could be shorter, easier to read, more performant, and easier to prove correct.
Urbit's timer system could be better in several ways.
Vere Error Handling
There are a number of places where Vere crashes where it should instead handle the error and continue.
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.