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.

Comments

  • Anonymous
    November 15, 2007
    Résumé détaillé très intéressant, un grand merci :)

  • Anonymous
    November 16, 2007
    "Forcément, en tant que développeur ASP.NET, vous ne pouvez pas aimer écrire du Javascript." No comments ! Enfin presque : Vous pouvez ne pas aimer != Vous ne pouvez pas aimer ;-) Je suis assez d'accord avec ton point 3 ! Mais je n'ai pas assez entendu ce discours hier (tour de france Silverlight) (ou alors vous avez été tellement soporiphique que j'ai pas entendu ;)) Silverlight 1.0 n'est pas fait pour les développeurs mais pour les concepteurs de mini site flash ! Ce serait bien de le dire plus fort ! Car le feedback négative que vous avez vient des développeurs, normal puisque vous (Ms pas toi) avez présentés Silverlight pour les développeurs. Ca ne vient pas seulement que ce soit en js, j'aime js et j'ai jamais touché à Silverlight car j'en vois pas l'utilité ... Cela me semble également évident que pour le Mix 08 il y aura une "grande" version de silverlight (genre la CTP8.3 alpha 4 beta 2 ;-) ) et que cette version sera "Go Live" Mais attention "Go Live" ne veux pas dire fonctionnellement proche de la version final, Atlas était en Go-Live et la quasi totalité du code à été supprimé juste avant la RTM ...

  • Anonymous
    November 16, 2007
    The comment has been removed

  • Anonymous
    November 16, 2007
    non pas Soporiphique, mais la première partie où Pierre expliquait du js, je l'ai trouvé très longue ... Mais c'est pas évident de trouver quelque chose d'excitant dans Silverlight 1.0 sans parler de vidéo ;-) Tout du moins trouver quelque chose qui m'excite sachant que la plupart des choses faisable en Silverlight 1.0 (hors vidéo et truc tricky que vous avez pas montré hier) sont faisable en js. Je connais très bien js donc j'ai trouvé cette partie un peu longue, mais pas inutile pour ceux qui n'aime pas js car c'est du js et le js c'est mal et ceux qui ne conaissait pas du tout silverlight. Oui, hier tu as dit que Silverlight 1.0 n'était pas fait pour les développeurs mais ca c'est pas réllement resentis, peut etre car vous (Pierre et toi) êtes développeurs, que la salle était rempli de développeurs et que donc le discours à une approche développeur. Peut être que Ms aurait du faire cette présentation avec un designer ? Au niveau des communications online, il est rarement dit que Silverlight 1.0 n'est pas pour les développeurs (ou alors ca vient que je lis que des infos pour développeurs) et c'est bien dommage car beaucoup de développeurs sont décus par cette techno "prometteuse"

  • Anonymous
    November 16, 2007
    @Cyril : Arf, alors si même toi qui est le plus grand adepte de Javascript que je connaisse tu as trouvé la partie JS trop longue, alors je ne vois pas ce qu'on peut faire à part complètement zapper la partie JS et ne parler que de Silverlight 1.1... Mais c'est impossible. Aujourd'hui, Silverlight 1.0 et JS sont les seules versions réellement utilisables. C'est comme ça.

  • Anonymous
    November 16, 2007
    J'ai trouvé long car justement je connais js ... et vous avez montré la base de la base de la base de js donc j'ai pas trouvé ca "interessant" mais c'est utile pour ceux qui connaissent pas js.

  • Anonymous
    November 16, 2007
    @Cyril : Le soucis, c'est que ceux qui ne connaissent pas JS (et tu as vu hier, c'est toute la salle sauf trois personnes dont toi) n'ont aucune envie de s'y mettre et d'apprendre. Donc pour elles et eux aussi la partie JS était trop longue, mais pas pour les mêmes raisons que pour toi :)

  • Anonymous
    November 16, 2007
    Il semblerait que les développeurs de Microsoft n'apportent aucune importance à l'accessibilité et ne prennent pas en compte les standards web définit par le W3C, ce qui en 2007, air de la normalisation du média internet, est tout à fait impensable. Sachez que vos applications .NET, Silverlight, CMS, etc ... ne respectent absolument aucune règle d'accessibilité, de standards et de bonnes pratiques web... Le gouvernement étant le premier client d'informatique/internet au monde, comment comptez-vous emportez des batailles technologiques ? Quand commenceriez-vous à songer aux utilisateurs finaux, qui font usage des applications développés avec vos technologies ? Bonne chance ;)

  • Anonymous
    November 16, 2007
    Bienvenue Yves sur mon Blog... Je suis un lecteur de Poleweb et je ne pensais pas que vous étiez réciproquement un lecteur du mien. Ceci dit, je ne peux pas vous laisser affirmer de pareilles choses. C'est inexact. En outre, si je peux exprimer mon point de vue personnel, je trouve ça tout simplement idiot et puéril de vous entendre affirmer que Microsoft n'accorde aucune importance aux normes et aux questions d'accessibilité. Sachez que depuis la version 2.0 d'ASP.NET, tous les contrôles serveurs génèrent du HTML qui est conforme aux standards d'accessibilités WCAG dits Section 508, sans codage ou configuration particulière. Cf. ce billet de Scott Guthrie, Senior VP sur la partie Plate-forme Web : http://weblogs.asp.net/scottgu/archive/2003/11/25/39620.aspx "In Whidbey, all ASP.NET Server Control will now generate Section 508 compliant markup by default, no coding or config changes required to enable it." CMS étant une application basée sur ASP.NET, elle doit bénéficier sur rendu conforme Section 508 de ASP.NET, mais je ne me suis jamais penché sur la question. Pour ce qui est de Silverlight, il en va de même que pour Flash, et il est exact que la question de l'accessibilité au sens ou nous la connaissons dans les applications Web reste à définir. Vous pensez que 2007 est sous l'ère de la normalisation d'internet, je pense au contraire que l'internet n'est pas encore stabilisé et défini et continue à se chercher. L'excitation des deux ou trois dernières années autour de Ajax en est la preuve à mon sens. D'ailleurs, qu'avez vous à dire à propos de Ajax en général ? Quid de l'accessibilité d'une application Web qui modifie le contenu de la page par injection dynamique d'éléments dans l'arbre DOM ? Pas top top non plus, hein ? Alors forcément, une plate-forme nouvelle et qui se cherche - c'est le cas de Silverlight - ne peut pas prétendre couvrir tous les scénarios ni répondre à tous les besoins dès sa première version. Mais les choses vont évoluer. Quant au fait que le gouvernement ou les gouvernements seraient les premiers clients d'informatique ou d'internet au monde, je ne sais pas d'où vous tenez cette information mais sachez qu'elle est tout simplement fantaisiste. Nous avons la faiblesse de penser que nous nous soucions en premier lieu des utilisateurs finaux chez Microsoft. On pourrait disserter sans fin sur les multiples actions et initiatives de la compagnie qui vont dans ce sens, mais je ne suis pas certain que ce débat (sans fin) vous intéresse vraiment. Bon week-end à vous, et j'espère que vous passerez un week-end au calme après cette semaine d'agitation et d'énervement avec les grèves dans les transports. /CL

  • Anonymous
    November 16, 2007
    Merci de penser à tes lectrices dans tes posts! ça me va droit au coeur! :)

  • Anonymous
    November 27, 2007
    Ce tour de France, j'y étais à TOULOUSE, m'a été bien utile après avoir un peu galéré a essayer tout seul comme cela était recommandé avant d'assister. Mettre le code sur le client ou sur le serveur est un éternel débat que nous avons retrouvé entre Silverlight 1.0 et Silverlight 1.1. En ce qui me concerne il me faut tenir compte de l'hébergeur et là, miracle chez MicroSoft, ça marche aussi avec PHP5 et MySql. Je me suis empressé de remplacer un affichage standard d'images sur le site (simulation)  par un affichage Silverlight en créant dynamiquement le XAML (qui n'est jamais que du xml) avec PHP. J'ai créé, il y à 3 ans, un FrameWork XSLT pour gérér dynamiquement les pages WEB et je constate que Silverlight va dans le même sens c'est à dire  réduire au minimum le codage Java, .NET,  PHP et JavaScript au minimum. Bien que premier client en France, depuis 1981 avec MSDOS1.0, je ne partage pas l'ostracisme des développeurs qui ne veulent connaître que .NET.  Dans les grands comptes, j'étais chez NATIXIS, toutes les technologies cohabitent et peuvent communiquer avec des Web Services. Merci encore pour ces ouvertures.