Retrospective on the May-July roadmap

Daniel McNab, August 24, 2024

Linebender is an informal open-source organization working on various projects to advance the state of the art in GUI for the Rust programming language.

At the start of May, we created a roadmap for the following three months. We recently went through a process of analysing how well our progress was guided by the roadmap; this report summarises those results.

Vello (original)

Robust dynamic memory (original)

Reliable snapshot tests (original)

Sparse strips (original)

Add tests (original)

Progress beyond roadmap

We have also landed several important features which were not part of our planned roadmap. These include:

The stroke expansion paper documents a key part of Vello's pipeline. This was presented at ACM High Performance Graphics (HPG) 2024, placing 3rd Place in the Best Paper Award.

Masonry (original)

Complete text input (original)

Better tracing for debugging (original)

Fix glaring documentation problems (original)

Finish repository port (original)

Write “widgets in arena” RFC (original)

Write “pass order” RFC (original)

Rewrite documentation (original)

Improve focus handling (original)

Improve pointer status handling (original)

Progress beyond roadmap

Masonry is in a state of flux, however is starting to see a few exploratory users. To unblock these users, some additional important features were added outside of the roadmap, such as:

Parley (original)

Create abstractions for text selection and editing (original) ?

Inline block layout (original)

Write adequate documentation (original)

Software renderer (original)

Progress beyond roadmap

parley#56 added support for Emoji, which is used with the Vello PRs.

Recently the harfruzz project, a fork of rustybuzz to be integrated fully with fontations, has emerged as an extremely promising direction for text shaping for the Rust ecosystem. We plan to use it as the basis for text layout.

Xilem (original)

Android bringup (original)

Update repository layout (original)

Rework xilem_core to be compatible with Masonry backend (original)

Write documentation (original)

Re-implement async integration (original)

Add unit tests (original)

Add basic benchmarks (original)

Progress beyond roadmap

Xilem has also seen some very useful changes not tracked above, including many community contributions. Some highlights of these contributions are:

There has also been lots of really good progress on Xilem Web, but we do not roadmap Xilem Web and so we do not cover that progress here.

AccessKit (original)

Matt Campbell's work on AccessKit has begun, and a proof-of-concept Android adapter is in progress.

At the time of writing there is not a permanent link to this work, but it can be seen in the android-basics branch.

Android specific work (original)

Subclassing View/Application/Activity (original)

Handling IME (original)

Gesture recognition (original)

Conclusions

Overall, the roadmap provided a useful guide of what to work on, and we have implemented many of the most important features from it. One clear recurring issue is documentation - even where we have chosen to roadmap this, we have made little progress. Similar concerns are clear for testing in Xilem, although we have laid some important groundwork there. We firmly recognise the role of documentation as an aid to onboarding, which is becoming more important as we work towards alpha releases. I believe that we can make good progress in this area before the end of 2024.