mardi 18 octobre 2011

La façon de construire des UI évolue

Depuis quelques temps, je travaille sur un framework d’UI en .NET. Ce framework est potentiellement capable de générer une UI en n’importe quoi. Pour l’instant un rendu WPF et HTML sont implémentés. Ce dont je me suis aperçu en faisant de framework c’est que nos besoins d’UI ont évolués.

Les contrôles d’UI que nous voulons ne sont plus des contrôles bas niveau tels qu’un bouton ou un TextBox, mais des contrôles haut niveau : un contrôle Master-Detail, une toolbar. Je ne vais certainement pas m’attirer les bonnes grâces des designers et autres infographistes en disant cela, mais le design importe peu au final. Ce qui compte, c’est d’avoir un rendu fonctionnel.

Une application se décrit de manière fonctionnelle : un menu, une vue maître/détail, une fonction d’export de la vue maître… Le fait que le bouton se situe au-dessus de la grille ou dans un onglet contextuel d’un ruban, qui s’en soucie ? Ce qui importe, c’est d’avoir un comportement cohérent au sein d’une application, et si ce comportement peut être généralisé à toutes les applications existantes sur un OS, c’est encore mieux. C’est ce que commence à propose Microsoft avec son API WinRT. Une UI commune pour toutes les applications Metro.

Ce qu’il manque à .NET, c’est une uniformisation des interfaces. Avec le XAML, on tend effectivement vers cette uniformisation, mais le soucis, c’est qu’il ne s’agit pas d’une bibliothèque de contrôles identiques : Silverlight a la sienne, WPF aussi, WinRT, qui arrive, aussi. C’est là où intervient mon framework en cours de développement : 1 langage, des cibles différentes. J’ai tenté de pousser le concept à son maximum en proposant de n’avoir qu’une dll contenant l’UI, et c’est ensuite le projet que vous faites qui doit spécifier qu’il s’agit d’une application Web, Win, … Et voilà. Bien sûr, il ne s’agit là que d’une humble contribution, pleine de bugs à souhaits, manquant cruellement de fonctionnalité. Le but est principalement de démontrer le concept.

A mon avis, le développement d’application va prendre un nouveau tournant après la sortie de Windows 8, et je pense que la tendance sera à 1 langage => n plateformes, 1 plateforme => 1 UI uniforme. La seconde tendance a déjà émergé avec iOS ou WindowsPhone. Dans les best practices de développement d’UI (web principalement), on nous recommande toujours tester les fonctionnalités plutôt que de tester le moteur de rendu. N’est-ce pas une première étape vers un langage universel de création d’UI ? Est-il possible d’uniformiser toutes les UI sous un seul et même langage universel ?

1 commentaire:

vincent dagousset a dit…

Et pourquoi pas plutôt utiliser Mono ?

http://monodevelop.com/