But Flex is not open source…

My manager and myself were having an informal chat about the various RIA frameworks and platforms out there. To be honest, I wasn’t convinced
about Flex and so, we kept on discussing the pros and cons, and it turned out that I learnt a bit
about Flex this way. One of the points we discussed was that Flex is not open source. He said “It’s
not open source, but it is as close to it as it can get.”

I was intrigued by this and did some homework.

Update : You may want to read the updated remarks at the end before reading the whole passage.

What is Flex?

Before we discuss licensing, it is important to be clear on what we are talking about.

For those who don’t know what Flex is – it is a framework to
create interactive applications for the web.

  • Framework : It consists of a language, libraries, tools (including
    compiler, debugger, IDE), client player – the whole works.

  • Interactive : It is not a page-based model, it is more in the event-loop (GUI) model.

  • Application : It is not suitable for putting up a few text pages. It is suitable for
    “applications” like the Sony Ericsson Online
    and many
    many more

  • Web : Flex applications are SWF files which run on the Flash Player, which is installed on almost
    all computers connected to the web today.

What are the parts of Flex?

There are two basic things we need to create a Flex application:

  1. The Flash Player
  2. The Flex SDK

Licensing of the Flash Player

We need the Flash Player installed to run the SWF files.

There are two sides to this:

(a) The SWF file format specification : The SWF file format is open in the sense anybody can freely
download it but there is an important

“You may not use the Specification in any way to create or develop a runtime, client, player,
executable or other program that reads or renders .swf files.”

This means that you can use the specification to write a program that exports to SWF but you cannot
write a program that can play the SWF files.

(b) The Flash Player itself

The latest Adobe Flash Player 9 is available for Windows, Mac OS X, and recently for
Linux as well. This is perhaps the only platform that truly
is cross-platform and works well for a plugin that is just 1.1 MB in size. What else can claim to be
installed on 98% of desktops connected to the

The Flash Player is not open source because it is one of the crown jewels
for Adobe/Macromedia, and opening it might mean losing control? Is this situation similar to the Java open source

Licensing of the Flex SDK

The Flex
surprisingly short and to-the-point:

License Grant

Subject to the terms and conditions of this Agreement, Adobe grants Licensee a non-exclusive,
nontransferable ilcense to

(a) use the SDK Components for the sole purpose of internally developing Developer Programs

(b) use the SDK Components as part of Licensee’s website for the sole purpose of compiling the
Developer Programs that are distributed through the Licensee’s website

(c) modify and reproduce SDK source files for use as a component of Developer Programs that add
Material Improvements to the SDK Source Files

(d) distribute SDK source files in object code form and/or source code form only as a component of
Developer Programs that add Material Improvements to the SDK Source files, provided that

   (1) such Developer Programs are designed to operate in connection with the Adobe Flex
Builder, Adobe Flex Charting, Adobe Flex Data Services Software, or the SDK Components

   (2) Licensee distributes such object code and/or source code under the terms and
conditions of an EULA

   (3) Licensee includes a copyright notice reflecting the copyright ownership of
Developer in such Developer Programs

   (4) Licensee shall be solely responsible to its customers for any update or support
obligation or other liability which may arise from such distribution

   (5) Licensee does not make any statements that its Developer Program is “certified”,
or that its performance is guaranteed, by Adobe

   (6) Licensee does not use Adobe’s name or trademarks to market its Developer Programs
without written permission of Adobe

   (7) Licensee does not delete or in any manner alter the copyright notices,
trademarks, logos or related notices, or other proprietary rights notices of Adobe (and its
licensors, if any) appearing on or within the SDK Source Files and/or SDK Components, or any
documentation relating to the SDK Components

   (8) Licensee causes any modified fields to carry prominent notices stating that
Licensee changed the files

   (9) Licensee does not use “mx”, “mxml”, “flex”, “flash” or “adobe” in any new package
or class names distributed with the SDK Source Files.

Any modified or merged portion of the SDK Source Files is subject to this Agreement.

Note: “Developer Programs” shall mean programs that are built consisting partly of the SDK Source
Files and partly of user’s Material Improvement to add or extend the SDK Source Files.

Basically, Flex is as close to open source as it can get. It is already source-open i.e. the source
is freely available. You can modify it and use it for your own purpose. If you want to redistribute
it, then you are responsible for it (and not Adobe).

I think that’s a fairly open license, but does it satisfy the OSI

  1. Free redistribution – yes
  2. Source code – yes
  3. Derived works – yes
  4. Integrity of the author’s source code – yes
  5. No discrimination against persons or groups – yes
  6. No discrimination against fields of endeavor – yes
  7. Distribution of license – yes
  8. License must not be specific to a product – no
  9. License must not restrict other software – grey area (it’s in fact reverse, see (d)(1))
  10. License must be technology-neutral – no

Disclaimer: IANAL. This is just my understanding.

I guess the only part where this license is not compatible with open source licenses is that this
license is specific to Flex and is not a general license.

Big picture

It seems to me that Adobe’s business model around Flex is somewhat similar to Trolltech around Qt.
Qt is free (as in GPL) for free projects and is commercial for commercial projects. Similarly, Flex
(SDK) is free (as in ‘open’) for anybody who wants to use it but is paid for enterprises who want to
do enterprise-level-kind of stuff (such as they need an IDE or need data services management or need
charting components).

Let’s take a look at the stack again:

  1. The Flash Player is ‘free as in beer’.

  2. The Flex SDK has an open license.

  3. The Flex Builder IDE, Flex Data Services and Flex Charting components are paid products. This is
    where Adobe makes its money. And Flex Builder IDE (based on Eclipse) is a very compelling product
    which really does make writing Flex applications easy.

I guess Adobe will never make the software fully open source, otherwise how will we ever make money?
But I think in general, Adobe tries to strike “a good balance between what’s good for the community and
what’s good for the shareholders”.

For example, you might have heard about Adobe’s contribution of the ActionScript VM(AVM2) to Mozilla
under the project Tamarin. The possibilities
of this announcement is enormous. AVM2 makes ActionScript 3 run 10 times faster than before, and
Mozilla projects are mostly XUL and Javascript based, so imagine how many times faster it can run!
(Note that ActionScript 3 and JavaScript 2 are both based on the same standard ECMAScript 4). The
best part is that this is the core VM part of the Flash Player 9 and they will continue to share the
same code base. Similarly, for Adobe, Actionscript gets broader adoption as well as more people can
contribute to make the AVM2 better, faster, portable to more systems, etc. So, it’s a win-win

Also, Apollo – that thing on which Adobe is betting its future on will be
supported on Windows, Mac and Linux. From a presentation by Todd

“Q: Will Apollo run on Linux eventually as well? I’ve only heard Windows and Mac mentioned”

“A: Yes, absolutely. I don’t have the the date in front of me (laughs) when that’ll be available,
but Linux is certainly one of the key platforms that we are targeting. Love to get feedback from
the group on which distributions are most important to you, but for the first release in first
part of next year, we expect to be supporting Linux as well.”

This is important because this gives Linux an equal footing with all platforms – developers can
develop a single application and deploy on all the platforms without a single line of code change –
the very promise of Java – ‘write once, run everywhere’, only in this case, it seems more feasible.

Overall, I think Adobe and Flex are poised in a good way, licensing wise, although there is room
to be more open.

Regarding whether itself will take off in a bigger way, well, Coenraets has already covered

Update :

Manish pointed out a couple of things:

1) I thought only the framework was “open”, not the entire SDK
(which includes the tools–compiler, debugger, etc.). Am I right?

2) To what extent is the framework open? Can I modify the source
files and redistribute it without Adobe’s permission, as long as “I am
responsible for it (and not Adobe)”?

I think (1) is true in that the framework code is source-open but the tools are NOT.

I do not know the correct status of (2) since it was purely my interpretation of the licensing terms and I have not confirmed this with anyone.

Coming back to (1), I think that causes a lot of restrictions on how much Flex can be changed since a user can only use the tools and not modify them. This caused me to reconsider the openness of Flex – I think Flex is “not open enough”. Technology-wise, it has amazing capabilities but openness wise, I don’t think it can be really considered open.

I know I’ve been drawing a lot of flak for this post, but I think it was a necessary evil. Necessary because I needed some feedback on what I might have overlooked and this is exactly the kind of feedback that I got, which I’m happy about. To reiterate, this was about me trying to understanding the licensing and openness of the Flex sphere, and it was not really related to competitors.

Disclaimer : I work at Adobe, but these views are my own opinion, and do not represent any
official position/interpretation.

Update : There are now beta versions of Flash Player 9 for Linux available from Adobe Labs to support Solaris on both x86 and Sparc CPU architectures.



  1. Interesting – comparing this with managed code

    The C# language, the file formats, the CTS, etc are all under the ECMA standard – so anyone can go write a VM (like Miguel and co., for example)
    The Visual Studio Express editions are free as in beer. If you want ‘free as speech’, you can check out SharpDevelop/MonoDevelop. Of course, Visual Studio itself is paid and is king of the hill
    If you’re involved with academia or research or if you just want to know how .NET works, you can check out Rotor – all the .NET code is there

    I don’t mean to disparage Flex/Adobe – but I’m seeing a lot of posts which portray Microsoft technology as somehow ‘less open’.

    Another interesting set of technology is WPF/e which is probably closer to Flash.

    WPF/e works on Windows and Mac, Firefox, Safari and IE.
    The programming language is Javascript which is covered by the ECMAScript standard.

    That also seems pretty open to me :)

  2. Apollo is what excites me the most. I was going through Mike Chambers’ presentation on Apollo and it certainly looks like it’s a good framework to bet on.

    On a different note,
    Does the Flex SDK include sources for the ‘Flash Player’ ?

  3. Flash Player is going open.. bit by bit


  4. Good post. I didn’t know that Flash/Flex has this much of openness! I thought it is as closed as M$ products.

    I want to see Flash Player for AMD64 Platform!!

  5. Lol! Kartik Mistry’s comment exemplifies the kind of misinformation people have.

  6. @Sriram : The blog post was about my findings on the Flex licensing, NOT about other competitor frameworks. But since you started the topic, a few differences come to my mind:

    The Flex SDK is under an open license whereas C#, CTS/CLS are under an ECMA standard. In the latter, there is no code under an “open” license.
    If the MS/ECMA standards are truly open, then why doesn’t Microsoft commit to not sue anybody for patents, why does it pledge to keep only Novell’s customers safe?
    WPF/e development is on Windows only (please correct me if I’m wrong). You can however deploy to Windows and Mac. For Flex, the development and deployment can be done on all three platforms – Windows, Mac and Linux.

    I’m just saying that ‘openness’ is very subjective and to me (emphasis on “me”), there’s a significant difference in openness. Please feel free to correct me on any misunderstandings on my part, I have looked into details of Flex licensing and not WPF/C#/etc. :)

    @Toufeeq : Yes, Apollo is exciting. Regarding the Flash Player, no, the sources are not provided. Flex is a framework built on top of the APIs provided by the Flash Player but the Flash Player itself is not source-open.

    @Raghu : Yes, I’ve already mentioned that, but I hardly see Flash Player going fully open source.

    @Kartik : Thanks, I’m glad the post was useful. Regarding Flash Player for AMD64, please make your voice heard :)

  7. Devdas Bhagat says:

    WPF/e development is on Windows only (please correct me if I’m wrong). You can however deploy to Windows and Mac. For Flex, the development and deployment can be done on all three platforms – Windows, Mac and Linux.

    Hmmm, lets see. Javascript, Perl, Python, C++, Tk, Gtk+, QT, … are truly cross platform (think Solaris, Aix, HPUX, Linux, BSD, Win32, MacOS, etc on all different kinds of hardware). Notice the lack of Java in there. JVMs aren’t available for all platforms yet.

    I am sorry, but a product which merely runs on x86 (and PPC) and even then on 3 specific operating systems on that platform is hardly cross platform.

    That sounds like Microsofts definition of integration “It works on all versions of Windows”.

    Flex isn’t exactly open specifications, or open source (the reasons are the same as why Java programs weren’t fully open till recently or early versions of KDE).

  8. @Devdas : It’s hard not to agree with you on that point, I have striked out the ‘truly’ part. Also, I never claimed that Flex is fully open specs or open source, as I have detailed in the post and I thought the title itself explicitly says that.

  9. Flex is fantastic for business applications. I’ve completely moved away from AJAX for building our web based business app. It is UI intensive with lot of charts thrown in. Flex was the answer to almost all of my requirements.

    The $799 price tag for ide+charting is a tad too steep. (We are buying it anyway, it is that good)

    My biggest complaint about adobe IDE is that it is not available for Linux. That has forced me to use a windows PC at work after 3 years :(.

    I started writing code on Linux, but the mix of MXML+Actionscript is completely new to me and having an integrated IDE eases the learning curve.

    How difficult is it to port the IDE to linux? After all its built on top of Eclipse…

    Adobe is doing little to promote Python as one of the server side languages. Python frameworks are better/at-par with PHP/Rails/J2EE.

    I’m using Flex with Pylons(python web framework). So, it is possible to build RIA apps with Python as a backend. As a fellow pythonista, do make a case for python :)

  10. Ah!
    Thou shall ask and the lazyweb will give it to you.

    Bruce Eckel’s video on using Turbogears with Flex :)

  11. Wan Mohd Zabidi says:

    Have work with Flex 2, Coldfusion 7.0.2 (linux), Flash 9 (action script 3) and it has been integrated very well. Now I’m really happy playing with it and look foward and hoping the new improvement on it.

Your comments?

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s