Winforms sous Linux

Après 4 ans de développement, la communauté Mono est enfin parvenu à l’implémentation complète des Winforms : http://tirania.org/blog/archive/2008/May-13.html

On peux se demander « oui, mais pourquoi faire? » et je ne trouve pas de réponse à la question. En effet, il arrive souvent qu’une application .Net possède du Legacy et donc des dépendances COM ou P/Invoke. Dans ce cas, on ne peut pas la migrer (pour tester si une migration est possible: http://www.mono-project.com/Moma)

Mais comme je suis exigent en terme d’interface, je n’aime pas avoir une application « alien » qui ne ressemble pas à mon environnement Linux (GTK/QT). Certes, il est prévu d’avoir un meilleur support du moteur de thème lors du prochain GSoC, donc wait and see.

Rappelons que les Winforms sont une sur-couche .Net de l’API WIN32. Cette dernière n’existant pas sous Linux et MacOS, j’en profite alors pour féliciter les équipes de Mono pour leur implémentation « from scratch ».

D’un autre coté, l’implémentation WPF chez Mono avance plutôt vite. D’ailleurs, la première release de Moonlight vient de sortir. Il n’y a pas de dépendance WIN32 dans ce cas, et je vois plus l’avenir des applications .Net dans ce sens. Mais l’approche WPF est d’avoir un thème propre à l’application, comme c’est le cas pour les sites Web, on obtient la même interface sous Linux et Windows (et MacOS). Mais finalement je trouve que ces interfaces ne s’intègrent à aucun des 3 environnements.

J’avais déjà rédigé un billet sur la guerre entre les technologies de « présentation » dans le domaine du Web (Ajax/Flash/etc.). Je ne vous l’apprend pas, le monde « Desktop » et « Web » convergent. L’idée est plutôt simple: aujourd’hui on doit exécuter un OS qui héberge des applications « Desktop », et on doit exécuter un navigateur pour les applications Web. On obtient une certaines confusion entre la barre des tâches pour les application et les onglets pour les sites Web. Tout ceci est beaucoup mieux expliqué sur ce blog.

Mais de plus en plus, le navigateur ne sert qu’à exécuter un plugin (Silverlight/Flash/Java) qui lui charge l’application.
L’objectif est de lancer une application Web comme une application « Dekstop », en exécutant le dis plugin en standalone, ou de passer par un « mini navigateur » (qui ne sert que pour le rendu HTML+Ajax, sans navigation etc). C’est en tout cas ce que propose Adobe Air ou Mozilla Prism.

Il va donc être difficile de distinguer une application « Desktop » ou « Web ». Ceci me fait un peu penser aux Widgets du Dashboard sous MacOS (ou autre plagia).

Au même titre que le Web se rapproche du Bureau, les applications « lourdes » copient les techniques du Web question apparence. Il y a des tentatives d’utilisation de CSS en Swing/SWT, mais l’exemple le plus flagrant est la description de l’interface à l’aide de XML comme dans XAML.

On obtient ainsi des applications « Desktop » ne copiant pas du tout le style standard de l’OS, mais ayant son propre thème telle un site Web.

Le résultat peut s’avérer très jolie, très ergonomique, mais très « inconsistant » avec les autres applications. Pourquoi devrais-je apprendre une nouvelle interface? Pourquoi ne pas utilise un standard? Pourquoi ne pas me laisser choisir mon thème dans l’OS plutôt que de me l’imposer pour une application donnée?

Personnellement, je ne suis pas fan de toutes ces interfaces différentes, et je ne suis pas le seul.
Pour revenir sur l’OS Linux, un grand effort est fourni pour rendre les interfaces homogènes. On peut par exemple citer le projet Portland allant dans cette direction. Je peux alors apprécier ces efforts puisqu’il m’est devenu difficile de distinguer une application QT dans mon environnement GTK (essayez Skype sous Linux pour vous en convaincre).

Je voulais aussi citer Redhat comme, à mon humble avis, les pionniers en matières d’homogénéisation avec leur thème Bluecurve identique sous KDE est Gnome. D’autre projets ont suivis dans le même genre comme Tango.

Enfin, les interfaces graphiques sont en pleines évolutions ces derniers temps, avec l’exploitation des cartes graphiques récentes, offrant des « eye candy » très alléchants. Le monde GTK est en pleine réflexion pour les futures versions, et les thèmes supportent de plus en plus d’effet.
Je préfère de loin cette approche ou l’OS propose un système de thème avancé (avec des techniques proches du CSS) et l’applique à toutes les applications, rendant le tout homogène. Néanmoins, je distinguerai toujours les applications type « Widget » qui ressemblent plus à de « mini-site » ou « application Web » qui elle ont une apparence propre à elles.

Comment seront les interfaces des OS du futures? Va-t-on vers un gros bordel graphique, ou une homogénéisation? WPF va-t-il percer sous Linux? Quels vont être les applications Winforms qui vont être migré sous Linux?

Publicités

3 réflexions sur “Winforms sous Linux

  1. Je pense que tu as raison lorsque tu vois le futur des applications desktop autour de WPF plus que WinForms… Et j’ai presque envie de dire qu’il est dommage que le support des WinForms arrive que maintenant sur Mono. C’est en tout cas une prouesse à saluer, qui permettra sans doute à pas mal de petites applications d’être migrées.

    En ce qui concerne les interfaces, on en a déjà parlé plusieurs fois :’) Je pense qu’on ira vers un modèle selon lequel toutes les applications peuvent avoir leur propre apparence. C’est ce qui a fait la richesse du web. Ca n’a pas été le cas plus tôt pour les applications desktop car il était très difficile de proposer des interfaces différentes. En fait, il n’y avait quasiment que les jeux qui pouvaient se le permettre en utilisant DirectX ou OpenGL.

    Comme tu le soulignes, la frontière entre les « vraies » applis desktop et les applis desktop s’exécutant dans un navigateur s’estompe. C’est aussi ce qui me fait penser que si uniformisation il y a pour les interfaces, ce sera autour du modèle web et de la liberté qu’il offre aux concepteurs et de la richesse qu’il apporte aux utilisateurs.

    Ce qui rend une application complexe à utiliser est avant tout le non-respect des principales règles d’IHM. Une application desktop utilisant des contrôles standardisés peut très bien avoir une ergonomie merdique quand un site web en flash en possède une géniale. Et à mon sens les thèmes et les effets d’un OS, même s’ils deviennent de plus en plus terribles, ne pourront pas garantir une homogénéité sans imposer de contraintes. Les contraintes au niveau du design ne jamais super bien perçues…

    Bref, en tout cas ça bouge, et c’est bien.

  2. Aujourd’hui tout les logiciels (desktop) ce ressemblent tous, on les juges donc principalement sur des critaires de fonctionalités, fiabilité, performances ou encore de sécurité… l’ergonomie et l’aspect esthétique de l’interface interviennent finalement assez peu ou dans un second temps, c’est du moins l’impression que j’en ai.

    Mais bientot, si on suis le modèle du web, cette « émancipation graphique » sera à même d’apporter une véritable valeur ajoutée qui contribuera à ce démarquer de la concurrence.

    Nous aurons donc enfin besoin de « vrais » designers pour créer les interfaces de nos apply si nous ne voulons pas revivre les catastrophes « ergonomico-visuelles » que l’on croisait encore (tres) régulierement sur le Web il y a quelques années.

    Et je trouve ça plutôt chouette de pouvoir travailler avec des gens qui ont, bien souvent, une vision totalement différentes de ce que nous autres, développeurs, pouvont avoir d’une interface utilisateur. C’est tres enrichissant.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s