May 22, 2007
@ 02:44 AM

Pete Lacey has a blog post entitled Rethinking Apollo where he writes

So I dug around in Apollo a little bit, and I did a little bit more thinking about my reflexive dismissal of the technology. And I admit to misunderstanding and miscategorizing Apollo. Here’s what I learned.

Apollo is not a browser plugin, nor does it leverage or extend your browser in any way. It runs completely outside the browser. It is a run-time environment for building cross-platform desktop applications.
Lets say you want to build a RSS/Atom reader...But lets add a requirement: my news reader must be cross-platform. That eliminates .NET as a development platform, but still leaves C++. However, with C++ I have to carefully separate my common functionality from my OS-specific functionality and become more of an expert on OS and windowing quirks then I would like, so that’s out. Fortunately, there’s quite a few other ways to go:

  1. Browser based
  2. Java based
  3. Dynamic language based: Perl, Python, Ruby, Tcl
  4. Native cross-platform development environment, e.g Qt
  5. Apollo
  6. Others, e.g. Eclipse RCP

All of these have pros and cons. Browsers are limited in functionality, and quirky. Java is a pain to develop towards-especially GUI apps, has spotty HTML rendering ability, and a non-native look and feel. The dynamic languages are far from guaranteed to be installed on any particular machine—especially Windows machines, and (likely) also have their own look and feel issues. Qt still leaves me in C++ land; that is it’s hard to develop towards. Apollo also has its own look and feel, and will require a download of the runtime environment if it’s not already there (I’m ignoring its alpha release state). I don’t care about any others cross-platform techniques right now.

I think I've found interesting is how a lot of blogosphere pundits have been using Microsoft's Silverlight and Adobe's Apollo in the same sentence as if they are similar products. I guess it's more proof that the popular technology blog pundits don't do much research and in many cases aren't technical enough to do the research anyway.

Although Pete does a good job of explaining the goals of Adobe Apollo with a great example, I think there is a simpler and more cynical way of spelling out the difference between Silverlight and Apollo. I'd describe the projects as 

Apollo is Adobe's Flash based knock off competitor to the .NET Framework while Silverlight is Microsoft's .NET Framework based knock off competitor to the Flash platform.
A lot shorter and more to the point. :)

PS: Shame on Pete for equating dynamic languages with the runtimes for certain popular Open Source dynamic programming languages. The programming language is not the platform and vice versa. After all, both Jython and IronPython are instances of a dynamic programming language that don't have any of the problems he listed as reasons to eliminate a dynamic programming language as a choice for building a cross-platform desktop application. :). 


Tuesday, May 22, 2007 5:00:43 PM (GMT Daylight Time, UTC+01:00)
Sorry, Dare, but Apollo is not a .NET Framework knock-off - it competes even less with .NET than it does with Silverlight. There are similarities - both have bytecode-to-native compiling runtimes, both have libraries of APIs. But the runtime engine is not what Apollo is about: Apollo is a web-style presentation platform first and foremost. .NET Framework has a far broader and deeper set of APIs that is trying to be a base for any and all kinds of development, from traditional Windows apps to server processes to command line tools. That is one of the reasons why .NET Framework (and Java, for that matter) are so much bigger than Apollo.

In fact, there really is no analog to Apollo in Microsoft's product line. WPF is close, but it is Windows only and doesn't have the same deep web integration. Silverlight is close, but it runs in the browser and doesn't have the same kinds of desktop integration. I'm curious to see whether Microsoft will in fact turn WPF into a cross-platform story to compete with Apollo - doing so would contradict Microsoft's traditional "works best on Windows" bias.
Tuesday, May 22, 2007 5:59:45 PM (GMT Daylight Time, UTC+01:00)
Apollo allows me to use markup and a dynamic language to build a rich interactive desktop application which can connect to the Web. That sounds like the goals of the .NET Framework (formerly WinFX) especially with the recent additions of XAML and the upcoming DLR.

As Pete Lacey points out both Apollo and the .NET Framework are candidates that a desktop developer will evaluate should making a choice. This makes them competitive.
Tuesday, May 22, 2007 7:08:47 PM (GMT Daylight Time, UTC+01:00)
Every developer platform competes for attention and mind share from developers, true. So in that sense they are competitive. But I was really talking about which specific developer problems the platforms are trying to solve. WinFX is primarily a way for desktop programmers to build applications that behave more like web experiences (XAML is a big step towards web-style development, but the WPF APIs themselves are architected in the traditional .NET API style). Apollo is about taking existing web technologies (HTML/AJAX and Flash/Flex/PDF) and bringing them to the desktop.

Note that when I say the WPF APIs are architected in traditional .NET style, I'm not making a value judgment - I *like* the architectural principles behind that style. But for most people who are creating web experiences today (ASP.NET users excluded), the learning curve is quite high. Apollo doesn't have that learning curve since they can use the same tools and APIs they are already familiar with.

Lastly, I'm a little surprised that you would equate WinFX and the .NET Framework. The conflation of the two was a marketing decision, not a technical one, and in any event WinFX is still only one piece of the larger .NET Framework story.
Tuesday, May 22, 2007 7:14:54 PM (GMT Daylight Time, UTC+01:00)
From From my perspective, both Microsoft and Adobe are trying to unify web and desktop development. Not surprisingly, each is trying to unify around the model where they're stronger: Apollo takes the web development paradigm (Flash, HTML, AJAX and JavaScript) to the desktop while Silverlight takes desktop development paradigm (WPF, CLR) to the web.
Comments are closed.