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.