# Windows notification group

**GitHub Label:** [O-Windows] <br>
**Ping command:** `@rustbot ping windows`

[O-Windows]: https://github.com/rust-lang/rust/labels/O-Windows

This list will be used to ask for help both in diagnosing and testing
Windows-related issues as well as suggestions on how to resolve
interesting questions regarding our Windows support.

The group also has an associated Zulip channel ([`#t-compiler/windows`])
where people can go to pose questions and discuss Windows-specific topics.

To get a better idea for what the group will do, here are some
examples of the kinds of questions where we would have reached out to
the group for advice in determining the best course of action:

* Which versions of MinGW should we support?
* Should we remove the legacy InnoSetup GUI installer? [#72569]
* What names should we use for static libraries on Windows?
  [#29520]

So, if you are interested in participating, please sign up for the Windows group!
To do so, open a PR against the [rust-lang/team] repository.
Just [follow this example][eg], but change the username to your own!

[`#t-compiler/windows`]: https://rust-lang.zulipchat.com/#streams/242869/t-compiler.2Fwindows
[rust-lang/team]: https://github.com/rust-lang/team
[eg]: https://github.com/rust-lang/team/pull/348/
[#72569]: https://github.com/rust-lang/rust/pull/72569
[#29520]: https://github.com/rust-lang/rust/pull/29520
