Summary of the Understanding Apollo presentation

Mike Chambers of Adobe gave a presentation in December titled Understanding Apollo. That presentation has been uploaded and while I missed it the first time around, I sat in this time and wrote up a summary.
Written by Ryan Stewart, Contributor
Adobe Red
Mike Chambers gave a presentation in December about Apollo that has some good overview information. Thanks to Marco, I saw that they uploaded the recorded version of that presentation so I did an overview of what was covered. A lot of it is news we've heard before, but it did provide a good introduction to Apollo. If you're looking for more information Mike Chambers posted his slides from the FlashForward MacWorld Keynote talking about Apollo and Ted Patrick showed Apollo at Mashup University.

What is Apollo?

Apollo is a cross-OS runtime that allows developers to leverage their existing web development skills (Flash ,Flex, HTML, Ajax) to build and deploy desktop Rich Internet Applications. Apollo is not aiming to be a general desktop runtime. This is aimed at bringing web applications to the desktop.

Applications can be built using:

  • Flash / Flex / ActionScript
  • HTML / JavaScript / CSS / Ajax
  • Combination of these technologies
  • PDF can be leveraged with any application
Mike stresses that this is about enabling web applications on the desktop, not just Flash. 

HTML Engine

Apollo is using WebKit Open Source Engine which is used by Safari and KHTML. Mike said that there were a few reasons they wanted to use WebKit. One was that it is an open project that Adobe could add to. It was a proven technology that developers are already familiar with. They didn't want to create their own HTML engine. WebKit also allowed the Apollo runtime to stay small and WebKit has a proven record of running on mobile devices. Down the road Mike said they'd like Apollo to be cross device down the road. 

Mike showed Digg Spy running as an Apollo application. It's grabbing data from Digg and then displaying it in Apollo along with a reflection effect. It's an example of HTML rendering through the Flash Display List so that you can take HTML and add Flash Effects to it. Then he shows Google Maps running on the desktop with a Flash interface written using Flex. In it he brags contact information from the Flex application, drops them on to Google Maps and then Google Maps goes to that address.


Apollo Stack


Apollo Functionality
Apollo is supported on multiple platforms but you won't need to program directly to the operating system. Apollo helps with offline and occasionally connected applications. It allows for applications running in the background and for things like system tray notifications. A full network stack including HTTP, XML-RCP/SOAP/Rest and Binary and XML sockets. Full File I/O API. An API for Local storage and settings. Apollo also allows for custom chrome so that designers and developers have complete control over what the app looks like. Mike said one of the primary goals is for the end user not to know about Apollo and so the team is spending a lot of time to make sure Apollo integrates with the desktop as expected. Things like where and how the application installs (to behave natively for Mac and Windows), drag and drop support between applications and clipboard support.

Scripting Support
The scripting language depends on the container being used. If you're working with Flash, you program with ActionScript, if you're working with HTML, you will be scripting in JavaScript. Cross environment communication is going to be possible in Apollo. This is meant to go above and beyond what is available now and Apollo is going to give complete access to Flash Player and HTML DOM and APIs. So you'll be able to use ActionScript to access the HTML DOM. Very low level integration. The Apollo stack is set up so that developers target the Apollo runtime, not specific operating systems. Apollo sits on top, and then you use Flash / HTML and PDF to connect to the web to complete the application.

Ascension Apollo

Status of Apollo
Currently they are working on the 3rd internal release, M3. The first internal release was M0 and gave Windows support as well as windowing APIs and installation support. M1, which was 3-4 months ago, brought full Mac support, command line tools and the preliminary File API. Mac release was very early so that Mac and Windows development could move together. The current internal release is M2. It is getting closer to the final Window and File APIs as well as HTML/JavaScript support (rendered via Flash). Web installation is working. Web installation makes it easy to install from the browser and Apollo is using that feature. M2 also brought Flex support and that includes Flex Builder support for Apollo and Apollo-specific containers. While you'll be able to use any environment to build Apollo applications, Flex Builder will provide a lot of features around Apollo development.

Mike showed off an example of Ascension, the music application he wrote for Apollo. It plays MP3s and imports your iTunes music library and has a series of visualizations including one that uses song information to cycle through Flickr photos. He showed off a feature that goes out and grabs information about the song from Lyrics Wiki and then brings it into Ascension. It's a good example of using Flex to grab HTML content and display it on the desktop. Mike showed how to make sure everything works offline as well as it does online, Ascension caches the album art and writes it to the file system.

Building an Application

Mike built a small application in Apollo to show off how easy it is. Every Apollo application will require two files. One is the content file (could be SWF or HTML file). The other is the application.xml file. The XML file provides meta information about the app including the application-id. He created a project in Flex Builder and opened up that XML file to change the id. You also change the system chrome settings from the XML file. It supports regular system chrome (for the default look), Apollo system chrome or full transparency (for building your own chrome). He puts a button in the middle of the screen and then makes a point of showing that these are all default Flex components and would run in the browser.

Mike then goes back to the application and adds a custom component he wrote. He sets the chrome to be transparent in the application.xml file and brings his hello world button into his custom components. With transparent content in Apollo, it will not render the background of the SWF file (for Flash). Anything else shows through on the desktop. He gave the example of a circle that has 50% opacity. That circle will show up that way on the desktop.

Turning a Flex application to an Apollo application is really easy and often times require no code changes. In order to take advantage of the Apollo APIs, you need to code those, but a bulk of your Flex code can stay the same.

Adobe is going to provide a free SDK for Apollo which includes a command line tool to launch and package Apollo apps. You can use any IDE you want.

Wrap Up
They are hoping to have a developer release on Labs early in 2007 with HTML support. Apollo 1.0 is going to be sometime in 2007 and it looks like it will be mid 2007.

Editorial standards