May 9, 2013


Apache Flex: Making Adobe’s Dream Come True

I’m personally very excited about the recent release of Flex version 4.9.0, and that it has become a top-level project (TLP) at Apache. There is much speculation and many arguments, and I will share some of my thoughts with you on the subject.

The past

Flex, born in 2002, started its life as the oldest framework around for enterprise web application development for Flash. Flex set out on a journey as a server-side technology, and quickly became the ubiquitous plug-in based framework that dominated the browser landscape. We witnessed a couple of major versions, out of which 3.x made Flex a very well-accepted framework for web application development, while Flex 4, released few years ago with an advanced skinning model and numerous improvements in the framework, made it a very robust client-side development framework.

As many of you already know, Steve Jobs ruffled the feathers of Flash community a couple of years ago, and Adobe shifted its focus away from Enterprise application development. Flex, though it remained a highly popular development framework, could not retain Adobe’s focus. I think many would second the idea that Adobe was right in donating Flex to the Apache software foundation (ASF) at the end of 2011, and the move to an open governance model is a win for the Flex community. As a matter of fact, many argue this should have been done earlier. While Flex wears a new lifejacket from the Apache community, Adobe pledged it will continue to dedicate full-time engineers like Alex Harui to further debug and develop the SDK.

The present

In spite of the popular misbelief that Flash is dead, it’s still a very active technology – look into the number of new community subscribers and discussions growing by the day. Besides that, there are lots of websites that use Flash to deliver better content. Some can be replaced by HTML5, but some just can’t be. If you want to write an HTML5 application, you need to seriously reevaluate what your application should be able to do.

In contrary to what many people think, that Flash runtime runs as a browser plugin, Flash goes way beyond the browser plugin. The AIR runtime, which is an extended form of the Flash player, offers customer experiences beyond the browser and  is a much more powerful and capable plugin. Being able to quickly write an application and simply deploy across multiple platforms makes AIR a very compelling development environment. Who cares if there is no support for the Flash player on mobile browsers when there is no major impact? There is still AIR. It’s sad that many don’t know that AIR for iOS and AIR for Android could be used for building serious apps.

I don’t agree with popular opinion that Adobe’s donating Flex to ASF was an exit strategy to abandon it, and that Flex is dead. Donating a plentiful project that has hundreds of thousands of admirers to a lively open source organization can’t be a death sentence. However, some took a wait and see attitude and halted the start of new projects with a technology that was "deemed" to be abandoned. Now that they see the Apache Flex move the SDK forward in a relevant manner, I think things will improve in terms of corporate mindshare for Flex.

Going beyond the scenes, the best thing that ever happened to Flex was its donation to ASF. In fact, only now is Flex is a true open source community with all the goodness associated with that. It was of course open source before, too, but in a way that you can see the implementation details of the components, amend them if you so desire, etc., but Adobe still owned the control to commit those changes and did not allow everyone to contribute. There were countless bugs that had not been fixed and countless improvements that could not be made by the community at large.

Flex is a true open source with ASF. Adobe will no longer be the owner of the ongoing roadmap, and the ASF model allows community members to provide project leadership and continuous commitments from active developers – literally anyone can become a committer by putting in enough effort. These committers have done incredible work in fixing long-pending bugs, creating new innovations and helping advance Apache Flex in the last year.

The future

There has been a lot of incredible work done on Apache Flex in the last year, and the momentum of the project is picking up rather than slowing down. There have been many bugs fixed and new components like PostalCodeFormatter and PostalCodeValidator donated.

Falcon is the next generation compiler for Action Script, and was contributed to the Apache Flex Project by Adobe following Flex. With Falcon compiler, the future of the Action Script 3 language is in the hands of Apache Flex. ASF also has reference implementation of JavaScript cross-compiler as its added advantage.

Flex to JavaScript and HTML: There is a considerable amount of effort being put forth in rendering HTML UI from Flex, including new set of Flex components designed to be compiled both to Flash/AIR and HTML. There is interest in decoupling Flex from the Adobe runtimes so we can use the same Flex code and deploy it to other languages or platforms such as HTML5/JavaScript and to support a wide variety of UI frameworks such as Sencha/ExtJS, etc. It does not stop there – the possibility of the cross-compilation approach goes way beyond web apps. The way the Falcon compiler is being used to cross-compile to JavaScript opens doors to experiment to cross-compile to Java or Objective C, meaning we could conceivably cross-compile Flex applications directly to native mobile apps without the need for the AIR or HTML application wrappers. In fact, it was Adobe’s dream to “write once but deploy everywhere,” but it seems Adobe didn’t realize that dream. The future of Flex is looking more exciting by the day! The possibility of using Flex to create full-fledged HTML applications is just around the corner!

There is potential for great things, and I believe that potential can be realized by ASF unlike Adobe. And, Flex does not simply "die" so easily, especially when it has unique advantages over alternatives, as did Eclipse from IBM.