I just received an e-mail message containing the following:

… When Flex first came out we were really excited, until we saw the price … The new Flex 2 features and IDE look great, but unless Adobe addresses the price we’ll still not be able to use it …

[Taking a big deep breath]
Ok, let’s go through this again …
In Flex 1.x world, Flex is primarily a server. You write MXML and AS code, post it on the server, it gets compiled to a SWF, which gets served back to the client. What Macromedia (and now Adobe) sells you is the server (the software which is deployed on a J2EE server). In other words, you need the server to publish Flex applications. And yes, I know that this is a bit of an over-simplification, and yes, I know that you can actually deploy serverless apps in Flex 1.x – I’m talking about the typical deployment and the standard licensing.
I Flex 2 this all changes. A server is no longer needed to actually serve Flex requests. You may in fact want a server (Flex Data Services), but it is not actually needed. In Flex 2 you can write your code (MXML and AS) and then compile it, generating a complete SWF (in much the same way as Flash generates standalone SWFs from FLA files) which can be deployed on your HTTP server just like any other assets (HTML files, GIFs, CSS files, etc.). And the generated and deployed SWF can talk back to the server via HTTP call, AMF (Flash Remoting), and SOAP (Web Services) – and no, once again, this can be accomplished without needing Flex installed on the server.
So, how do you create and compile this SWF? There are two ways to do this:
1) Use Flex Builder, an Eclipse based IDE which (as we have repeatedly publicly committed) will have a street price of under $1000 for a developer license.
2) Use any editor to write your MXML and AS, and then use the FREE Flex 2 SDK (a command line compiler and accompanying framework) to compile your code into a SWF.
Simple as that. Either way you’ll have a SWF which can be deployed on any server, even a server not running Flex server software.
So far so good? OK, so on to the server.
There IS a server in Flex 2, it is called Flex Data Services (or FDS for short), and it gets installed and deployed on top of a J2EE server. You can serve MXML and AS code via it (in which case the server will compile the app, just like Flex 1.x does), but that is not the really compelling reason to use FDS. The really compelling reasons to use FDS are the additional functionality, including:
* Server-to-client push: the ability to push data to the SWF running in the Flash player without needing to use timers and polling. For example, you could push real time pricing data in an auction application. Or you could push real data numbers to update charts dynamically. Or you could push chat window text in a peer-to-peer (via the server) application. Or … you get the idea.
* Data synchronization: the ability to safely handle concurrent access to back-end data, tracking data changes, and safely handle conflict resolution. No more last-edit-overwrites-any-prior-edit, you can write code that ties in to back end data and talks to the Flash client, providing real end-to-end data synchronization.
There’s more, but you get the point. Using FDS you can essentially keep an open pipe between server and Flash client, giving you far greater control over your applications than previously possible.
Final pricing for FDS has not been announced, and some sort of tiered pricing is likely. But, we have publicly announced that an entry level version of FDS will be freely available.
So, in a nutshell, with Flex 2 Adobe will sell two things:
1) Flex Builder: Once you try it I think you’ll decide that it is well worth the money. But if not, no problem, use the free Flex 2 SDK and an editor of your choice.
2) Flex Data Services: And an entry level version of FDS will be available free of charge.
Or put differently, you will be able to build Flex 2 for FREE! Yes, FREE! Free as in nada, zilch, zip, zero, nothing, naught …
Want to get your hands on Flex 2? Visit Adobe Labs.
Ok, hopefully this is the last time I’ll have to explain it, and if not, well, I’ll just point to this blog entry. 😉

22 thoughts

  1. Thank you for this straightforward explanation.
    The question is — why don’t we find similar on official Adobe website 😉 ?
    Too much marketing ya-da-da and too little simple useful facts, I suspect.

  2. What about the Flex plug-in for Eclipse? Will it be priced along the lines of Flex Builder, Free, or some other pricing level?

  3. João, nah, never! 🙂
    Damien, it’s not based on CF codebase, no. Both CF and FDS are Java apps, but they don’t have much else in common. They are very different apps with very different purposes, although we have designed them to work very well together, complimenting each other.
    Bryan, Flex Builder is always an Eclipse plug-in. When you install it you get two options, install with a copy of Eclipse all ready to run, or install as a plug-in to an existing Eclipse. Either way it is the same Flex Builder and priced the same.
    — Ben

  4. Ben, do you think it’s feasably possible that Flash9 might have
    file -> export to MXML
    reason? so the designers can stay with flash and not need flexbuilder. and the workflow would then be
    fireworks(design)
    flash9 (cut up, name controls)
    flashbuilder (AS coding)

  5. Sort of off-topic, but being that you’ll be offering a "free" version of FDS, will there ever be a stripped down version of CF available for free (other than a developer copy)?
    I wish there were a way for me to at least be able to deploy a simple CFML runtime on my personal server even if it only supported the basics (ie, no reports, flash forms, event gateway, included db drivers, scheduled tasks, etc). A simple version of CF (CF Community Edition? CF Light?) which was cross-platform (ie.. able to deploy via WAR to Tomcat on any platform.. I run FreeBSD myself) which included just enough functionality to run a simple website would help it’s market penetration I would think, and also give me a good reason to switch my site from PHP to CF.
    By both licensing restrictions and disallowing a lot of the functionality which gives CF an edge over other platforms, I don’t think you’d really erode into your existing customer base while providing the CF development community with a powerful tool and yet another PHB/marketing checkbox as to why someone would want to think about switching to CF.

  6. Barry, I can’t comment on Flash 9 specifics, but you can be sure that Flex / Flash integration and mutual develoment is a priority.
    Brandon, sounds like you are asking for us to revive CF Express. It’s not in the plans now, but ya never know.
    — Ben

  7. Very well put. Thanks. It only leaves me with one question.
    "Server-to-client push"
    I thought this was the job of Flash Communication Server and Remote Shared Objects. Was this ability removed in Flash Media Server?
    — Brad

  8. Ben, thanks for the post – I’d like to say you are preaching to the converted, but that’s not the case. A number of CF people still don’t know what Flex 2 is about (something I’ve remedied at my CFUG).
    Now, you can imagine what the "first impression" and "FUD" (=Fear Uncertainty Doubt) is doing to potential customers! When I imform my old colleagues that I am working with CF, I get the usual stuff – "that’s too slow for us", "we need something large scale", etc. Basically, the CF 4.5 downfalls. When dirt is flung, it sticks.
    I’m saying this from the trenches: Adobe needs to go on a full court press with Flex 2. I mean FULL COURT. FUD the living sh** out of AJAX, Laszlo and anything MS is thinking of (please, "MS" and "experience" in the same sentence? work out the blue screen first guys). Take the gloves off.
    I think the "free" approach is good – fight fire with fire. Show what can be done with Flex. Don’t let the competition define you, and the battle will be winable.
    Of course, I may be jumping the gun here – Maybe Adobe has all of this planned, as we speak.
    Cheers, and thanks for the update.

  9. Brad,
    Flash Comm Server is now Flash Media Server. And yes, it too does push, and also uses RTMP. But, as the name change suggests, Flash Media Server is optimized to stream media (video, audio, etc.) whereas the push in Flex Data Services is very much optimized for working with data.
    — Ben

  10. I can tell you that this article was the first time that it was clearly told to me that Flex is FREE. And that changes everything. Well, it doesn’t change much because a quick google check or a visit to the Adobe site doesn’t reveal that Flex is FREE, and this isn’t official Adobe propaganda.
    Which means in my circle, which is in an area of NASA leaning more and more towards Open Source solutions, Flex won’t cut it. If my boss and his boss and so on can’t determine that Flex is potentially completely FREE within a few minutes of their own research, then they won’t be interested.
    On the other side, the Flex-to-Ajax bridge in the labs is nice to hear about. I know that so far Flex has been Flash specific, but it would be nice to see a formal AJAX version like what has been done with the otherwise lackluster OpenLazlo.
    So please, get real advertising or google bombing done on Flex’s new basic price structure. It would make my efforts to sell Flex as a development tool to the powers around me that much easier.

  11. Thanks Ben.
    While I appreciate you reading the FAQ for me, I shouldn’t have to rely on you to do that sort of work. I would say that Adobe marketing should be handling getting this message to me. My hope is that when Adobe does the final, formal release of Flex 2, that they splash ‘FREE’ up in big, blinky lights. Sooner than the release would be good.
    Really I should have my boss banging down my door yelling, ‘Flex is free and why aren’t we doing it?’ Then we should be scrambling to define best practices and a framework and all that sort of fun. That would be a great headache!
    😉

  12. Flex might be free but the pain and suffering getting it going certainly isn’t
    eg:
    you’d think this doc would give me all the info I could ever want to get Flex/CF remoting but unfortatly there’s a swag of info that’s just glossed over or missing
    http://download.macromedia.com/pub/labs/flex/2/b3_usingcfwithflex_0503.pdf
    documentation could be a killer here. Sure you could say there’s lots of documentation that Adobe has put out but it’s quality, not quantity, that counts.

  13. Ben,
    Thanks for clearly describing the server-to-client push and synchronization functionality. I’m new to Flex technology and have been working with Flex 2 since Beta 1 and have yet to find these simple details.
    I’m building a project from scratch and am getting into the data side of things and am wondering what the advantages are, if any, to using a CF server? I think I’ve read somewhere before that you recommend using CF as the middle-man to other services and messaging protocols, but I’m wondering if that is still necessary if FDS is in the picture.
    I’m intrigued by the FDMS capabilities of Flex and would like to keep the number of different technologies for this project to a minimum, so my question is: Why use CF, too? Why not stick with J2EE and Flex? What’s the advantage to including CF into the mix?

  14. What is and isn’t free is well defined in the Flex o’reilly book, as well.
    My summary: delivering Flex is (can be) free. Developing it isn’t.
    Text editing MXML isn’t a feasible option except for a Hello World – are the pipes working application.
    The MXML half of the MXML/ActionScript "language" isn’t so much a language as an open file format.
    So, I’m wondering if the availability of the free SDK will lead anyone to develop a free, open WYSIWYG for Flex interfaces. If it does, it’ll likely be Eclipse based (as is the uber $$ one). Unfortunately, I’m not a can of kitchen sinks.

Leave a Reply to Bill Shirley Cancel reply