Wednesday, March 14, 2007

What is Apollo (Really)? Will it replace browsers?

The evangelist team at Adobe has been busy publicly discussing Apollo, the new flash and MXML based programming platform. During the time we have evangelized, there have been some mis-perceptions. Other than recognizing being an evangelist is sometimes more subtle than not, I want to discuss a few of the issues in this blog over the coming months.

For those who don’t know, Apollo is an internal code name for a stand alone application development platform that uses Flash and HTML to build interfaces. Unlike Flex Applications, Apollo applications exist as stand alone apps and are not bound to the browser. The Flash runtime is part of a native cross platform runtime environment that allows the application access to several core libraries and virtual machines. Apollo applications are cross platform and can utilize local resources to a greater degree than Flex based applications, yet less than full blown stand alone applications written in conventional languages that are targeted for single operating systems.

At a recent event, after a lengthy discussion and demonstration of Apollo’s functionality, a question came from the audience.

“Why do you want to replace the browser?”
The shocked silence that ensued made me personally realize that we have not clearly communicated the value proposition of Apollo. It is simply not true that we want Apollo want to replace the browser (even though you can build a simple browser in as few as 5 lines of code). The proposition of Apollo goes far beyond that capability. So what is Apollo? In Mike Chambers book he describes it with the following sentences:

“Apollo is a new cross-platform desktop runtime … that allows web developers to use web technologies to build and deploy Rich Internet Applications … to the desktop.”

Apollo is a middle ground, hybrid approach when a browser based application does not quite fulfill the requirements yet building a full blown, stand alone application might be too overkill, slow or complex. It is important to note that Apollo applications do have a very full featured set of libraries to build very complex applications. In no way should anyone consider an Apollo application as a feeble, halfway attempt at application development. Quite the opposite is true. Some of the early applications we have seen on the internal beta mimic the appearance and functionality of Apples’ Photobooth, standalone Text Editors with HTML capabilities, A Universal Business Language (UBL) editor, MP3 music players that can read your local iTunes library file, import it and use the ID3 metadata tags to search and retrieve photos from Flickr tagged with the same terms.

So why is this important? Why would you want to do this? Browsers are general purpose work horses and will not go away anytime soon but there are instances where browsers start to not fit the requirements. Browsers are best suited for online access to data. Sometimes, data needs to be worked with offline and later synchronized with multiple other data models. Browsers were not built to fulfill this task. Like wise, browsers are best suited to natively work with remote resources. The virtual machines for scripting languages cannot interoperate with local resources in a way native applications can without explicit permission being granted. Even then, most virtual machines have severe security limitations (* generally a good thing). Apollo transcends some of the restrictions of browsers.

Like browsers, Apollo also is not out to kill native applications, but can be used to rapidly (I meant very rapidly) prototype or build applications that can do many common tasks. Skinning the applications with Flash also allows a very rich user interface to be built that can transcend the typical opaque rectangular box approach of conventional applications.

Hello World – it’s me, Apollo!

Apollo applications can be built using certain builds of Flex Builder, but it is important to note that you can also use a plain text editor and the free compiler from Adobe labs (when available). To use Flex Builder, you benefit from first going to download and install the Apollo Extensions first (watch this space for the public beta announcement). You simply declare the root element as . The following code is an Apollo application that uses HTML code. The formatting is bad to fit the code into the columns available.

This yields a very simple application that looks like this:

Note that the cache button does not yet do anything. This was written as a prototype based on a request from Redmonk's James Governor. It is risky putting this up as it may trigger his memory and he'll leave a comment asking me to complete it soon. Duck!

Here is another example of an Apollo Application that traces a slider value and binds the data value to another component. It also changes the test on the label from “Hello Nobody” to “Hello World” when the slider value changes to be above “3”.

The Apollo Application looks like this:

Suffice to say, Apollo fills an important niche (pronounced “neesh”, not “nitch”. The latter really bugs me and most other Canadians). It’s going to be out there for you to play with soon so please take a look at it and see what you can do.

And all together, let’s say it one more time:

“Apollo is not out to kill Browsers”



  1. I AM interested in Apollo, but I'm still hopeful that Adobe will take this great UI-creation capability (MXML+ AS3) and enable us developers to use it for more complete desktop runtimes.

    If I could make an app using MXML and AS3 that could touch a local database or fire off compiled (read: fast) code to perform some complex analysis, I'd be beating down Adobe's door with my wallet open.

    Cross platform is great if you're developing apps where you don't KNOW your users are running a certain OS family.

    And web based is great when you HAVE webservices or JAVA programmers on-hand to write your server side needs.

    But for many of us, the allure of the gorgeous UI promised by Flex/Apollo is tempered by the realization that we need that server side capability to get anything useful done... so we're making RIAs that we really wish were RDAs (D for Desktop)

    Like I said, Apollo looks super cool, but give me a different compiler that makes it a true Windows or Mac app, and I'd be off to the races...

    Hopefully grandchild-of-apollo will start to address that need in the community.

  2. I really don't get the whole "this will ruin that" mentality. TV was supposed to ruin radio. Videos were supposed to ruin TV and Cinemas. Didn't happen. Most folks have a TV, a DVD player (DVD did kill VHS but that was a good thing), and other media attachments. They don't have just one appliance to do everything.

    Same with the browser - browsers give you a one to many relationship. One viewport can open many pages. Most desktop RIAs don't seem like they will be trying to emulate that one to many relationship. Most desktop RIAs will be aimed at creating a deeper connection to the user, allowing them to access information off the web but not having to go get it. Content Delivery. That is what it's all about.

  3. Neesh not Nitch.... should be some sort of campaign imo.

    ... oh yeah the Apollo news is cool too :D

  4. The bit I'm unclear about is... will the user be able to download a single one-off 'player' similar to the Flash Player then from that, run all the Apollo apps - or will each Apollo app need to be installed locally on a case by case basis ? If the former, then I can see this would be pretty cool - but if the latter then in some ways it's a big step backwards... the best thing about a Web application with Flex is there's no download... we no longer have to worry about what version a user is running and what other stuff on their machine messes with it. I'm really hoping Apollo runs under a 'player' else I doubt it's something I'll look any further at.


  5. Jamie,

    Dude where have you been the last 6 Appolo filled months??

  6. I've been working; head down, arse up, on a Flex project. Earning a living. No time to look at anything else... so now you know, how about enlightening me ?!

  7. Jamie:

    I am writing a new article about the runtime and will answer your question in a new blog entry within days.
    The short answer is that it has a runtime that you only need to install once, similar to java.

  8. Jamie,

    When distributing Apollo applications you have two options: 1)the app itself, and 2)the app with the Apollo runtime included. The user need only install the Apollo runtime (player, if you will) once in order to use Apollo applications.

    Regardless of what distribution method is used, Apollo apps are installed in a familiar (to any other program's) method.


  9. The important thing to remember is that the install process for the end user will be no different than any other application. All the runtime details will be done behind the scenes.

    Stay tuned for new post on subject.

  10. Download free mp3 from

    is a new google site


Do not spam this blog! Google and Yahoo DO NOT follow comment links for SEO. If you post an unrelated link advertising a company or service, you will be reported immediately for spam and your link deleted within 30 minutes. If you want to sponsor a post, please let us know by reaching out to duane dot nickull at gmail dot com.