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
- Combination of these technologies
- PDF can be leveraged with any application
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 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.
Status of Apollo
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.
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.