Hacker News new | ask | show | jobs
by justsee 2024 days ago
It's true, Flash created and supported a special scene of creativity which drew in both artists and programmers in a way the felt new and unique, and seemed to last for almost a decade from ~2000 - ~2010.

Who could forget Yugo Nakamura's explorations in the early noughties, and many others which defined the early scene.

Even a decade or more ago some pretty impressive experiences were being delivered web-only. I ran a team in London where we really explored pushing the capabilities of the Flash player.

Granted we were just operating in a digital marketing context, in an environment where more involved gaming was already occurring, but we still delivered what feel like pretty decent 2d-gaming experiences, such as Professor Green and the Eco-Rangers: https://youtu.be/gUY2bVnhm44?t=85.

Back then I remember key figures from the Adobe team visiting our London office and candidly telling us the reason Flash was being blocked, esp. on mobile, was entirely due to commercial reasons by Apple, and not for technical reasons.

I believed them at that stage, but in hindsight it does appear there were serious performance, energy and security issues, but ex-Adobe engineers might want to chime in on that...

As someone who lived through that phase of web indulgence, I'm not mournful of a more indulgent time. It was a beautiful, exploratory phase, but the explosion in pointless, nonsense preloaders and custom UI represented usability ignorance and was not something to cherish.

In recent times the creativity and complexity has increased significantly in areas where it matters, such as web gaming, whereas in areas where it doesn't, such as UI interfaces to explore and understand information, it has gotten marginally or a lot better, depending on the context...

6 comments

I'm not sure I'd call it "candid" for Adobe engineers to blame their demise purely on Apple evil.

Anecdote: the Mac OS X dev tools used to come with an app called "Spin Control." It would sit in the background and every time an app failed to drain its event queue in a timely manner (causing the "spinning beach ball of death") it would sample the process and log the trace. One time I accidentally left the app open and forgot about it for a week. When I came back, I found thousands of logged events. All flash.

It popped up in different processes, because WebKit was embedded all over the place, but every single spin event had flash at the bottom. There were several different stack traces within flash, but they were all flash. Yes, I paged through them all. Yes, I thought the 100% figure was a bit suspicious, so I triggered a mail reindex just to see if Spin Control had somehow been configured to look only at flash or something. As expected, the reindex triggered a beachball -- and dropped sqlite into the Spin Control list. There was no filter skewing the results. Flash had literally been responsible for 100% of the beachballs over a week of document editing, email reading, web browsing, and generally typical user activity.

Point is: I find it credible that Apple saw flash as a limiting factor for their ability to deliver smooth UX and battery life, both inside and outside the browser.

Oh I agree with you. When I say 'candid', I mean they conveyed the sense they were sharing some internal opinion that it was entirely about Apple playing commercial games, when in retrospect I don't think that was correct – there were technical issues that made it a non-starter on mobile (battery, smooth UX as you say).
Blaming Apple is provably not true. Adobe claimed that they could get Flash working on the first Apple iPhone in 2007. When Adobe finally bought Flash to Android, it required 1GB of RAM and a 1Ghz CPU. Even then it ran badly and drained the battery.

The first iPhone had 128MB RAM and 400Mhz CPU. The first iPhone that met those specs came out in 2011.

One of the biggest knocks against the iPad in 2010 was that you couldn’t view the “real Internet” without Flash. Adobe promised Flash on the Motorola Xoom that came out a year later. Adobe was late leaving the Xoom in the unenviable position that you couldn’t view its Flash based home page on the device.

I'm not an Adobe engineer, but I am a Ruffle developer, so I can give sort of a valid take on this.

Adobe isn't wrong in saying that Apple has a commercial motive to block Flash, but that would only apply to the point in time where Apple was trying to ban all third-party development tools for app developers, not just on the web. That was around the same time as Apple's "Thoughts on Flash" memo - in fact, the memo was written to justify the App Store policy.

However, Flash was also cursed by the circumstances of it's birth. You see, in the 90s, the trend was to do everything in software, because CPUs were getting more powerful all the time and most computers were desktops with wall power. Who cares about memory or CPU usage? That's stuff's getting cheaper all the time! Dev hours are more expensive than hardware! The idea of dedicated accelerators and hardware for video decoding, music synthesis, modems, or even 2D graphics drawing was going the way of the dodo, and 3D accelerators were far too bespoke and uncommon to stick into a browser plugin. (For the record, there were no less than 4 or 5 competing 3D APIs Windows developers had to worry about, and 1 or 2 more on Mac OS)

The iPhone was designed entirely backwards to this, which is ironic because Apple were the kings of "do it in software" going back to the original Apple ][ disk controller. But that's just how mobile phones worked. CPUs are power-inefficient and burn battery. Ergo, everything the iPhone could do had a hardware accelerator for it. Video and audio decoding were done in dedicated hardware blocks, UI elements were composited by the GPU, and I wouldn't be surprised if they had one of those hardware overlay scanout things, too. Flash Player - or, at least, the full desktop version - was simply not designed to work efficiently and use all of these accelerators.

The painfully sad part of this is that Adobe already knew better. Flash Lite came out back in 2003, although you probably would never have known it because it was basically Japan-only until around 2006. None of this was a surprise to them, it just took them until Flash Player 10.2, in 2011, to actually build in support for things like hardware-accelerated video. Oh, and that only applied to new players that used StageVideo, because Adobe hadn't actually done the hard bit of hardware-accelerating actual Stage composition. They even wrote a Stage3D framework for pre-rendering everything as GPU textures, but they didn't build this into the player, so only games built around this framework would get the performance benefit.

Meanwhile, web developers were enjoying the benefits of hardware-accelerated everything right out of the gate. You didn't have to add a 10mb+ reimplementation of HTML and CSS in WebGL to your site. The web browser just transparently sliced your content into GPU layers and rendering got faster. Apple figured this out and every other browser vendor eventually did the same thing. Same with video and audio tags: the browser is entirely responsible for playback, so it just hooks into whatever hardware nonsense it needs to run good. And because it's the easiest way to get video and audio onto a page, most sites are power-efficient by default.

Why didn't Adobe take this approach? Well, the way they handled Flash updates was that everything was versioned, and they didn't touch the player behavior of old movies. They were betting on Flash developers continually upgrading to newer Flash technologies that would be easier for them to make efficient. Instead of figuring out how to JIT a highly dynamic language like ActionScript, they tried to convince ECMA and Brendan Eich to go along with adding immutable classes into JavaScript. ActionScript 3's class system was specifically designed to make writing JITs easier. Meanwhile, Google was busy writing V8, which could just JIT-compile even your nastiest, most dynamic JavaScript into relatively efficient ASM. It even JIT-compiled the object layouts!

So it's sort of a one-two punch: Flash was cursed by being born of a culture of "who cares about performance, the Pentium II is coming", and by the time they had the opportunity to pull themselves out of that, they were too busy worried about keeping old movies from breaking and instead tried to build new platforms inside the old one that were more performant.

> they tried to convince ECMA and Brendan Eich to go along with adding immutable classes into JavaScript.

The historical causality runs the other way: I gave Waldemar Horwat keys to the JS kingdom at Netscape and in ECMA TC39 TG1 in late 1997 when I went to cofound mozilla.org. Waldemar then designed "JS2" aka "ur-ES4" (my term) which is still archived:

https://web.archive.org/web/20010119185300/http://www.mozill...

https://web.archive.org/web/20001206082000/http://www.mozill...

Believe it or not, Microsoft on the ASP.NET side got excited about this ur-ES4 work and did their own version, shipped server side as JScript.NET around 2001:

https://www.drdobbs.com/a-talk-with-andrew-clinick-on-micros...

The team at Macromedia I was in touch with after Firefox 1.0, mainly Gary Grossman, Edwin Smith, and Jeff Dyer, were trying to do a successor to Gary's ActionScript work (which was based on JS). They tried to license Sun's small footprint Java VM, for full Flash (not FlashLite) on mobile devices, but when Sun learned it was going to run ActionScript 3, not Java, they denied a license.

So Ed whipped up a proof of concept that the Macromedia folks could do it themselves, and this led to AVM2 (open sourced as Tamarin with Mozilla; alas the team got pulled back to work on a doomed Flash for mobile play, so Tamarin was in practical terms abandoned).

My work with Macromedians was a high point of early Firefox era standards rebooting. Jeff and I went to Geneva in spring 2005 to meet with Ecma and Microsoft folks to restart JS standards work in TC39. When Adobe bought Macromedia, we saw a path to ES4 as a standard. This ended only partly in tears, as AS3 was too static and different (namespaces!), but the good parts got into ES6.

But immutable classes originated with Waldemar's JS2/ur-ES4 work in the very late '90s.

Thanks for the correction - most of what I know has been gleaned from reimplementing AVM2 in Rust for Ruffle, so I suppose I might have a bit of a Flash-centric attitude.
Great response, thanks for taking the time to share your perspective, and the reminder of Stage3D development.

The rev-share licensing controversy was around the point I'd started moving away from the Adobe world.

As you illustrate, the web won and many of us in the Adobe community moved on (who weren't involved specifically in games etc).

I still would like to know what the idea was with premium features... Emscripten and WebGL were already a thing, and Unity went and wrote their own plugin and canned the Flash export that (I imagine?) spooked Adobe in the first place. It screams of desperation.

The funny thing is, I don't even remember the premium features nonsense from back then. I only learned about it when looking up information on how Domain Memory works. That's how irrelevant Flash Player already was, and THEN they decided to start asking for more money beyond just how much Creative Suite cost.

> key figures from the Adobe team visiting our London office and candidly telling us the reason Flash was being blocked, esp. on mobile, was entirely due to commercial reasons by Apple, and not for technical reasons

That doesn't explain why Flash met the same fate on Android. They even had Flash players for Android, but those faded out after a few years.

Flash (and the way people would use it) was a huge resource hog because of its internals. Not even mentioning the security holes
>Flash created and supported a special scene of creativity

No.

There were numerous sites like Bullseyeart.com that served up original Flash based animation. Those cartoons and short films were not available on television or anywhere else. Most are lost and no longer available anywhere.