# Winit Call For Help Hey everyone. I'm the macOS/iOS maintainer of Winit, which is a cross-platform window creation library. It is used by most GUI toolkits, game engines and applications in the Rust ecosystem, including Tauri[^tao], Bevy, Alacritty, Dioxus[^tao], Egui, Servo, Slint, Xilem, Iced, Fyrox, and many, many others. [^tao]: Indirectly through the fork `tao`. Even if you haven't used it directly, if you have developed anything with a GUI in Rust, it is likely that it is somewhere in your dependency tree and has been working on making the windows actually show up on your desktop. Unfortunately, we're very understaffed currently, and are lacking experts on several platforms. This means that bugs go unfixed for years, and makes future API development difficult since it needs to take cross-platform concerns into account. I believe that Rust can be an excellent choice for both application and game development, but for that to be true, we need your help with maintaining this core piece of the puzzle. I've outlined the major pain points below, but no matter what you do, your time would be valuable, and would result in widespread improvements across the Rust appdev community. TODO: The alternative / consequence: Winit enters a low-maintenance state? We should definitely make the current state clear in the README / on the issue tracker. ## Windows We do not currently have a Windows maintainer (so you'd have mostly free reign if you wanted to take up the mantle). A good first task to get started with the codebase could be to migrate usage of [`windows-sys`](https://docs.rs/windows-sys/) to the bit safer [`windows`](https://github.com/microsoft/windows-rs) crate, and wrap remaining `unsafe` in safe abstractions (or maybe use [`winsafe`](https://docs.rs/winsafe/) if you feel it makes sense). ## Web The web backend is in a fairly good state currently thanks to @daxpedda's efforts over the past few years. Unfortunately, he hasn't had much time for these projects lately. While we could use a hand with the web backend too, if you're interested in Rust + WASM, I'd actually suggest you go help out in [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen), as he is also the almost sole maintainer of that. ## Android If you are interested or have knowledge about Android development, I'd suggest to head over to [@rust-mobile](https://github.com/rust-mobile). Help would be especially appreciated in `android-activity`, since improvements there would propagate directly to Winit. It doesn't have to be much, just being around to bounce off ideas would be useful. ## Documentation and examples It is currently very unclear for users how to correctly wire up the event loop for their use-case. A good way to get started would perhaps be to add: - An example of a small game rendering at the screen refresh rate. - An example of a small TODO-list like app. ## Funding TODO: Would it help us if we had money to run the project? ## Reviewers in general If nothing else, you could be of great help just reviewing the existing PRs and/or triaging issues. ## If you're interested If you're interested in or have questions about any of the above, feel free to post here or contact me on Matrix (`@madsmtm:matrix.org`) or Discord (`madsmtm`). TODO: Post in the following places: - https://this-week-in-rust.org/ - https://www.reddit.com/r/rust/ - Bevy Discord - Linebender/Xilem Zulip - At RustWeek. - Wgpu Matrix? - Egui Discord? - Tauri issue tracker?