Summary of the Understanding Apollo presentation
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
HTML Engine
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 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.
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.
Demo
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.
Developing
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.