4 ms·
There are a lot of serious attempts underway, I've been involved with some of those discussions. Nothing perfect and turn key exists at the moment, but all the
by larsiusprime 9y ago
There are a lot of serious attempts underway, I've been involved with some of those discussions.
Nothing perfect and turn key exists at the moment, but all the necessary pieces are basically there.
It depends on what sort of preservation strategy you're going after.
1) "Emulation" style:
-- Open source flash player (a la Shumway)
2) "Automated Conversion" style:
-- Load-time conversion to a different format (ie, HTML5)-- Ahead-of-time conversion to a different format
3) Convert by hand
-- Rewrite in JS/HTML5
-- Rewrite in Haxe using a library like OpenFL (Haxe compiles to JS/HTML5, C++, also Flash)
There's a lot of options available, and a lot of useful primitives. Parsing and rendering Flash (SWF) content is basically solved (OpenFL has made particular strong strides in this area, Shumway is impressive too).
The really big missing piece is ActionScript execution. There are in fact various open source ActionScript VM's out there, and there are ways to parse ABC (Action Script Byte Code) and convert it -- either ahead of time or at load-time -- to something else, whether that's directly to JS, or something like Haxe (which then compiles it to JS or C++ or whatever), but to my knowledge nobody has a working solution that as of today combines Rendering + ActionScript Execution + RigorouslyTestedConvenientUX.
But all the pieces are there. You just need someone motivated enough and well funded enough to put it all together. Hopefully this news spurs that fire.
- colanderman 9y agoThere's nothing stopping you from just running Flash itself… even in a Windows XP VM if necessary.
- drak0n1c 9y agoSome kind of conversion is needed to help hosts keep their flash content alive - visitors will ignore what is not accessible.
- colanderman 9y agoYes, but that's not the problem the GP was addressing.
- colanderman 9y agoI really don't get the downvotes here. Yes, there are umpteen ways to run a Flash program. But if you goal is "preserve the experience of running a Flash program for future generations", the most obvious solution is to simply emulate the platform on which Flash runs. (This solution also has the benefits of being simple and a solved problem, which the GP admits is not true of other solutions.) Proposing to preserve Flash apps through a bytecode emulator is frankly somewhat absurd if you consider analogies. HTML 2.0 sites don't render on modern browsers either, but no-one seriously proposes maintaining a modern HTML 2.0 browser to view them. They simply run an old copy of Netscape Navigator, in a Windows 95 VM if necessary. Likewise with old BASIC programs on an Apple 2: no-one (from a preservation standpoint) runs them on an AppleSoft BASIC emulator; they run them on real AppleSoft BASIC inside an emulated Apple 2.
- mbebenita 9y agoActionScript3 (or AVM2) is fairly well documented and Shumway did a fairly good job executing ABC files, I think we got to like 99%+ compatibility on the reference tests. Getting Rendering + Timeline + Library working correctly, ... that's another story. You have to bug-for-bug compatible AND do different things for different versions of SWF and AVM versions. If anyone needs a decent emulation of AVM2 bytecode, Shumway has a pretty good one in there.
- zwetan 9y agoI have seen experiment who took the code base of Redtamarin (based on AVM2 sources) https://github.com/Corsaair/redtamarin https://github.com/Corsaair/redtamarin and added native implementations to render UI with OpenGL API, QT API, etc. Now, even if it is technically feasible it is not like providing a plugin for the browsers, so that would be mainly to target desktop GUI apps which Adobe AIR is already doing very well. As for converting the whole Flash API to HTML5/JS, some parts could be done but many parts would be missing or would be impossible to port because the Browser API can not support some of those, TCP/UDP sockets for example (possible with chrome non-standard API but then does not work everywhere).
- mbebenita 9y agoActionScript3 (or AVM2) is fairly well documented and Shumway did a fairly good job executing ABC files, I think we got to like 99%+ compatibility on the reference tests. Getting Rendering + Timeline + Library working correctly, ... that's another story. You have to bug-for-bug compatible AND do different things for different versions of SWF and AVM versions. If anyone needs a decent emulation of AVM2 bytecode, Shumway has a pretty good one in there.
- niutech 9y agoNo need for converting existing SWF files - you will be able to play them after 2020 using the Flash Player Standalone Projector or Swiff Player.