Non, Flash n’est pas mort…

crâne rouge...

Flash… pas encore mort / Image : skull par jadawin42 sur flickr

Ceux qui me connaissent savent que je suis un fervent partisan d’HTML5. Nous avons enfin une séparation claire entre contenu sémantique et style. En partant d’une base normalisée et documentée, il est ensuite très facile d’augmenter ce fond par le biais du JavaScript ciblant le DOM. De plus, l’accessibilité fait partie des objectifs d’HTML5.

Flash est tout l’opposé. Il est loin d’être sémantique, il mélange style, contenu et comportement et, comme il appartient à Adobe, n’est pas normalisé. De ce fait, l’accessibilité doit être travaillée et donc est souvent oubliée.

Mais tout ceci n’est pas le problème principal de Flash.

Sur le web, Flash agit par le biais d’un plug-in qui gère le contenu Flash dans la page en HTML. Ce plug-in — Flashplayer — est un moteur qui interprète le code contenu dans l’objet/fichier Flash pour l’intégrer dans la page. Ce plug-in est aujourd’hui [avec le plug-in pour lire les PDF, aussi de chez Adobe] la source majeure des failles de sécurité des navigateurs sur le web. À tel point que plus aucun fabricant de navigateur web n’ose l’installer ou l’activer par défaut. De surcroît, la vidéo qui autrefois était le domaine réservé de Flash, est désormais passé à HTML5.

Et ceci n’a rien d’étonnant.

Flash a commencé sa vie en 1993 en tant qu’outil de dessin vectoriel, adapté par la suite pour l’animation, et ce, au sein d’une société appelée FutureWave. Par la suite, le logiciel a été acquis par Macromedia qui l’a développé pour devenir Flash, environment multimédia, que nous connaissons aujourd’hui. Adobe a acquis Flash en rachetant Macromedia en 2005.

Il est plus que probable qu’il ne reste plus personne chez Adobe qui connaisse le moteur de Flash, la partie qui doit être patchée régulièrement à chaque fois qu’une nouvelle faille de sécurité est découverte. Les équipes de Macromedia qui ont créé ce moteur doivent être parties ailleurs depuis longtemps. Non seulement aucun programmeur chez Adobe ne doit connaître ce moteur à fond, mais il est également probable que plus personne ne soit capable d’auditer le code qui doit être constitué aujourd’hui de couches successives de complexité et de rustines.

Il y a une légende persistante qui dit que Steve Jobs a tué Flash en refusant sa présence sur l’iPhone, mais c’est méconnaître la situation. Les fabricants d’OS ou de navigateurs ne créent pas de plug-in pour lire les fichiers Flash, c’est Adobe qui les fournit. Or, même quand Google ou RIM pensaient que la présence de Flash sur leurs appareils mobiles constituerait un avantage compétitif vis-à-vis de l’iPhone, Adobe a été incapable de fournir un moteur satisfaisant et fonctionnel. Si quelqu’un est responsable de la situation actuelle de Flash sur le Web mobile et donc le web en général, c’est Adobe seul.

De plus, le dernier refuge de Flash sur le web aujourd’hui est double : en tant que vecteur pour des publicités [et donc des cookies/traqueurs persistants qui ne sont pas gérés par votre navigateur], et en tant que vecteur d’intrusions sur votre ordinateur.

Compte-tenu de ces faits, il n’est pas étonnant que tout le monde souhaite, ou proclame, la mort de Flash.

Mais le but de cet article est justement de défendre la position contraire, de soutenir que Flash n’est pas mort…

Des étudiants, des responsables d’école et de lieu de formation se posent régulièrement la question : faut-il encore enseigner [ou apprendre] Flash de nos jours ? Ma réponse — et ceci peut surprendre — est ‘oui’.

Il est clair que devant le développement du web mobile Flash n’aura plus jamais le même positionnement sur le web qu’en 1995—2000. On peut même affirmer que, aujourd’hui, pour le grand public Flash sur le web est effectivement mort. Mais il reste des niches et des utilisations où Flash a encore de beaux jours devant lui.

Les jeux

Mes enfants adorent jouer à des jeux [Flash pour la plupart] sur les ordinateurs de la maison. Il subsiste encore une demande et donc un business pour ce type d’application. Oui, il semble évident que plus le temps passe, plus on va pousser vers des jeux en HTML5, mais le marché des jeux Flash ne disparaîtra pas du jour au lendemain.

Flash est même encore un excellent outil pour prototyper des idées de jeux. Ce qui nous amène vers un deuxième créneau.

L’environnement de création [Flash Studio]

Si les jeux en HTML5 posent encore problème c’est qu’on ne dispose pas [encore] d’un environnement de création de la qualité de Flash Studio. Cet outil a été amélioré de version en version, il est puissant mais aussi facile d’abord pour ceux qui ne veulent pas aller jouer directement avec le code. Et pour ceux qui veulent, l’Action Script — le langage natif de Flash — est tout aussi conseillé pour débuter dans la programmation que n’importe quel autre langage de script dérivé du langage C [PHP, JavaScript, Processing…].

De plus, Adobe travaille en continu sur des passerelles entre Flash Studio est la génération du code HTML5. Alors peut-être que le meilleur environnement de travail pour des créations interactives en HTML5 serait — ironiquement — Flash…

L’animation

Nous avons vu que l’animation — la création d’histoires animées, motion design ou dessins animés — a été la première utilisation de l’ancêtre de Flash. Et il n’a jamais perdu cette faculté. Avec le temps, Flash Studio1 est devenu un outil éprouvé et apprécié pour la création de dessins animés [dont certains passent sur les écrans de télévision ou de cinéma]. Les autres avantages de Flash sont le bas prix d’entrée, et le fait qu’on dispose d’un vaste public formé et capable d’utiliser cet outil, ainsi qu’un savoir-faire éprouvé par le temps. Ce n’est probablement pas l’outil qui répond à tous les besoins, mais c’est une bonne solution passe-partout.

Le prototypage

Parce qu’abordable, disponible, et connu, Flash Studio est très pratique comme outil de prototypage pour les apps ou les interfaces. Au lieu d’utiliser le dernier logiciel à la mode, beaucoup préfèrent cet outil basique mais fiable.

Conclusion

Les statistiques et les recensements nous apprennent qu’il existe de nos jours, dans le monde occidental, autant [sinon plus] [de chevaux qu’à l’époque de l’introduction de la voiture]12. La voiture n’a pas ‘tué’ le cheval. Mais les chevaux d’aujourd’hui ne servent pas la même fonction qu’à l’époque des premières voitures. C’est toujours le cas avec le progrès : des avancées déplacent l’existant sans le tuer. La radio n’a pas tué le théâtre, pas plus que la télévision n’a tué la radio. Et YouTube et le web vont déplacer la télévision, pas la tuer. C’est pareil avec Flash. Oui, pour un ensemble de raisons, il va disparaître du Web, mais on est encore loin de la mort du Flash.

  1. aujourd’hui appelé Flash Professional, mais je garde ce nom pour distinguer entre cet environnement de création, et les documents Flash générés, ainsi que le Flash Player
  • alexr

    Article très intéressant. Je suis globalement d’accord sur tout ce qui y est dis mais je me pose encore des questions quand à l’enseignement de Flash.

    Je pense que Flash est un très bon outils d’apprentissage car il permet de commencer à appréhender l’interactivité et l’animation tout en restant dans un environnement WYSWYG. Le codes est relativement simple et les étudiants peuvent aisément travailler à plusieurs, l’un en code, l’autre en intégration et un troisième en animation…
    Autre grand avantage de flash, c’est un outils de dessin vectoriel. On peut créer des formes directement dans le logiciel. Ce qui en fait un outils de dessin animé que je trouve excellent. Il a cependant certaines limites.

    Dans le jeux vidéo par exemple, utiliser flash demande généralement de monter un moteur de jeu au préalable incluant les différents mécanismes. Des librairies comme box2D existent mais elles restent relativement compliquées à mettre place. Il reste donc la solution d’apporter à l’étudiant un caneva de jeu préconçu autour duquel il pourra travailler son jeu. L’avantage ici est d’éviter que les étudiants se perdent dans mécanismes trop compliqués pour eux car pas encore vu en cours game design par exemple.
    Une autre solution serait de passer par un moteur comme Unity3D. Son avantage, outre le fait de pouvoir exporter en HTML5 et de proposer de travailler soit en C# soit en JS, et que le moteur physique existe déjà, est très stable, et que l’implémentation des mécanismes est simple (et similaire à flash dans le sens où l’on créer des micro fichiers par mécanisme). Par ailleurs Unity3D gère très bien les pixels ce qui est un point noir chez Flash. Ne serait-il alors judicieux, dans l’enseignement, de se poser la question de l’outils à enseigner en fonction du sujet? (À l’inverse du sujet en fonction de outils)

    Autre question que je pose est l’activité de la communauté. À mon sens une communauté active est très important car elle permettra à l’étudiant de chercher, s’interroger ou trouver des réponses à ses questions. Durant mes études nous avions des cours sous Flash, nous apprenions en AS2, l’AS3 étant sorti un an auparavant et considéré comme peu stable. En 1 an l’AS2 a été remplacé par l’AS3 dans le monde professionnel mais nous avons continué d’apprendre en AS2. Ma grande difficulté fut par la suite, lors de mes recherches et prototypes, de trouver des réponses à mes questions auprès d’une communauté ayant remplacé l’AS2 et dont la meilleure réponse était souvent «Pourquoi tu ne passe pas en AS3, c’est plus simple». Existe-t-il toujours une communauté active sous Flash prête à aider quiconque souhaite se lancer?

    Enfin il reste la question de l’intégration dans le monde professionnel qui semble avoir rejeté Flash avec une vivacité à toute épreuve oubliant parfois que cet outils leur à permis de se faire connaitre et de remplir tout leurs cadres au dessus de l’entrée de jolis FWA. Une connaissance de Flash est-elle donc considérer comme un atout par l’employeur?

    Ce sont là quelques questions que je pose quand à l’enseignement de cet outils sur lequel j’ai passé quelques belles nuits de prototypes :)

    • Je pense que oui, Flash est un bon outil pour initier un travail en équipe, mais en même temps, il demande de tout repenser. Par exemple, l’animateur du groupe se doit de repenser son dessin comme un objet, avec une succession de plans/sous-objets (un personnage (de profil) n’est plus un être à part entière, il s’agit d’un bras et d’une jambe au premier plan, d’un torse et d’une tête au second plan, et de l’autre bras et l’autre jambe au troisième plan). Le codeur (en supposant qu’il débute dans ce domaine) doit déjà faire face au mur immense que sera sa première approche face à l’AS. Le fait de devoir intégrer y une librairie ne rendra ce mur que plus grand, et j’ai peur dans ce cas que les étudiants perdent (beaucoup) plus de temps à réparer leurs erreurs qu’à véritablement créer (même si cette dernière phase se fait principalement en amont, il n’est pas exclu d’explorer de nouvelles pistes lorsqu’il faudra mettre la main à la pâte).

      Un des très gros avantages de Unity3D est justement sa communauté. Étant un outil en pleine expansion, les gens n’hésitent pas à s’entraider et il en arrive de plus en plus tous les jours. De plus, le site propose des tutoriaux à foison, expliquant tous très bien les différentes fonctionnalités du logiciel.

      Moi personnellement, ce qui me donne le plus à penser et l’exclusion des plugins NPAPI par Chrome (d’après Chrome, ces derniers présentent des failles de sécurités et incluent Silverlight, Java ou encore Unity), tandis que Flash (et la visionneuse PDF d’Adobe) sont des plugins PPAPI, un système plus récent et plus sécurisé. Je me demande du coup si on peut toujours parler de faille de sécurité lorsque l’on parle de Flash ?

  • Adrien Groleas

    Enfin un article pertinent que je lis sur flash depuis des années ! Merci à toi, Jonathan.

  • J’ai quand même un doute, parce que si Flash s’est (à l’époque) imposé pour la qualité de ses jeux et de ses animations, et la “souplesse” (terme très discutable de mon point de vue) de son interface, elle est aujourd’hui peu à peu évincée de l’horizon …

    Unity3D, ProjectSpark, UnrealEngine, CryEngine, LuminousStudio, Construct2 … Autant de logiciels (qui incluent déjà un moteur de jeu !) font progressivement leur apparition, et sont beaucoup plus accessible et intuitifs que Flash ! Et même si la plupart ne permettent pas une intégration Web (mis à part pour Unity3D je crois), la croissance dans le domaine du jeu vidéo est grandement représentée par les jeux indépendants, qui fournissent directement des .exe de leur œuvres ou travaillent sur des adaptations pour les consoles de salon et les consoles portables. (Ne parlons pas de Java, qui a été bloqué avec tous les plugins NPAPI)

    Qui plus est, avec l’évolution du CSS et de l’HTML, quasiment toutes les animations (faites pour “smoother” l’expérience de navigation web) avec Flash sont maintenant reproductibles. À mes yeux, Flash ne représente malheureusement plus qu’une faille de sécurité …

    • jonathan munn

      Oui, Unity etc. [je ne vais pas tout lister de nouveau] sont certainement très bien et probablement plus puissant et intuitif que Flash Studio. Mais, à cause des années de formations délivrées en Flash Studio, le code et les pratiques existants, il existe un nombre important de gens qui sont productifs immédiatement avec Flash. Et oour le prototypage rapide [pas le développement], ou l’animation hors web, c’est un avantage. Enfin, aussi pour le marché des ‘very casual games’ à destination des enfants sur le Web [auquel mes enfants jouent], et qui ont un modèle économique qui fonctionnent ; ce n’est plus florissant, mais ils subsistent encore.

      Je crois que nous sommes d’accord pour dire que Flash, sur le web, est effectivement mort — problèmes de sécurité, compétition venu d’ailleurs… — nous avons simplement des vues légèrement divergent sur la place de Flash/Flash Studio hors web.