May-July roadmap for Linebender

Olivier Faure, June 17, 2024

On May 7 and 8, 2024, folks from the Linebender team went to the RustNL conference for two days, followed by two days of Unconference.

By that point, we all felt fairly exhausted, but because Raph is a cruel taskmaster since we wanted to use the opportunity we had, we came together in our hotel's conference room to discuss the Linebender project, and what we wanted from it.

We'd initially thought that this day would be an informal day of unstructured chatting about the ecosystem, but it fairly quickly turned into a semi-formal planning exercise, where we tried to figure out a roadmap for the next few months.

What follows is a comprehensive summary of what exactly we're planning to do. We've tried to focus on blockers, where a missing feature in one project is stalling progress on other projects, because those are the hardest barriers to coordination, and we wanted to take advantage of being in the same room together to knock them down.

This is a snapshot of the project status at the time we're writing this. It includes some work we already finished since RustNL, but will not be updated when further work finishes.

Vello

Robust dynamic memory

Reliable snapshot tests

Sparse strips

Add tests

Masonry

Complete text input

Better tracing for debugging

Fix glaring documentation problems

Finish repository port

Write "Widgets in Arena" RFC

Write "Pass order" RFC

Rewrite documentation

Improve focus handling

Improve pointer status handling

Parley

Create abstractions for text selection and editing

Inline block layout

Write adequate documentation

Software renderer

Xilem

Android bringup

Update repository layout.

Rework xilem_core to be compatible with Masonry backend

Write Documentation

Re-implement async integration

Add unit tests

Add basic benchmarks

AccessKit

Matt Campbell's contract with Google hasn't started yet. When it does, the top priority will likely be the Android backend.

The plan is to study existing Android accessibility implementations for non-Java toolkits, including Flutter, Chromium, and Gio, to get a better understanding of what's required to implement Android accessibility from scratch.

Beyond Android support, we've only had cursory discussions of what work Matt will do for the rest of the year. Possible themes include scrollable containers, virtualized lists, richer text support (e.g. exposing font and style attributes) across platforms, and better integration into Xilem/Masonry.

Android-specific work

Getting the Android port right involves a lot of small changes and making things feel non-broken.

Some notable sub-goals:

Subclassing View/Application/Activity

Handling IME

Gesture recognition

Conclusion

Whew! We have our work cut out for us there.

Overall, I'm feeling very optimistic about the coming months. In the weeks since we first drafted this roadmap, we've already made a lot of progress on our respective tasks (for instance Daniel is now running on what async experts call a "work-stealing" algorithm), so it does look like we'll meet our deadlines.

What comes after that is a bit hazier. Our three areas of focus are likely to be Android support, accessibility, and developer experience.

As we fill out gaps in our feature set, Xilem is moving towards its faraway goal: becoming a stable, mature framework for GUI applications. We're not GUI yet, but we certainly hope to be one day.

In the meantime, stay tuned!