Swaroop C H

blog books about contact subscribe

But Flex is not open source

08 Jan 2007

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.

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:

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

Comments

Toufeeq Hussain says:

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

Sriram Krishnan says:

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

Raghu says:

Flash Player is going open.. bit by bit

http://www.mozilla.com/en-US/press/mozilla-2006-11-07.html

Raghu

Kartik Mistry says:

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!!

Sriram Krishnan says:

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

Swaroop says:

@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 :)

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

Swaroop says:

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

Pradeep Gowda says:

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

Pradeep Gowda says:

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

http://www.adobe.com/devnet/flex/articles/eckel_video.html

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

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.

Feedback

There's no comment box, but please do email me or tweet me your thoughts and criticisms, and I will publish the relevant ones here.