First off, thanks for all the hard work on rustup. It’s a great tool, and really makes the entire Rust ecosystem easy to use and get started with.
However, I'm unsure about the new "offer to auto-install VS 2022" feature.
The way it’s implemented feels very much like a “foot gun”: If a developer follows the Rust Getting Started guide, downloads rustup, and blindly accepts all the prompts; then they end up with a setup that’s not legally licensed for use in many Commercial (5+ employee) and Enterprise environments. The developer may not be aware of that, which can have serious consequences in the future.
I know it’s impossible to protect people from licensing issues if they don’t read, however I’m concerned the new installation flow feels a lot like installing a “Visual C++ Redistributable”, which many developers are used to clicking through during installations.
The previous rustup flow required the developer to leave the “rustup installer”, and actively make a decision on the Microsoft website about what to install.
I understand the feature was added to make it easier for “OSS or home developers” to get up and running, however Rust is also used a lot in the commercial world these days, so I think it’s important to consider how the flow works there, and ensure it doesn’t leave them in a position of unexpected legal liability.
I think it’s also important to note that Visual Studio Code has a similar “problem” to rustup: Installing VSCode and the C++ extension leaves the user with a “broken” setup that can’t compile code. However Microsoft has decided not to prompt the user to automatically install Visual Studio Community edition, instead the user must actively make a decision on the Microsoft website about what to install.
I’m not sure if it’s possible, but I think an “ideal” solution would be if the user could land on the Visual Studio Installer’s edition selection screen before continuing with installation, so they actively have to make a decision of which one to install, and can easily see that Community Edition might not be what they need: