- Grâce à un backend basé sur Avalonia, les applications .NET MAUI peuvent désormais s’exécuter sur les postes Linux et dans le navigateur (WebAssembly)
- En conservant la base de code MAUI existante tout en remplaçant la couche de rendu par Avalonia, le projet améliore à la fois les performances et l’extension multiplateforme
- Le même moteur de rendu fonctionne sur Linux desktop comme Ubuntu, Debian et Fedora, sur Linux embarqué et en environnement WebAssembly
- Sur Windows et macOS également, on observe une amélioration des performances de plus de 2x, avec une UI cohérente sans différences selon la plateforme
- Le projet apporte aux développeurs MAUI la prise en charge de Linux et du web ainsi qu’un cycle de développement prévisible, tout en servant de base à l’expansion de l’écosystème Avalonia
Aperçu du backend Avalonia MAUI
- Le backend Avalonia MAUI adopte une architecture qui conserve la base de code MAUI tout en remplaçant la couche de rendu par Avalonia
- Les applications MAUI existantes peuvent ainsi être étendues à des plateformes supplémentaires comme Linux et le navigateur
- Il permet à la fois d’améliorer les performances desktop et d’assurer une cohérence entre plateformes
- La démo concrète est une application MAUI basée sur WebAssembly, exécutable dans le navigateur sans plugin
- Il s’agit encore d’une build initiale, mais elle démontre que MAUI peut fonctionner sur les principaux OS desktop et dans le navigateur
Principales plateformes prises en charge
- Prise en charge de Linux desktop
- Exécution en tant qu’application desktop de premier plan sur Ubuntu, Debian, Fedora, etc.
- Le moteur de rendu Avalonia permet d’offrir une qualité au niveau des applications desktop hautes performances
- Prise en charge de Linux embarqué
- Fonctionne avec le même backend qu’Avalonia sur des appareils embarqués comme des panneaux Raspberry Pi ou des IHM industrielles
- Prise en charge de WebAssembly
- Permet de créer des applications MAUI exécutables dans le navigateur sans dépendances natives
- L’objectif est d’évoluer vers un niveau permettant une distribution via navigateur
- Prise en charge de Windows et macOS
- Intégration avec l’architecture de rendu desktop mature d’Avalonia
- Sur macOS, une amélioration de performances de plus de 2x par rapport à Mac Catalyst a été observée
Efficacité de développement et cohérence
- L’équipe Avalonia développe en ciblant une plateforme unique : Avalonia
- Plus besoin d’implémentations séparées pour iOS, Android, Windows, macOS, Linux et WebAssembly
- Réduction des bugs et des écarts de rendu entre plateformes
- Comme le même moteur de rendu est utilisé, l’UI s’affiche de façon identique sur toutes les plateformes
- Les ajouts de fonctionnalités et les corrections de bugs sont répercutés immédiatement sur toutes les plateformes
- Cela raccourcit les cycles de développement et rend la qualité plus prévisible
Pourquoi Avalonia construit un backend pour MAUI
- La priorité est de soutenir les développeurs clients .NET, afin que les utilisateurs de MAUI puissent bénéficier de la prise en charge de Linux et du navigateur ainsi que d’un gain de performances
- Grâce à ce projet, Avalonia apprend sur la compatibilité mobile, les problèmes d’API et les améliorations de tooling
- En permettant aux développeurs MAUI de découvrir le moteur de rendu et les fonctionnalités d’Avalonia, le projet devrait aussi favoriser l’adoption de l’écosystème
- L’objectif n’est pas de remplacer MAUI, mais d’offrir plus de choix aux développeurs MAUI existants
Ce que cela signifie pour les développeurs MAUI
- Les développeurs MAUI obtiennent la prise en charge de Linux qu’ils réclamaient de longue date, ainsi qu’un modèle d’UI cohérent basé sur le dessin
- Avalonia apporte notamment :
- rendu accéléré matériellement
- système cohérent de layout et de styles
- animations à haut taux de rafraîchissement
- rendu personnalisé et effets visuels
- large couverture de plateformes
- plateforme bénéficiant d’investissements et d’un support continus
- Déjà utilisé dans des environnements commerciaux par Unity, JetBrains, Schneider Electric, entre autres
- Il devient possible de conserver le code MAUI existant tout en améliorant simultanément Linux, le web et les performances desktop
Performances et rendu de nouvelle génération
- Une pile d’UI basée sur le dessin et pensée pour le GPU permet d’obtenir des performances supérieures à celles des toolkits natifs
- En collaboration avec l’équipe Google Flutter, Avalonia est en train d’introduire le moteur de rendu GPU Impeller dans .NET
- Une fois cette technologie appliquée, le backend MAUI héritera lui aussi d’une vitesse de rendu accrue, d’une consommation batterie réduite et d’animations plus fluides
Feuille de route
- La qualité du backend continuera d’être améliorée en collaboration avec les ingénieurs MAUI
- Lorsque la prise en charge de Linux et du navigateur arrivera à maturité, MAUI pourra devenir un véritable framework d’UI multiplateforme
- Après stabilisation, le projet sera publié en open source sous licence MIT
- L’avancement du développement, les benchmarks et les previews continueront d’être partagés régulièrement
1 commentaires
Avis Hacker News
C’est vraiment intéressant d’avoir ce genre de chose sur le web
Mais quand on essaie la démo, on n’a pas l’impression d’être sur le web
Impossible d’utiliser Ctrl+F pour rechercher, de sélectionner le texte ou de copier l’adresse d’un lien
Sur mobile, on ne peut pas non plus faire un appui long sur une image pour la partager, et les lecteurs d’écran ne fonctionnent pas
Tous ces points s’accumulent et donnent l’impression que « ce n’est pas vraiment le web »
Ça rappelle les contenus riches isolés du navigateur, comme les applets Java de la fin des années 90 ou Flash et Silverlight du début des années 2000
Sans ces fonctions, par définition, on ne peut pas appeler ça le « vrai web »
On finit par retomber sur la question philosophique : qu’est-ce que le web ?
Est-ce un simple moyen de transmettre des médias, ou quelque chose de plus vaste ?
Beaucoup de gens en ont assez du web transformé en app (app-lification) et regrettent l’ancien web ouvert
J’ai essayé la démo avec un lecteur d’écran et rien ne fonctionnait du tout
Ce n’est pas non plus la direction voulue par Microsoft
C’est simplement qu’Avalonia prend en charge WASM, donc MAUI peut fonctionner au-dessus
Mais au fond, cela revient juste à rendre en WASM une boîte à outils GUI de bureau
C’est sympa, mais ça ressemble davantage à une version moderne de Silverlight qu’à une vraie web app
Cela dit, pouvoir cibler le bureau Linux est un gros avantage
Beaucoup préféreront sans doute, comme avec Avalonia, un rendu à l’apparence uniforme plutôt que des contrôles natifs propres à chaque plateforme
Les CSS/JS/HTML des navigateurs modernes suffisent pour la plupart des cas
J’aime bien XAML, mais JSX repose sur une idée similaire et compile en vrai HTML
Je pensais déjà la même chose à l’époque de Silverlight — je ne comprends pas pourquoi on essaie sans cesse de recréer Flash
Les builds Web de Unity sont déjà un meilleur « C# Flash »
Si ces fonctions de base ne marchent pas, pour moi c’est rédhibitoire
Un MAUI sans prise en charge du bureau Linux n’a jamais été une option pour moi
Cet ajout améliore un peu la situation, mais je pense toujours qu’il vaut mieux utiliser Avalonia directement
Cela dit, c’est bien d’avoir cette option pour les projets existants
Enfin, on va pouvoir créer sous Linux des applications à « UX style téléphone » lentes et aux animations bizarres, sans passer par Kotlin Multiplatform ou Electron
Mais l’ensemble de widgets se limite à peu près à des boutons et des cases à cocher, ce qui est décevant
Je me demande pourquoi les démos de toolkits UI d’aujourd’hui sont moins impressionnantes que celles de l’époque de Delphi 1
Ça prend déjà en charge Windows/Mac/Linux/WASM
Ce travail semble surtout destiné à ceux qui veulent étendre des apps MAUI existantes vers Linux/WASM
L’avancement est visible sur le blog d’Avalonia
L’une des raisons pour lesquelles les gens évitent MAUI dans l’écosystème .NET, c’est que Microsoft ne l’utilise pas lui-même
Même Teams repose sur Electron
La question qui vient naturellement est : « si Microsoft ne l’utilise pas, pourquoi nous le ferions ? »
La division Windows gère WinUI/Win32, Office utilise React, et la division développeurs s’occupe de WPF et MAUI
Chaque équipe avançant séparément, cela a conduit à une dispersion des toolkits UI
Au final, tous les toolkits ne reçoivent qu’un support partiel
Teams a aussi pris cette direction lors de sa migration d’Angular vers React
Cela dit, il est vrai qu’ils n’utilisent pas MAUI
L’impression générale est qu’ils préfèrent des technologies éprouvées comme Avalonia ou WinForms
On ne sait pas très bien ce que Microsoft poussera sur le long terme
Il y a aussi Blazor, mais c’est plus proche d’un outil pour créer des applications internes que d’un remplaçant à React
D’ailleurs, on peut aussi se demander dans quelle mesure Google utilise réellement Flutter dans ses propres apps
Teams est arrivé en 2017, MAUI en 2022
Et le passage à React a également eu lieu avant MAUI
En revanche, le fait que Microsoft ne dogfoode pas suffisamment MAUI reste préoccupant
Il y a aussi eu récemment des nouvelles de réduction d’effectifs autour de MAUI, ce qui donne l’impression d’une faible confiance en interne
Il faut aussi tenir compte du fait que Flutter a cinq ans d’avance
Malgré tout, il reste difficile de se défaire de l’impression que Microsoft ne s’investit pas vraiment dans MAUI
Ça finit toujours par être abandonné
Mieux vaut préserver sa santé mentale et rester sur les technologies web standard
(ce n’est pas une défense de MAUI)
Pour éviter toute confusion
.NET MAUI est à l’origine un framework pour créer, avec une seule base de code, des apps Android, iOS, macOS et Windows
Cette fois, Linux et le navigateur s’y ajoutent
J’ai essayé de créer une app Hello World sur Mac, et la configuration était assez compliquée
Mais ça faisait quand même plaisir de réutiliser XAML après tout ce temps
Je cherchais un GUI cross-platform pour créer un logiciel de développement
J’ai d’abord essayé MAUI, et rien que l’installation était un cauchemar
Même les fonctions UI de base n’étaient pas prises en charge
J’ai ensuite testé AvaloniaUI, et l’expérience a été complètement opposée
L’installation était simple, et avec quelques recherches seulement j’ai pu implémenter facilement des choses comme une fenêtre transparente sans bordure
L’intégration à Visual Studio laisse un peu à désirer, mais c’est très largement en avance sur MAUI
On dirait le retour de Silverlight
Référence : Microsoft Silverlight wiki
Dans Chrome, la démo fonctionne à peine
Le puzzle coulissant réagit lentement, et la flèche de retour se fige
Si on recharge la page, on revient à l’écran d’accueil
Les sélecteurs d’heure et de date sont aussi mal alignés et peu agréables à manipuler
Globalement, c’est médiocre
Fil connexe
J’ai lancé la démo « Word puzzle » dans la section « Launch MAUI in your browser »
Quand on clique sur « Randomize », les tuiles se mélangent puis, si on revient avec la flèche du haut, l’écran se fige complètement
Le puzzle reste en arrière-plan, le menu se superpose au-dessus, et plus rien n’est cliquable
Ça se produit de la même manière dans plusieurs navigateurs
Lien vers la démo
Le cliquer-glisser est instable et il n’y a aucun retour visuel
Les tuiles ne se déplacent pas, elles se téléportent
Un simple clic ou un déplacement animé aurait été préférable
Un autre utilisateur signale le même problème
La calculatrice RPN ne permet même pas d’empiler des nombres
On a vraiment besoin d’un toolkit UI capable de créer un vrai logiciel de CAO
Les applications qui ressemblent à des webviews, ça commence à bien faire
Je déteste profondément les tendances UI du web de ces dix dernières années
Tout est devenu plus gros, pensé pour le tactile, avec beaucoup d’espace vide et des animations inutiles
J’aimerais revenir aux anciennes interfaces centrées sur la densité d’information et l’utilisabilité
C’est ce que j’apprécie sur de nombreux sites web japonais
Si on regarde la démo d’Avalonia, on voit qu’on peut aussi créer avec la pile GUI .NET des choses comme un éditeur vidéo ou un outil d’analyse cartographique
Avalonia Showcase
Si ça ne sert qu’à faire une appli météo ou une todo list, ça ne m’intéresse pas
WPF et WinForms existent toujours