Ask HN: Why Adobe still can’t figure out Flash on WASM?
In 2022 we have SVG, WebGL, canvas, sound API and we can practically rebuild many of those Flash websites. They were accessibility disasters, but today we can do much better.
All this makes me think: why Adobe haven't finished yet Flash export to HTML5/WASM which is easy and popular? What's stopping them? Money or technical obstacles? I can imagine the targeting all the browsers both desktop and mobile and QAing all of that is hard, but feels like doable and web platform is pretty reliable these days?
And the final question: can people from Figma help Adobe to make Flash actually work? Figma is one of the best WASM/WebGL apps out there which (I presume) very experienced engineering team. I've read the blog post when they were running JS interpreter compiled to WASM in a web worker to create secure sandbox used as plugin environment. All of it just works. Can they help?
179 comments
[ 0.27 ms ] story [ 236 ms ] threadI explored a bunch of apps in this category over the weekend and was pretty impressed with what's out there, although it still feels early. Rive (https://rive.app/) is probably the one I'm most excited about; their state-machine approach is novel (at least to me) and feels like a solid approach. Unfortunately they don't support text yet, which is a deal-breaker for what I wanted to do, but they say it's coming.
The Lottie (https://airbnb.design/lottie/) ecosystem is also interesting. Funny enough, Adobe still seems to dominate as a pipeline for generating Lottie files (Illustrator -> After Effects), even though you need a third-party plugin to do it.
They stopped working on ActionScript tools (Flash IDE, AS3 compiler, etc) and switched all their web designer tooling (web animations etc) to Javascript. For a while they kept pushing out Flash security updates, but only because they had an enormous existing install base - but even so, that happened with a skeleton crew, and I'm not sure it's still being maintained.
So yeah, there's nothing stopping them now - because they already stopped years ago.
Adobe's official answer to Flash on HTML5 was "rewrite your AS3 app in CreateJS and use Animate's HTML5 exporter to export your timeline as a series of bitmap spritesheets". This is not at all what Flash developers needed, but Adobe is a terrible steward of their own platforms, so its what they did.
As a result it forced a lot of Adobe's own customers to jump ship for greener pastures. The game developers jumped to Unity, the web developers to Lottie and GSAP, and the animators to Toon Boom.
That's ... terrifying.
I’ve worked in Adobe air based infotainment systems 10 years back, and it was a great technology. Actionscript3/MXML was at that time far more advanced than JavaScript. It took maybe another 5 years and typescript and react to catch up.
The graphics primitives the web provides are actually not that great at emulating Flash's specific graphics model. SVG and canvas differ from Flash in a few key areas, especially to do with masking; and WebGL/WebGPU are very low-level and rendering vectors on GPU is hell.
This could have been fixed by having Animate switch to an SVG+SMIL renderer for HTML5 projects, but Adobe wanted a quick fix to keep Animate relevant beyond Flash Player.
I haven't seen it all put together into something that's really web friendly though.
I mean, the product was already Adobe Animate for years at that point — a tool for animators, not IxD developers; where the intended export product is a video raw to be fed into AfterEffects, and any ActionScript support only existed to do things like character rigging automation, mouth-flap sequencing, etc. In other words, for replay-time (⇒ render-time) computation, not for interaction.
The Animate runtime had essentially, at that point, evolved out of being a software runtime per se, and had become something rather more like a custom demoscene "demo" runtime — an abstract machine tuned for compactly representing instructions to procedurally generate a video+audio stream when executed. Something more closely related to mod-tracker abstract machines than to a thing like the JVM.
I'm not surprised that everyone else left; the product for IxD folks ceased to exist in 2016, when it was renamed. That it still kind of worked if you did this or that was a coincidence, not intentional.
I am surprised that the animators themselves then left. What made them leave? The whole product still works just fine (if not better) for their use-case.
List of CVEs for flash player - lots of 10s in there. https://www.cvedetails.com/vulnerability-list/vendor_id-53/p...
And they did good. Flash was buggy af.
I never signed up for their pre-release access program thing. I only learned of their existence when the company's twitter account, and then the company's founder's twitter account, started following me. I was, of course, very flattered - I had less than 30 followers at the time! Six months later the company pivoted and most of the devs got fired. These two events are in no way related!
Why would anyone go back to flash, even if it became available again?
https://ruffle.rs/
See the famous Badger SWF:
https://archive.org/details/flash_badger
https://www.homestarrunner.com/
Still needs work but it's exciting stuff.
Edit: Warning some of the loops may be considered NSFW, most have sound.
TypeError: Failed to execute 'compile' on 'WebAssembly': An argument must be provided, which must be a Response or Promise<Response> object
Flash is long dead, that's your answer and Adobe isn't doing anything with it now.
Somehow though there is a cognitive gap there and people's brains just go "zzzzzz" and they just don't perceive it, no matter how you present it to them, if you are tactful, gentle, forceful, rough, whatever. It reminds me of a friend of the family who had epileptic seizures and would drive off the highway into the shoulder of the road and deny that it happened, crash a bunch of shopping carts into somebody's car and say it never happened, burn down the building he lived in and not remember it, ...
People who were subscribed to CC would have been upgraded to Adobe Animate and could have kept using it but it seems they didn't.
Much (most?) of that was made with pirated copies. Is there a way to use Animate for free?
I doubt Flash would have been half as prominent, nor that we'd care about it half as much today as we still do, if they'd had some kind of perfect, flawless DRM on it.
Back in the Newgrounds days the number of people creating content who would have had legit access to Flash and Photoshop was... not high.
CC users were not the people creating content with Flash, tbh.
With Flash, they controlled the underlying tech and could roll out features when they wanted. With Animate, they could not control browser support for things like 60fps CSS3 animations. Understandably, they were probably also bleeding many users who simply chose to go to native development instead of waiting for a potentially half-assed web solution.
It's 2022 and Apple barely has any support for PWAs. They only indicated that Flash-like projects should be rebuilt in HTML5. They never said the
If you are missing the Flash developer experience, then you are still in luck, we are going to see many options for WASM as a target.
https://www.adobe.com/products/animate.html
Flash died for a good reason, let it rest in peace :)
Your theory, your foundation, in 2022, is flawed. There's simply not enough market for Adobe to justify the expense. Furthermore, it's obviously not a growing market. It never will be. Factor in the opportunity cost and there's simply no good reason to invest in such a thing.
Editorial: While I'm not going to blame the tool, there were a lot of gawd-awful experiences built with Flash. Some have learned from that, others have not. Let's hope we don't go back to a day when pointless eye-candy was confused with good design and an effective UX. I'll hang up my mouse-pad if that happens again.
On your point though for actual apps in WASM that are more than just making a 'cool popping interface' there is a future. I also can attest that Lottie in icon design and animation is super fun. Also the sound API still sucks.
If it's A, then there's no money in it. There might be some nostalgia in resurrecting old Flash apps, but it just isn't worth Adobe putting in all that work.
If it's B, I think there's a host of issues to relaunching Flash as an active development platform.
First, I think the biggest thing is that the development community likely wouldn't want to buy into a proprietary system again. Yes, it would compile to WASM, but you'd be on the hook to Adobe for the future of whatever you were building. That might have been ok back when there weren't other options to create that type of media. I don't think you could get enough buy-in today.
Second, WASM isn't just perfect. I'm very bullish on WASM's future, but to pick on one example: it doesn't have a garbage collector. That means that any runtime that needs GC needs to ship its own GC. Instead of a lightweight JS payload, people have to download your garbage collector in addition to the code. Likewise, many languages often come with standard libraries so you're shipping your implementation for `List`, `Set`, etc. along with the code of the actual application. With JS, the browser already has the built-ins.
Microsoft has been putting a lot of effort into Blazor on WASM (allowing developers to write C# with Razor templates that execute in the browser to compete against things like React). It's been a pretty big effort and as of .NET 6 it's still around half the speed of React+Redux. Worse, its startup time is 3-6x worse depending on whether you're using AOT compilation or not. Ahead of time compilation helps it run faster, but it also means having to download a lot more. Even without AOT, Blazor could weigh in close to 10x React+Redux.
Again, I'm very bullish about WASM's future. .NET 7 (releasing in a month or two) should have nice improvements for Blazor. However, it's not easy to simply target WASM if you're looking to create a platform that people are wanting to actively use. I think that Blazor is going to be a wonderful long-term investment for Microsoft. WASM is looking to add GC capabilities so that languages don't have to ship it. Languages are getting better at figuring out which pieces of code are actually being used and need to be shipped.
However, does Adobe want to put all that money and effort in when it seems like the industry won't be beholden to a proprietary standard in the future? Probably not.
I think the big issue is that there's a large gulf between "this works" and "this is performant and efficient enough to compete with alternatives." Again, I think WASM is an excellent long-term investment for the web. If WASM had started in 2000 or 2005, we probably wouldn't have seen such amazing work on JS engines like V8. However, WASM needs to compete against incredibly advanced JS engines that are at the top of their game. It will happen and I think it's already great for languages like Rust and C. I just think that it wouldn't be trivial for Adobe to relaunch Flash as an active development platform.
Adobe wouldn't just need something that worked, but something that's a compelling alternative to modern development. Flash pre-dates jQuery by a decade. In the '90s and early 2000s, Macromedia and Adobe were offering an interactive, rich-media system that pre-dated anyone really using Ajax. I'm not saying Flash offers nothing today. I never developed for Flash so maybe it was a nice development environment. However, we're able to make the same rich, interactive experiences without Flash today.
Finally, on a legal level, it looks like Adobe may have licensed Flash to Harman/Samsung: https:/&...
What I care about is timeline, assets, library, keyframes, movie clips, drawing tools, text formatting, tweening and much more. All in one package, cmd+enter to see the output. Maybe even these days cmd+enter is too much, the output should be immediate and even better - live. Bret Victor would not be happy about not-live (dead!) scene. Definitely I don't want to resurrect old Flash. TypeScript is much nicer than AS3, even though AS3 had E4X which I remember to be quite powerful even compared do poor JSX.
I think you're right about missing GC and shipping `List`, `Set` etc. to the user as a part of the runtime. But, if that can chunked out and be stored on a CDN and downloaded only once for a browser session, then this problem won't hurt that much. Once GC is added to the platform I'd love to see Figma-quality reincarnation of Flash in an B-option (from your post) manner.
https://www.fortressofdoors.com/the-future-of-games-is-an-in...
I think the development community would absolutely buy into a proprietary system again. We haven't seen a good 2d vector engine for games to replace Flash, but screens keep getting bigger and denser.
I mostly prototype in typescript/Pixi these days when I tinker on small games, but the workflow is nowhere near as nice as "author assets in Flash -> import directly in AS3." Flash was also a game engine and asset pipeline. I'd be super pleased if someone built a typescript version of Flash's display tree + vector rendering + authoring tools.
It is safe to assume that the Flash team has either left the company or moved to other roles in the meantime. The Flash codebase is gigantic, evolved over decades and probably includes IP with non-obvious licensing restriction (RTMP is an example that pops to mind). Porting to Wasm such a big codebase would require assembling a new team and figuring out some legal aspects. Both these things are expensive.
At the same time, FOSS efforts to replace Flash can at best achieve partial support for SWF content in the wild. The API surface is just too massive and poorly documented. I speak from personal experience here, having founded the Lightspark project when I was younger and with a lot of time on my hands.
Our opinion (at LeaningTech) is that Wasm can solve the Flash preservation problem by virtualizing the original, unmodified Flash x86 plugin. We wrote at length about our approach here: https://medium.com/p/eb6838b7e36f
The resulting product (CheerpX for Flash, https://leaningtech.com/cheerpx-for-flash/) is available to companies that needs to use Flash (and particularly, Flex) business applications.
Since the SWF effectively runs using the original Flash plugin the accuracy is optimal. On the hand, licensing the plugin itself is required, which means that the solution is not viable for end-users. As much as we'd like this to be different, it's unfortunately outside of our control.
Full disclosure: I am founder and CTO of Leaning Technologies, and lead developer of CheerpX
Our latest demo (PythonFiddle) is discussed here: https://leaningtech.com/pythonfiddle-fully-private-client-si...
Direct link: https://pythonfiddle.leaningtech.com
As for the dev environment around flash, according to them it was a nightmare codebase not for the faint of heart. It isn't surprising that adobe decided not to port it to WASM because it was a spaghetti mess.
There's a reason Flash was often a virus vector back in the day.
Where Adobe seems to have royally screwed up is creating an unambiguous specification for SWF format, and also disallowing other implementations of SWF. Instead, they become beholden to a codebase that no one could make heads or tails of, with no way of creating a clean rewrite that was guaranteed to replicate the behavior.
In designing Wasm we were very conscious of this, which is why Wasm has a very, very explicit specification that is simple with only the minimum non-determinism (some NaN issues) and no UB.
It was definitely what drew the first blood.
But in fairness, a lot of people were crying for blood, flash had issues all over, and it was a complete security disaster. Apple's decision basically gave everyone the OK to dump on it.
It also happened at a time where the idea of open web was ascendent, MSIE was being actively fought against, and the people involved were out to excise proprietary platforms.
Also all mobile platform flash implementations had been absolutely awful, barely usable battery killer even ignoring that the UI affordances were just not adapted for mobile touchscreen devices.
Lack of iOS compatibility was the nail in the coffin. Our web agency already hated Flash because it lacked any SEO capability, and the editor was shit. When the iPhone dropped it we had already been building websites without it for a couple of years. It was just a nice accelerator and allowed us to deny clients who requested Flash much easier.
Fast forward a couple more years and security became the main issue. Many of our clients were infatuated with their Flash websites and didn't want to move on. I just took down a Flash website (replaced with HTML/CSS/JS) in... 2022!
Flash had been on shaky grounds for years. It was obvious that it had a limited lifespan, and that it eventually needed to die. I think even Adobe recognised this. But Apple accelerated it's death massively, and everyone seems to be very thankful for that.
Flash is dead. Autoplaying ads still exist.
There is a duolingo page that manages to kill my computer to death if I am not fast enough to close it. (Fortunately I only get it ~once a week.) Flash was easily blockable, but javascript, especially something that is compiled to javascript is much harder to catch.
For sites that used a Flash component (e.g. YouTube), the plug-in was fussy and flaky and would sometimes not work for any discernible reason, sometimes requiring an update to fix it. HTML5 replacements have been far less cantankerous.
Well...yeah. Flash sites usually make use of graphics, fonts and videos, all of which use bandwidth. They serve an entirely different purpose than regular HTML/CSS/JS pages.
Flash loaded everything at once, so that the experience was instantaneous and fluid, once it loaded. It would continue to work if you disconnected. There wouldn't be any buffering or lag due to network issues.
It was extremely to do a UI application with Flexbuilder, very similar to using VisualBasic 6.0. Just drag some widget and connect the event to some functions. Also drawing and animating vector graphic with the Flash authoring tool was extremely easy.
Today there is still no software that is this easy to use. You dont see 7 years old kid coding vector gfx animation with javascript and css :)
But back in the day it was not uncommon to see complex flash animation designed by 7 years old kid.
But an app with vector animations should have been doable (not to hard in theory) if you could have found the investment for it, right?
(Unity do have animations tools for artists (it is partly made for artists) but not so good for vector graphics and not close to flash, and definitely not back then.)
Sad that the best they can do is Swift Playgrounds for iPad; creating what is essentially a JSFiddle/Codepen for apps that can't be deployed without first paying their $99 dev fee toll.
In that spirit, I use Tumult Hype, which truly is Flash, and can be acquired without a pesky subscription.
Business people never use this as part of the decision making process. If there's a market they will throw programmers at it and ignore their warnings.
I'm sure "we should get flash mobile" was pitched at one point in time and the "we'd have to rewrite everything in Javascript" was ultimately what killed those sorts of notions. Because, business people care that "this will be a multimillion dollar investment"
Given how difficult it was to maintain a flash codebase well with multiple developers jumping in and out of the project, we pushed that angle pretty hard
LOL, that's far from insider info. Steve Jobs publicly said several times that he was going to kill Flash. And he did.
And the reason for that wasn't "Flash is an insecure platform". Flash was in the way of a thing called the "App Store" which, fast forward to 2022, has made Apple somewhere around a trillion (with a t) dollars.
The problem with Flash was that it was a grossly inefficient runtime for arbitrary code with security issues, an extreme battery hog, and had no affordances for touch (e.g. you couldn't 'hover'). As I recall, battery was the biggest problem, security close second, UX inconsistency third, and runtime for arbitrary code (still disallowed!) as nail in coffin.
This is one of the first things which makes me feel old. "heard it from an aquantance" shit we all saw it happen! I wonder if people are to young to remember it, or maybe there are a lot of people who just don't remember it at all.
EDIT: And one could argue that Unity is the new Flash.
Note that Ankama is still using Flash for its MMORPG, Dofus.
They're moving it to Unity, FWIW.
Now most people just do things in other languages. Flash was a very nice platform to target though. It got a lot of things right.
It was a really great language. Typed by default, but easy to do squishy dynamic types when you want. Easy to do FP things or traditional OOP, and to mix and match based on the problem.
Also, while the performance wasn't great, I did some very cool things with e4x binding in Flex.
We had reactive UIs back before that phrase was coined.
Query an API, update a xml variable with the results, and the entire UI would update based on bound e4x expressions.
It may be one of the reasons why I enjoy vanilla web components + lit-html for rendering. It feels a lot like having that same sort of simple, elegant and powerful rendering capability without the cruft of big frameworks.
Clearly ahead of its time, unfortunately, its fate was poorly managed, they should have went open source and a clear focus on WASM/WebGL and now WebGPU
Luckily some folks went ahead and created Haxe [1], they even used it for world class game titles, engine fully open source [2]
There is even an open implementation of Flash API [3]
[1] - https://haxe.org/
[2] - https://heaps.io/
[3] - https://www.openfl.org/
[0] - https://heaps.io/documentation/h2d-introduction.html
[1] - https://github.com/HeapsIO/heaps/issues/422