FITC 2006 Notes

After two days at FITC 2006 I came down with a cold and decided to stay home for the final day. I imagine I missed a lot. I was looking forward to Nigel Pegg's presentation on Building Multi-user SWF apps for Breeze Meeting. Of course, there is information available on line:

http://www.macromedia.com/devnet/breeze/articles/intro_sync_swf.html

The SDK download contains a PDF describing the SDK and is interesting reading for anyone building real-time collaborative applications of any type - with our without Breeze.

I am a big fan of Breeze. I use Breeze Meeting at work. With each release it just gets better and better. It is a fabulous example of what Flash and Flash Media Server can do. The SDK provides an opportunity for people outside Adobe to extend and customize it in ways that may be difficult for many Breeze competitors to keep up with.

Of course I missed other presentations. In fact the big problem with FITC is the sheer variety of presentations to choose from. For example my cold made the difficult choice between Jobe Makar talking about Multiplayer Games and Gary Stasiuk talking about Behaviors and AI Simulations at the same time moot. Another conflict I didn't have to resolve was choosing between Darron Schall presenting "ActionScript 3.0: How low can you go?" at the same time Paul Orchanian was speaking on "Creative Use of a 3D engine using Flash 8 API."

Of course the entire thing is impossible. Even if the festival went on for seven days and repeated most sessions you couldn't see it all. The only strategy is to make some choices and suck it all up until your head is ready to explode. It's like cramming for exams but without the stress.

FITC is also a great opportunity to get away and think about what is going on in some large complicated and multifaceted industries. People seem happy to chat about their work as designers, developers, managers, book writers, lawyers, etc. So, it was nice for me to start things off early Friday morning listening to the panel discussion on the "Future of the Flash Platform."

The Future of the Flash Platform

In truth, the timing of the session was a little unfortunate because it was before the Adobe keynote. Mike Chambers was on the panel and had to say things like "I'll have something to say about that later" while talking about Apollo (Adobe's desktop Universal Client). Mike is now "Senior Product Manager for Developer Relations for Apollo." He's also posted a podcast following FITC where he talks about the festival. About 10:38 into the podcast he describes some parts of the panel discussion.

http://weblogs.macromedia.com/mesh/archives/2006/04/podcast_april_2.html

Despite having to wait for the keynote to hear more about Apollo, there were some interesting moments during the panel. At one point someone in the audience asked a question about where all the model Flash/Flex applications were? (I'm only roughly paraphrasing the question.) I think he meant large public applications that showed what the Flash platform is being used for and could achieve. AJAX has Google Maps, Writely that provides the basic features of programs like Word, and GMail that provides many features I associate with desktop mail clients.

No one on the panel had a good ready-made answer to that question. Many panelists pointed out that they have worked on Intranet projects for the corporate market that are not available for public display. Even though it is no doubt true, the response was somehow unsatisfying. In fact when I bumped into Tony MacDonell from Teknision at lunch time, I asked him a similar question about his apps. Teknision is very busy and trying hard to hire solid developers. And sure enough, Tony's comments mirrored what many of the panelists had to say. Fortunately, their submission to the FITC awards competition is a good example of the type of applications they can build and that is normally never seen outside a firewall:

See the SNL Merger Model V2.0 Demo here: http://mergers.teknision.com

Of course there are examples of good Flash applications out there. People love to point to Google finance. For example you can see how Adobe is doing here:

http://finance.google.com/finance?q=adobe

It's a nice example of Flash and dynamic HTML working together but I don't think it's a good example of the type of component-based application you might build with v2 components or in the future with Flex 2. Or more importantly, Flash is not the whole application - just the dynamic graphics part of one - and doesn't replace something you might use on your desktop the way Writely or GMail try to do.

Another example - and my favorite - is Breeze Meeting. Even without the Breeze player exe that adds screen and application sharing, Breeze Meeting is a great example of a rich media application built in Flash. I've already commented that I enjoy using it but so do people I work with. If you haven't used Breeze there is a marketing presentation that gives some sense of what it is like here:

http://www.macromedia.com/software/breeze/productinfo/meeting/experience/index_mm.html

But even Breeze doesn't really quite answer the question. Self running Breeze presentations are turning up all over the place as are examples of Flash video but again its not the same as GMail.

So, I came away thinking that the question is still begging for a better answer. Until there is a powerful "wow they did ALL that in Flash" application on the public Internet that millions of people are tempted to use, many developers will just look to AJAX and only AJAX. It doesn't help some developer's view of "Flash vs. AJAX" that Flickr started using Flash and the Flash Communication Server but then dropped their FCS/Flash application in favor of AJAX and their current strategy. Shortly afterwards their business took off. See:

http://www.adaptivepath.com/publications/essays/archives/000519.php

The Flickr mashups are nice and Flickr does have a Flash slide show viewer, but there is no evidence of Flash on Flickr's home page. A big problem is that the browser can do things Flash can't do like dynamically flow text around images and layout and resize a complex document. Google finance uses Flash for what it does well and HTML/CSS for the rest.

Of course it also doesn't help that AJAX is a simple extension to what most developers do already whereas Flash seems, at first glance, to be a whole different development world. Well, at least until Flex 2 ships.

Flex 2 may help change how developers see the Flash platform. The compiler is free (the product is not tied to a server), the SWFs it generates are targeted for the new virtual machine in the Flash 9 player and perform an order of magnitude better than the Flash movies we're used to, and the component framework is very good.

But there is one thing about every Flex 2 application that will not help it win friends. That is the experience of watching the progress bar that every Flex application shows while it downloads. It reminds me of what everyone complained about with Java Applets years ago. Flex applications that contain UI components are not tiny and quick downloads. During Chafic's introduction to Flex that was obvious. A few buttons inside a Canvas and one SWF was already at 170 KB. The powerful Flex 2 framework with its support for dynamic component layout, drag-and-drop, styles, visual states, effects and so on has a price. Still, the AJAX world is beginning to understand that full featured AJAX apps take time to download and get going too.

Returning to the panel discussion and the question about the visibility of Flash applications on the Internet, Adobe really needs someone other than Adobe to hit a home run with a Flash/Flex application on the public Internet. The Flickr/Google/Yahoo mashup demonstrations are nice but not what I think the person who asked the question was looking for, and the Breeze player is an exe that hooks into the OS in a way that is not available to Flash/Flex developers outside Adobe. There is a lot of traffic on the Flexcoders mailing list and a lot of developers chomping at the bit to get the final release of Flex 2. We'll see what they come up with.

Another question that I found interesting was Mike Chamber's question about what the role of the Operating System will be in the future. He didn't really try to answer his own question and the other panelists and audience weren't about to pretend they could see into the future. But it is an interesting question coming from someone working on building a universal desktop client. Operating Systems are where applications run (including Apollo when it ships) and there is a very wide gap between what you can do with native applications and today's Flex 1.n and Flash 8 applications. Even with the ten times improvement in performance and enhanced APIs available in the Flash 9 player, you aren't likely to see anyone writing a usable version of Maya, Halo, AutoCAD, Microsoft Office Professional, Photoshop, or Illustrator to run in the Flash player. Well, at least not in the next year or two. But it's still an interesting question. As I understand it, Flash player 9 is still single threaded and will not be able to fully take advantage of desktop graphics hardware. It has the same graphics system that Flash 8 has which makes some limited use of graphics hardware. For good security reasons it also can't listen for network connections, participate in multicasts or P2P networks.

But what about Apollo? Will Adobe be able to narrow the gap (maybe chasm is a better word) between what you can do with Flash, HTML, or PDF in a browser today and what you can do by writing applications for the OS? If Java - with its much larger multithreaded runtime - is any indication, the gap isn't going to go away very quickly. And of course Microsoft has been working hard over the last five years to offer a much more powerful presentation layer to applications and to build in ever more powerful network tools such as P2P. But the gap between the resources available to desktop applications and Apollo applications doesn't have to go away completely for Apollo to pull some applications off the OS and into its own domain. All Apollo has to do is make rich content creation possible instead of just presenting rich content. And it may have some interesting tools to do it with. While I have no idea what Adobe is really planning, imagine that you could completely and reliably control a browser-like page rendering engine like the one in Firefox using ActionScript. Or even better that Apollo allowed you to edit a rich document with embedded images in place – something like Dreamweaver. The more Apollo can blend together the three worlds of PDF, HTML/CSS, and Flash the better. If each work the way they do in browsers today - mostly in their own little rectangular but cross-scripted worlds - it will not be so exciting.

So, if Apollo has the resources to build a more powerful and responsive editor than Writley or a better E-mail reader than GMail that also incorporates bitmap and vector graphics as well as recording and editing audio and video. Then things will get really interesting.

In some ways what is going on looks simple. Microsoft is trying to push their OS and applications out into the network as much as possible. WPF/E is one way to do that. Integrating the Office suite with their Live offerings is another. Adobe has to push back. They need to push PDF, HTML, and Flash into the desktop and try to pull applications and application developers away from the OS.

Microsoft has already made some difficult choices about what capabilities to put into WPF/E and now Adobe has to decide how much of the OS and its applications to make available via their Universal Client. In the corporate world it is all about MS Office, vertical applications, and IT security. Finding the right balance of security against access to the OS and its applications and data will be challenging. Convincing MS Office power users to switch to something else - especially if it looks and behaves differently may never happen. Making it easy to work with MS Office (and Open Office) and their XML documents might make things interesting for Apollo. XML to the rescue again?

I've gone on too long about all this. Check out Mike's blog and let him and the Apollo team know what you think:

http://weblogs.macromedia.com/mesh/
http://weblogs.macromedia.com/mesh/archives/2006/03/wish-apollo.html

Canada's Choice: Copyright Law and the Internet

David Fewer, did a simply wonderful walk through of ways the Internet has changed how we interact with content and culture and how content owners seem to want to turn back the clock. For me his presentation was one of the best of the entire conference. Check out his site here:

http://www.cippic.ca/

Throughout his talk I kept thinking about the difficult relationship between some open source projects and Adobe. In particular he mentioned that there is a great deal of ambiguity about reverse engineering in Canadian law that does not exist in the United States. Of course reverse engineering happens all around the world. AMF and RTMP were reverse engineered - probably more than once - by contributors in different countries.

The Open Source Flash Revolution and Red5: Staying on Target

Aral Balkan presented on the Open Source Flash Revolution. He demonstrated many of the tools you can read about or download via the OSFlash.org site:

http://osflash.org/

Many of the tools are really useful and well worth the investment of time required to figure out how to use them. But they do require that extra effort. Many of them like the MTASC compiler don't come as full fledged easily installed solutions. You have to integrate MTSAC into your favorite IDE or use it from the command line via a batch file. I use MTSAC all the time now because my Flash work makes heavy use of the v2 components and is 99% code in class files. MTSAC gives me what Flash never could for projects like that - quick compilation that doesn't break my train of thought or workflow. The OSFlash site is a great resource and well worth spending some time with.

Coming on the same day as David Fewer's presentation it was interesting to hear Aral Balkan describe open source Flash software as being healthy for the Flash platform. I'm sure in many respects that is true. MTSAC alone has been a huge help. But some open source projects also change the value proposition for Adobe because they can directly compete with Adobe products.

In a 2004 interview Bob Burgess, then CEO of Macromedia, said:

"Because we own the Flash Player and that is so important to the ultimate end-user experience - that's a long-term competitive advantage. If you look at any of the other solutions, they require complicated downloads and plug-ins. And, so, the fact that we own the client as well as the server gives [us] a long-term competitive advantage."

http://knowledge.wharton.upenn.edu/article/1059.cfm

But while it seems reasonable to say Adobe owns the player the ongoing reverse engineering of AMF/0/3 and now RTMP/T/S means that Adobe does not own the server because they can bake proprietary protocols into the player. Any chance Adobe had to sell a lot of Flash Remoting Gateways at $999/CPU was eradicated by OpenAMF, AMFPHP and other open source initiatives.

http://macromedia.com/software/flashremoting/productinfo/versions_pricing/

More importantly the Flash Communication Server (now Flash Media Server) is the foundation for Breeze Meeting and a money maker in its own right. With Flash Video taking off because of the ubiquity of the player, Flash Media Server should be in for good times. But Flash Media Server is relatively expensive. It is licensed both by counting connections and metering bandwidth. For many small development shops and small businesses it is, as of this writing, prohibitively expensive.

Frustration with the financial barrier to using FCS/FMS is largely what drove a bunch of developers to reverse engineer the Real-Time Messaging Protocol (RTMP) and develop their own server: Red5.

http://osflash.org/red5

The server is only in release 0.4 and has a long way to go before it is really usable for production work. You can see Red5's roadmap here:

http://osflash.org/red5/roadmap

There are many things Red5 can't do yet. It can't compensate for bandwidth changes by dropping video frames and audio messages. It can't do precise seeking and has no back-end scripting support beyond Java yet.

Nonetheless there is tremendous pressure on the Red5 mailing lists from people anxious to get going with it. Assuming the group is successful - and it is a big undertaking - they will fill a need in the market place that Adobe has not been ready to address.

Note: Adobe discarded the FCS personal edition license when FMS was introduced and briefly was going to sell the product for $4,500 with unlimited bandwidth but only 100 or so simultaneous connections. Losing the personal edition raised the entry level expenditure from FCS to FMS from $499 to $4500. Here is the original FCS licensing/price table:

Edition Bandwidth Cap Connection Limit Stacking Limit Cost
Developer 250 Kb/s 5 N/A Free
Personal 1 Mb/s 50 5 $499 US
Professional 10 Mb/s 2,500 No limit $4,500 US
90 day unlimited capacity pack
(requires a Professional License).
No limits No limits N/A $7,500

Later more flexible licensing terms were released for FMS but the entry level stayed at $4,500. The current FMS pricing information is here:

http://www.macromedia.com/software/flashmediaserver/productinfo/pricing/

The Professional FMS license is now much more flexible and represents a price cut over the FCS pro license. Instead of 10 Mb/s and 2,500 connections you have your choice of:

Professional Profile Bandwidth Cap Connection Limit
1 Unlimited 150
3 25 Mb/s 2,500
2 40 Mb/s 1,000

Profile #3 represents a 2.5 times increase in bandwidth for the same price as the old FCS pro license while profile 2 represents an even larger price reduction for some higher bandwidth applications. However, video on demand streaming applications that max out a dual CPU server may require anywhere from 6 to 14 professional licenses at $4,500 each.

So, in summary the entry level cost for an FMS license went from $499 to $4,500 and the price to fully utilize a server can easily rise to $45,000 or more/server.

I still find it amazing that the Origin and Edge server technology is priced privately in "Let's make a deal" style. Many people will simply be afraid to ask what is behind door number 3 - but some won't. The Origin/Edge technology solves a number of scalability problems very nicely. If you can afford it, it is great technology.

How will Adobe respond to the challenge of the open-source Flash Remoting gateways and Red5? One answer is Flex Data Services. Unlike previous offerings Adobe will make a version of FDS available free for use in production environments. They will only charge for larger scale use of FDS and haven't figured out where the cut-off for the free version is yet. That looks like a good/competitive response to the open source Flash Remoting Gateways.

Will that reduce the motivation to reverse engineer FDS and allow Adobe time to make some money? Adobe obviously has high hopes for FDS. Here's a snippet from an Adobe job posting:

"The Flex Enterprise product line is making huge strides in how data is managed across application tiers including providing seamless data management, collaboration capabilities, offline capabilities and support for multiple client and server environments."

http://cooljobs.adobe.com/frameset.html?goto=er-viewjob&refnode=103511

Of course some of those advances Adobe is referring to are on top of the RTMP protocol first introduced in the Flash Communication Server and, I assume, use Remote SharedObjects to share data in real time. Which makes me ask: over the long term what will FDS do that Red5 won't be able to? One possible answer is the conflict resolution feature in FDS but its still early days for FDS and there is probably more in FDS than I realize.

http://labs.macromedia.com/technologies/flexdata_services2/

Red5 itself is a very different server than FMS. It is Java based and makes extensive use of some Java frameworks: Spring, Mina, and Jetty:

http://www.springframework.org/
http://directory.apache.org/subprojects/mina/
http://jetty.mortbay.org/jetty/index.html

The server has a very different server API than FMS. For example instead of application instances Red5 has scopes. If all goes well with the project, when Red5 reaches its 1.0 release, it will have a much more open server-side environment than FMS. For example it will have its own Flash Remoting gateway that you can used to inject data directly into a running Scope (application instance) and if you can code in Java you can do pretty much anything with the server - including crash it regularly if you're aren't careful! We'll see if and when Adobe releases a Java SDK for FMS how easy it is to inject data from other servers using Adobe's SDK. We'll also have to wait and see if the new On2 live SDK can push VP6 encoded video through Red5.

One aspect of the Red5 presentation I imagine everyone was struck with was the international flavor and dedication of the Red5 team. During the presentation there were online contributions from two developers - one in Thailand and one in Germany. Anyone reading the Red5 lists knows there is strong interest in the project succeeding from all around the world. In fact when you look at the Frapper map some Red5 people setup more people show up outside the United State than in:

http://www.frappr.com/red5

(Don't forget to zoom out.)

During the presentation the developers on the stage and remotely all answered questions with obvious enthusiasm and precision. John Grden led the presentation and made many of the same points Aral did about open source helping the Flash platform. Despite the revenue loss Red5 may represent to Adobe when it is complete, it is hard to argue with John's and Aral's basic thesis. Free servers, compilers, and other tools mean developers cannot only build SWF-delivered applications for free but can distribute them. That may act as a serious impetus to bring more developers to the Flash platform. Adobe has to hope what they lose in revenue to free products they more than make up for in volume. John made another interesting point saying that the companies that provide open file formats and protocols will be the ones who survive and thrive. He mentioned Microsoft has acknowledged that by submitting WMV as standard (now adopted by SMPTE as 421M-2006 Television – VC-1 Compressed Video Bitstream Format and Decoding Process). See:

http://www.microsoft.com/windows/windowsmedia/forpros/codecs/video.aspx and for licensing information (it's not free):
http://www.microsoft.com/windows/windowsmedia/licensing/licensing.aspx

While he didn't mention it, Microsoft has taken their "Office Open XML Document Formats" to ECMA, saying "We want documents to be represented using a standardized, stable and open format so that the owners of the content can use and repurpose it in whatever way they want, independent of the software they used to create it." See:

http://www.microsoft.com/presspass/features/2005/nov05/11-21Ecma.mspx

During the morning panel discussion it was obvious that most Flash/Flex applications were within corporations - often in what used to be thought of as the Visual Basic space. It made me wonder if Macromedia's initial Flash Remoiting server pricing was solely targeted at the enterprise. If it was, it was strange way to drive an unfamiliar new technology into that space.

Has open source competition and the emergence of viable DHTML options moved Adobe to be more price competitive and to adopt a more open strategy? It looks that way but Adobe isn't really saying. OpenAMF and AMFPHP has been around for years and I've never seen anything official from Macromedia or Adobe that formerly blesses or curses it. They did publish an AMFPHP article on Devnet:

http://www.macromedia.com/devnet/flash/articles/amfphp.html

So maybe things are looking up regarding open source at Adobe.

Introduction to Flex 2

Both Chafic Kazoun and Sho Kuwamoto presented introductions to Flex 2 which is currently (April 29/06) in beta 2. Flex 2 and Flex Data Services look like a good response from Adobe to the competitive pressures from open source and from Microsoft. Flex 2 is the first fully-realized implementation of the component initiative that started in Flash MX, stumbled through Flash MX 2004, and detoured into a horrendously expensive server-based product in Flex 1.0 and Flex 1.5. Finally Flex 2 looks like Adobe has it right. Flex 2 has:

Adobe has lowered or removed the technical and economic barriers to application development and deployment using SWFs. Will developers follow in droves? Part of the answer will depend on the quality of Flash 9 player, Flex compiler, and Flex component framework. The product has been in beta 2 for some time now and has clearly gotten better with each beta release. But if you are a Flash Media Server developer you have some cause for concern. Remote SharedObjects still don't work correctly, there are problems with the NetStream.soundTranform object (at least I have problems with it) and reading the Microphone.gain value gives some pretty strange results. Will Adobe take the time to fix all these things before the product ships? I assume they will. But will the feature and API changes from beta 2 to beta 3 introduce new side effects (a.k.a. bugs) that ship with the final product? Anyone who remembers the rush to market of Flash 2004 will want to just wait and see.

But I'm getting ahead of myself. Both Chafic and Sho did good presentations and they were in the right order. Chafic introduced Flex at a higher level while Sho dove into code samples pretty quickly. In fact Sho's presentation was truly excellent. Each slide was pared down to just what was necessary to make his points. He did a great job of describing Flex in terms everyone familiar with Flash could understand. It was a pleasure to watch and listen to his clear and precise answers to questions. Taken together both presentations meant that if you wanted to know about Flex 2 Chafic and Sho provided what you needed. Chafic's presentations and samples are available here:

http://www.rewindlife.com/archives/000243.cfm

and Sho's blog is here:

http://kuwamoto.org/

His presentation notes are the same ones he used at Flashforward and are available here:

http://kuwamoto.org/2006/03/06/slides-from-flashforward-2006/

At one point in Chafic's presentation he made what seemed like a little cast off remark. He mentioned that ActionScript 3.0 wasn't really a scripting language anymore. It took me a moment to realize how true that is. The language itself remains a scripting language in that you can still have dynamic objects and loose typing.

You can still do this for example:

public var a;

and the compiler will warn you that variable 'a' has no type declaration.

It's not hard to tell the compiler to leave you alone. Just tell it that a is an Object. For example this little snippet will run without errors or warnings in Flex 2 beta 2:

public var a:Object;
public function init():void{
  a = 1;
  trace("a is: " + a + " of type: " + typeof a);
  a = "Hello"; 
  trace("a is: " + a + " of type: " + typeof a);
}

And the output is what you would expect:

a is: 1 of type: number
a is: Hello of type: string

But Chafic is still right because not only does AS3 support strong typing but the entire Flash API has been reworked to use it. The result is a dramatic improvement in performance and that developers have to do a little more work. Since I have a strong interest in real-time applications using FMS here’s a snippet of code showing how to setup a NetConnection object in AS1 or AS2:

nc = new NetConnection();
nc.onStatus = function(info){
  trace(info.code);
  // lots more code here to deal with connection events...
}
nc.connect('rtmp:/myApplication');

and here’s a snippet showing how you do it in AS3:

import flash.net;

// Current release of FMS only understands AMF0 so tell Flex to 
// use AMF0 for all NetConnection objects.
NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;

private function init():void{
  // Create the NetConnection and listen for NetStatusEvent and SecurityErrorEvent events
  nc = new NetConnection();
  nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
  nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, netSecurityError);
  nc.connect("rtmp:/myApplication");
}

private function netStatus(event:NetStatusEvent):void {
  trace("netStatus: " + event);
  var info:Object = event.info;
  trace(info.code);
  // lots more code here... 
}

private function netSecurityError(event:SecurityErrorEvent):void {
  trace("netSecurityError: " + event);
}

See: http://flash-communications.net/technotes/fms2/flex2FMS/index.html

For the most part, the benefits of strong typing and the performance improvements it brings are worth it. And, you can still write some code in the old style. But Chafic is right. Taken together the changes in the language and the APIs means Flash is moving away from the light-weight scripting environment it used to be. Some designers may find the newer language features and API disconcerting while some developers will find it more welcoming.

My favorite slide however was one of Chafic's last ones that showed he is working on a book for O'Reilly called Programming Flex 2.0 with Joey Lott and Peter Hall. That's three really excellent people working on that book! In fact that's another thing Adobe has got right. Chafic mentioned in his presentation that Adobe's documentation for Flex 2 is very good. And he's right. It is miles ahead of what shipped with Flash MX 2004. In addition Steven Webster and Alistair McLeod should be working on a new edition of Developing Rich Clients with Macromedia Flex. A good book that should get even better in its second edition. Good documentation and books are important for developers learning something new. It looks like Adobe (and others) will get that right this time too.

I already mentioned that Flex Data Services wasn't really on display at FITC. But, Danny Patterson did a nice job of walking through Flash Remoting with Coldfusion even though FDS is a lot more than that.

And there were other sessions I enjoyed: Harnessing the Bitmap by Keith Peters, Flashup the world with (with Yahoo!'s Map API) by Chuck Freedman and Dan Theurer, and Extending XML by Brendan Lynch.

Once again FITC was great. A fantastic chance to talk to people and think out loud with them about what is happening in the industries we work in. Now, who will ship first? Apollo or WPF/E? ;-)

Post or read comments for this page.


-Brian Lesser, April 29/2006