Vor 17 Monaten wurde von den Entwicklern entschieden, dass es "tot" sei. Microsoft hat plötzlich angekündigt, dass WinUI mit 6.800 Sternen "wirklich Open Source" werden soll. Internetnutzer stellen die Frage: Will man sich durch externe Kräfte am Leben erhalten?
Ein Projekt, das schon vor vielen Jahren "Open Source" gemacht wurde, kündigt nun plötzlich "echte Open-Source-Entwicklung" an? Was für ein Scherz spielt Microsoft hier?
Seit langem setzt Microsoft das Banner von "Microsoft ❤️ Open Source" hoch. Von den Quellcodes der antiken MS-DOS 4.0 bis hin zur Open-Source-Entwicklung von WSL hat es tatsächlich viele Ergebnisse präsentiert. Doch dieses Mal hat die Debatte um WinUI ausgelöst, das bereits seit Jahren auf GitHub verfügbar ist und als modernes UI-Framework für das Windows-System definiert ist.
Der Auslöser für diese Geschichte war eine kürzlich auf GitHub veröffentlichte Ankündigung von Beth Pan, der Chief Software Engineer von Microsoft. Darin heißt es, dass WinUI "schrittweise auf echte Open-Source-Zusammenarbeit zusteuert". Als diese Aussage publik wurde, waren viele Entwickler verwirrt und fragten sich: "War es nicht schon lange Open Source? Warum nochmal?"
Was noch ironischer ist, folgte auf diese Ankündigung ein Diskussionsthread von vor 17 Monaten, der von einem Entwickler gestartet wurde. Der Titel lautete: "WinUI 3 ist tot. Wann können wir eine Ankündigung erwarten?" Dieser Thread hat inzwischen über 580 Kommentare gesammelt und ist zum Sammelbecken für die Unzufriedenheit der Community über die stagnierende Entwicklung des Projekts geworden.
Letztendlich hat sich die Enttäuschung der Entwickler gegenüber WinUI über die Jahre angesammelt. Wenn Microsoft nun den Ruf nach "echter Open-Source-Entwicklung" erhebt, will es sich ehrlich der Community zuwenden oder sucht es sich einfach aus Überlastung nach externen Entwicklern, die sich an dem Projekt beteiligen? Diese Frage ist vielleicht noch interessanter als WinUI selbst.
01 Das Durcheinander um WinUI "Open Source"
Einfach ausgedrückt ist WinUI ein modernes natives UI-Framework von Microsoft, das hauptsächlich zur Erstellung von Desktopanwendungsinterfaces auf Windows 10 und 11 verwendet wird und auch einen Teil der Technologie von UWP weiterführt. Es bietet eine vollständige Bibliothek von Steuerelementen und Stile und folgt dem Fluent Design-System, sodass Entwickler modernere und einheitlichere Windows-Anwendungsinterfaces erstellen können.
Microsoft positioniert es als "modernes natives UI-Platform für Windows" und integriert es in einige systeminterne Anwendungen, wie z.B. die "Einstellungen". Es unterstützt auch neuere Entwicklungsansätze wie React Native for Windows und ist eines der wichtigen Werkzeuge für die Modernisierung der Windows-Anwendungslandschaft.
Wenn man die GitHub-Adresse von WinUI (https://github.com/microsoft/microsoft-ui-xaml) besucht, stellt man fest, dass es bereits 6.8k Sterne hat. Was meint Microsoft dann mit "echte Open-Source-Entwicklung in Zukunft"?
Tatsächlich steht in der Ankündigung von Beth Pan im Titel: "WinUI Open-Source-Update: Schrittweise Förderung der offenen Zusammenarbeit". Aus der Sicht der Außenwelt will Microsoft den Entwicklungsprozess von WinUI ändern, insbesondere die Verwaltung ihres eigenen GitHub-Repositories (Repo).
Aktuell ist dieses Repository nur eine "regelmäßige Synchronkopie" ihres internen Codes. Das heißt, die Microsoft-Entwickler entwickeln tatsächlich in einem internen Repository, und das auf GitHub veröffentlichte ist nur eine unregelmäßige Aktualisierung für die Öffentlichkeit.
Was sie als nächstes tun möchten, ist, dass das GitHub-Repository zum Hauptentwicklungsrepository wird, auf dem alle Entwickler (einschließlich Microsoft-Mitarbeitern und externen Entwicklern) direkt Code einreichen und zum Projekt beitragen können.
Das ist was sie mit "echte Open-Source-Entwicklung dieses Repos" meinen.
02 Vier Schritte zur "echten Open-Source-Entwicklung" des Windows 11-Benutzeroberflächenframeworks
Was die Einhaltung dieses Versprechens angeht, gesteht Beth Pan, die Chief Software Engineer von Microsoft, zu, dass sie selbst nicht genau weiß, wann dies passieren wird. Sie sagte nur: "Viele Leute haben Fragen zur 'echten Open-Source-Entwicklung dieses Codes' gestellt. Obwohl wir derzeit keine genauen Zeitpläne für alle Meilensteine versprechen können, können wir Ihnen klar sagen, dass wir uns aktiv darum bemühen. Dies wird kein "Einschaltmoment" sein, sondern ein schrittweiser Prozess."
Wie bereits erwähnt, wird der größte Teil des WinUI-Codes nur regelmäßig auf GitHub gespiegelt, und das Hauptrepository bleibt weiterhin privat bei Microsoft. In der Ankündigung hat Pan die vier Phasen für die Öffnung dieses Repositories aufgelistet:
Phase 1: Erhöhung der Spiegelungshäufigkeit
Nach der Veröffentlichung von Windows App SDK 1.8 (Ende August) wird Microsoft die internen Commits häufiger auf GitHub synchronisieren, um die Transparenz zu erhöhen und den neuesten Stand des Projekts zu zeigen.
Phase 2: Dritte Parteien können lokal bauen
Externe Entwickler können das Repository klonen und lokal bauen. Wir werden auch Dokumentation zur Umgebungskonfiguration und Abhängigkeitsverwaltung zur Verfügung stellen.
Phase 3: Dritte Parteien können beitragen und Tests ausführen
Beitragende können Pull Requests einreichen und lokale Tests ausführen. Microsoft bemüht sich, private Abhängigkeiten zu entfernen und die Testinfrastruktur der Community zugänglich zu machen.
Phase 4: GitHub wird zur Hauptentwicklungsplattform
GitHub wird zur Hauptplattform für die Entwicklung, das Problemverfolgungssystem und die Communityinteraktion. Die interne Repository-Spiegelung wird schrittweise abgeschafft.
Sie sagte: "Dieser Prozess ist so komplex, weil WinUI tief in das Windows-System integriert ist. Einige Codes hängen direkt von proprietären unteren Ebenenkomponenten ab, die nicht öffentlich gemacht werden können. Wir bemühen uns, die teile, die geteilt werden können, von denen, die nicht geteilt werden können, zu trennen - diese Arbeit ist noch in Bearbeitung und wird Zeit benötigen."
Beth Pan wies auch darauf hin: "Diese Arbeit wird parallel zu anderen wichtigen Aufgaben durchgeführt, wie z.B. Sicherheitsgewährleistung, Plattformstabilität und Unterstützung bestehender Produkte. Derzeit konzentrieren wir uns darauf, die Grundlagen zu schaffen, damit die Beitragenden tatsächlich am Projekt teilnehmen können und die Transparenz des gesamten Projekts erhöht wird. Wir stellen auch sicher, dass diese Arbeit mit der breiteren Geschäftstrategie von Microsoft übereinstimmt, um langfristige Unterstützung und Einflussnahme zu erhalten."
Zur gleichen Zeit rief sie auch die Entwickler auf, die sich für WinUI 3 interessieren, sich aktiv am Projekt zu beteiligen. "Wir wissen, dass dies vielleicht nicht alles ist, was Sie hören möchten, aber wir hoffen, dass dies zeigt, dass wir ernsthaft sind und uns bemühen, dies richtig zu machen."
03 Entwickler: Microsoft hat mehrere UI-Frameworks entwickelt
Viele Entwickler haben diese Erklärung nicht akzeptiert. Einige finden, dass Microsoft in der Entwicklung von UI-Technologien zu "wankelmütig" ist.
Schaut man nur auf die Entwicklung der UI-Technologien von Microsoft über die Jahre:
Win32 (1985): Dies ist die integrierte API von Windows. Mit ihr kann man Schaltflächen, Fenster, Bildläufe, das System-Shell und allgemeine Dialogfelder erstellen, und die erstellten Schnittstellen sehen und verhalten sich wie native Fenster. Obwohl es schon sehr alt ist, kann man es mit der Programmiersprache C ansprechen und es ist bis heute noch einsetzbar.
MFC (1992): Dies ist eine C++-Kapselung von Win32, die die Verwendung der API etwas einfacher macht. Microsoft führt weiterhin kleine Updates für MFC durch, und es wird bis heute noch weit verbreitet eingesetzt.
WinForms (2002): Dies ist eine .NET-Kapselung von Win32 für .NET-Sprachen wie C#. Derzeit ist es in der Wartungsphase, und es sind keine neuen Funktionen geplant.
WPF (2006): Dies hat XAML eingeführt und zeichnet Vektorkomponenten auf der Basis von DirectX. Es wird für .NET-Sprachen (wie C#) verwendet. Es ist inzwischen Open Source.
Silverlight (2007): Dies hat einen Teil der Technologie von WPF übernommen und wird zur Erstellung von UI-Elementen im Web verwendet. Es war einst ein Konkurrent von Adobe Flash. Es wird mittlerweile nicht mehr verwendet.
Xamarin (Forms, 2014): Dies ist eine plattformübergreifende .NET-Lösung, wobei Xamarin.Forms das UI-Framework ist (ähnlich wie WinForms). Ursprünglich lief es auf Mono, später wurde es auf das offizielle .NET migriert und wurde von MAUI ersetzt.
WinJS (2012): Dies ist ein auf JavaScript basierendes Framework zur Erstellung von Windows Store-Anwendungen mit HTML5 und JavaScript. Es scheint, dass die Entwicklung eingestellt wurde.
WinRT (XAML, 2012): Dies ist eine Anwendungsplattform, mit der man mithilfe einer benutzerdefinierten Variante der C++-Programmiersprache (wie C++/WinRT, C++/CX) in Kombination mit XAML Benutzeroberflächen erstellen kann. Später wurde es von UWP ersetzt.
UWP (XAML, 2015): Dies ist die "allgemeine Anwendungsplattform", die seit Windows 10 eingeführt wurde und die native C++- und .NET-Entwicklung unterstützt. Später wurde es von WinUI ersetzt.
WinUI (2018): Ähnlich wie UWP, aber in der Gestaltung näher an Windows 11. Später wurde es von WinUI 3 abgelöst.
MAUI (2020): Dies ist ein plattformübergreifendes UI-Entwicklungsframework und der Nachfolger von Xamarin.Forms. Auch hier wird XAML verwendet, und es wird nur .NET-Sprachen unterstützt.
WinUI 3 (2021): Ähnlich wie WinUI, aber das UI-Framework wurde vom Betriebssystem getrennt und ist nun eine unabhängige Bibliothek. Das heißt, dass Ihre Anwendung es auch auf einem nicht aktualisierten System verwenden kann.
Alle paar Jahre stellt Microsoft eine neue Technologie vor, um die alte Lösung zu ersetzen, aber viele werden schließlich teilweise oder vollständig aufgegeben. Die ständigen Änderungen und Umbenennungen verwirren viele Entwickler. Natürlich ist die "Wankelmütigkeit" nur einer der Faktoren.
Andererseits hat Microsoft damals auf Basis von WinUI 3 ein Integrationsprojekt namens Project Reunion gestartet, um die "Generationenunterschiede" zwischen den Entwicklern zu überwinden. Egal, ob Sie ein klassischer Win32-Entwickler oder ein "Neuauftreiber", der auf UWP setzt, können Sie in diesem Framework arbeiten.
Project Reunion wurde später in das aktuelle Windows App SDK (WASDK) umbenannt, und WinUI 3 ist nun ein wichtiger Bestandteil davon. Es unterstützt weiterhin das Fluent Design und hat die Aufgabe, das Benutzererlebnis der Windows-Anwendungen zu vereinheitlichen.
In letzter Zeit haben viele Entwickler in den sozialen Medien über die Unzugänglichkeit von WinUI 3 geklagt. Einige haben sogar direkt gesagt: "Selbst Microsoft nutzt es nicht, wie soll die Community es dann verwenden?"
Ein erfahrener Entwickler kommentierte:
Ich verwende WinRT seit Windows 8. Seitdem musste ich immer mit den Veränderungen von Microsoft mithalten: zuerst UAP, dann UWP, dann wurde C++/CX durch C++/WinRT ersetzt, das keine Werkzeugunterstützung hat, dann kamen XAML Islands, XAML Direct, und dann das angekündigte Project Reunion, die Neustarts von WinAppSDK, die verwirrende Umstellung zwischen WinUI 2.0 und 3.0, und die immer wieder wechselnden Aussagen über .NET Native...
Ich habe auch immer an den Community-Treffen (meist auf YouTube) teilgenommen.
Mein Rat ist: Berühren Sie WinUI 3.0 nicht. Die aktuelle Erfahrung ist noch schrecklich, sogar schlechter als die von UWP, und UWP war schon nicht viel besser als WPF.
Die wichtigen Personen in der Community haben entweder zu einem Wettbewerber gewechselt oder wurden in andere Abteilungen von Microsoft versetzt.
Schauen Sie sich einfach die öffentlichen Projekt-Repositories von Microsoft auf GitHub an und die darin enthaltenen Problembeschreibungen und die Aktivität der Beiträge. Dann wird Ihnen alles klar werden.
Vielleicht hat Beth Pan die Rückmeldungen der Leute gesehen, denn in ihrer Ankündigung steht auch: "Vielen Dank für alle Ihre Rückmeldungen, Fragen und Vorschläge. Wir haben Ihre Stimmen gehört und nehmen diese ernst. In den nächsten 6 Monaten werden wir in eine neue Phase der Verbesserung eintreten, einschließlich der Optimierung des Produkts und einiger grundlegender Änderungen, um eine offenerer und kollaborativere Zukunft zu ermöglichen."
04 "Will WinUI sich von der Community retten lassen?"
Pan's Open-Source-Erklärung hat die Zustimmung einiger Entwickler gefunden - "Es ist erfreulich, dass WinUI immer noch aktiv ist und jemand sich darum kümmert", aber viele Menschen sind skeptisch, ob Microsoft wirklich genügend Ressourcen investieren und das Vertrauen der Entwickler aufbauen wird.
"Ich habe in den letzten Jahren intensiv an der Entwicklung von WinUI gearbeitet", sagte ein Entwickler.
Ehrlich gesagt glaube ich nicht, dass Microsoft die Schäden erkannt hat, die es an den Evangelisten, der breiten Entwicklergemeinschaft und sogar an den Unternehmen, die WinRT→UWP→WinUI/WASDK einsetzen, angerichtet hat. Die ständigen Stagnationen und falschen Versprechen sind anstrengend. Bis jetzt haben wir noch keine funktionierende Lösung für die Eingabevalidierung, und elementare Dinge wie modale Dialogfelder haben immer noch viele Fehler. Unter diesen Bedingungen, wie sollen Unternehmensanwendungen (LOB) funktionieren?
Unser Unternehmen entwickelt Windows-Clients seit der Zeit von Windows 3.0. Jetzt setzen wir nicht mehr so stark auf die Windows-Plattform. Der Grund ist einfach: Mangel an Transparenz, Mangel an Fortschritt, Mangel an Verantwortlichkeit und Mangel an einer klaren Richtung.
Wenn man von der ursprünglichen Version von WinUI in der Windows 8-Zeit ausgeht, hat es fast 15 Jahre Geschichte (ich bezweifle sogar, dass einige Teile auf die DirectUI aus der XP-Zeit zurückgehen). Im Vergleich zu Apples Betriebssystem ist es um mehrere Größenordnungen hinterher. Warum kann Apple so schnell neue Funktionen einführen und iterieren, während WinUI immer noch voller Fehler ist?
Ich möchte noch einige Fragen hinzufügen:
Es sind fast 18 Monate vergangen, und die Entwickler sind völlig enttäuscht über die Undurchsichtigkeit und das Fehlen von Kontakt von Microsoft. Viele sagen: "WinUI 3 ist wirklich tot!" Diese