Will (Or Should) Adobe open-source Flex?

I have been building AJAX applications for a while now and absolutely love AJAX and the improvements it can offer in user-interface design, making applications easy and fun to use. But AJAX does have limitations and I, like many others have come to the realization that while AJAX is great for most things, it is not the silver bullet. For data-intensive application, specifically that involve dynamic charting with vector graphics and mining, AJAX falls short.

There are a couple of alternatives out there that fill that niche that AJAX still hasn’t successfully filled and Adobe’s Flex 2 framework is definitely one of the them. Adobe Flex 2 software is a rich Internet application framework based on Adobe Flash that will enable you to create applications that are cross-platform and browser independent as they run inside the Flash VM. Flash has fulfilled the promise that Java applets never delivered for a variety of reasons. The Flex programming model is fairly simple where developers write MXML and ActionScript source code and the source code is then compiled into bytecode by the Flex compiler, resulting in a binary file with the *.swf extension. Developers use MXML to declaratively define the application user interface elements and use ActionScript for client logic and procedural control. MXML provides declarative abstractions for client-tier logic and bindings between the user interface and application data. ActionScript 3.0 is an implementation of ECMAScript, and it provides support for strong typing, interfaces, delegation, namespaces, error handling, and ECMAScript for XML (E4X).

Adobe gives away the Flex 2 SDK for free and so anyone can create Flex 2 application and compile them into SWF bytecode files. Adobe sells Flex Builder, which is the Eclipse based IDE for Flex development and Flex Data Services, which is a J2EE component deployed inside a container. It provides adapters to connect to EJB’s, JMS queues, backend data stores, etc.

One of the barriers to wider Flex adoption is the proprietary nature of the technology. Flex is closed technology and Adobe controls every aspect of it. There’s nothing wrong with that but I and I am guessing a lot of people prefer open architecture, open systems and open platforms for application development to prevent vendor lock-in. Adobe has taken some positive steps by releasing the Flex-Ajax Bridge (FABridge) library, which automatically exposes the public data and methods within a Flex application to the JavaScript engine and vice versa. This enables developers to easily integrate Flex applications with existing sites as well as to deliver new applications that combine Ajax with applications created in Flex. A great example of the Flex-AJAX interaction is the charting application on Google Finance. It was interesting to see that Yahoo also decided to use Flash for charting when they deployed the new version of the Yahoo Finance portal.

Open sourcing Flex would certainly lead to wider adoption of Flex as an application development framework. So why doesn’t Adobe do it? It seems to fit the Adobe business model – If you take a look at Acrobat or Flash or really any of the other Adobe products. They give away the client for free and monetize the creation part of process. Take a look at PDF and Acrobat – Adobe gives away the reader for free but makes money by selling Adobe Distiller. Why couldn’t that model work for Flex? Open-source Flex and continue making money on Flex Builder, Flex Data Services, training, consulting, support and custom components. I’m sure there is already a fairly robust marketplace for Flex components but Adobe can take that to the next level. I know Adobe has spent significant amount of time, money in terms of engineering effort to create Flex but the proprietary nature of it will always be a limiting factor and never let Flex be the premier platform for RIA’s. If Adobe waits too long, the browsers will get better and fully support SVG, CSS3, JavaScript JIT compilers and the advantage Flex offers will narrow. The next generation of AJAX frameworks are also just around the corner and they will compete with Flex. OpenLaszlo is another dark-horse in this race that may eat Flex’s lunch. OpenLaszlo is everything I want Flex to be – OpenLaszlo programs are written in XML and JavaScript and transparently compiled to Flash. The OpenLaszlo APIs provide animation, layout, data binding, server communication, and declarative UI. And what sets it apart from Flex is that OpenLaszlo is an open source platform. Adobe – Are you listening?

Comments on this entry are closed.

  • Hi, what would “Open sourcing Flex” mean for you? How would you know it if you saw it?

    (Sometimes people use that phrase to describes things as different as putting the future growth of MXML into the W3C or similar committee… sometimes it’s about delivering source code for any servers offered, for rewriting and rebranding by others… sometimes it’s actually about Player issues. That’s why I have to check what people are actually seeking when that phrase is used.)

    tx, jd/adobe

  • Great post Vinny – as always.
    I’ve been using Flex for some time as well. And I love it.
    I may sound conservative, but I believe one of the reason Flex is so solid is because it’s proprietary nature: it’s what guarantees the quality of the UI rendering and the cross browser’s compatibility; and provides an incentive for Adobe to invest in the technology.
    That being said, Flex is actually quite open.
    1. One can easily build, customize and share components -that can compete with components Adobe sells, such as their charting components-
    2. As you mention, the Flex environment can be used for free – with a combination of the free SDK and some good text editing tool.

    -David

  • Hi John. Good question – I think submitting MXML into the W3C would be a great move and definitely help but I don’t mean that when I talk about ‘open-sourcing’ the Flex framework. I think creating a group or process that would allow participation in the Flex development process from other entities, external to Adobe under a GPL or even BSD style license would be something I would look for when talking about open-sourcing. I realize Adobe has spent a lot of time, effort and dollars into developing Flex but there is a fear of proprietary technologies and the issue of vendor lock-in. If OpenLaszlo can do what Flex can and its open-source, I think a majority of people would choose OpenLaszlo. With CSS3, SVG and offline support built into browsers, the state of the art is catching up to Flex. In my opinion, opening up Flex would allow for wider acceptance and actually generate more revenues for Adobe as more people would be using Flex and more likely to license Flex Builder, more likely to get training, etc. Sounds like a win-win to me. :) Just my humble and naive opinion.

    –Vinny

  • Vinny,
    I understand how you feel about a closed source system like Flex. It’s a quite common case that a big company dumps a product if it’s not such a cash cow any more. That’s the huge difference between a closed source product like Flex and OpenLaszlo. If Laszlo Systems would disappear from the market you could still use the code and even continue development of the code base left over by the company. Well, we all know that’s not going to happen (some people might even regret that).

    OpenLaszlo’s approach: use AJAX or Flash, just as you need it, with JavaME around
    I’ve been talking to the mobile industry a lot lately and I didn’t get the impression that they care much about Flash Lite. For the mobile application development everything is pointing into the direction of AJAX (S60Webkit from Nokia, iPhone, Opera SDK). Flex with Flash9 won’t lead us anywhere for the mobile application development. Which means: no mobile applications with MXML, just use the Flash8 authoring tool (I guess there was a reason why Macromedia copied the OpenLaszlo idea of tags and JavaScript for Flash generation). But simple OpenLaszlo apps compiled to Flash7 do run on mobile phones with Flash Lite.

    OpenLaszlo gives you more at lower costs: free compiler, free server, OSI certified license, AJAX and Flash runtime, in the future JavaME and mobile AJAX development. On top of that professional support services by Laszlo Systems and the Laszlo Studios as well as the many companies building applications with OpenLaszlo and offering services world wide. An active and enjoyable open-source community!

    Raju Bitter
    OpenLaszlo Community Manager, Laszlo Systems

  • “Creating a group or process that would allow participation in the Flex development process from other entities, external to Adobe under a GPL or even BSD style license would be something I would look for when talking about open-sourcing.”

    Cool, thanks… that’s a solid, testable deliverable, a goal we could aim towards.

    Are you thinking more about language constructs here, or frameworks, or the sourcecode for a particular MXML->SWF compiler, or something else? What is it that you’d personally hope to gain, should others pursue such a path?

    And would there be any certification of the implementations which do not carry the Adobe brand? For instance, all contributions made to Firefox are certified and branded by the Mozilla Foundation… would there have to be such a program for such “other entities” as well, in order for you to achieve the goals you wish to achieve…?

    I’m asking hard questions, I know. ;-) But I’m really trying to figure this out:
    http://weblogs.macromedia.com/jd/archives/2007/02/defining_open.cfm

    tx, jd/adobe

  • John Dowdell: Are you thinking more about language constructs here, or frameworks, or the sourcecode for a particular MXML->SWF compiler, or something else? What is it that you’d personally hope to gain, should others pursue such a path?

    Hi John and good morning. Great questions – To me, open-sourcing Flex would mean opening up the Flex class libraries, Flex compiler/debugger and the MXML/ActionScript language specifications. So I would consider Adobe allowing clean room implementation of the Flex compiler and class libraries by an external party a complete success of opening-up. I would assume Adobe would create a testing process to certify the clean-room implementations to ensure compatibility and correct implementation of the language specification. Maybe a logo program? Implementation that pass the ‘test’ would be certified Flex compliant?

    Allowing external ‘entities’ to add features and modify the core language (MXML & ActionScript) would ensure the creation of an ecosystem that would encourage wider developer participation. Developers tend to flock toward open technologies and Enterprises like investing in open technologies as they help alleviate some of the vendor lock-in concerns in IT management. Thanks

  • “To me, open-sourcing Flex would mean opening up the Flex class libraries, Flex compiler/debugger and the MXML/ActionScript language specifications. So I would consider Adobe allowing clean room implementation of the Flex compiler and class libraries by an external party a complete success of opening-up. I would assume Adobe would create a testing process to certify the clean-room implementations to ensure compatibility and correct implementation of the language specification.”

    Thanks, Vinny. (Disclosure: I’m not a decisionmaker, and have no particular stance either way… my goal is to be accuractely convey customer desires to my coworkers, for the group’s eventual decision.) Notes on individual action items in the above:

    o “MXML/ActionScript” seems accomplished already… as David Mendels says at Ted Leung’s blog:

    The Flex framework is an abstraction layer on top of ECMAScript. Each tag in MXML is just a class of ECMAScript (aka JavaScript 2, aka ActionScript 3). ECMASCript is a multiparty standard through ECMA. We were involved in its development, but we don’t control it and many folks have a seat at the table. And we have opensourced our implementation (Tamarin, part of Mozilla now) so you can expect to see this showing up in man places and many implementations over time. We have publically committed to sticking to this standard. This gives other developers a seat at the table. We can’t suddenly turn around and make this proprietary.

    o “Adobe allowing clean room implementation of the Flex compiler and class libraries” also seems accomplished… I know of nothing preventing others from building their own MXML/SWF compiler (or any other xXML/SWF compiler, for that matter).

    o Certification of other people’s works remains an open action item. I’m not sure what the business case for this would be, but I can convey this desire internally. (Hmm, but shouldn’t the certification be a process of a wider group? wouldn’t Adobe then have a “proprietary certification model”, if Adobe paid those costs? Would that be an issue?)

    o “release of source code to Adobe’s MXML/SWF compiler” is another open item. I’ll pass this request along as well.

    o “Flex class libraries”: Would I be accurate in understanding this as “No unilateral improvement to Flex class libraries; must be W3C-style process”… am I on-track here?

    o “Allowing external ‘entities’ to add features and modify the core language (MXML & ActionScript)”: Would this be on already-deployed functionality, or in a wider-than-Adobe decision process for changes in future versions of the Adobe Flash Player’s functionality? (Customer and partner needs are a key driver already in feature development, but I’m assuming you’re seeking a change to a formal process similar to that for HTML.) I’m not sure yet whom you’re seeking to add what, when.

    I’m not sure how successful I’d be in lobbying for all these points — PDF could go to ISO because it has already reached a stage of maturity and diversification which we haven’t yet reached with SWF, for instance — but I need to make sure I’m understanding current external desires correctly. Given my clarifying questions above, could you refactor the whole into two or three paragraphs of text for which I could then lobby without risk of inadvertent distortion? Thanks!

    jd/adobe