Où en sommes nous sur Silverlight, en six points...

Voici un billet que je vous écris à chaud, de retour d'une semaine passée à Barcelone à assister au TechEd Développeurs.

Après avoir suivi quelques sessions ayant un rapport plus ou moins proche avec Silverlight, et après avoir animé déjà quatre dates des sept que comporte notre Tour de France Silverlight, je voulais partager les réflexions et constats suivants avec vous. Les voici.

Ce qui est confirmé par les différentes réactions que j'ai observées tant pendant nos quatre premières dates du Tour de France Silverlight de pendant les sessions du TechEd :

1 - L'intérêt pour Silverlight est grand auprès des développeurs et des populations techniques en général (c'est vous, chers lecteurs et lectrices ;)

Et sans trop de surprise, puisqu'il s'agit d'une toute nouvelle plate-forme de développement d'applications Web avec des capacités d'intéractions et de graphiques encore inédites dans le catalogue Microsoft, l'intérêt pour Silverlight en particulier chez les développeurs .NET et ASP.NET plus particulièrement.

2 - Les développeurs .NET attendent (bien légitimement) de Silverlight une productivité au moins équivalente à celle de ASP.NET ou de Windows Forms

Pour un développeur ASP.NET qui a pris l'habitude de développer des applications Web en utilisant les WebForms et qui a depuis longtemps abandonné la manière dure et ingrate (ie: générer son HTML depuis son code, comme on le faisait par exemple en ASP "Classic" ou en PHP) : utiliser une liste déroulante dans une page Web, ça se fait en écrivant Listbox.Items.Add() et non pas à grands coups de branchement des EventHandlers, de définition de transformations de translation dans des StoryBoards et de l'utilisation du Clipping pour ne voir qu'une "fenêtre" de notre liste d'items ;)

Bref, la façon dont on construit aujourd'hui des listes déroulantes en Silverlight 1.0 s'apparente clairement plus à un retour en arrière vers l'époque des Windows API que à l'utilisation d'un framework moderne du 21° siècle tel que ASP.NET.

Silverlight (1.0 et 1.1) sont donc pour le moment vécus comme un retour en arrière par les développeurs ASP.NET. Je souligne "pour le moment"...

3 - Les développeurs .NET considèrent Silverlight 1.0 comme une pré-version inutile et inutilisable

A plusieurs reprises, pendant le Tour Silverlight, j'ai eu le feedback suivant :

"Mais pourquoi diantre avez vous sorti Silverlight 1.0. Pour moi c'est inutilisable et c'est juste une Bêta, non ?"

C'est vrai et faux... On peut faire des choses en Silverlight 1.0 si on le veut. Regardez par exemple le site Quiksilver Pro France. C'est une application entièrement réalisée en Silverlight 1.0. Ne dites pas qu'on ne peut rien faire en Silverlight 1.0...

Et puis l'autre aspect des choses, c'est que les machines sur lesquelles Silverlight 1.0 est installé seront automatiquement mises à jour en Silverlight 1.1 à terme. Vous - en tant que développeurs - serez alors ravis de voir que tant de machines qui ont reçu Silverlight 1.0 à un moment donné se retrouvent prêtes à exécuter vos belles applications riches en Silverlight 1.1.

OK, il reste l'aspect du langage Javascript. Forcément, en tant que développeur ASP.NET, vous ne pouvez pas aimer écrire du Javascript. Nous le savons.

Mais ne perdez pas de vue la chose suivante : C'est que les cibles et les scénarios d'utilisation de Silverlight 1.0 et de Silverlight 1.1 pour nous (comprendre "nous" = Microsoft dans ce contexte) sont très différentes.

Avec Silverlight 1.0, on vise à enrichir des sites ou des applications existantes avec des contenus plus riches, ou vectoriels ou de la vidéo. Un autre scénario est la réalisation de "mini sites" de type évènementiels liés à une actualité comme par exemple un évènement sportif (Quiksilver), une conférence ou un lancement produit (cf le mini site Halo3 chez MSN).

Les gens qui réalisent ce type de mini site sont généralement des développeurs Web / Ajax qui travaillent dans des agences intéractives. On ne cible pas les développeurs qui écrivent des applications transactionnelles pour des Front-Office de salles de marchés dans des grandes banques :)

Pour les développeurs en agences, les capacités de Silverlight 1.0 et l'utilisation de Javascript sont OK. Pas besoin de plus. Au contraire, l'utilisation de langages managés comme C# serait sans doute un gap trop important.

A contrario, pour les développeurs ASP.NET, la cible avec Silverlight en tant que scénario c'est la réalisation d'applications Web riches (RIA) complètes et ex-nihilo. Dans ce contexte, il vous faut non seulement utiliser des langages managés type C# mais aussi disposer de deux ou trois autres trucs, parmi lesquels :

  • un système de layout (prévu pour Silverlight 1.1, pour le moment absent de l'Alpha actuelle)
  • une bibliothèque de contrôles visuels riche et extensible (prévue pour Silverlight 1.1, pour le moment absent de l'Alpha actuelle)
  • des mécanismes d'accès aux données (qui viendront sous différentes formes, le projet Astoria en Bêta étant l'une de ces formes)
  • des mécanismes de Binding sur les propriétés des objets (prévu pour Silverlight 1.1, pour le moment absent de l'Alpha actuelle)

Ces dernières pièces du puzzle étant actuellement manquantes, résultat : Vous êtes frustré(e)s !

4 - Silverlight 1.1 semble frustrer très fort

Et oui, et sans surprise, c'est la conséquence directe et évidente du point précédent. Et pour couronner le tout, nous ne disposons pas encore aucune roadmap claire et précise du groupe produit Silverlight, ni d'une liste exhaustive des contrôles qui pourraient à terme faire parti de Silverlight 1.1 en version finale. C'est vrai.

"Alors pourquoi avoir sorti cette pré-version Alpha si tôt, puisqu'elle ne contient presque rien" me demanderez-vous ?

Au contraire, elle contient déjà beaucoup de choses ! Cette pré-version Alpha de Silverlight 1.1 contient une première implémentation d'un runtime .NET allégé qui fonctionne dans le navigateur et qui permet l'exécution de codes managés dans le client Web. Cette Alpha de la 1.1 contient également une première implémentation du DLR (ie Dynamic Language Runtime) qui permet l'exécution de langages dynamiques, soit IronPython et JScript dans cette version.

Tout ceci renforce le discours que nous tenons depuis 2001 - à l'époque de la sortie du .NET Framework 1.0 - où nous expliquions que nous allions fédérer progressivement toutes nos plate-formes autour de .NET, du CLR et des langages managés.

Ainsi, cette pré-version Alpha de Silverlight 1.1 dessine le portrait robot des futures applications Web, celles qu'on nomme actuellement RIA pour "Rich Internet Applications", qui bénéficient du meilleur des deux mondes avec à la fois des applications riches et très intéractives, et d'autre part, un "footprint" léger et aucun déploiement nécessaire.

5 - Silverlight 1.1 Alpha Refresh est très stable

En effet. Silverlight 1.1, bien qu'étant en version Alpha est *très* stable.

Voire trop.

C'est à un tel point qu'on finirait presque par en oublier que Silverlight 1.1 est actuellement en phase de Alpha test. C'est une version Alpha. Et comme cette version 1.1 Alpha est si stable, la tentation est grande d'aller plus loin, de développer des choses complexes. Tentation d'aller plus loin.

Trop loin ?

A force d'utiliser et de cotoyer à longueur de journée des sites "2.0" qui portent la mention de "version Bêta", on en oublierait presque ce que signifie "Alpha".

Je vous redonne à lire un extrait de la licence qui accompagne le téléchargement de Silverlight 1.1. Vous n'avez sans doute pas prête trop d'attention à cette licence. Voici pourtant un extrait intéressant :

PRE-RELEASE SOFTWARE. This software is a pre-release version. It may not work correctly or the way a final version of the software will. We may change it for the final, commercial version. We also may not release a commercial version.

Traduction en version courte et explicite : C'est une pré-version, et donc on ne garantit RIEN, ça va casser à la prochaine version, ça va casser à chaque version d'ici à la version finale, si il y a une version finale un jour, ce qui n'est pas non plus garanti. Et encore une fois, on ne garantit RIEN.

Plus explicite, on ne peut pas faire.

Toutefois, toutefois...

6 - Silverlight et les applications RIA, c'est pour demain !

Toutefois, Silverlight 1.1 sortira un jour en version finale, c'est certain ! C'est certain même si ce n'est pas garanti contractuellement à ce jour.

J'en veux pour preuve que les inscriptions de la conférence Mix08 viennent d'ouvrir, et que le mini site de l'évènement montre déjà l'importance des sessions consacrées à Silverlight dans cet évènement. Le mini-site indique aussi que c'est Steve Ballmer (en personne) qui animera le keynote d'ouverture de Mix08 à Las Vegas. Ceci montre l'importance de Silverlight pour Microsoft en tant que compagnie.

Toutes les pièces du puzzle sont en train de se mettre en place... Il en manque encore quelques unes, mais ça se dessine rapidement. Microsoft Sync Framework, Astoria, etc...

Tout se met en place pour que la plate-forme Silverlight 1.1 de vos rêves devienne rapidement réalité.

Quand ? Comment ?

Difficile à dire de façon ferme et formelle pour le moment. Mais je vas vous partager mon point de vue personnel sur la question.

<Disclaimer>

Ce qui suit est uniquement mon opinion personnelle sur la question, ceci ne constitue en aucun cas une annonce ou une quelconque communication officielle de la part de mon employeur, et tout ceci est à prendre en compte avec tout le conditionnel qui s'impose.

</Disclaimer>

Considérant que l'annonce de la disponibilité des pré-versions de Silverlight 1.0 et 1.1 ainsi que du nom même de Silverlight que l'on connaissait au préalable sous le nom de code de WPF/e ont été faites pendant la conférence Mix07 à Las Vegas en Mai dernier, il y a fort à parier que Mix08 marquera à nouveau cette année un Milestone important pour Silverlight.

Reste à savoir si ce Milestone sera la disponibilité de la version finale de Silverlight 1.1 ou bien plus modestement la disponibilité d'une version assez avancée, type Bêta 2 ou Release Candidate accompagnée d'une licence GoLive!

En tout état de cause, je persiste à croire que l'horizon sera nette plus plus dégagé et que la roadmap de Silverlight 1.1 sera autrement plus lisible à l'époque de Mix08. Le signal ultime sera l'annonce de la disponibilité de la licence GoLive! pour Silverlight 1.1, car à partir du moment ou nous annoncerons cette licence GoLive!, nous savons que l'implémentation de la version finale RTM ne diffèrera pas de façon importante de celle qui sera en vigueur à ce moment, et que par conséquent, la version en vigueur à ce moment sera complète en termes de features, de classes et de contrôles.

Ca ne signifie pas qu'il soit trop tôt pour commencer avec Silverlight. Pas du tout, et ceci pour les raisons suivantes :

- Le modèle de développement de Silverlight 1.1 à base de C# et de compilation ne va pas remplacer le modèle de Javascript interprêté de Silverlight 1.0, il va juste dl'enrichir. Silverlight 1.1 apportera la compatibilité ascendante depuis Silverlight 1.0. Vos applications qui ciblent Silverlight 1.0 fonctionneront à l'identique dans le plug-in Silverlight 1.1. C'est d'ailleurs déjà le cas avec le plug-in de la version 1.1 Alpha.

- Les grands principes de fonctionnement de Silverlight 1.1 ne seront pas modifiés d'ici à la version finale. Seules certaines parties de son implémentation seront modifiées, et aussi largement étendues par l'ajout par exemple du layout, des contrôles visuels, et du binding. En revanche, le système d'animations, le moteur vectoriel, etc... resteront proches de ce que l'on en connait actuellement, et ceci simplement parce que ces parties sont communes entre Silverlight 1.0 et Silverlight 1.1. Tout ce que vous apprendrez actuellement sur Silverlight 1.1 pourra donc être réutilisé et valorisé à terme.

Est-ce trop tôt pour démarrer un développement en Silverlight ?

Oui et Non.

Clairement non si on parle de Silverlight 1.0 qui est en version finale, et donc utilisable, déployable et complètement supporté par Microsoft.

Et Oui si on parle du cas de développeurs qui cibleraient Silverlight 1.1 en ayant perdu de vue le fait que la technologie est pour le moment au stade de Alpha test, et qui ne seraient pas complètement conscients que des changements peuvent avoir - et auront certainement - lieu d'ici à la disponibilité de la version finale.

Donc Oui, vous pouvez d'ores et déjà développer en visant Silverlight 1.1 pour cible, simplement, vous devez être pleinement conscients de ce que ceci peut impliquer.

C'est d'ailleurs la voie qu'ont choisi les gens de ComponentOne qui construisent actuellement un framework - plutôt impressionnant d'ailleurs - de contrôles visuels pour Silverlight 1.1.

Le framework Sapphire - c'est son nom - peut être téléchargé en version Alpha et les démonstrations en ligne sont déjà très prometteuses.

Truc : Pour pouvoir visualiser ces démos de Sapphire, vous devez passer les paramètres de Locale de notre système à "US - English". En effet, en paramètres FR-fr, l'Alpha actuelle de Sapphire ne semble pas fonctionner correctement. C'est une version Alpha, nous pouvons être indulgents...

Pour en revenir à ComponentOne et à leur contrôles du toolset Sapphire, ils font le pari que d'être à terme les premiers sur le marché des contrôles Silverlight 1.1 leur donnera un avantage conccurentiel certain, ce qui est généralement le cas. Du coup, ils acceptent de pouvoir avoir à faire face à des coûts de développement supérieurs, du fait de changements d'implémentations ou de design dans les versions successives entre la version Alpha actuelle et la version finale. C'est une question de stratégie, et aussi de possibilité d'investissement. A chacun de faire son choix, tant que c'est en pleine connaissance de cause.

Allez, on reparle de tout ceci après le Mix08 à Las Vegas ?

[Edit] : Jesse Liberty est un Senior Program Manager de l'équipe Silverlight à Microsoft Corp. Toute ressemblance entre un des billets récents sur son blog et le présent billet ne serait pas tout à fait fortuite.