10 trucs HTML5 qu’on ne peut pas faire en Flash

Il y a des matins où j’aimerais rester au lit. Bon, après réflexion ça ne changerait rien vu que même de mon lit je pourrais lire des aberrations tel que “10 Flash Things You Can’t Do With HTML5” (« 10 trucs Flash qu’on ne peut pas faire en HTML5 »).

Ce genre d’articles m’énerve. Si je mets de côté le débat « qui a la plus grosse liste de possibilités », il n’empêche que ces comparaisons sont foireuses, car HTML5 y est souvent mal compris. Ça craint, le HTML c’est quand même la base du web.

On a pu en avoir la preuve avec la dernière conférence Adobe MAX. Il y a été présenté un « convertisseur Flash vers HTML5 ». Je veux bien concéder le raccourcis marketing « trucs cools = HTML5 », mais c’est quand même se tirer une balle dans le pied. Le but de HTML est, et restera, de structurer des données. Si on parle d’animations, il faut inclure CSS et/ou Javascript (après il y a un autre débat pour définir si une animation est de la présentation ou du comportement). En bref, il ne faut pas dire « regarde c’est cool, c’est du HTML5 » puisque ça n’a rien de sexy en soit. Par contre, utiliser les dernières avancées des trois langages fondamentaux du web permet de faire des trucs vraiment cools. Si vous n’êtes pas convaincu, je vous présente Paul Rouget.

Je suis encore assez étonné de l’incompréhension du travail du W3C sur HTML5. Le but de HTML5 n’est pas d’innover, mais de standardiser. C’est déjà énorme en soit. Il y a énormément de choses en HTML5 qu’on pouvait déjà faire (à quelques exceptions). Le W3C ne fait que regarder l’existant et propose une façon cohérente pour le faire (via des balises et/ou des API).

Bon, maintenant qu’on a ça en tête, prenons les 10 trucs super cools qu’on peut faire en Flash et pas en HTML/CSS/Javascript :

  1. HTML5 can’t interact with webcam — HTML5 ne peut pas utiliser la webcam

    Soit, pour l’instant. <device> est précisément en cours de conceptualisation pour faire ça. Petite précision, il faut bien évidemment se dire que ça sera à utiliser via une API et donc en Javascript.

    D’un point de vue plus personnel je trouve l’intérêt relatif. J’ai très rarement utilisé ma webcam dans Flash.

  2. HTML5 video cannot be used on a 3D plane — Les vidéos HTML5 ne peuvent pas être utilisées avec de la 3D

    Bon, toujours d’un point de vue personnel, l’intérêt est toujours aussi limité hormis le côté bling-bling.

    Ensuite, <video> + CSS3 transform + Javascript ça ne permet pas de le faire ?

  3. HTML5 cannot record audio from your microphone — HTML5 ne peut pas enregistrer à partir du microphone

    Voir 1).

  4. HTML5 cannot do any sort of web conferencing — HTML5 ne permet pas de faire de visioconférence

    Ce point était vraiment gratuit à partir du moment où il n’est pas possible d’utiliser ni la webcam ni le micro. L’usage est particulièrement ciblé ce qui réduit les cas d’utilisation (<troll>mon MacBook Pro i5 flambant neuf a déjà du mal à lire une pauvre vidéo Flash alors de la visioconférence…</troll>).

    Ensuite, j’imagine qu’en combinant <video>, <device> et les WebSockets (en mode binaire, j’en fait la demande. Mozilla tu me lis ?) j’imagine que c’est largement faisable. (Voir aussi P2P connections)

  5. HTML5 cannot add dynamic objects to go over the video, like captions, titles, or navigational items — HTML5 ne permet pas d’afficher des objets sur une vidéo comme des sous-titres, des titres, ou une navigation

    Bon, là c’est clairement du bullshit. Oui, on ne peut pas faire ça en HTML5. Mais on ne peut pas le faire non plus en MXML. Il faudra forcément utiliser autre chose, comme de l’ActionScript. Oh ! Mais on peut faire la même chose avec Javascript ! Sans parler de <track> qui permet de baliser des éléments à synchroniser, SMIL qui est un standard spécialement conçu pour ça ou encore de la possibilité de le faire avec n’importe quelle balise et du Javascript.

  6. HTML5 cannot record from your webcam — HTML5 ne peut pas enregistrer à partir de la webcam

    Voir 1). En rajoutant localStorage c’est faisable.

  7. HTML5 cannot create desktop apps — HTML5 ne permet pas de créer des applications

    Quoi ? HTML5 n’est pas un poney ? Grosse déception.

    Allez, pour ceux qui n’ont toujours pas compris, HTML5 permet de structurer des données, ce n’est pas à lui de se lancer en mode desktop, c’est le boulot du navigateur. Et puis c’est un peu ridicule de parler de AIR qui permet d’utiliser du Flash en mode desktop ET aussi du web.

  8. HTML5 can’t handle video with alpha channels — HTML5 ne gère pas les vidéo qui ont un canal alpha

    Bon, une fois de plus une utilisation de niche. Par contre, on peut effectivement utiliser le canal alpha d’une vidéo en utilisant <canvas>.

  9. HTML5 doesn’t yet support P2P — HTML5 ne permet pas le P2P

    Je crois que j’ai déjà répondu au point 4). WebSockets FTW!

  10. HTML5 doesn’t do fullscreen mode — HTML5 ne permet pas le plein écran

    J’imagine que l’auteur parlait essentiellement de la vidéo. Je veux bien accorder ce point. Autant je comprends la position du W3C qui n’autorise pas ces pratiques pour des raisons de sécurité et de confort utilisateur. Autant c’est une demande constante chez les clients et une grosse cause de déception. Cela dit, le fullwindows c’est joli (ça change quoi).

Un peu de sérieux. J’ai peut-être un ton moqueur, mais l’article cache en fait un autre problème qui m’énerve particulièrement.

Le buzz, si je puis dire (ah, on me dit que je devrais écrire « ramdam »), autour de HTML5 a créé beaucoup d’articles comme celui-ci. Je comprends tout à fait l’engouement que des développeurs peuvent avoir pour les technologies qu’ils affectionnent (ce billet n’existerait pas si je n’en faisais pas partie). Mais le vrai problème est que tout cela est un débat stérile et qu’on en oublie l’essentiel. Pire, ces articles vont être relayés, référencés, lu, mal-compris et faire partie d’un tout estampillé HTML5.

Par exemple, j’ai déjà vu des présentations sur HTML5 qui parlaient de la balise <dialog>. C’est une balise morte-née mais qui existe tout de même dans l’inconscient du web. Peu sont ceux qui vont consulter la spécification pour s’assurer que ce qu’ils lisent est correct.

C’est un conseil que je donne quand je fais mon cours sur HTML5 : Méfiez-vous de ce que vous pouvez lire sur le web. Il y a beaucoup d’articles périmés ou prématurés.

Pendant que j’y suis, ignorez, oubliez, offusquez toutes dates concernant HTML5. Tout d’abord, parce qu’elles ne signifient rien, ce ne sont que des estimations. Ensuite, il ne faut surtout pas attendre un quelconque aval du W3C pour se lancer sur HTML5 (à moins que vous n’ayez attendu le 8 septembre 2009 avant de faire du CSS 2.1 ?). Et, pour finir, justement, la dernière étape de la spécification est la recommandation. Pour avoir ce statut la technologie doit avoir fait ses preuves comme étant stable. Si vous attendez… Elle ne deviendra jamais une recommandation. J’ai même envie de dire, si vous attendez, elle mettra encore plus de temps avant de devenir une recommandation.

Bon, maintenant que vous avez tout lu, allez apprendre HTML5 ou me faire un truc de folie avec les nouvelles API.

Commentaires

Je te rassure même si j'aurais plus tendance à me ranger du coté de la communauté Flash (tout simplement parce que je fais plus de Flash que je joue avec les API rigolotes d'HTML5), ce genre de billets m'a vraiment gavé. Au final j'en ai conclu que c'était un mec un peu stupide qui cherchait à faire du référencement facile à base de HTML5, Flash et Kikoolol.

Je pense que tu as bien résumé le problème, c'est une grosse incompréhension du web qui domine et qui fait qu'on entend/lit des conneries genre :
- HTML5 va tuer Flash
- HTML5 c'est pas utilisable avant 2022
- On peut faire des animations sympa "en HTML5"
- etc.

Ca me fait vraiment mal de lire ce genre de conneries, je ne vois pas pourquoi 2 technologies devraient forcément se battre, ou que l'une devrait buter l'autre pour survivre.

Après j'ai plusieurs questions / remarques sur ton billet :
> "D’un point de vue plus personnel je trouve l’intérêt relatif. J’ai très rarement utilisé ma webcam dans Flash."

C'est quand même super utilisé, et pas uniquement pour de la vidéo-conférence. En tant que gros fan de la réalité augmentée, je ne peux que soutenir l'intérêt d'avoir accès à la Webcam dans le navigateur (et de faire des calculs complexes grâce à Flash) !

> "Bon, là c’est clairement du bullshit. Oui, on ne peut pas faire ça en HTML5. Mais on ne peut pas le faire non plus en MXML."

Pas hyper pertinent de parler de MXML, vu que ça impliquerait de parler de Flex, du coup :)

> "Voir 1). En rajoutant localStorage c’est faisable."

Corrige moi si je me trompe, mais localStorage n'a pas une limite de taille? Sachant que si on récupère le flux brut de la webcam (I mean, sans encoder à la volée) je pense que cette limite sera très vite atteinte... (Après je dis ptet de la merde, je veux bien qu'on me tape).

Bien le billet sinon, j'aime mieux lire de genre de truc, surtout chez le gens qui ont une étiquette "a tendance à ne pas dire de la merde" dans ma tête :)

> "Voir 1). En rajoutant localStorage c’est faisable."
oui, il y a une limite de stockage, 10Mo sur IE8, et 5Mo un peu partout ailleurs. Mais dans ce cas là on n'a pas forcément besoin de persistance : il suffit de stocker tout ça dans une variable JS normale et donc de pomper toute la RAM :)
pour le traitement, il y a Canvas, et ensuite pourquoi ne pas envoyer une version allégée au serveur avec XHR2 ?


> HTML5 cannot create desktop apps — HTML5 ne permet pas de créer des applications
en fait le nom original de HTML5, c'était Web apps ... Toutes les specs HTML5 standardisent ce qu'on faisait qui ressemblait déjà à une appli desktop, et pour packager le tout pour que ça soit installable, il y a même une spec pour ça : Widget : www.w3.org/TR/widgets/
donc oui HTML5 permet de faire des applications bureau

> HTML5 doesn’t do fullscreen mode — HTML5 ne permet pas le plein écran
ça n'est effectivement pas écrit dans la spec (je crois...), mais c'est une demande récurrente des webdevs qui voudraient se passer de Flash. Je sais que Mozilla va implémenter un code permettant de faire passer un élément du DOM (typiquement, VIDEO, mais ça peut être n'importe quelle DIV) en vrai plein écran, à partir de JS, mais seulement si l'utilisateur a cliqué sur un élément HTML (comme le système de protection anti popup en fait)


comme toi j'ai trouvé cet article assez ridicule, mais vu le nombre de commentaires et l'écho qu'il a reçu, je pense que le but de l'auteur a été atteint : ça ramdam :)
par contre si l'auteur parle d'HTML5 tel qu'il est implémenté là tout de suite dans les navigateurs, il a bien sur raison sur la moitié des points, mais parler d'HTML5 dans ce cas là est un abus de langage motivé par des raison SEO

Salut,

1) si, on peut faire ça. y a des patchs plus ou moins prêt pour firefox. <input type="camera"> ou quelque chose comme ça. En tout cas, ça fonctionne experimentalement.

L'intérêt ? pouvoir par exemple demander une photo de ta tête, sur un reseau social par exemple. un <input type="camera"> dans un formulaire, tu cliques, ça prend ta trombine, et lors de l'envoi du formulaire, ça envoi un png. plus besoin d'aller fouiller ton disque à la recherche d'une photo.

3) Avec Firefox 4, il y a toute une API pour manipuler, transformer le son d'une balise audio. Nulle doute que la capture audio viendra dans quelques temps.

5) on peut, depuis très longtemps, ajouter des éléments au dessus d'une video. Paul Rouget a fait de multiple démos, avec même une qui permettait d'avoir des sous-titres. le fait de pouvoir utiliser une vidéo comme n'importe quel element html, est justement une force par rapport à flash

6) ouai enfin, il faut avoir un bon gros localstorage. Par définition, la taille de localstorage est limitée, et une vidéo, ça prend de la place.

8) vu qu'on peut appliquer tout les styles CSS que l'on veut, et appliquer tout les filtres SVG que l'on veut sur une video, on peut ajouter tout les effets que l'on veut sur une video (voir les nombreuses demos de paul)

10) sur firefox, clic droit sur la video.

Je n'arrive vraiment pas à comprendre l'existence même de ce débat... Pour moi ces deux technologies sont même pas comparables, et il n'y a aucune raison que l'une doive prendre le dessus sur l'autre. Elles sont juste faites pour coexister.
J'ai jamais vraiment porté Flash dans mon cœur, mais là j'ai vraiment juste l'impression qu'on essaye de le faire disparaitre et de trouver des remplacements à la va vite (bannières de pub animées en CSS3 ? Seriously ?), juste parce que Steve Jobs l'a décrété. Du coup on utilise des choses vraiment intéressantes (balises video, audio, canvas, etc) dans ce débat puéril (s'en suit amalgames, tout ça).

> ah, on me dit que je devrais écrire « ramdam »

tu devrais surtout dire "Cela dit", et non "Ceci dit" (qui n'est pas français) !

@Palleas : À en juger par les commentaires, je ne suis pas le seul à ne pas avoir aimé l'article.

> Ca me fait vraiment mal de lire ce genre de conneries, je ne vois pas pourquoi 2 technologies devraient forcément se battre, ou que l'une devrait buter l'autre pour survivre.

J'essaye de voir le positif : Au moins Adobe se bouge un peu pour faire évoluer son offre web :).
D'un point de vue personnel, j'aimerai ne pas avoir à utiliser Flash pour n'avoir qu'à utiliser les langages web (ah oui, je ne fais que du web). Après, ça ne veut pas dire que tout est possible ou même que ça sera simple.

> En tant que gros fan de la réalité augmentée, je ne peux que soutenir l'intérêt d'avoir accès à la Webcam dans le navigateur (et de faire des calculs complexes grâce à Flash) !

Je ne risque pas d'être objectif étant l'inverse d'un fan de «&nbsp;réalité augmentée&nbsp;» :).
Par contre, la notion de calculs complexes est intéressante. Pour l'instant je ne saurai pas maitriser l'optimisation d'un code Javascript, contrairement à Flash qui a une bonne documentation. Heureusement ça change, grâce à Mozilla (promotejs, MDC) et aussi à des gens qui parlent de Javascript (jsattitude et les meet-up JS en autre).

> Pas hyper pertinent de parler de MXML, vu que ça impliquerait de parler de Flex, du coup :)

Oui, je l'ai peut-être mal formulé. Je voulais faire la comparaison avec un autre langage de balisage. En MXML seul tu ne fais pas grand chose.

> Corrige moi si je me trompe, mais localStorage n'a pas une limite de taille ?

J'ai peut-être écrit ça un peu vite. Pour tout te dire je n'ai pas eu le temps de jouer avec les API de HTML5 pour l'instant (un comble). jpvincent et LaurentJ ont bien répondu à ta question.

> Bien le billet sinon, j'aime mieux lire de genre de truc, surtout chez le gens qui ont une étiquette "a tendance à ne pas dire de la merde" dans ma tête.

Merci, ça fait vraiment plaisir de lire ça :).

@jpvincent : Merci pour les précisions !
Concernant les Web apps, je suis d'accord avec toi, mais je pense que l'auteur de l'article parlait d'application desktop tel que des applications AIR. Mais je peux/dois me tromper.
C'est très intéressant ce que tu me dis pour le fullscreen, je vais regarder ça de près.

@LaurentJ : Merci pour tes précisions également !
Je vais regarder <input type="camera"> (d'ailleurs tu me donnes une idée pour mon cours de vendredi :-)). Je suis conscient qu'il y a un intérêt d'utiliser la webcam, mais je n'estime pas que ça soit prioritaire. Ce qui me gêne le plus pour l'instant (mais je parle en fonction de l'expérience que j'ai eu avec l'API video de HTML5) c'est l'impossibilité de passer en plein écran et l'absence de protection pour la vidéo. Je suis tout à fait conscient qu'à partir du moment où on voit une vidéo on peut la copier (que ça soit en enregistrant l'écran, en enregistrant la source, ou en filmant son écran), c'est d'ailleurs le discours que je tiens à mes clients. Il n'empêche que c'est un point assez bloquant. Ils le comprennent bien, mais ce qui les dérange le plus c'est la simplicité d'enregistrement de la source (click droit -> enregistrer).

> Avec Firefox 4, il y a toute une API pour manipuler, transformer le son d'une balise audio. Nulle doute que la capture audio viendra dans quelques temps.

J'ai vu ça passer, d'ailleurs Mozilla n'a pas proposé l'API au W3C ? Je ne me souviens plus du nom.

> on peut, depuis très longtemps, ajouter des éléments au dessus d'une video

Oui, pour avoir fait des players vidéo je peux dire que c'est nettement plus sympa de le faire en HTML5 (mais je ne dois pas être complètement objectif non plus).

> appliquer tout les filtres SVG que l'on veut sur une video

Peut-être pourra-tu me répondre, ce qui me fait peur avec les filtres vidéos (que ce soit avec canvas + JS et SVG), c'est les performances.

@pedro : > pour moi ces deux technologies sont même pas comparables

En fait il y a comparaison à partir du moment où quelqu'un fait la même chose qu'en Flash en utilisant un langage web.

> Elles sont juste faites pour coexister.

Je ne suis pas complètement d'accord. J'espère ne plus avoir à faire de Flash pour faire du web, ce qui ne veut pas dire que je veux la mort de Flash. Je préfèrerai qu'on s'en serve pour autre chose.

> j'ai vraiment juste l'impression qu'on essaye de le faire disparaitre et de trouver des remplacements à la va vite (bannières de pub animées en CSS3 ? Seriously ?)

«&nbsp;à la va vite&nbsp;» c'est un peu fort quand même :). Moi ça me plait, plus besoin de compilation, de plugin, d'apprendre un autre langage. Par contre on retombe sur du web, et il faut donc prévoir les nombreux cas (pas d'image ? pas de CSS ? pas de JS ?).

> juste parce que Steve Jobs l'a décrété

Ah non hein, pas de troll ici :). On peut en dire du mal, et du bien, mais ce qui me plait dans cette histoire c'est qu'il y ait quelqu'un qui ait donné un coup de pied dans la fourmilière.

@ubermuda : Merci, je me lapiderai pour cette infamie :) !

« De toute façon, le html5, c'est juste la revanche des intégrateurs sur les flasheurs »

(toute ressemblance à une "trollerie" ParisWeb existante ou ayant existé est déclarée fortuite ou involontaire ;-) )

Laissez le vôtre !

Les commentaires pour ce billet sont fermés.

À propos du billet

mardi 2 novembre 2010 à 01:38

Classé dans :

7 commentaires

Navigation inter-billets