Monthly Archives: April 2007

Flex goes Open Source (MPL)


I am very proud of Adobe for making such a great decision in regards to the future of Flex. In 2007, the Flex SDK including MXMLC, COMPC, ASC, Flex Framework, Flex Debugger, Flex Components, and ActionScript 3 Libraries will go open source under an Mozilla Public License. This is a great day for Flex!

This year has been especially great for Flex and we have seen record adoption of the MXML/AS3 programming model. Developers and companies around the world are discovering Flex and the capabilities of the Flash Player technologies. Our decision to open source Flex is designed to enable widespread adoption and enable the Flex community to innovate change into the core of Flex in an open manner.

Starting Summer 2007 we will be posting daily builds of the Flex SDK and providing open access to a bug database online. The Flex community will have direct access to the same tools developers use internally to manage Flex quality and this will allow the Flex community to improve the quality of Flex directly.

In December of 2007 after the release of “Moxie” (aka Flex 3) we will be posting all software assets into a public Subversion repository for public access. During this transition period we will be clarifying governance on the Flex SDK and how contributions will be handled in phases.

The release of the Flex compilers will create open competition for Flex and Flash based tools. It will foster competition for Flex Builder and give developers choice. It will allow Flex to become much larger than Adobe and it will foster a thriving ecosystem around Flash Player technologies. It is a new day, one that we will look back upon in a few years and know that we made the right decision long term for the future of RIA on the web and on the desktop.

URLS:

Flex Open Source Press Release
Flex Open Source Labs FAQ
Flex Open Source Discussion List

More thoughts:

Ryan Stewart
Ted Leung
Josh Tynjala
James Ward
Andrew Oliver
Mark Anders
Sho Kuwamoto

Welcome to the Bazaar!

Regards,

Ted :)

Speeding multiple image loading in Flash Player


Flash Player adheres to the HTTP 1.1 spec allowing only 2 connections per domain. Given this technical limitation there are a few very handy workarounds. One comes by using CNAME feature of DNS. It seems that is you add DNS CNAMES to a single domain, the browser and Flash Player allow 2 connections per listed subdomain even though they are technically the same HTTP server. In this case by simply adding several subdomains, the Flash Player can load multiple images and data in parallel over HTTP/HTTPS.

So instead of loading the following images:

http://mt3.google.com/mt?n=404&v=w2.43&x=0&y=1&zoom=15
http://mt3.google.com/mt?n=404&v=w2.43&x=0&y=2&zoom=15
http://mt3.google.com/mt?n=404&v=w2.43&x=0&y=3&zoom=15
http://mt3.google.com/mt?n=404&v=w2.43&x=2&y=4&zoom=15

These will load 2 at a time!

One might load these URLS:

http://mt0.google.com/mt?n=404&v=w2.43&x=0&y=1&zoom=15
http://mt1.google.com/mt?n=404&v=w2.43&x=0&y=2&zoom=15
http://mt2.google.com/mt?n=404&v=w2.43&x=0&y=3&zoom=15
http://mt3.google.com/mt?n=404&v=w2.43&x=2&y=4&zoom=15

These will load 4 at a time! A 2X performance improvement.

I am adding CNAMES to onflex.org to test this out.

More to come…

Ted :)

FITC Keynote – Flex/Flash Integration Kit


I will be demoing the Flash/Flex Integration Kit at the FITC Keynote. I think it is one of the best additions to the Flex toolset and bridges the gap between the 2 development paradigms for SWF files. Flash developers can add tremendous value to Flex in component creation and they hold the keys to adding the WOW into Flex applications. The Flex/Flash Integration kit was created to close the workflow gap in allowing Flash CS3 to extend Flex 2 at the component level.

Supported:

1. Create Flex Components using Flash CS3.
2. Create custom controls and containers. (Yes containers!)
3. Leverage timeline animation for State transitions.
4. Integration with Flex component sizing and layout.
5. Seamless Event integration using MXML.
6. All features are 100% MXML compatible methods, properties, events, and bindings.
7. Seamless workflow for component creation from Flash CS3.

The Flex/Flash Integration kit installs as an extension to Flash CS3 as an MXP. Simply extend MovieClips within the Library using classes that implement the IUIComponent Interface. One click to export these to SWC which and be seamlessly used within Flex2. Also provided are classes supporting inner “Content” MovieClip allowing developers to create custom containers for Flex. Yes you read that correctly, Flash CS3 creating custom containers for Flex.

I look forward to showcasing this great FREE addition to the Flash/Flex developer toolset at FITC Keynote. Personally, I have long wanted to extend Flex using Flash and this toolkit makes it reality with a few clicks.

This new download will be on labs.adobe.com very soon!

See you at FITC!

Go Flash, Go Flex!

Cheers,

Ted :)

APIS of Flash Player


I think we(Adobe) have made a mistake in not promoting the core features within Flash Player and the capability within. With so many new developers in the Flash/Flex ecosystem, the secrets within the APIS are largely uncharted water. Having been in the Flash community for over 10 years, I take the APIS for granted while many have yet to see or understand this goodness.

Here are a few examples:

flash.net.Socket

TPC/IP Binary Sockets to allow a browser based applications to connect to any server on any port within the domain based security model. This class allows you to connect Flash Player directory to any TCP/IP based protocol (protocol implementation in ActionScript) like FTP, NNTP, SVN, CVS, XMPP, DNS, TELNET, HTTP, AIM, ICQ, YIM, Etc. With a custom TCP/IP server you can write your own optimized protocol for data exchange (AMF support is included –> See readObject() and writeObject() methods) and support for ZLIB binary compression (see compress() and uncompress()). In many ways this opens the door to connecting the Flash Player and Apollo Runtime to any existing server or port on the Internet and allowing 2-Way push of any data. As the data arriving is binary it opens up many senarios:

XML messages with ZLIB compression.
SWF loading over Socket and using Loader.loadBytes to write binary data to the displaylist.
Writing a browser based instant messaging client that can connect to all existing IM services.
Mass multi-user gaming using custom servers.

flash.printing.PrintJob
Print directly from Flash Player to the Operating System print driver. The user will see a print dialog instantly and you can customize all pages of content easily.

Banner Ad that prints a brochure or coupon directly.
Print custom barcodes and tickets client side.
Take aspects of your application offline using Paper! (See Scrybe for details)

flash.external.ExternalInterface
Talk roundtrip to JavaScript. Flash can subscribe to JavaScript events, JavaScript can subscribe to Flash Player events, Call methods in Flash Player from JavaScript, Call JavaScript methods from Flash Player, and data is handled round-trip. If you want to integrate Flash Player into an AJAX based application, this is the way to do it.

Leverage any Flash Player feature with an AJAX Application (XML/E4X, Binary Sockets, SOAP, PrintJob, Etc.)
Embed Flash Player into a custom EXE and talk to the host application round trip, works with any programming language, C#, C, Python, Etc..

flash.system.Capabilities
Detect lots of system level capabilites of the machine that Flash Player is running on. Detect Accessibility, Language, OS, ColorDepth, Screen Resolution and much more.

flash.display.BitmapData

Capture image data from the DisplayList within Flash Player and manipulate the data using color and imaging APIs. BitmapData allows you to capture areas within an application and manipulate the binary memory image information directly. This is how all the online Flash based image editors work at their core. You can transform a BitmapData object with filters, colorTransforms, and image matricies or directly manipulate the image data on a pixel by pixel basis.

Create an online image editor.
Print high resolution images to PrintJob.
Distort an image using drag and drop.

mx.utils.getDefinitionByName
Obtain a reference to a Class dynamically at runtime and create instances of that class just by name. Like so:

var ClassReference:Class = getDefinitionByName(“flash.display.Sprite”) as Class;
var instance:Object = new ClassReference();
addChild(DisplayObject(instance));

flash.display.Stage
Detect when the mouse leaves the Flash Player instance boundary using the mouseLeave event. Tons of useful stuff there along with detecting resizing of the player or any of the settings on the player itself. Dynamically change the player frameRate, detect focus, height/width, set quality modes, add context menus and more.

There is a mountain of great Classes in Flash Player independent of the Flash Authoring Classes or Flex Framework classes. It is a shame we do not talk about it more and surface all these features that are usable on a majority of computers, 83.5% of them!

The thing is that alone knowing about these classes is not enough but rather the real value is know about how they can be combined to accomplish real work. This is a major gap in the Flash ecosystem and one that I think we need to close. There is no reason why everyone shouldn’t know about all the goodness that exists in the Flash Player today, NONE, ZIP, ZILCH, NADA. This is a problem that can only be fixed by the community who know about all the APIS and their combinatorial value.

More to come.

Cheers,

Ted :)

Flash Player Open History


There are lots of new people in the world of Flash/Flex, so many in fact that some facts about the evolution of Flash Player are fundamentally misunderstood. Ryan Stewart posted on on open sourcing Flash Player highlights a perspective that I think is generally inaccurate. Ryan states that Adobe will gain “the collective brainpower of a lot of developers” and for me this seems to imply that Flash Player is created in a vacuum in some dark corner of 601 Townsend St. San Francisco. I agree we would learn a ton from developers working in an OSS model but I think it is generally hidden that we work with a ton a developers today, more than most know.

The truth is that many business, developers, and interactive designers are deeply involved in the creation and evolution of Flash Player. There are many business and developers that depend on Flash Player for their livelihood and these folks are involved within many aspects of the Flash Player evolution. Actually from Flash Player 4 onward all major player changes have all been developer/customer driven. The core of Flash Player is centered on customer needs, 110%!

How would I know this? I was a Macromedia/Adobe customer for 10 years before joining the Adobe as technical evangelist 11 months ago.

During the creation of Flash Player 6,7,8,9 I was directly involved with several engineers on the Flash Player team as a customer. At the time I was not employed by Macromedia and I was not paid for my work on assisting with Flash Player’s evolution. We were provided prototypes of Flash Player 9 that allowed bootstrapping ABC files into the new JIT compiler and were testing the API’s in depth. There were many changes to Flash Player that came directly from this group. I wrote several applications including a 2D tile engine in AS3 and worked with a very low level build of Flex in AS3. I recall being very vocal about the fact that index and depth were seemingly backwards from AVM1 to AVM2. Poof…next build it was flipped to the way it is today. I was not alone, many of the best minds in Flash/Flex were involved at this level but their silence rests under a stack of NDAs. The people involved in Flash Player development outside of Adobe are not allowed to talk about their involvement.

First rule is Fight Club is do not talk about Fight Club!

This gives a perception that Flash Player is developed by Adobe independent of everyone else. This could not be further from the truth. Our customers are deeply involved at every turn of Flash Player evolution. From compatibility to feature requests customers are king in regards to player changes, that has been true for over 10 years and remains so today.

Given this is not the same as Open Source but the perspective that external developers are not deeply involved in Flash Player evolution is completely false. Actually the Flash Player team was openly at 360Flex talking with 100’s of developers about the next version of Flash Player, Flash Player 10.

There is also another factor. Flash Player development is rocket science! If you have deep skills in assembly and can implement features under extreme size constraints, then Flash Player team is the place for you. There are very few who can do it, very few. Maybe opening the player adds value at this extreme level but player internals are very sophisticated. Implementing a cross-platform JIT in under 100Kb is extreme programming and making sure that the release is compatible with over 10 years of SWF files is the mount everest of programming. Kudos to the Player Team, I am not worthy!!!

I do agree with Ryan that some aspects of the player should be open source, then again some aspects already are. We donated the brain of Flash Player to Mozilla as open source in the Tamarin project. The JIT ECMA4 runtime will power Javascript in FireFox and all enhancements will be shared among the OS participants.

Long post short, customers are involved at every turn of Flash Player’s evolution.

Could we be more open?
Yes.

Will it happen overnight?

No. Making dramatic changes like open sourcing Flash Player has implications to a very large group of companies and developers. It would be a mistake to rush a decision when there is an important ecosystem in the balance.

Cheers,

Ted :)

FITC Keynote


I will be speaking at the FITC keynote with Mike Downey. I am going to be covering some new things in the land of Flex with regard to Flash CS3 and will be demoing some new features in Flex 3. I am really looking forward to FITC as this will be my 3rd conference and it is one of my favorites.

See you at FITC!!!

Cheers,

Ted :)

Drinking from the Consulting Firehose


Yesterday’s post on Top Flex Firms has been a huge lesson for me and has highlighted some very important gaps about the Flex marketplace. Flex is much larger than I thought it was and with one blog post, my inbox became a lightening rod for our customers, partners, and new firms working with Flex. Exciting and Overwhelming all in one.

Here is a summary of the issues:

Lesson 1 – Adobe Partner Programs
I had little idea about many programs Adobe has for partners and ISVs but I found out about all of them in a few hours time. To a large extent it highlighted a communication gap on my part with our partner teams and I now have a world of new information to share about the companies we are working with on Flex. Adobe’s partner program contains a majority of the largest ISV’s in the world. Since I do not work with them, they didn’t make my list. This is a gap I can close and one that I think would be helpful to communicate to the community. There are some rather large companies working with Flex in a consulting capacity, companies on a scale that I have never worked with. There is a lot of information here and it will take me some time to process it all. More to come…

Lesson 2 – The Great Unknown
I got 100+ emails from firms that I have never heard of. I thought that there were 20 or so that I didn’t know about but not 100+. It is a bit overwhelming to discover in one afternoon that Flex consulting is a very large and growing market. I think I underestimated how many firms are working with Flex and just how many we do not know about at Adobe.

Lesson 3 – We need a Directory!

We need a directory to allow projects to find consulting firms. What is interesting is that I now have the contact list to get this done quickly. Ideally there will be a single place where consulting firms large and small can post and manage a listing. Think of this as a Yellow Pages for Flex.

I am racing to get all this information consolidated and processed. Stay tuned for more on this, lessons learned!

Onward through the fog!

Ted :)

Q1 2007 – Top Flex Firms


Here is my personal list of Top Flex Firms for Q1 2007. The list is based on the consulting firms that I have worked with directly and who have delivered multiple successful Flex applications to clients. In every case you will find that the firms know Flex inside out and are some of the best minds in the business of RIA application development.


Q1 2007 – Top Flex Firms List

If you have a project or need assistance please contact a firm on this list and let them know I sent you.

Disclosure:

1. This list is based on my personal opinion and not of Adobe Systems.

2. I was not paid, influenced, or harmed during the making of this list.

3. All firms are listed alphabetically. (Next list is ordered Z to A)

Over the next six months I am going to be reaching out to consulting firms and I want to get involved in helping your team succeed with Flex. My goal is to grow the Flex marketplace and help you succeed. If your firm would like to get involved, please email me at ted@adobe.com. I look forward to hearing from you.

Congratulations to the teams who made the list, they do world class development and it is time that many of these teams were recognized as leaders in the Flex marketplace.

Regards,

Ted :)

———–
Send to ted@adobe.com
1. Company Name
2. Company HQ Address
3. Company Contact and Email
4. What are you doing with Flex?
———–