Dear Adobe: Support Haxe, save your Tools

Dear Adobe,

My name is Lars Doucet, I'm a game developer; I can proudly say that I have been using your tools, and Flash in particular, for over 15 years. I love your tools, I think they're great, and I would be really sad to see the Flash ecosystem die out.

In this letter I will explain the reasons why both clients and developers are losing confidence in the Flash platform, and how that confidence can be restored.

Spoiler Alert: You should embrace the Haxe ecosystem; it's already compatible with your products, it'll save you a lot of money, and it perfectly aligns with your business' core competence, which is selling development tools.

But before we get there, let's talk about the decline of the Flash ecosystem.

Is Flash dying?

I can't tell you how many of my friends are jumping ship to other solutions like Unity and HTML5, all with the common refrain:

I don't want to abandon Flash, but I have to. I really miss the Flash tools and workflow, but I have to go where the work is.

Simply put, the clients that form the basis of the Flash ecosystem are losing confidence in the platform and moving instead to HTML5, Unity3D, and Haxe. Putting "Flash/Actionscript expert" on one's resume is no longer the guarantee of steady work that it was five years ago. Admittedly, Adobe AIR still hangs on to a few niches on desktop and mobile, but it suffers from a similar reputation problem as the Flash Player. Even so, nowadays everyone wants HTML5 for the web, Unity3D for desktop and consoles, and native apps for mobile. (Or if they're really clever, they use Haxe and get all of the above).

And it's not just clients -- the canaries in Flash's coal mine are dying one by one. MochiMedia has already shut down and FGL (formerly Flash Game License, tellingly) are desperately re-assuring everyone to not worry, because people only think Flash is dead.

The point that's missed in the many "is Flash dead yet" discussions, is that perception becomes reality, and right now the overwhelming perception is "Flash is dying". If enough clients believe that, then it becomes true, no matter what the rest of us think.

Here's some decisions that helped form that perception:

I'm sure these were sound business decisions. However, they felt like broken promises because you once assured us of:

a common vision to provide rich, interactive experiences across computers, devices and consumer electronics. - Open Screen Project

So the bad news is that enough people think that Flash is dying to risk sinking the entire ecosystem. The precious, animation-rich, newbie-friendly ecosystem to which I owe my career.

The good news is:

It's not too late!

Today I'm going to outline a simple business case for how Haxe can save the Flash ecosystem as well as Adobe's bottom line.

Here's my plan:

1. Subsidize Haxe development

You don't have to ship a new product or write a single line of code to reap some serious benefits from supporting Haxe.

And What is Haxe?

Haxe is an open source toolkit based on a modern, high level, strictly typed programming language, a cross-compiler, a complete cross-platform standard library and ways to access each platform's native capabilities. - (Haxe.org website)

Haxe is already backwards-compatible with Flash. Thanks to the cross-compiler, anything you can do in Flash, you can do in Haxe with perfect fidelity by compiling Haxe code using the Flash target. It's like using TypeScript or CoffeeScript to write JavaScript output (a task Haxe also excels at). You can even create Adobe AIR apps with Haxe, as seen in Monster Loves You! and many other games.

Many of us who loved ActionScript (especially compared to JavaScript) were sad to see the cancellation of "ActionScript Next". Luckily, Haxe delivers everything we could have hoped for from AS Next.

Just from a language standpoint Haxe strictly dominates ActionScript 3 -- it's got proper Generics, strong static typing, type inference, an amazingly powerful macro system, enumerated types, proper Abstracts, and lots more. Haxe is also 100% free and open source (MIT) so nothing's stopping you from using it.

The Haxe community has already written the next version of Actionscript for you, and it is compatibile with both the Flash IDE and the SWF format right now. Many of your customers are already using Haxe, but plenty of others are thinking of jumping ship to other ecosystems.

Seriously, just pretend like it was your idea all along.

I mean, you're already paying Grant Skinner for CreateJS, right? You're already thinking along these lines anyway, why not follow through on the idea?

Let's do some quick math: A single-plan Creative Cloud subscription costs $20 USD / month, with a premium upsell at $50 (or $30 for existing CS customers).

So go ahead and count all your customers who use just the Flash IDE (or FlashBuilder). How many of them do you think you'll lose if confidence in the Flash ecosystem collapses? Let's say each of these Flash subscribers is worth about $240/year, with the $20/month plan.

300 Flash-only Creative Croud Subscriptions = $72,000

That's about the full-time salary for a software engineer. You could get some serious Haxe development done by contracting someone like Joshua Granick, Hugh Sanderson, Nicolas Cannasse, or any other of the many Haxe contributors. That's enough to hire someone for a year, or several folks for a short gig; either way you could build out some features of particular value to your tools and also signal that you're serious about the future of the Flash ecosystem, which would help restore confidence among clients and developers alike, which stops Flash subscribers from cancelling their subscriptions. It's a virtuous cycle.

In any case, on your scale an investment like that is tiny. If you wanted to make a more serious investment I think the benefits would be even larger, but I put this one out there as the very least you could do without having to make a single change to your product line and still see some serious benefit.

Besides, think of the massive investment you've already made over the years into the Flash platform. With a few strategic pivots and a drop-in-the-bucket expenditure, you can save the ecosystem and avoid losing all that you've worked so hard to build these many years.

My next points will explain those benefits, and how Haxe can save the Flash ecosystem.

2. Forget the Flash Plugin

The era of plugins is over; more and more clients are asking for native web content (HTML5) or native apps for mobile and desktop. And if we're honest, reliance on a proprietary plugin makes you vulnerable. Remember when Apple threw you under the bus on mobile? That's because you were dependent on them to let you install your plugin in Mobile Safari, and it took years to convince them to lighten up and allow Adobe AIR apps. To this day, I still come across developers who are shocked to realize that Adobe AIR apps can run on iPhones and iPads, and thus have never seriously considered using Flash tools. Once again, perception becomes reality.

This is the same mistake Sun MicroSytems made by trusting Microsoft to correctly handle the Java Virtual Machine.

We all want "write once, run anywhere." But you've got to stop asking for permission or you'll get Steve-Jobs'ed again. Does the platform insist on Javascript? Fine, output Javascript. Does the platform insist on C++? Fine, output C++. Does it insist on something else? Fine, let's output that, too.

There's plenty of solutions that can support one or two targets, or provide a friendlier type system for JavaScript, but there's only one thing that can output to Flash byte code, ActionScript 3, Javascript, Neko, C++, Java, PHP, C#, and even Python, all from a single sourcecode base, and that's Haxe. And thanks to the Haxe standard library and other special tricks, it's not only able to support platform-specific features for each language, but also add ones that don't normally exist (like Reflection in C++) rather than just covering a limp least-common-denominator featureset.

Whatever demands platform holders have in the future, or whatever fancified proprietary solution of the week they cook up to lock developers out of using their favorite tools, Haxe cannot be stopped.

Bottom line: hitch your wagon to Haxe and you can take your entire ecosystem of tools, clients, and developers anywhere you want to go. But pour some rocket fuel on the project and you can reach the stars.

3. Leverage Haxe's backwards compatibility with SWF/AIR

Flash is in a transition point; a lot of developers still depend on SWF content, but the future lies elsewhere. Adobe can't afford to lose what it already has, but it also can't afford to miss out on the future. It's a chicken-or-the egg problem.

Fortunately there's an answer for these. In his famous Strategy Letter II: Chicken and Egg Problems, Joel Spolsky explains:

You should be starting to get some ideas about how to break the chicken and egg problem: provide a backwards compatibility mode which either delivers a truckload of chickens, or a truckload of eggs, depending on how you look at it, and sit back and rake in the bucks.

Haxe is your truck.

Major clients including TiVo, Prezi, Nickelodeon, Disney, Mattel, Hasbro, Coca Cola, Toyota and more are now using Haxe, specifically the popular OpenFL and Flambe libraries. OpenFL focuses on mirroring the Flash API across pretty much everything and is especially popular for native and mobile targets. Flambe focuses on the web, with a great HTML5 target paired with a flash fallback and AIR for mobile.

Do you see a pattern here? The Flash workflow and tools remain relevant even as support for the plugin and/or AIR declines. There's no reason those workflow and tools can't continue to thrive in in the future, even if the Flash plugin goes extinct. Haxe in general and OpenFL and Flambe in specific, are carrying that torch forward.

I happen to be particularly fond of OpenFL, and I have high hopes for its future, particularly in HTML5 -- (it's already great on desktop and mobile). OpenFL also has a plan to build out support for the major home gaming consoles that I'm personally privy too, but I can't share any details about just yet. Stay tuned!

OpenFL and Flambe are both great choices for Adobe, and you should ideally support them both. Not only can they both produce Flash content that's just as good as anything that could be written with ActionScript, they expand your reach by providing new targets -- HTML5, native desktop, native mobile, and perhaps even major game console support in the near future. Besides, both OpenFL and Flambe's HTML5 targets are much more complete than your own HTML5 canvas export, which by your own admission is full of holes.

Okay fine, so coding cross-platform in Haxe is awesome. But what about Flash's signature art and animations?

Flambe gets Flash animations into the HTML5 target with a lot of help from the FLUMP tool, and OpenFL uses the SWF Library to directly render SWF content in non-flash targets, without resorting to an embedded Flash VM. I recommend both methods to both you and to former Flash developers who don't want to abandon their old pipeline.

I don't have any experience with Flambe's toolchain (though I've heard great things), but here's a quick example I created with OpenFL:

SWF Library example

That's an animated GIF of a C++ app I compiled with Haxe/OpenFL, using an animation I made with the Flash IDE.

Here's the original SWF file
Here it is as a C++ EXE
Here's the source code

Thanks to Haxe, I still have a reason to hold on to the Flash IDE. Think how many more developers might be out there contemplating abandoning their animation pipelines and starting over from scratch. By officially supporting Haxe you can keep those customers, and spread the word that their ecosystem has a future.

The bottom line is:

4. Stop building empires, keep selling TOOLS!

Owning a massively popular proprietary format like SWF/AIR is nice work if you can get it, but the old Flash empire is slowly sinking, and there's no reason to let the tools go down with the ship.

I think FlashBuilder and the Flash IDE could have their best years still ahead of them, if you don't tie their fates to the viability of the Flash Player and the SWF/AIR formats.

In summary:

Adobe should support Haxe, either by subsidizing open-source development or officially supporting Haxe pipelines in their tools.

Make no mistake, the Haxe community doesn't need Adobe to survive; but Adobe can save their own ecosystem by leveraging what Haxe has already built. This is happening with or without you, and it's a golden opportunity to get on board.

If you want to hedge your bets, go cheap and just subsidize Haxe development and reap the benefits from renewed interest in your existing tools. Great bang for your buck.

If you want to make a big splash, go all the way and build Haxe support directly into your tools, leveraging existing solutions to breathe new life into your products. Go big and win big.

After all, you've already started pivoting towards HTML5, so you've already recognized that the future is open and multi-platform. Just keep going in that direction: embrace Haxe and you'll reach more developers than ever before.

On behalf of Flash developers everywhere: restore our confidence in the Flash ecosystem, your tools will shine brighter than ever before, and most importantly: we'll keep buying them for many years to come.


This is a companion discussion topic for the original entry at http://www.fortressofdoors.com/dear-adobe-support-haxe-save-your-tools/
1 Like

Lovely, seems unlikely adobe will even consider it tho for unknown reasons.

WOW. Just WOW.

I knew it was a blog! 5€ now!


I agree with all this, Adobe is being a bit dumb by cancelling everything, specially Flash on mobile: “Aww heck, Flash Player’s performance reduces battery life on phones! Let’s destroy it entirely instead of fixing it! :D” Seriously.


I really can’t say much about the API itself, since I am not a developer and never used it (though I did try to learn, but to no avail lol).

Actually the thing I was initially talking about was preparing for the Steam Summer Sale… but then I wrote a blog article anyway so I guess despite my intentions you were right :smile:

Any thoughts?

(Haha lol.)
I don’t understand why Adobe is “dropping” their certainly bestseller, that sounds stupid. However, Adobe is more a “one program for this and another one for that” kind of company, so if a Flash user also uses, say, a video program (NOT Photoshop!), they wont lose much relatively, but will still lose a lot.

I. Don’t. Get it!

Hey Lars, thanks for the heartfelt post. I’m not the guy who can speak for Adobe or for the Flash team, but commenting personally I agree with much of what you’ve said about what Flash and SWF.

But let’s dive into details. I think a casual look at features that have come to FPlayer and FPro over the last year or so shows where the team’s priorities are. The runtime has been getting things like Stage3D improvements - handy for mobile gaming and frameworks but no relation to authoring - while Flash Pro has been getting workflow improvements, drawing tools, abstracted export modes (native HTML5, experimental WebGL), etc. What you don’t see is any increase in coupling between the two - like in the old days where every major version brought a new player feature along with authoring for that feature. In other words, no-one here is trying to perpetuate the old model and make FlashPro create better SWFs, they’re focused on making FPro a better animation tool generally, and more agnostic about formats. Which I think is right in line with your points 2 and 4.

Now for Haxe, specifically. Supporting open projects is always cool but I’m not a budgets guy so I’ll just speak to the tech. On one hand, the model we have now - using SWF as an intermediary data format - has turned out to work surprisingly well in a lot of places. Besides Haxe there’s Scaleform, swiffy, and here in Japan a whole raft of similar stuff that grew out of Flash Lite - LWF and PEX/ExGame to name but two. But on the other hand direct tool integration obviously has big merits - hit ctrl+Enter and out comes an .exe, etc. But, then other parts of me say, why not publish out a Cocos2D animation, or content for LoomSDK, or level data for my favorite platformer library, or…? So personally, I think the ideal case is for Flash to abstract itself as much as possible here. And while we don’t have anything to share at the moment I think this is the direction the team is heading, and hopefully we’ll have some news in the coming months.

Thanks for the reply! Good to hear from someone who works at Adobe. I understand you’re just speaking personally so forgive me if some of this is addressed back to Adobe HQ :smiley:

One of the main issues for the community is the perceived (or actual) lack of confidence from the mothership. Adobe has done plenty of cool things in the last few years (such as Stage3D, getting AIR apps up and running on mobile), but has then fallen down on PR – people still are routinely shocked to know that AIR is a viable path for publishing on mobile.

That said I agree with you that Flash’s new direction seems to be downplaying the old Flash empire of SWF/AIR and focusing more on turning it into a swiss-army-knife. This isn’t a bad move by any means, the problem is the messaging is so unclear.

Flash used to have a clear path for publishing content, backed with the promise: “you can take this stuff everywhere, and it will run the same, in any browser, on any operating system!” When AIR was added, that message was expanded: “run the same on any desktop, and mobile too!”

And then Apple threw a monkey wrench in the whole operation, Adobe PR blinked, Job’s reality distortion field won the day, and all the air went out of Flash.

My basic pitch here is that the Haxe community has come very close to achieving the old dream of Flash while doing away with many of the limitations; At the very least, if a user still wants to target Flash (SWF) they now have a masssively improved, fully-open-source ActionScript-like programming language (Haxe) that works with all the Flash tools. It’s as if ActionScript 4 was never cancelled.

OpenFL’s native and mobile targets are great, and its HTML5 support is good. Flambe has great HTML5 support and a decent fallback for mobile (AIR). Between the two of them there’s excellent support for native desktop, native mobile, and HTML5 for the web. With a little more time I’m confident they’ll close whatever gaps that remain; they’ve made tremendous progress in just the last year, almost completely with volunteer efforts, and they will continue to do so. But just imagine what they could do with a little fuel.

So why not support a solution that is now taking us all the places we wanted Flash to go originally? HTML5 is supplanting the SWF standard and Flash’s HTML5 canvas export is still spotty at best. Major clients are already switching to Flambe and OpenFL for their HTML5 + crossplatform needs. And as cool as AIR was in its day, Native apps for desktop and mobile are the gold standard. Native support with OpenFL is far superior to Adobe AIR in terms of performance and other metrics.

That’s much more appealing to me than using Flash to export some data here and there and then piece it all back together. (Not that I mind having as many export tools as possible!)

Basically, I just want “write once, run anywhere.”

But the bottom line is this: the Haxe revolution is happening with or without Adobe; I just think it’s obvious how much Adobe stands to benefit by focusing on their tools and signalling to users “hey, remember write once, run anywhere? We’re doing that again, and better now than ever before!”

Sorry if my impassioned zealotry goes off the rails; I understand a lot of great folks work at Adobe :slight_smile: If I criticize harshly it’s because of how much I care.

Hello Lars Doucet I’m a big fan of flash development. I loved flash development because it was fun and a kind of passion… Lately I’ve been fed up with Adobe’s policies and was trying new lands such as android game development etc. Its great to hear haxe platform is there supporting flash.

I really like to contribute to this project.

All the best with your works. :smile: