Ruffle: Flash-Player-Emulator
(ruffle.rs)- Ruffle ist ein in Rust geschriebener Open-Source-Flash-Player-Emulator, der Flash-Inhalte, die nicht mehr nativ unterstützt werden, auf modernen Betriebssystemen und in aktuellen Browsern wieder ausführbar macht
- Unterstützt sowohl Desktop als auch Web; in Web-Umgebungen kommt WebAssembly zum Einsatz
- Ziel ist es, mithilfe der Garantien von Rust und WASM die von Flash bekannten Sicherheitsrisiken zu vermeiden
- So konzipiert, dass sowohl normale Nutzer als auch Website-Betreiber es schnell installieren und ausführen können
- Wird unter der MIT/Apache-2.0-Lizenz bereitgestellt und ist ein frei nutzbares, kostenloses Open-Source-Projekt
Flash-Inhalte in modernen Umgebungen ausführen
- Ruffle ist ein Flash-Player-Emulator zum Ausführen von Flash-Inhalten in modernen Umgebungen
- Er ist dafür entwickelt, nativ auf modernen Betriebssystemen und in aktuellen Browsern zu laufen, und konzentriert sich darauf, Flash-Inhalte ohne zusätzlichen Aufwand wiederzubeleben
- Die Implementierungssprache ist Rust, Zielplattformen sind sowohl Desktop als auch Web
- Für die Ausführung im Web wird WebAssembly verwendet
Sicherheitsansatz und Bereitstellungsbedingungen
- Versucht, mithilfe der Garantien von Rust und WASM die Sicherheitsfallen zu vermeiden, die Flash hatte
- Entwickelt, damit sowohl Nutzer als auch Website-Betreiber es schnell installieren und ausführen können
- Ein kostenloses Open-Source-Projekt, das unter der MIT/Apache-2.0-Lizenz verteilt wird
1 Kommentare
Meinungen auf Hacker News
Wie viele andere habe ich in der Schulzeit viel zu viel Zeit mit Flash-Spielen verbracht, und ich fand es schade, dass ein Teil der Spielegeschichte verschwindet.
Trotzdem kann Ruffle zumindest einen Teil davon wiederbeleben. Allerdings fällt mir auch ein, dass es immer noch keine Möglichkeit gibt, Wolfenstein RPG auf iOS zu spielen. Ich habe noch einen iPod, den ich 2010 praktisch nur für dieses Spiel gekauft habe, aber der Akku wird wohl nicht ewig halten. Fürs Erste gehe ich wohl erst mal Adrenaline Challenge spielen.
Ich dachte, es würde noch Jahre dauern, und habe in der Zwischenzeit die letzte Flash-Version ohne Zeitbombe installiert und genutzt, aber ich bin froh, dass ich mich geirrt habe :)
https://github.com/hikari-no-yume/touchHLE/pull/139
Die Seite The Merchant's House in der Ausstellung „Slavery in New York“ der New York Historical Society zeigt Gegenstände nacheinander und erklärt, dass „alles mit der Sklaverei verbunden war“. In der Online-Ausstellung gibt es viele Informationsstücke, die auf Flash angewiesen sind, und diese Seite war persönlich mein Favorit.
Dank Projekten wie Ruffle lässt sich solche Arbeit erhalten. Da die Ausstellung inzwischen verschwunden ist, ist dies die einzige Möglichkeit, diesen Beitrag zu sehen, und es ermöglicht, die Ergebnisse umfangreicher historischer Forschung weiter zu nutzen.
Allerdings scheitern die video galleries derselben Ausstellungswebsite. Es müssten Videoclips sein, die Besucher der Ausstellung in einer eigenen Kabine hinterlassen haben, und nachdem ich einiges dazu gelesen habe, scheinen sie gutes Material dafür gewesen zu sein, wie damalige New Yorker Bürger die Sklaverei sahen. Es gab auch diese Formulierung der New York Times: „Sie haben die Unbeholfenheit von Amateur-Heimvideos. Hintergrundgeräusche, lange Pausen, Blicke, die der Kamera ausweichen.“
Es dürfte sich um einen Teil von rund 400 Videos handeln, aber auf dieser Seite funktioniert Ruffle nicht richtig. Als ich versucht habe, sie anzusehen, kam im Tab kurz Audio, also scheint irgendetwas zu passieren, aber gesehen habe ich nie ein Video. Es wäre schön, wenn jemand, der sich damit besser auskennt, wüsste, was da los ist; es wäre schade, wenn dieses Material verloren ginge.
Mit Tools wie VLC oder ffplay lassen sie sich offline abspielen, und man kann sie auch in ein moderneres Wiedergabeformat konvertieren.
AS3 war in vielerlei Hinsicht ECMAScript 4 und seiner Zeit meiner Meinung nach ziemlich voraus. Vieles von dem, was wir heute erwarten, fühlte sich im Flash-Player-Ökosystem bereits wie selbstverständlich genutzte Funktionalität an.
Natürlich gab es auch albtraumhafte Momente, aber in einer Zeit, in der browserabhängiges JavaScript schon schwer genug war, konnten wir ziemlich gute Dinge ausliefern.
Weniger dass AS3 seiner Zeit voraus war, sondern eher, dass wir uns durch die Abkehr von Flash wegen Steve Jobs und dem damaligen Adobe-CEO in die Vergangenheit zurückversetzt fühlten.
AS3 war wirklich gut, leicht zu lernen und sicher genug, damit mehrere Entwickler gemeinsam etwas erweitern konnten. Auch Flash wurde gegen Ende ziemlich schnell, aber am Ende wurde alles die Toilette hinuntergespült.
AS3 war eine hervorragende Sprache. Brendan Eich hat sie in seinem Interview mit Lex Fridman kurz erwähnt; interessant war, dass sie eher ein potenzieller Nachfolger von JavaScript war, der es nicht in den Browser geschafft hat. Schade, ich hätte mir gewünscht, dass sie zum neuen Standard geworden wäre.
Es wäre schön, wenn es ein Gesetz gäbe, nach dem Software in die Public Domain übergehen muss, sobald sie nicht mehr verkauft wird.
Die zugehörigen Spezifikationen stellt Adobe aber kostenlos bereit.
Es wäre auch gut, die Schutzdauer des Urheberrechts auf ein vernünftiges Maß wie 5 Jahre zu verkürzen. Noch besser wäre es vielleicht, wenn man zur Aufrechterhaltung des Urheberrechts jedes Jahr eine exponentiell steigende Steuer zahlen müsste.
Eine Gesetzesänderung könnte das lösen. Man könnte zum Beispiel ein Gesetz zur Bewahrung antiker Software schaffen, das erlaubt, jede Software als Open Source zu veröffentlichen, und Klagen im Zusammenhang mit Maßnahmen nach diesem Gesetz ausschließt.
Man könnte auch zusätzliche Anreize setzen. Etwa indem man verlangt, dass jede kommerziell verkaufte Software dauerhaft archiviert oder als Open Source veröffentlicht wird. Eine rechtssichere dauerhafte Archivierung ist teuer, daher würden sich viele wahrscheinlich für Open Source entscheiden.
Deshalb ist eine Open-Source-Veröffentlichung oft nicht möglich, ohne große Teile der Codebasis herauszuschneiden; das ist teuer und mindert den Nutzen des veröffentlichten Codes erheblich.
Oder sind die Tools inzwischen so schwer wiederzubeleben, dass es praktisch nur darum geht, alte Kataloge wieder nutzbar zu machen?
Natürlich ist der alte Katalog enorm umfangreich, aber ich habe gehört, dass viele Entwickler gern Flash-Spiele erstellt haben. Es wäre interessant, wenn jemand hartnäckig genug versuchen würde, die Flash-Game-Szene wiederzubeleben.
Heute ist das nicht unbedingt nötig, und es gibt vielversprechende Webstandards, die sich täglich weiterentwickeln, aber so etwas hat hartnäckige Leute noch nie aufgehalten. Es gibt immer noch Menschen, die Wege finden, neue Spiele für alte Nintendo-Hardware zu entwickeln.
Wenn man AS2 will, muss man mindestens bis CS6 zurückgehen; wegen der deutlich breiteren FLA-Unterstützung halte ich CS5.5 für besser. Fragt nicht, warum sie das in CS6 entfernt haben.
Wenn man Adobe kein Geld zahlen will, kann man Apache Flex verwenden, die freie Open-Source-Version der Adobe-Toolchain. Das sind allerdings Kommandozeilen-Compiler-Tools und sie kompilieren nur AS3-Dateien, daher muss man Grafiken separat erstellen und einbinden.
Bei Vektorgrafiken muss man wahrscheinlich einen Weg finden, SVG nach SWF zu konvertieren, es mit seltsamer Klassendeklarations-Magie in Flex in die Haupt-SWF einzubinden und dann auch noch die dadurch entstehenden subtilen Maskierungsprobleme zu behandeln.
Es war ein leicht zugängliches Autorentool, mit dem man skalierbare, plattformübergreifende Einzeldatei-Animationen erstellen konnte, die auch bei geringer Bandbreite funktionierten.
Wir haben diesen Verlust bis heute nicht ausgeglichen. JavaScript + canvas + Web-Stack sind ein Chaos. Wenn die Ruffle-Runtime schnell starten kann, würde ich wohl anfangen, neues Flash zu machen.
Unter macOS ist es komplizierter, weil diese Versionen alle 32-Bit sind. Auf einem M1-Mac ist es besser, eine Windows-VM einzurichten und Flash darin auszuführen; auf einem Intel-Mac kann man macOS Mojave, die letzte Version mit 32-Bit-Unterstützung, auf einer separaten Partition installieren.
Tatsächlich läuft dabei ein vollständiges Linux in einer VM innerhalb von WebAssembly, und darin wird der offiziell lizenzierte Adobe Flash Player ausgeführt. Und diese Flash-Lizenz muss man offenbar separat von Harman beziehen. Es sieht so aus, als lägen die Flash-IP-Rechte inzwischen dort.
https://labs.leaningtech.com/cheerpx/for-flash
Ich habe mit ihnen nichts zu tun, ich habe nur irgendwann einmal aus Interesse danach gesucht.
Es emuliert aber nicht ein komplettes Linux, nur um Flash auszuführen. Es emuliert PPAPI und führt den Flash Player in CheerpX aus, einem x86-JIT.
Yuri erklärt die CXFF-Architektur hier:
https://youtu.be/7JUs4c99-mo?t=1045
Falls man vollständige Linux-Systememulation braucht, gibt es das ebenfalls: https://webvm.io
Ich denke weiterhin, dass das Internet und junge Programmieranfänger mit Flash ein wirklich wertvolles Werkzeug verloren haben. Schade, dass man das Sicherheitsmodell nicht richtig zum Laufen gebracht hat. Flash-Applets waren funktionsreich und hatten eine ungewöhnlich niedrige Einstiegshürde.
Klar, es hatte Probleme, aber das gilt für die meiste Software, und Flash war seiner Zeit wirklich etwa 20 Jahre voraus. Nachdem Flash starb, wurde das Web lächerlich fade.
Meine Verschwörungstheorie ist, dass Apple und Google Adobe bezahlt haben, Flash zu töten, um Mobile-Support zu erzwingen.
Ich habe nie eine Zeile Flash geschrieben und will das auch nicht, aber ich erinnere mich immer noch schlecht daran, wie kaputt Flash-Websites waren.
Widgets verhielten sich nicht wie native Elemente und fielen dadurch auf, in Firefox gab es ständig Probleme mit dem Tastaturfokus, Video-Beschleunigung schien nie richtig zu funktionieren und fraß den Akku leer. Dazu kamen Datenschutz-Albträume wie persistente Cookies, für deren Löschung man Adobes Flash-App öffnen musste, und eine Rechteverwaltung, die Host-System oder Browser ignorierte.
Auch die nahezu ständigen Sicherheits- und Stabilitätsprobleme sind schwer zu vergessen. Persönlich bin ich froh, dass Flash tot ist.
Flash war schon auf dem Desktop nicht besonders gut, aber als Mobile wichtig wurde, war es dort noch deutlich schlechter, und deshalb ist es gestorben.
Man konnte damit Animationen erstellen, aber das war damals nicht das, was die meisten von uns brauchten oder wollten.
Die Gruppen, die Flash mochten, waren Marketingabteilungen sowie Leute, die Spieleentwickler werden wollten, und die Teenager, die diese Spiele spielten.
Zumindest aus Entwicklersicht ist die Arbeit mit einem SDK eines einzigen Anbieters, bei dem alles dabei ist, deutlich besser als dieser node_modules-Krebsklumpen.
Wenn man alte Beiträge auf blogs.adobe.com aufruft, erscheint derzeit dieser Live-Fehler:
Fastly error: unknown domain: blogs.adobe.com. Please check that this domain has
been added to a service.
Der obige Fehler stammt von dieser URL: https://blogs.adobe.com/asset/2012/06/inside-flash-player-pr...
Es dauerte mehrere Jahre, funktionierte am Ende aber nur teilweise. Damals dominierte Flash im Browser noch immer, trotzdem schaffte es niemand, es ordentlich zu portieren, bis Gnash schließlich starb.
Ich frage mich, wie Ruffle es geschafft hat, so schnell lauffähig zu werden.