Ruffle : émulateur de Flash Player
(ruffle.rs)- Ruffle est un émulateur open source de Flash Player écrit en Rust, qui permet de relancer sur des systèmes d’exploitation et navigateurs modernes des contenus Flash qui ne sont plus pris en charge nativement
- Il prend en charge à la fois le bureau et le web, et utilise WebAssembly dans l’environnement web
- Il vise à éviter les risques de sécurité longtemps associés à Flash en s’appuyant sur les garanties de Rust et de WASM
- Il est conçu pour permettre aussi bien aux utilisateurs qu’aux propriétaires de sites web de l’installer et de l’exécuter rapidement
- Il s’agit d’un projet open source gratuit, librement utilisable, distribué sous licence MIT/Apache 2.0
Exécuter des contenus Flash dans des environnements modernes
- Ruffle est un émulateur de Flash Player destiné à faire fonctionner des contenus Flash dans des environnements modernes
- Il a été conçu pour fonctionner nativement sur les systèmes d’exploitation et navigateurs actuels, avec pour objectif de redonner vie aux contenus Flash sans manipulation complexe
- Son langage d’implémentation est Rust, et il cible à la fois le bureau et le web
- WebAssembly est utilisé pour l’exécution sur le web
Approche de sécurité et conditions de diffusion
- Il cherche à éviter les pièges de sécurité inhérents à Flash en s’appuyant sur les garanties de Rust et de WASM
- Il est conçu pour que les utilisateurs comme les propriétaires de sites web puissent l’installer et l’exécuter rapidement
- C’est un projet open source gratuit distribué sous licence MIT/Apache 2.0
1 commentaires
Avis sur Hacker News
Comme beaucoup de gens à l’école, j’ai passé beaucoup trop de temps sur des jeux Flash, et je trouvais dommage qu’une partie de l’histoire du jeu vidéo disparaisse.
Ruffle peut quand même en faire revivre une partie. Cela dit, ça me rappelle aussi qu’il n’y a toujours pas moyen de jouer à Wolfenstein RPG sur iOS. J’ai un iPod acheté en 2010 presque uniquement pour ce jeu, mais je doute que sa batterie dure éternellement. Pour l’instant, je vais aller me refaire Adrenaline Challenge.
Je pensais qu’il faudrait encore plusieurs années, et entre-temps j’utilisais la dernière version de Flash sans bombe à retardement installée, mais je suis content de m’être trompé :)
https://github.com/hikari-no-yume/touchHLE/pull/139
La page The Merchant's House de l’exposition Slavery in New York de la New York Historical Society présente les objets un par un et explique que « tout était lié à l’esclavage ». L’exposition en ligne contient beaucoup de fragments d’information dépendant de Flash, et cette page était personnellement ma préférée.
Grâce à des projets comme Ruffle, on peut maintenir ce type de travail. Maintenant que l’exposition a disparu, c’est le seul moyen de consulter ce texte, et cela permet de continuer à exploiter le résultat d’un vaste travail de recherche historique.
En revanche, les galeries vidéo du même site d’exposition ne fonctionnent pas. Il devrait s’agir de clips vidéo laissés par les visiteurs de l’exposition dans une cabine dédiée ; d’après les nombreux articles que j’ai lus à ce sujet, c’était apparemment une bonne ressource pour voir comment les New-Yorkais de l’époque percevaient l’esclavage. Il y avait aussi cette phrase du New York Times : « On y retrouve la maladresse des vidéos amateur. Bruit de fond, longs silences, regards qui évitent la caméra. »
Il doit s’agir d’une partie des quelque 400 vidéos, mais sur cette page Ruffle ne fonctionne pas correctement. Une fois, en essayant de regarder, un peu d’audio est brièvement sorti de l’onglet, donc quelque chose semble bien se passer, mais je n’ai jamais vu la vidéo. J’aimerais que quelqu’un qui connaît mieux ce domaine puisse dire ce qui se passe, parce que ce serait dommage de perdre ces documents.
Ils peuvent être lus hors ligne avec des outils comme VLC ou ffplay, et il est aussi possible de les convertir vers un format de lecture plus moderne.
AS3 était, à bien des égards, ECMAScript 4, et je pense qu’il était assez en avance sur son temps. Beaucoup de choses que nous attendons aujourd’hui donnaient déjà l’impression d’être des fonctionnalités allant de soi dans l’écosystème Flash Player.
Bien sûr, il y a eu des moments cauchemardesques, mais à une époque où même faire fonctionner du JavaScript selon les navigateurs était laborieux, nous pouvions livrer des choses plutôt excellentes.
Plus que de dire qu’AS3 était en avance sur son temps, j’ai plutôt l’impression que nous sommes revenus en arrière quand Steve Jobs et le PDG d’Adobe de l’époque ont abandonné Flash.
AS3 était vraiment bon, facile à apprendre et sûr à étendre par plusieurs développeurs ensemble. Flash aussi était devenu assez rapide vers la fin, mais tout a fini jeté aux toilettes.
AS3 était un excellent langage. Brendan Eich l’a brièvement mentionné dans son interview avec Lex Fridman, et j’ai trouvé intéressant qu’il ait été proche d’un successeur potentiel de JavaScript qui n’a jamais intégré les navigateurs. Dommage qu’il ne soit pas devenu le nouveau standard.
Ce serait bien qu’il existe une loi imposant que, lorsqu’on ne vend plus un logiciel, il doive être laissé dans le domaine public.
Cela dit, Adobe publie quand même gratuitement les spécifications concernées.
Ce serait bien aussi de réduire la durée du droit d’auteur à un niveau raisonnable, comme 5 ans. On pourrait même aller plus loin : pour conserver un droit d’auteur, il faudrait payer chaque année une taxe augmentant de façon exponentielle.
Changer la loi pourrait résoudre le problème. Par exemple, on pourrait créer une loi de préservation des logiciels anciens permettant de publier n’importe quel logiciel en open source, tout en empêchant les poursuites liées aux actions effectuées dans le cadre de cette loi.
On pourrait aussi ajouter des incitations. Par exemple, exiger que tout logiciel vendu commercialement soit conservé de manière permanente ou publié en open source. Comme la conservation permanente serait juridiquement coûteuse, beaucoup choisiraient probablement l’open source.
Du coup, il est souvent impossible de les passer en open source sans découper une grande partie de la base de code ; c’est coûteux, et l’utilité du code publié s’en trouve fortement réduite.
Ou bien les outils sont-ils déjà si difficiles à ressusciter que cela servira surtout, en pratique, à faire revivre un catalogue ancien ?
Certes, ce catalogue ancien est immense, mais j’ai entendu dire que beaucoup de développeurs aimaient créer des jeux Flash ; si quelqu’un était assez obstiné pour faire revivre la scène des jeux Flash, ce serait intéressant.
Aujourd’hui, ce n’est pas vraiment indispensable, et il existe des standards web prometteurs qui progressent chaque jour, mais ça n’a jamais arrêté les gens obstinés. Certains trouvent encore des moyens de créer de nouveaux jeux pour du vieux matériel Nintendo.
Si vous voulez de l’AS2, il faut remonter au moins jusqu’à CS6, et je dirais que CS5.5 est préférable, car la prise en charge des FLA y est bien plus large. Ne me demandez pas pourquoi ils ont retiré ça dans CS6.
Si vous ne voulez pas payer Adobe, vous pouvez utiliser Apache Flex, la version libre et open source de la toolchain Adobe. Bien sûr, ce sont des outils de compilation en ligne de commande, et ils ne compilent que des fichiers AS3 ; il faut donc créer les graphismes séparément et les relier.
Pour de l’art vectoriel, il y a de fortes chances que vous deviez trouver comment convertir du SVG en SWF, l’inclure dans le SWF principal via une étrange magie de déclarations de classes dans Flex, puis gérer les subtils problèmes de masquage qui en découlent.
C’était un outil de création accessible permettant de produire des animations multiplateformes en un seul fichier, redimensionnables et fonctionnant même avec une faible bande passante.
Nous n’avons toujours pas comblé cette perte. JavaScript + canvas + la stack web, c’est le bazar. Si le runtime Ruffle peut démarrer rapidement, je pense que je commencerai à créer du nouveau Flash.
Sous macOS, c’est plus compliqué, car toutes ces versions sont en 32 bits. Sur un Mac M1, mieux vaut configurer une VM Windows et y exécuter Flash ; sur un Mac Intel, on peut installer sur une partition séparée macOS Mojave, la dernière version à prendre en charge le 32 bits.
En réalité, il fait tourner un Linux complet dans une VM à l’intérieur de WebAssembly, puis exécute dedans l’Adobe Flash Player officiellement licencié. Et il semble que cette licence Flash doive être obtenue séparément auprès de Harman. Il semble que ce soit eux qui détiennent maintenant la propriété intellectuelle de Flash.
https://labs.leaningtech.com/cheerpx/for-flash
Je n’ai aucun lien avec eux ; je m’étais simplement renseigné un jour parce que ça m’intéressait.
En revanche, il n’émule pas un Linux complet pour faire tourner Flash. Il émule PPAPI et exécute Flash Player dans CheerpX, qui est un JIT x86.
Yuri explique ici l’architecture de CXFF :
https://youtu.be/7JUs4c99-mo?t=1045
Si vous avez besoin d’une émulation complète d’un système Linux, ça existe aussi : https://webvm.io
Je continue de penser qu’Internet et les jeunes programmeurs débutants ont perdu un outil vraiment précieux avec Flash. C’est dommage que le modèle de sécurité n’ait pas pu fonctionner correctement. Les applets Flash avaient beaucoup de fonctionnalités et une barrière à l’entrée rarement aussi basse.
Il avait des problèmes, certes, mais c’est le cas de la plupart des logiciels, et Flash avait vraiment une vingtaine d’années d’avance sur son temps. Après la mort de Flash, le web est devenu incroyablement fade.
Ma théorie du complot, c’est qu’Apple et Google ont payé Adobe pour tuer Flash afin d’imposer la prise en charge du mobile.
Je n’ai jamais écrit une seule ligne de Flash et je n’ai aucune envie de le faire, mais je garde encore de très mauvais souvenirs de l’état catastrophique des sites Flash.
Les widgets ne se comportaient pas comme des éléments natifs, ce qui sautait aux yeux ; dans Firefox, il y avait sans cesse des problèmes de focus clavier ; l’accélération vidéo ne semblait jamais vraiment fonctionner et vidait la batterie. Il y avait aussi des cauchemars de confidentialité comme les cookies persistants qu’il fallait supprimer en lançant l’application Flash d’Adobe, et la gestion des autorisations ignorait le système hôte comme le navigateur.
Difficile aussi d’oublier les problèmes quasi permanents de sécurité et de stabilité. Personnellement, je suis content que Flash soit mort.
Flash était déjà médiocre sur desktop, mais il était encore bien pire sur mobile, à un moment où le mobile devenait important, et c’est pour ça qu’il est mort.
On pouvait faire des animations, mais à l’époque, ce n’était pas ce dont la plupart d’entre nous avaient besoin ou envie.
Les seuls groupes qui aimaient Flash étaient les services marketing, ainsi que les gens qui voulaient devenir développeurs de jeux et les ados qui jouaient à ces jeux.
Au moins, du point de vue développeur, travailler avec un SDK tout-en-un d’un fournisseur unique est bien préférable à ce cancer de node_modules.
Quand on consulte un vieil article de blogs.adobe.com, on tombe maintenant sur cette erreur en direct :
Fastly error: unknown domain: blogs.adobe.com. Please check that this domain has
been added to a service.
L’erreur ci-dessus vient de cette URL : https://blogs.adobe.com/asset/2012/06/inside-flash-player-pr...
Ça a pris des années, mais au final ça ne fonctionnait que partiellement. À l’époque, Flash dominait encore largement dans le navigateur, et pourtant personne n’a vraiment réussi à le porter correctement avant la mort de Gnash
Je me demande comment Ruffle a réussi à le faire fonctionner aussi vite