# Winit meeting Date: 2025-03-07T15:00:00Z (UTC) Attended: @madsmtm, @kchibisov, @daxpedda, @MarijnS95 Last meeting notes: <https://hackmd.io/Xr1LFKF0RfO7h_2lDEdL5A> ## Organizational changes since last time We previously decided: > #### Merging public API PRs without full approval from everyone > Two approvals for public API, then it's fine to merge, as long as we have enough people that review. But @kchibisov [lowered the merge requirements](https://matrix.to/#/!DGpLzJTRzBDTwZiogk:matrix.org/$H0bN1_dtLst4GJk38Z2sEHELo3IbUqZATEZvPg7VTHs?via=matrix.org&via=mozilla.org&via=catgirl.cloud), because we are low on maintainers. @madsmtm [proposed](https://github.com/pyfisch/keyboard-types/issues/60) for `keyboard-types` to be put under @rust-windowing. ## We are low on maintainers! Not the first time: - https://github.com/rust-windowing/winit/issues/830 Ideas for fixing it: - Make it easier for people to contribute? - A test suite would help. - `cargo-nextest` would help with macOS/iOS (process isolation). `--test-threads=1` could do most of the same. - @daxpedda has been working on test support in `wasm-bindgen` - Can we be more welcoming? - Give people ownership and agency. - Wgpu triages PRs every week, and assigns people to review them. - We clearly don't have the bandwidth to do so, but maybe that's something we could strive for? - Call for help? - Maybe with a wider audience to [TWiR](https://this-week-in-rust.org/) + Reddit + Discourse forums? - [Also done before](https://gist.github.com/Osspial/1a93d599189f49a97884c4aa033e9ef3). - @madsmtm will write something. - We need Windows maintainer - Android needs help in `android-activity` - Just needs you to care and be able to bounce off ideas - Web needs help in `wasm-bindgen`? - Ask downstream projects if someone on their team wants to be platform maintainers? - Bevy, Linebender (Xilem), Egui? - Tauri and Wgpu? ## Status on API -> traits rework? [MonitorHandle](https://github.com/rust-windowing/winit/pull/3927) PR. What do we need to do to move forwards? Who will do it? Who will review? @kchibisov will maybe do cursor -> `dyn` and `EventLoop` -> `dyn`, @madsmtm will have the time to review. ## Responding to [#3626](https://github.com/rust-windowing/winit/issues/3626) - Original motivation for trait-based event handlers - Synchronous handling of events - Feedback from user - Will enable easier breaking changes? - Other? - Winit next: https://github.com/rust-windowing/winit-next/blob/05b8fd0792c3794dbf073746c3cba8c10eb6ea84/winit-wayland/examples/window.rs#L54-L110 - Most users do _not_ want to do this! - As evident by the whole `Event<'_>` debacle - Which APIs do we actually need to be sync? - Window creation - Window close requests - Surface resizes - Redraws - Keyboard input - ? - Are there other options for doing this? - Maybe simply documenting that certain events _should_ be handled synchronously (like resizes), and that you'll get glitches otherwise? - Maybe add extra APIs on `event_loop` that "resolve" the request. Like: ```rust fn window_event(&mut self, event_loop: &dyn ActiveEventLoop, event: WindowEvent) { match event { WindowEvent::CloseRequested => { event_loop.accept_close().unwrap(); } WindowEvent::CloseRequested(inner) => { inner.accept_close(event_loop); } _ => {} } } ``` Somewhat roundabout, but allows `WindowEvent` to still be pure data. ## Other [nominated](https://github.com/rust-windowing/winit/labels/C%20-%20nominated) issues and PRs ## Loose VSync discussion Should be possible everywhere, except for X11, the [this](https://fishsoup.net/misc/wm-spec-synchronization.html) is only available on Gnome :/ We could fake it though. [Old attempt](https://github.com/rust-windowing/winit/pull/2535). Presentation info: - Vulkan doesn't have an API for presentation stuff. Current API: - `request_redraw` should be callable everywhere, and then you get `RedrawRequested` at a reasonable point in time. ## Next meeting 2025-03-28T05:00:00Z (UTC)