-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create draft for Unconference report #53
Merged
Merged
Changes from 2 commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
d452c77
Create draft for Unconference report
PoignardAzur 9212afa
Apply suggestions from code review
PoignardAzur 5f31482
Small fixes
PoignardAzur ad2073c
Update RustNL draft
PoignardAzur 8f3947a
Add mention of Rerun.io
PoignardAzur 16759f6
Update content/blog/2024-05-22-rustl-2024-unconference.md
PoignardAzur b372a82
Update content/blog/2024-05-22-rustl-2024-unconference.md
PoignardAzur 991908e
Fix typo in content/blog/2024-05-22-rustl-2024-unconference.md
PoignardAzur 0330d14
Fix typo in funding section
PoignardAzur 854a7f7
Split some paragraphs by sentence
PoignardAzur ea8c3ad
Apply suggestions from reviews
PoignardAzur e72ff7b
Tweak the corporate sponsorships section
PoignardAzur 93e0109
Update article date
PoignardAzur 433a3ae
Fix typos and wordings in RustNL article
PoignardAzur 968ccfd
Split paragraphs into setences.
PoignardAzur 5855d43
Replace "eg" with "e.g."
PoignardAzur 3beec90
Update content/blog/2024-06-15-rustnl-2024-unconference.md
PoignardAzur b8bca88
Update 2024-06-15-rustnl-2024-unconference.md
PoignardAzur File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
+++ | ||
title = "Report on the RustNL 2024 Unconference" | ||
authors = ["Olivier Faure"] | ||
date = "2024-05-23 18:00:00" | ||
+++ | ||
|
||
On May 7 and 8, 2024, folks from the Linebender team went to [the RustNL conference](https://2024.rustnl.org/) in Delft. | ||
We listened to talks, Raph gave one, Rik Arends did the "hot reloading my entire editor live" thing that makes every other Rust GUI developer jealous, it was an all-around good time. | ||
|
||
(Videos for individual talks aren't up yet, but there are livestream recordings of [Day 1](https://www.youtube.com/watch?v=XLefuzE-ABU&t=23721s) and [Day 2](https://www.youtube.com/watch?v=521NfGf7AR0&t=19109s) on Youtube.) | ||
|
||
After RustNL, though, another less-documented event called [The Unconference](https://2024.rustnl.org/unconf/). It was from roughly the same organizers and took place in the same city, but the format was fairly different. | ||
|
||
The Unconference wasn't livestreamed, and I haven't found any public discussion of it, so I thought I'd take the time to describe a bit of what was going. | ||
|
||
|
||
## The format | ||
|
||
The "Unconference" was two days of loosely-structured chats between members of various Rust project teams where people talked about ecosystem collaboration, complained to Lang Team members that their favourite feature wasn't implemented yet, [went to pester everyone else about variadic generics](https://poignardazur.github.io/2024/05/25/report-on-rustnl-variadics/), and other good fun. | ||
|
||
Attendees were split into three teams: | ||
|
||
- The Rust project. | ||
- GUI and Applications. | ||
- Embedded development. | ||
|
||
Discussions inside of these teams was mostly self-organized (more on that later), with cross-team discussion mostly taking place during lunch and recesses. | ||
|
||
|
||
## The GUI team | ||
|
||
As a member of the Linebender project, I was mostly exposed to the GUI team's proceedings. | ||
|
||
The main topics of interest were: | ||
|
||
- Build tooling (especially for Android and other non-desktop platforms). | ||
- Text layout and edition. | ||
- Winit adoption. | ||
- Accessibility. | ||
- Potential for further collaboration. | ||
- Requests for new Rust features. | ||
|
||
Note that I'm skipping a lot topics on the agenda, and other side discussions. | ||
It feels like those topics were the most prominent during those two days. | ||
|
||
There was also a fair amount of informal chatter around LogLog Games' [Leaving Rust gamedev after 3 years](https://loglog.games/blog/leaving-rust-gamedev/) article. | ||
I think those discussions mostly reflected the Bevy community's consensus, that the article had some flaws but overall pointed at very clear weaknesses in the Rust GUI / game engine ecosystem. | ||
|
||
### Build tooling | ||
|
||
Everyone agreed that a better solution was needed to ship non-TUI Rust apps. | ||
|
||
There was discussion about various platforms and build system, and the difficulty of having to eg write Java code for an Android port, and whether anyone wanted to take responsibility for maintaining that glue layer for the rest of the ecosystem. | ||
|
||
Unfortunately the discussions on this subject didn't really go anywhere, as far as I could tell. | ||
Packaging Rust apps is still very much an open problem. | ||
PoignardAzur marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### Text layout and edition | ||
|
||
There was some widespread interest in the Linebender ecosystem's text handling crates. | ||
From what I remember, Rik Arends and others had concerns about whether eg Parley and Swash added dependencies to our Vello renderer (they don't). | ||
PoignardAzur marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Some people also wanted Parley to be decoupled from Swash. | ||
|
||
People we especially interested in the idea of having access to a common text-editing widget, or at least infrastructure to create one. | ||
That widget would handle IME, text selection, accessibility actions, etc, in a way that would feel native to different platforms with their own text-editing quirks (mobile, MacOS, Linux with vim mode, etc). | ||
|
||
### Winit | ||
|
||
By now all of the Rust ecosystem has firmly converged on [`winit`](https://github.com/rust-windowing/winit) as the windowing platform-abstraction solution of choice. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think Tauri also still uses TAO, although afaik they hope to use upstream. |
||
|
||
(Well, not all! [One small project](https://github.com/makepad/makepad) with indomitable maintainers still holds out against the invaders.) | ||
|
||
The consensus during this discussion seemed to be that Winit was there to stay, and that any changes we wanted would probably come in the form of upstream contributions, not competing projects. | ||
PoignardAzur marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Glazier is still shelved and we're planning to port its features to Winit until it reaches feature parity. | ||
|
||
A discussion that came up was the idea of splitting more "vocabulary types" from Winit into standalone crates. | ||
Vocabulary crates, eg crates that only define types and very little code, have a very low cost in memory and build times, while allowing projects to interop with eg Winit without actually adding a dependency on Winit. | ||
|
||
This was connected with the discussions about text edition: having a vocabulary crate that would list Winit's events and also Parley's cursor movements would allow for a very low-dependency text edition widget. | ||
PoignardAzur marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### Accessibility | ||
|
||
*Note: This section is very much my personal opinion and doesn't represent the Linebender project as a whole.* | ||
|
||
The subject of Accessibility came up informally, but was in my opinion underexplored. | ||
|
||
While the subject was on the agenda, by the time we reached it the Unconference had reached a point where everyone was tired and ready to leave or get to the catering. | ||
This is an unfortunate pattern that I think is worth pointing out: if projects don't make a deliberate effort to prioritize discussions of accessibility, the subject will be left out. | ||
PoignardAzur marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Matt Campbell, the maintainer of AccessKit, could not attend the Unconference. | ||
I'm concerned that, in his absence, other maintainers might have felt a dilution of responsibilty: since the accessibility guy wasn't there, nobody felt empowered to bring up accessibility. | ||
|
||
One point that did come up during the discussion is one I'd like to hammer in over the next few weeks, is that the Rust ecosystem should adopt a holistic view of accessibility. Accessibility isn't just about screen readers, and making a framework accessible doesn't stop at adding a dependency to AccessKit, though doing so is a great first step. | ||
PoignardAzur marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Rik asked if there was a minimal set of the AccessKit elements that people could be expected to port their UI to. | ||
The AccessKit framework is rich, and it's not obvious at first glance how much is needed versus nice-to-have. | ||
The current reference in the Rust ecosystem is [the AccessKit implementation in eGUI](https://github.com/emilk/egui/pull/2294). | ||
|
||
### Requests for Rust features | ||
|
||
Jon Kelley, the creator of Dioxus, had a laundry list of features he wanted from the Rust language. | ||
|
||
The requests were well-documented, with motivating examples in existing Dioxus code that would clearly be improved by the features. | ||
Most of them felt both self-contained and like they would tremendously help beginners working on their first Rust project. | ||
|
||
Overall people were very enthusiastic about them, and the lang team members in the room seemed pretty optimistic that those features could be added. | ||
|
||
My favorite proposals were: | ||
|
||
- `Capture` trait for auto-cloning reference-counted types in closures. | ||
- Automatic partial borrows. | ||
- Optional struct args. | ||
|
||
Jon also wanted support for a remote cache of pre-built crates, so that users wouldn't suffer from having to rebuild dozens of crates every time you download your crate's dependencies. | ||
The consensus from Rust maintainers was that such a cache would be essentially impossible with Rust's current architecture. | ||
|
||
|
||
## Collaboration in the Rust GUI ecosystem | ||
|
||
TODO | ||
|
||
Overall the Unconference went well, and felt like a symptom of improving ecosystem collaboration. | ||
|
||
- List of backers | ||
- List of projects | ||
- Things have gotten much better since last year | ||
|
||
|
||
## On the tyranny of struturelessness | ||
|
||
TODO | ||
|
||
- GUI team had some trouble with discussions. | ||
- Rust team stayed on rails, reportedly mostly thanks to Alice Cecile. | ||
- Embedded team took well to it, from what I saw. | ||
|
||
|
||
## Conclusion | ||
|
||
Many thanks to RustNL organizers | ||
We were exhausted after four days, but these folks had to run the darn thing. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In general? Or just on mobile etc?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To be honest, I dropped out of that discussion pretty quickly. I think someone else than me would be better placed to summarize it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the Android-specific Java build, I've published the
android-build
crate under Project Robius.We started some work on packaging Rust apps as of last week, but nothing there to share yet. Unfortunately David, who was working on this, has recently decided to leave the project, so packaging/bundling work has been stalled a bit.