Flex != Flash

Flex recently became a top level project at Apache and released version 4.9.0. I’m personally very excited about the project and I’ve seen a lot of confusion and misinformation on the web. Here’s some of facts as well as some of my thoughts on the subject. I hope it will help clarify what Flex is all about for some people.

A Brief History

Flex started its life in 2002 as a framework to develop enterprise applications for Flash. I think this makes it the oldest framework around for web application development. Flex in its infancy actually took on a very different form than what it currently is. It started off as server-side technology. Over the years, Flex evolved greatly, and four major versions were released. By the time that Flex was at version 3.x, it was a widely popular framework for web application development. A few years ago, Flex 4 was created which had a much more sophisticated skinning model and numerous improvements in the framework as a whole.

As most people know, Steve Jobs waged his war against Flash a couple of years ago, and Adobe shifted its focus. Enterprise application development is no longer a focus at Adobe. At least as Flash is concerned, Adobe is concentrating on games and video. Flex was no longer important to Adobe’s strategy, but it was still a highly popular development framework. I think most people would agree that Adobe did the right thing and donated Flex to Apache at the end of 2011. In fact many would argue that Adobe should have donated Flex earlier. It’s important to note that Adobe did not just “dump Flex in Apache’s lap”. There are a number of full time Adobe employees still working on Flex including Alex Harui, the new Apache Flex PMC Chair.

Where Flex is Today

Despite all the talk about Flash being dead, it’s still a very active technology. There’s lots of websites that use Flash to better deliver content. Some can be replaced by HTML5, but some cannot. Simply reciting the HTML5 mantra doesn’t necessarily make a better user experience for users. But let’s ignore the Flash plugin for a moment and pretend it doesn’t exist anymore…

Not just web

When most people think of Flash technology, they think of the Flash run-time that runs as a browser plugin. The fact of the matter is that Flash technology goes way beyond the browser plugin. The AIR runtime is much more powerful and capable big brother to the Flash browser plugin. Being able to quickly write an application and simply deploy across multiple platforms makes AIR a very compelling development environment. No Flash on iOS? What about AIR? I recently had a very amusing discussion with a friend of mine about the feasibility of creating a specific app using AIR. He had a hard time believing that AIR for iOS and AIR for Android could be used for building serious apps. Why does nobody know that all the Adobe touch apps were created using AIR? I blame Adobe for that. Their marketing department leaves what to be desired. They have the most powerful app publishing platform out there, and so many people believe the “Flash is dead” mantra. It’s sad really… But enough of the past. Let’s discuss the future!

Adobe “Dumping” Flex Was a Good Thing!

I’ve seen a lot of popular opinion that Adobe donating Flex to Apache was just the writing on the wall that Flex is dead. The logic of that argument always escaped me. Why is donating a rich project with many followers to a thriving open source organization a death sentence? The fact is, that the donation of Flex to Apache is the best thing that ever happened to Flex. If I’m not mistaken, the Flex mailing list discussions are the most activate of all the Apache projects. For the first time in Flex history, Flex is a true open source community with all the goodness associated with that.

But Flex was always open source!

Well, it depends what you mean by “open source”. It was in the strict sense of the word, but definitely not in spirit. It was open source in the sense that you can see how the components were implemented, crack them open and change them if you so desire, etc. It was not open source in the sense that anyone could contribute. The only way anything could be changed in Flex before it was donated to Apache was by Adobe employees making changes to the code and committing those changes. There have been countless bugs that had not been fixed and countless improvements that could not be made by the community at large.

As part of the Apache Software Foundation, Flex is truly open source. Literally anyone can contribute bug fixes and new innovations. If there’s an itch you’d like to scratch, you can scratch it yourself. Any one of the volunteers would be happy to commit new code, and if you put in enough effort, you will quickly become a committer yourself. In the last year there have been many new committers added who are doing incredible work advancing Apache Flex.

The discussions on where Flex is headed is incredibly refreshing. Flex got a new face, with a new logo, and a new beautiful website which should be live any day now. Of course I haven’t even discussed the innovations going on!

Flex Innovation is Exploding!

There has been a lot of work done on Apache Flex since the donation process started a little over year ago, and the momentum of the project is picking up rather than slowing down. There have been a whole pile of bugs fixed. There were new components donated. There have been discussion on how to improve Flex for mobile including GPU accelerated and 3D rendering. There have been countless stimulating discussions about where Flex is today and where it’s heading. What Flex is, etc.

What is Flex?

A year or two ago, you might have defined Flex as a framework for building Flash and AIR applications. A year or two ago, you might have even been right. But if someone defines Flex using that definition today, they would be totally wrong. A year ago, the future of Flex was totally tied to Adobe and what Adobe decides to do with Flash and Actionscript.

Falcon Compiler

Possibly as significant a donation as the Flex framework itself was the Falcon compiler. Actually, it might be even more significant than Flex itself! As someone so eloquently put it: “If you own the compiler, you own the language”. The donation of the Falcon compiler to Apache Flex is complete and Gordon Smith is currently finishing up the MXML functionality of the compiler. This means that the future of the ActionScript 3 language is in the hands of Apache Flex. The new Falcon compiler is extremely versatile and Adobe even donated a reference implementation of a Javascript cross-compiler based on Falcon. In my opinion, the future of Flex is in the Falcon compiler.

Flex to Javascript and HTML

If this concept is new to you, you have definitely not been following the Flex mailing lists. There’s not one but three different efforts currently going on to cross-compile Flex applications to Javascript and HTML. There are multiple efforts on different approaches to dealing with generating an HTML UI. This includes a new set of Flex components designed to be compiled both to Flash/AIR and HTML. The work on HTML Flex applications is moving at an incredible pace! Two implementations went from concept to a working demo in less than two months! The cross-compilation is being worked on by some really smart guys, and it’s really modular. The plan is to support a wide range UI frameworks, so native Flex frameworks can be supported as well as Sencha, jQuery UI, Google, etc. Another approach possible with the new generation of Flex will be a separation of business logic and UI design as in the Randori approach developed by Michael Labrioli.

This all adds up to an extremely powerful framework for creating HTML applications that can be used across a really wide range of developing requirements. The future of Flex is looking more exciting by the day! We could very likely be using Flex to create full HTML applications before the year is out!

It Goes Beyond HTML

The potential of the cross-compilation approach goes way beyond web apps. The same way the Falcon compiler is already being used to cross-compile to Javascript, it can be used to cross-compile to Java or Objective C. In other words, we could conceivably cross compile Flex applications directly to native mobile apps without the need for AIR or HTML application wrappers.

The dream of “write-once, deploy everywhere” was not quite realized by Adobe Flex, but it very well might be realized by Apache Flex!