by Kevin Lynch
As many of you know, Adobe has been working on a project, code-named Apollo, to create a cross–operating system runtime that enables developers to extend the reach of rich Internet applications to the desktop. On March 19, we released the alpha version of Apollo on Adobe Labs. In this article, Chief Software Architect Kevin Lynch discusses the origins of Apollo and the advantages it offers both developers and end users.
One of the main drivers of innovation at Adobe, and a key force in developing our client technology, is seeing where developers are pushing the edge of what’s possible to implement and then enabling more developers to accomplish that kind of work.
Let's travel back in time to the year 2001. The web was used widely, and there were early signs of interactive applications that developers were embedding within HTML pages. These applications were primarily using HTML forms and relying on web servers for processing the form information. A handful of leading-edge developers were working to implement a more responsive interaction by taking advantage of client-side processing in Flash®.
The Broadmoor Hotel provided one of the earliest examples of successful interactive applications. Using Flash and ColdFusion, developers created an application that allowed the hotel to move from a multi-page HTML form to a one-screen highly responsive reservation interface. After launching the application, the hotel realized a 89% increase in online bookings.
Clearly, responsiveness matters. It creates a much more effective and engaging experience. However, these early interactive applications left much to be desired in terms of performance, quality of the scripting language, and expressiveness within browsers (browsers were created to display pages, and not to host applications).
In 2001, we decided to embark on a mission to enable this trend toward responsive, interactive applications, and we created a category called rich Internet applications (RIAs). To unlock the potential of RIAs, we aimed to create:
Despite the dot-com bust, we held onto the vision of enabling this future world of RIAs. We continued to build a range of technologies and prepared for the day that innovation on the web would ignite again.
As we expected, the days of innovation have returned in full force, and I am delighted to see RIAs coming into their own with Web 2.0. Applications are being created with a range of technologies and frameworks that tap into the distributed creativity of the Internet; take advantage of HTML, Flash, Flex, and Ajax; and balance logic between the client and server.
But how did we get to where we are today with Apollo? In late 2005, Adobe and Macromedia decided to combine forces. While Macromedia was driving RIAs with Flash, Adobe was innovating in delivery of electronic documents, among other areas. Both companies realized that Macromedia could add electronic document capability to RIAs and Adobe could add RIA capability to electronic documents. Rather than pursue those paths separately and duplicate efforts, we joined forces to deliver on our vision for the next generation of documents and RIAs, uniting the world's best technology for electronic documents and the world's best technology for RIAs. It's an incredibly powerful combination.
After we announced the merger, we created a "clean room" team to plan for the Apollo project. The small team comprised a few employees from both companies, including Ed Rowe (who currently leads the Apollo development team) and myself. We drew from experience. We brought everything we had learned to date about bringing Flash, PDF, and HTML together in this new environment for RIAs — this new environment that we code-named Apollo.
The Apollo project is actually our third attempt at creating this new environment. The first two attempts were part of an experimental project called Macromedia Central. (The first Central release was code-named Mercury, and the second release was code-named Gemini, after the United States space program.) We learned a lot from those first two projects, and as I like to remind the team, Apollo is the first spaceflight mission that actually went to the moon.
As a developer, you can now create a closer connection to your users. With the browser, you have a fleeting, somewhat tenuous, connection to users: They browse to a page, and then they're gone. Apollo enables you to create an experience that can keep you continuously connected to your customers. Just like a desktop app, Apollo applications have an icon on the desktop, in the Windows® start menu, or in the Mac OS X dock. It's simple to find and return to the experience. Even uninstalling an Apollo application is simple. In fact, it's as simple as throwing it in the trash in Mac OS X or using the add/remove programs utility in Windows.
Back to creating a closer connection: Right now, when you're running a web application, it's a separate world from your computer. You can't easily integrate local data with your web app. For example, you can't just drag and drop an Outlook contact onto a web-based mapping application to get directions to your friend's house. With Apollo applications, you can. Apollo bridges the chasm between your computer and the Internet. (Check out the Mike Chambers interview with Christian Cantrell, in which they demo a couple of Apollo apps to see what I mean.)
Finally, if you want to differentiate yourself, Apollo represents a great opportunity. I truly believe this is the beginning of a new medium, and these applications are fun to build. If you start early, you'll be able to deliver capabilities in your applications that others won't have yet, such as giving your application a presence on the computer and bridging the gap between the web and the desktop more effectively.
I look forward to seeing how you push the boundaries of Apollo and create the next generation of RIAs.
Kevin Lynch, as Adobe's senior vice president and chief software architect, leads the Platform Business Unit, which is focused on advancing the company's software platform for the creation and delivery of engaging applications and content to any desktop or device.