Late last week I had the chance to sit down with Kevin Lynch, the Chief Software Architect at Adobe and talk with him about Adobe's strategy over a number of products and about the direction of the Flash Platform. He also took time to talk about the Apollo project and demo some of the applications that people within the company are building.
For those who aren't familiar with Apollo, I'll start by taking the definition from the Apollo Developer FAQ on Adobe Labs:
Essentially, Apollo is Adobe's initiative to bring Rich Internet Applications from the web to the desktop in a way that uses the best of both worlds. The idea is that developers will be able to bring their web applications offline and take advantage of things a desktop application can do including accessing the file system and drag and drop from the desktop to the application. In addition, Apollo is going to be cross platform meaning you can build these desktop applications and they will run on PCs, Macs and Linux machines.
The idea of bringing the rich Flash experience to the desktop isn't something new to Adobe. Macromedia started down this path with their Central product line. Central was the very first implementation of bringing Flash outside the browser, though it saw limited adoption. Central acted as an application manager and Flash applications written for Central ran inside a Central desktop client instead of as separate applications, the model Apollo uses now. In addition, developing for Central was a nightmare involving having multiple .swf files and needing to code communication between all of them. Flex has made writing applications in Flash much more simple, but Central came before Flex.
In many ways, Apollo wouldn't have been possible without the Flex framework. In order to bring Flash applications to the desktop, you needed to make it more developer friendly on the web. Once Adobe accomplished that with Flex, the road to Apollo was complete.
Kevin described the Apollo codename as an extension of the Central codenames, which were Mercury (version 1) and Gemini (version 1.5). Kevin pointed out that Apollo was the first mission to make it to the moon. Adobe thinks the eagle has landed this time around, and after taking the tour, I am inclined to agree.
Ajax and PDF
Adobe's Flex is going to be a big contributor to Apollo applications and Adobe has made it very easy to convert Flash and Flex applications to the desktop. However Apollo will also offer support for Ajax and PDF. One of the things Kevin mentioned was that Apollo will give Ajax developers a very consistent and cross-platform development environment on which to deploy their web applications. Currently, Ajax developers need to deal with a variety of different browsers. While frameworks such as Dojo and Prototype have made this easier, building Ajax applications for Safari and other browsers requires extra time and cost. Apollo will give them the cross-platform aspect that makes Ajax development so compelling, but will not require the hacks that true cross-platform Ajax currently requires. In addition, you can port your current Ajax application to Apollo with almost no code changes. No Flash is required to use Apollo, your Ajax application can be turned into a desktop application without any Flash at all. For Web 2.0 companies, Apollo will be a great way to enhance their current applications.
Apollo will also leverage Adobe's PDF format. Kevin said that Apollo will fully support PDF features including document security and PDF forms. In order to keep the Apollo runtime small, it will not come with a full copy of Adobe Reader, but rather hooks that developers can take advantage of if the user has a copy of Acrobat Reader installed. Seeing as the Reader is installed on a majority of machines, there will be ample opportunity to build Apollo apps that make heavy use of PDF.
The screenshots for this post were taken from an Apollo applicaton built by Mike Chambers. It's a personal project of his that he built using Flex and then ported to Apollo. It is a media player that takes your iTunes library and imports it into the application so it can play your music for you. With some help from the Flash community, he has added some cool visualizations. My favorite is the Flickr visualization which takes the artist and title of the current song, searches Flickr, and returns the results. It makes for some interesting photos while listening to your music. I will have a photo gallery set up here later, but you can see it runs the same way on a Mac as it does on a PC - with no changes to the code.
Apollo is nothing short of game changing, in no small part because of its Ajax support. Web 2.0 has done some amazing things for innovation on the web, but people aren't ready to cut the cord and do everything from a web application. Apollo not only breaks these web apps free of the browser, but it gives them the ability to create hybrid desktop-web applications. Apollo adds a ton more value to the web by shoring up its weak spots and remaining cross platform. Whether you are developing an application in Flash or Ajax, you are going to want to look at Apollo.