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.
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:
- The Flash Player
- 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:
“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
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
Licensing of the Flex SDK
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).
- Free redistribution – yes
- Source code – yes
- Derived works – yes
- Integrity of the author’s source code – yes
- No discrimination against persons or groups – yes
- No discrimination against fields of endeavor – yes
- Distribution of license – yes
- License must not be specific to a product – no
- License must not restrict other software – grey area (it’s in fact reverse, see (d)(1))
- 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.
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
Let’s take a look at the stack again:
The Flash Player is ‘free as in beer’.
The Flex SDK has an open license.
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
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
“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.
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
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.