WinUI 3 is a UI layer that takes the decoupled UWP XAML Visual Layer, the WinUI 2 library, and combines it with more modern features and capabilities. This layer can be used in any Desktop app or UWP app.
Microsoft has been working closely with developers on developing and expanding the library, but ran into a brouhaha over the last few weeks on GitHub after removing the Pivot control from the collection.
The control was removed without any notice, with Microsoft citing low usage and that Microsoft wanted to move Fluent design into a different direction.
Microsoft’s own apps however use the control heavily, including the feedback hub for example, and developers complained that replacing the functionality in existing apps would be a lot of work, accusing Microsoft of not properly understanding the needs of developers.
Specifically, they accused Microsoft of:
- Not properly understanding what the Pivot was being used for in all cases (creating a feature gap)
- Not communicating ahead of time big changes like this (as you acknowledged) so you can understand impact and all viewpoints
- Making decisions like this based on resource constraints at Microsoft and not considering the significantly higher amount of resources required of your customers to work-around this
- Making changes like this based solely on the direction of the design and PM teams. Developers (or your customer) need to have a stronger voice and should be able to overrule both in this case.
- Using highly suspect data to justify a decision you already wanted to make
After digging in their heels a bit, Microsoft’s Ryan Demopoulos, Principal Program Manager Lead, has now however posted an apology and a retraction, saying:
I’ve spent the last couple days reflecting on this. As mentioned on the Community Call, I’m regretful of how we handled the removal of Pivot. Let me elaborate on this a bit:
WinUI is a product with its own ambitions. The reason we removed Pivot wasn’t because of low usage—we removed it because we want to evolve the product (and Fluent design itself) in a different direction. It absolutely was the case of us making an a priori decision to remove it, and we consulted our telemetry to try and determine whether we could safely do this without too much disruption. We’re fully aware of its usage in inbox apps since we work closely with those teams. In terms of raw external (3rd-party) numbers, it is not highly used, and so we felt—incorrectly—that that we could remove it without causing much stress.
That was obviously poor judgment. The error is my responsibility, and from now on I’ll endeavor to consult with the community on any features we remove, to the best of my ability. There will be times when we want to change product direction, and Pivot is a good example: we still want to move away from Pivot long term and have better alternatives in place for it. But we also owe it to you, our community, to consult with you before we take actions like that and to listen and adapt our solutions so you aren’t left completely high and dry. We fell short on this and I apologize.
Below is a set of steps I’m proposing to correct this error. Before we implement them, I’d like your thoughts:
1. II think we should restore Pivot to WinUI 3 as soon as possible. It’s clear that customers are actively using it for important purposes, and us yanking it out of the product was frustrating & disruptive. We can alleviate that pain by restoring it asap. (that is likely to be in April, since Reunion 0.5 is too close to shipping and we can’t change the bits now)
2. I’d like to continue the discussion openly in this repo on how we can evolve WinUI beyond Pivot (and deprecate it), while ensuring suitable alternatives are in place. As many of you indicated, you don’t feel an adequate alternative is in place that warrants Pivot’s removal; let’s discuss how to get that in place so we can evolve WinUI past it, while making sure we all feel feel good about it too. My goal would be to do this before ~Oct 2021, since Reunion 1.0 will ship in Oct and we very much would like to deprecate by that release so we aren’t forced to wait all the way until Reunion 2.0 ships (due to our commitment to SemVer versioning).
3. Finally, if October approaches and the community isn’t satisfied with the alternative(s) to Pivot that we’ve worked with you to define, then we’d remove it from WinUI and release the source code. This would be a backstop to allow anyone/everyone to use that source code however they please. An aspiring person could even port it to WCT if @michael-hawker feels it’s a fit ?. My hope is that we can work together to do better then just a source code dump, but I also want folks to know that we can at least keep this as a Plan B to ensure that Pivot doesn’t just disappear into the void.
I’d really appreciate your input on this proposed plan of action. You’re not flogging a dead horse; you’re expressing legitimate frustration/concern that is warranted, and I’m hopeful you’ll work with us to try doing this again the right way.
Microsoft will be returning the control to the collection, though they still intend to deprecate it in the future, but will release the source code for developers to continue using if they do not see any alternative.
Read the full thread at GitHub here.