from Hacker News

Ask HN: Why Adobe still can’t figure out Flash on WASM?

by bartq on 9/19/22, 1:45 PM with 175 comments

Figma was just bought by Adobe, we all know that. Word "Adobe" brought back to me the memories of early days of my career when I was a Macromedia/Adobe Flash developer and I was working on websites very heavyweight both graphically and animation-wise.

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?

  • by apignotti on 9/19/22, 2:59 PM

    From the point of view of Adobe, Flash is a legacy technology. Simply put, there is not enough business to be made with it at Adobe's scale.

    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

  • by null_object on 9/19/22, 3:45 PM

    For those people in the thread talking about Adobe Animate or AirBnB's Lottie - Flash was capable of so much more than frame-by-frame animation.

    As long ago as around 2001, with ActionScript 1 or 2, I was already building smart drag-and-drop calendar applications, where conference attendees could book all their sessions online in an easy-to-use and intuitive interface, that included tips, and complex hover states, with extra information at user's fingertips.

    I'd say web-apps are almost getting to the same state of sophistication and user-friendliness around about now.

    After that, with ActionScript 3, I was building interactive and immersive promo sites where users could explore alternative environments, build their own 3D worlds, or do crazy stuff like mash-up their own facial features (captured through their webcam) together with different celebrity musician's faces, and then do a remix of the musician's music (for an 'art' event that the musicians were taking part in).

    There were masses of other capabilities - both serious and playful - but I must admit, even though I'm sometimes sad we lost Flash, in the end - especially when it was obvious that Adobe had let it drift - it was a shitshow of insecurity and bandwidth-waste.

  • by 60654 on 9/19/22, 2:03 PM

    About ten years ago Adobe made a strategic decision to kill Flash.

    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.

  • by thomasqbrady on 9/19/22, 3:47 PM

    There are a lot of answers here I partially agree with, but there's an overarching concept that I think they're missing: there's no market for it. Adobe never stopped working on such a tool, as others have pointed out below, in that they still ship Flash's successor Animate. They kept Flex going as long as they could, too.

    I think the reason people aren't terribly aware of Animate, and why there isn't a competitor product—whether open source or commercial—with a big name is that we don't need/want it. I haven't looked at the numbers in a while, but last I checked most web traffic was coming from mobile devices, and heavy, high-gloss interactions akin to what Flash afforded and what could be accomplished with WASM/WebGL are not what people want in their mobile browsing experience. They want fast. WASM/WebGL may be pretty efficient, and may be the best way to accomplish the sorts of things Flash was used for in much more efficient ways, but they're still not the best way to render text with a few buttons and images (i.e. a typical web page). The use-cases that had us reaching for Flash in the "aughts" just don't come up very often in web development these days.

    When users DO want heavy, high-gloss interactive content, they're going to the App Store/Google Play to find it, not the web. This gives the developers the choice of building those experiences with WASM/WebGL if they like, but the vast majority are choosing native SDKs or a game engines. Against those options the WASM/WebGL offering is just not competitive, yet (the APIs, tooling, community is just not as good, yet).

  • by paulgb on 9/19/22, 2:00 PM

    I think something like what you're wishing for will happen, but I don't think it will come from Adobe.

    I 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.

  • by pier25 on 9/19/22, 2:14 PM

    The Internet Archive uses Ruffle to do just that:

    https://ruffle.rs/

    See the famous Badger SWF:

    https://archive.org/details/flash_badger

  • by PaulHoule on 9/19/22, 2:23 PM

    Adobe renamed the Flash editor to "Adobe Animate" and it now does exactly what you want... Let you develop with the flash tool and export to HTML5, WebGL, etc. There are some very limited GFX rendering features that aren't supported but it works... But people don't want it.

    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, ...

  • by astlouis44 on 9/19/22, 6:17 PM

    Agree with the other comments that WebAssembly is the future of rich interactive content on the web. You don't have to look any further than the mega acquisition of Figma last week to know the growing importance of cross-platform applications powered by standards like WebGL and WebAssembly.

    Developers are getting more and more fed up that they have to go through walled gardens in order to distribute games and apps to reach their users, while forfeiting 30% of their revenue. A powerful, easy to use content creation tool with a discovery portal on the web represents a large opportunity to disrupt all of the walled gardens.

    Unity and Unreal haven't historically had great developer tooling and exporting support for the web, but mark my words that this will rapidly change moving into 2023.

    As a sort of litmus test, who here would use an editor that itself is web based, for authoring interactive 3D content for the web that could itself be published HTML5 via WASM and WebGPU? Think "Figma or Canva for real-time 3D". It would have strong UI/UX, and open up the market to more than just creators and software developers. East to use drag and drop tools, with scripting and plugins available for the technical community.

    Upvote this post or leave a comment if this is something that you would use.

  • by claytongulick on 9/19/22, 3:37 PM

    I just miss AS3.

    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.

  • by dralexmac on 9/19/22, 4:07 PM

    I worked at Adobe on a project called Alchemy (just like WASM, but for compiling c/c++ to actionscript to run inside the flash player). One of my internal demos was the flash player compiled into a SWF running Flash inside Flash. So if someone currently at Adobe wanted to dredge up my old branches they'd have a good starting place :)
  • by pjmlp on 9/19/22, 3:02 PM

    Because they sell Animate, https://www.adobe.com/products/animate.html, and there are products like CheerpX, https://leaningtech.com/cheerpx-for-flash/

    EDIT: And one could argue that Unity is the new Flash.

  • by warent on 9/19/22, 1:55 PM

    Seems like a project they would have to take on out of the goodness of their hearts, because I don't see how it makes their business meaningfully more valuable. Basically I'm not sure I see how the investment in this technology makes any business sense for them
  • by bartq on 9/19/22, 2:05 PM

    Btw, just googled for "Famo.us" which I remember as 3d library looking for its use case. I googled it and google gave me... this: https://amaze.co/.
  • by bitwize on 9/19/22, 4:15 PM

    Because they don't want to.

    Back in the day -- the mid-90s -- there was a DOS compatibility layer for Linux called DOSEMU. It's still around, but back when I was playing with it -- '96 or so -- it was good enough to run Doom at full speed, with sound. Windows NT, from the makers of DOS, could also run Doom -- but it was choppy and had no sound. Microsoft had the money, resources, and the exact programming talent needed to make a DOS compatibility layer that flawlessly ran on Windows NT with support for virtualized sound and other peripherals. They just didn't want to. For whatever reason, they decided that those resources were better applied somewhere else. And that's one reason why we got shitty Windows 9x -- it was more convenient for Microsoft to extend the DOS+Windows 3.x model for a few more years rather than translate everything to NT in such a way that the DOS stuff still ran well.

    And that's what the Flash situation looks like. With Apple cutting off Flash on iOS, Adobe just decided they didn't want to port it or even maintain it beyond the bare minimum. Flash's successor is Adobe Animate, and that does export to HTML5, but Flash itself... the effort isn't there from the parent company so it died.

  • by davidork on 9/19/22, 6:46 PM

    Adobe flash was like lead paint, irradiated water and asbestos insulation... at one point in time it seemed like a good idea, but in hindsight they were terrible ideas and should just be left behind.
  • by jeromie on 9/20/22, 8:24 AM

    The team at ruffle.rs has done a really good clean-room implementation of Flash. The hard part with Flash (beyond having two virtual machines, a JIT compiler, pixel shader support, etc) was that it was also bug-for-bug backwards compatible, such that new player updates would not break existing content compiled for older versions. Good luck reverse-engineering that (or porting it with a fully copy of the ~2.5M line codebase).

    It's also the case that a lot of games were dependent on specific timing, and changes to internals that were completely unrelated would elicit super weird behaviors in various games.

    When Flash in the US was EOLed, the folks at Newgrounds used Ruffle to keep their large body of Flash content running. It's been a couple years since I've checked in on it, but what they had was pretty impressive compared to other FOSS attempts that had been made over the years.

  • by ajxs on 9/19/22, 4:30 PM

    I'll preface my comment by saying that my earliest experiences with programming came from using Actionscript in Macromedia Flash. I loved how artistic the internet was in this 'full multimedia' era, and I have very fond memories of both the internet, and cutting my teeth in web design, and programming.

    I see no reason why Adobe would want to. I don't think this is how websites are designed these days, or what consumers expect. I don't think people want to navigate these kinds of sites anymore. The internet is not designed to be an 'experience' these days, it's designed to facilitate consumer needs quickly with minimum friction. Which is pretty much the opposite of what the high-multimedia websites built in Flash were designed to do. Users want fast load times, and instant response, not interesting animation.

  • by jonplackett on 9/19/22, 6:04 PM

    I still miss flash. I mean, it was crap it a lot of ways. BUT it brought creative people and the ability to create a website (or other interactive fun thing) closer than they’ve ever been.

    Why adobe didn’t create a great html5 authoring application (basically the same as flash) I’ll never know.

  • by chiefalchemist on 9/19/22, 2:42 PM

    re: All this makes me think: why Adobe haven't finished yet Flash export to HTML5/WASM which is easy and popular?

    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.

  • by tiborsaas on 9/19/22, 2:24 PM

    WASM is the new flash. It has the right level of abstraction it's properly developed in the open (yes, big corps are at the table, but still) and it's not tied to any high level programming language.

    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 :)

  • by Fiahil on 9/19/22, 3:04 PM

    > In 2022 we have SVG, WebGL, canvas, sound API and we can practically rebuild many of those Flash websites.

    Note that Ankama is still using Flash for its MMORPG, Dofus.

    They're moving it to Unity, FWIW.

  • by miedpo on 9/19/22, 3:32 PM

    It was licensing issues. Their audio system used some proprietary stuff, for instance. I remember reading somewhere (perhaps here) that some of the Adobe Developers wanted to open source flash in the 2011-2012-ish time period, and it was the licensing that prevented them from doing that. Can't find the reference though (sorry!).

    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.

  • by meheleventyone on 9/19/22, 1:55 PM

    I doubt it’s a technical or staffing issue but more likely lack of a clear business incentive and internal politics issue.
  • by throw_m239339 on 9/19/22, 2:21 PM

    Flash was also a fantastic UI toolkit by the way with Flex, so it could have actually lived outside the browser and power desktop apps, but I guess there is no market in that today.

    Flash is long dead, that's your answer and Adobe isn't doing anything with it now.

  • by dathinab on 9/19/22, 5:18 PM

    Counter question: Why should they spend money on it?

    When they discontinued Flash WASM wasn't an option.

    Now they already have abandoned Flash, told everyone to move one and most of the monetary profitable ecosystem _did_ move on.

    And while there are probably still some companies willing to pay for new flash support for their legacy application it's unlikely to be worth it for Adobe.

    Lastly even if you could create Adobe Flash WASM it's non trivial to make it down to bug compatible with Flash. But exactly that is the kind of compatibility is what remaining legacy customers want.

    So IMHO it's less that they can't do it but more that for the for profit company Adobe it makes little sense.

  • by bsder on 9/19/22, 7:01 PM

    Erm, this exists and it's called Ruffle: https://github.com/ruffle-rs/ruffle

    It works quite decently, but they can always use help.

  • by kraig911 on 9/19/22, 2:50 PM

    I too was there. But I think you're neglecting to realize that today people aren't necessarily attracted to flash sites anymore (unfortunately) with the advent of the current convention of web user interfaces things like flash made don't fit in. I wonder if in 15 years we'll be asking what happened to bootstrap/material/ant ui frameworks much the same way.

    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.

  • by Traubenfuchs on 9/19/22, 2:12 PM

    What‘s in it for them? Flash is dead, creators and (web-)app developers moved on to HTML5+ APIs and JS libraries/frameworks.

    Why would anyone go back to flash, even if it became available again?

  • by Matthias247 on 9/19/22, 3:41 PM

    Besides reasons that are already listed here keep und mind that Flash offered more APIs that browsers still don’t have - and so you can’t translate them to anything. RTMP based video streaming was one of those. Some other networking APIs might be other cases. Of course you could make it work with less APIs - but the usage ping of „your app might or might not work when translated“ is a bit smaller
  • by dekhn on 9/19/22, 10:09 PM

    Flash is EOL and Adobe no longer supports it. Why would Adobe want to continue with Flash? It was a mistake. They have disowned it because to own it would be to own a dumpster fire that keeps on burning.

    If you have SVG, WebGL, canvas, and sound API just use those directly, don't make a flash portability layer.

  • by knicholes on 9/19/22, 2:12 PM

    Adobe created a tool similar to flash that exports in web technologies. It's called "Adobe Animate."
  • by vbezhenar on 9/19/22, 4:55 PM

    You don’t need wasm to implement flash. All you need is canvas as that’s ancient tech. They just don’t want to.
  • by diebeforei485 on 9/19/22, 4:29 PM

    Flash is dead. It's not appropriate for the modern world anymore.

    If you want to run it in a VM running a legacy OS, in order to play an old game for nostalgic reasons, you have that ability. That's different from demanding the whole thing be ported to more modern technologies so it runs on modern systems.

  • by Kim_Bruning on 9/19/22, 11:21 PM

    Possibly the only people who can help are GNU? (They're the usual suspects)

    https://www.gnu.org/software/gnash/

    Gnash only fully covers up to SWF v7 it seems. The project could use some love?

  • by easrng on 9/19/22, 2:58 PM

    There is a company that got Flash working in WASM but they don't have public pricing so it's probably crazy expensive. https://leaningtech.com/cheerpx-for-flash/
  • by qbasic_forever on 9/19/22, 3:54 PM

    The tooling to create Flash stuff is long dead and unmaintained. Even if there were a platform to run it, there's not good story or even group of folks trained to make Flash content anymore. The web won--HTML + CSS + JS is the web platform (thankfully).
  • by randomdata on 9/19/22, 2:58 PM

    Steve Jobs declared Flash dead. Whether by his influence, or simply good timing, the world agreed with him and moved on. What market remains is small and not worth putting a lot of effort into.
  • by pipeline_peak on 9/19/22, 6:11 PM

    What’s in it for Adobe, optimized Newgrounds cartoons? They’re a business, they won't figure it out unless there's benefit.
  • by naikrovek on 9/19/22, 8:33 PM

    Adobe Flash was rebranded Adobe Animate and does exactly what you are asking about, except the WASM part, I believe.
  • by elforce002 on 9/19/22, 5:50 PM

    If you want the flash experience, go with Flutter. Excellent for Mobile Dev. Awful for Web Dev.
  • by mdasen on 9/19/22, 2:55 PM

    I'm trying to figure out what you're arguing for. A) Exporting legacy Flash apps from 15 years ago to WASM; B) Relaunching Flash as an active development platform on top of WASM.

    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://services.harman.com/partners/adobe. Maybe that doesn't preclude Adobe from resuming Flash development in the future, but maybe it does.

  • by seba_dos1 on 9/19/22, 3:16 PM

    Did they even try to? The issue isn't likely to be technical.
  • by croes on 9/19/22, 4:30 PM

    Flash's dead baby, Flash's dead.
  • by DonnyV on 9/19/22, 3:42 PM

    That boat sailed a looooong time ago.
  • by delirehberi on 9/19/22, 6:41 PM

    dead must stay dead
  • by trynewideas on 9/19/22, 2:36 PM

    They don't want to.
  • by captainmuon on 9/19/22, 4:29 PM

    I believe Flash was killed in agreement with Apple. The big app store players can't allow Flash (or HTML5) apps to be just as good as native apps, or they would lose their walled garden. This is especially true for Apple.

    I can imagine there was a secret deal to uncerimoniously run Flash down. What did Adobe get in return? Maybe the assurance that Apple doesn't make iCloud the only allowed cloud service, so that Adobe could make profit with CC subscriptions?

    A graphical RAD tool would have a big market, if you think of how widespread Flash was. Or if you think about old VB6, Delphi, and the raise of no-code. There is really a need for a simple interaction design tool that lets you click together a working graphical interface. (Now that I think about it, maybe this could grow out of Figma?)