La technologie Zoomorama
Par Laurentj le jeudi, juin 18 2009, 11:17 - Technologies Web - Lien permanent
Une fois n'est pas coutume, je vais vous parler de ce qu'on fait dans la boîte où je travaille, Zoomorama, ou plus exactement, de la technologie que l'on a crée ou utilisé.
Si vous vous baladez sur le site, vous comprendrez que nous avons créé un moyen de zoomer sur des photos dans des pages web. Et accessoirement, entre autres choses, nous proposons un espace d'hébergement de photos.
Les plus observateurs et techniciens d'entre vous, et surtout ceux qui prônent les standards comme moi et mes collègues chez Zoomorama, auront remarqué une "anomalie" (si on peut appeler ça une anomalie) sur le site : on utilise Flash. Pour se débarrasser au plus vite de ce problème "tendancieux", voici au moins deux bonnes raisons justifiant l'utilisation de Flash pour notre technologie de Zooming :
- ça permet d'utiliser notre techno sur 99% des ordinateurs des internautes
- pour nos besoins (et j'insiste là dessus), les standards tels qu'implémentés actuellement dans les navigateurs, ne sont pas encore assez robustes, matures, et surtout assez performants (et je répète: pour nos besoins). Et puis tant qu'il y aura cette bouse d'IE qui est majoritaire sur le web...
On utilise donc une techno qui n'est pas "web" (dans le sens noble du terme), mais... On se soigne !
En effet, déjà, d'une part, l'appli flash, c'est de l'ActionScript 3 à 99,9%. Pas de Flex ou autre truc d'Adobe. En fait, on utilise juste le compilateur AS3 d'Adobe. Et d'autre part, nous utilisons CSS, DOM, XML, Javascript etc. Mais attention, je ne parle pas dans notre site web. Je parle : dans notre application Flash.
Oui, vous avez bien compris : nous avons développé un... navigateur en Flash !
Un navigateur qui implémente donc les technologies suivantes :
- XML, en particulier un sous ensemble de SVG, ainsi qu'une grammaire qui nous est propre, le ZML.
- Bien sûr qui dit XML, dit DOM. Le document lu par notre browser est accessible à partir de la page web, et utilisable avec javascript comme n'importe quel autre document web. On peut donc le modifier dynamiquement, et ces modifications sont répercutées visuellement instantanément.
- CSS. Nous implémentons globalement CSS 2.1, mais aussi des bouts de CSS3. Par exemple, nous sommes probablement la deuxième implémentation au monde après webkit, qui supporte les transitions CSS. D'ailleurs nous avons l'intention de faire des retours au W3C. Dés qu'on aura un peu de temps (Oui Daniel, on n'a pas oublié :-)).
Et c'est cela qui différencie Zoomorama des autres solutions de "zooming" que l'on peut trouver sur le web : on ne fait pas que zoomer simplement sur une photo, mais on zoom sur un document. Ce document n'est pas en HTML, mais en ZML, notre langage maison, très simple, et plus orienté contenu multimédia que contenu textuel comme HTML. Et nous nous basons donc sur des standards comme je l'ai indiqué.
Ce qui veut dire que notre technologie est à la portée de n'importe quel développeur web. Il y a finalement juste la surface de rendu qui change : ce n'est pas Gecko, Webkit, Trident, ou Prescot, mais Flash.
Cette utilisation des standards a aussi d'autres avantages :
- on peut générer les documents dynamiquement coté serveur, tout comme n'importe quel page web. Entendre par là que le document est vraiment externe à notre appli Flash, et il n'y a pas besoin d'avoir des outils Adobe pour utiliser notre navigateur.
- notre technologie est "browser-agnostic", c'est à dire que les documents produits par les utilisateurs seront réutilisables par n'importe quel autre navigateur qui implémenterait ZML et bien sûr, CSS et cie. Notre doux rêve serait par exemple d'avoir un browser basée sur Canvas. Mais les implémentations de Canvas dans les navigateurs d'aujourd'hui ne sont pas assez performantes (voir inexistante chez certains, hum, hum).
Si on avait du temps , et vu qu'on est au moins 3 dans l'équipe à connaître plus ou moins les méandres de Gecko, on essayerait bien une implémentation native dans Firefox, quitte à passer par XTF :-) Mais les journées de 48h, il parait que ça va pas se faire...
En tout cas, ce qui est sympa dans ce projet, c'est la volonté tenace de l'équipe d'utiliser et d'implémenter au plus juste les standards que l'on supporte. Sur ce point, je félicite David Marteau et Olivier Gambier pour le développement de ce browser. En ce qui me concerne, je développe (avec David), la nouvelle version de l'éditeur ZML wysiwyg, ZoomCreator, réécrite from scratch[1], basé sur XulRunner et qui sera en quelque sorte un Kompozer-like ou BlueGriffon-like, mais pour ZML.
Nous travaillons aussi sur une documentation à l'intention des développeurs web qui voudraient zoomer dans tout les sens :-) Je vous tiendrais au courant.
Notes
[1] La version actuellement en ligne est basé sur XulRunner et une ancienne techno de Zoomorama basée sur un activeX
Commentaires
Super génial boulot super intéressant, digne de toi.
On comprend mieux ce qui t'a fait passer du côté obscure.
Mais je suis désolé, mais je ne peux pas m'empêcher d'être énervé par ton attitude.
Tu ne peux pas rendre a flash ceux qui appartient a flash, bon sang c'est quand même grâce à lui si vous pouvez rendre tous ces standards et cette philosophie disponible au plus grand nombre.
Alors, des phrases comme "Pas de Flex ou autre truc d'adobe."
Zut Flex c'est le MXML, le MXML c'est le frère du XUL sur beaucoup de points.
flash c'est des standards ouverts à la pelle, c'est l'as3 qui est un des langages qui implémente le mieux ecma-script.
Flash c'est l'un des plus gros moteur du web, que serait internet aujourd'hui sans flash, la balise vidéo n'est-elle pas la pour remplacer ce que flash fait depuis des années.
Là où le w3c se traine comme un escargot sec, flash c'est des innovations tous les ans.
A ba ouais, ça pue, c'est pas libre !
Mais tous les projets ont besoin d'argent, la méthode pour en récupérer n'est pas le plus important, le plus important c'est ce qu'on fait avec.
Voilà ça c'est fait
[mode calme]
sinon ça ne cache pas quelque chose toute cette technologie, tout ça pour faire un outil de zoom ?
@lipki: certes, flash nous rend bien service dans notre cas, et David et Olivier adore AS3 pour son veritable aspect objet (je n'ai pas encore fait d'AS3, faute de temps).
Mais ce que je voulais souligner, c'est qu'on utilise Flash juste comme surface de rendu. Une sorte de super canvas. Et souligner aussi que l'on a développé un browser, tout en AS3 !
>le MXML c'est le frère du XUL sur beaucoup de points.
Je dirais même, les toutes premières versions de MXML en tout cas, c'était une copie de XUL.
>que serait internet aujourd'hui sans flash
On aurait beaucoup moins de site merdiques. Ceux fait entièrement en flash (c'est à dire un énorme pourcentage de l'utilisation de flash, en dehors de la diffusion de la video), ils sont juste inutilisables (pas de bookmarks, peu referençable, bref, c'est pas fait pour). On n'est pas libre de la manière dont on affiche les "pages" flash, dont on veut visiter le site etc. On n'a vraiment pas la souplesse d'utilisation des pages web classiques. Et le pire, c'est que pour la majorité de ces sites, l'utilisation du flash n'apporte quasiement rien de plus. Ils auraient pu être fait avec des belles pages HTML, et à la limite un petit truc flash pour faire une présentation multimédia. Ça serait tellement plus utilisable, plus lisible, plus accessible, plus "web" quoi. Malheureusement, le flash est beaucoup trop utilisé pour faire des sites web entiers.
En ce qui concerne la video, y a pas que le plugin flash qui le permet hein... Y a plétord de plugins (dont VLC, mplayer et cie)
>A ba ouais, ça pue, c'est pas libre !
y a pas que ça. C'est surtout utilisé à mauvais escient. et puis flash, non, ce n'est pas une technologie "Web". C'est une technologie utilisé sur le web, nuance. La grande différence avec les standards du web, c'est que flash, ce n'est ni ouvert, ni accessible, ni interopérable, dans tout les sens des termes. Toutes les technologies standards, tu peux les mixer entre elles. Elles sont conçus de manière ouverte. tout le monde peut aller commenter et proposer des améliorations sur les mailing-lists du W3C lors de la rédaction des spécifications. Au niveau accessibilité : pas de risque de brevets, la techno W3C est utilisable par tout le monde. Et puis les technos W3C sont conçus pour que cela puisse être accessible à l'utilisation. Write once, read everywhere by every one.
Bref, je pourrais continuer comme ça, mais je n'ai pas le temps. La technologie Flash n'a pas l'esprit Web, tel qu'imaginé par le createur du Web. C'est un fait.
Mais j'admet tout de même que Flash, ça peut servir, dans des domaines où le HTML n'est pas suffisant. La preuve, on l'utilise. J'admet aussi que Adobe fait des efforts d'ouverture et d'utilisation de standards, je n'ai jamais dit le contraire.
Mais ce que je voulais dire aussi, c'est qu'on essaye au maximum de ne pas dépendre de flash, et de se rapprocher au maximum de l'esprit Web, des fondamentaux du web.
Tiens par exemple, on pourrait tout à fait faire un script greasemonkey qui modifierait ce qu'affiche notre appli flash, avec autant de possibilités qu'avec une simple page web. L'utilisateur garde le contrôle sur le contenu. Ce que l'on ne peut pas faire avec une présentation flash classique, (et encore moins avec un site tout en flash). Et je n'ai pas encore parlé de référencement..
>tout ça pour faire un outil de zoom ?
La grosse différence avec les concurrents, c'est que l'on zoom non pas sur une photo, mais sur un document (qui peut d'ailleurs contenir des hyperliens). Cela introduit donc des nouveaux concepts de navigation (dont nous même n'avons pas fini de faire le tour ;-) ), et ça change pas mal de choses par rapport à du simple zooming sur une photo. On ne cherche pas à se substituer au HTML ou autre, simplement à apporter un nouveau paradigme de navigation, qui peut être utile pour certains usages du web.
J'ai eu à faire le même choix que toi, j'avais un projet de jeu en temps réel qui ne pouvait pas être réalisé avec les standards à cause de mauvaises performances ou tout simplement de mauvaise implémentation (même IE8 ne supporte pas SVG, c'est triste :'().
En tout cas le projet a l'air intéressant ! Félicitations !
@lipki : Je pense qu'il voulait dire qu'ils n'utilisent pas Flex pour les performances (Flex étant un framework AS3 ça réduit un peu les perfs, sans parler du poids du fichier).
Tout dépend ce que nous voulons vraiment ? Une technologie dépendante d'un seul acteur qu'il s'appelle Adobe ou Microsoft, donc un retour en arrière et une privatisation du Web. Ou continuer sur des standards ouverts qui on fait le standard d'Internet, développés par plusieurs sociétés et implémentables par tous ? Voilà la vraie question.
Le W3C se traine comme un escargot, peut-être. Mais il est sûrement plus facile de développer une technologie seule dans son coin que de réaliser un standard qui répondra à des besoins plus larges. Des sociétés comme Microsoft ou Adobe sont-t-ils des locomotives dans ces consortiums ou des boulets ? Microsoft ou Adobe ont-il un intérêt à voir aboutir ces standards ?
HTML 5: Could it kill Flash and Silverlight?
http://www.infoworld.com/print/7929...
HTML 5: Could it kill Flash and Silverlight?
http://www.infoworld.com/d/develope...
j'ai été développeur flash et j'ai pu apprécier tout l'intérêt de cette technologie et tout l'intérêt d'une technologie propriétaire qui donc avance plus vite.
J'ai fait des jeux en flash, des sites en flash, pendant des années et aujourd'hui il m'arrive encore de faire des sites en partie en Flex pour répondre à une demande de client.
Mais je ne les supporte plus, ils me sortent par les trous de nez, c'est tellement difficile à maintenir dans le temps.
Aujourd'hui j'utilise essentiellement du php et même du "Jelix" (dès que j'en ai l'occasion), mais je ne peux pas nier ce que flash à apporter à moi et au web (oui des sites pourri, mais qui donne on donnait à d'autres l'envie de faire la même en pas pourri).
Enfin je pense avoir exprimé mon sentiment :)
vive les standards, vive le libre youhou.
pour répondre à Nobru70
Oui évidemment que c'est un avantage pour une société de créer et protéger un standard fermé, mais je pense que ça le sera de moins en moins.
Même Microsoft pense se débarrasser de Trident pour webkit (rumeur ? http://www.korben.info/internet-exp...)
Je vais finir par une définition, qui me parait riche de sens :)
standard, adjectif
Sens 1 Normalisé, conforme.
Sens 2 Courant, ordinaire.
mmmm mitigé là...
D'abord, pourquoi ne pas utiliser canvas dans le cas où le navigateur le gère ?
ensuite, openlaszlo qui est une techno appréciable dans ce cas précis est oublié... et je rapelle que OpenLaszlo permet de sortir du flash et du DHTML... cela peut encore une fois permettre de foutre au remblais ce foutu flash de mes deux...
A coté de cela, je sais et je conçois bien que Flash est une techno intéressante dans ce cas. J'apprécie beaucoup les travaux de papervision et ce que permet Flash 10 est au dessus de toutes les implémentations libres qui existent à ce jour.
Ce qui me tue par contre, et entre parenthèses, c'est qu'aucune techno libre n'a tenté de s'imposer à coté de Flash... et pendant ce temps là on a M$ qui nous refile son silverlight.
Alors moi je me dis, à quand une techno bien ficelée à la flash mais libre ? hein dis ?
>pourquoi ne pas utiliser canvas dans le cas où le navigateur le gère ?
D'une part, à cause des performances. Avec Canvas, on est encore loin des perfs de flash. (peut etre le jour où les implementations utiliseront l'acceleration materielle...)
D'autre part, cela exigerai de maintenir deux implementations. Mais là, on n'a vraiment pas les ressources pour le faire.
Openlaszlo ? je vois pas le rapport avec ce qu'on veut faire là. Ça génère du html et cie, mais c'est pas avec html qu'on va faire notre browser hein...
>Alors moi je me dis, à quand une techno bien ficelée à la flash mais libre ? hein dis ?
Les alternatives apparaissent, et collent bien plus à l'esprit web que flash (ouverture du code, accessibilité, standardisé, etc). ça s'appelle JS + SVG + SMIL (animations SVG) + canvas + balise video/audio etc... Mais ça commencera à être vraiment interressant, quand les implémentations seront plus ou moins complète, et utiliseront l'accélération graphique des ordinateurs.