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
Store 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
restriction:

“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
Internet?

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
debate?

Licensing of the Flex SDK

The Flex
licensing was
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
criteria?:

  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:

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
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
situation.

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
Hay:

“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
that.

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.