~

Roadmap

Current Projects

Summary

The highest priority for the core team is to release a number of kernel and runtime projects that are in a completed or nearly completed state. Some of these projects had to be shelved due to the need to fix some severe user-facing issues. In addition to feature work, a large portion of dev time in 2022 was spent reducing kernel memory use and fixing bugs.

On the memory use front, "tombstoning" was added to Clay to allow files to be deleted, freeing their memory. Clay stopped storing diffs to files, switching to storing only snapshots of files. The Ford cache was made referentially transparent, enabling global deduplication of memory for Ford builds across multiple app desks. Space leaks in Ford where Clay state leaked into build results were plugged.

As for bug fixing, the "gall request queue fix", which involved major changes to Ames and Gall and a complex online migration, was the largest bugfixing project. Fixes were also deployed for Ames breach handling, Behn timers getting stuck, insecure "bail: meme" out-of-memory error handling, and stuck Azimuth PKI tracking.

The highest-priority project being worked on currently is the "agents-in-clay" work, which replaces the system the kernel uses to upgrade itself -- the new system is much simpler and more reliable. Once this is released, releasing other code will be less risky and can proceed faster.

Clearing the backlog of projects waiting to be released is the team's main goal for the next few months. Many of the other current projects, such as logging, Vere build system improvements, and userspace Kelvin shims, should increase release cadence in the future.

Along with process-oriented changes, work is also proceeding on projects relating to other goals: userspace permissions will be a major step forward in security, and the New Mars and solid-state publications projects are essential for network scaling.

~2022.1

Current

Doccords

"Doccords" are Hoon's version of docstrings: special code comments parsed into structured data that can be used to generate documentation programmatically.

~2022.12

Current

Agents in Clay

This project overhauls Arvo's upgrade system to make it simpler and more reliable. Since it moves the locus of control of agents from Gall to Clay, it's often referred to as the "Agents in Clay" project.

Current

Event Log Truncation

The event log grows indefinitely, using more disk space over time. Once event logs can be truncated, disk space can be reclaimed, using a roughly constant amount of disk space over time (the size of the Arvo snapshot, which grows much more slowly than the event log). Reducing disk space in this way is important for reducing cost and maintenance burden for running ships.

Current

Quick Boot

The "quick boot" project aims to bring initial Urbit boot time down from ~10 minutes to well under a minute.

~2023.1

Current

Pointer Compression: 8GB Loom

This project raises the amount of data the runtime can manage from 2GB to 8GB. It is the first phase of the Increase Runtime Data Capacity arc.

Current

Solid-State Publications

For scalability, basic solid-state publications are being prototyped. This is the next step after basic remote scry toward scalable data publishing on Urbit. These prototypes live in userspace; once we've proven the model with some real-world examples, we can build kernel support into Gall.

~2023.2

Current

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.

Current

Shims for Userspace Code Over Old Kelvins

As it stands, every Kelvin change breaks backward compatibility, requiring app devs to publish modified code so their users can keep the app running. This needs to happen less frequently over time, until eventually apps can be "write once, run forever."

Current

Improve Vere Build System

Experiments are being conducted to extract Vere from the monorepo into its own git repository and replace the current Nix build setup with a new one based on the Bazel build system.

~2023.3

Current

Logging

Adding a basic logging system to Urbit (probably logging to files as a first step, or maybe syslog) would reduce hosting costs, improve release cycle times, and reduce the amount of time it takes devs to debug live ships.

Current

Userspace Permissioning

Kernel and applications are both unprotected against malicious applications until userspace permissioning is added.

~2024.1

Current

New Mars

New Mars is an experimental rewrite of the Nock interpreter intended for much higher performance.