Review of Appcelerator platform for Rich Internet Applications (RIA)

Appcelerator

A friend asked me to review a new platform called Appcelerator (http://www.appcelerator.com) to find out if this platform offers any benefits for my own software development. My first impression of the Appcelerator website is great. The site looks professional and very Web 2.0-oey. However, it doesn't quite look like an application platform, more like a business website selling a commercial product related to software development.

Appcelerator is a fully-integrated platform for building RIAs (Rich Internet Applications) and is powered by a bunch of capabilities, which I will describe in more detail.

Message Oriented Architecture

This part of the framework seems to be the most abstract for me, as I was expecting a description of a framework. Rather, the Message Oriented Architecture talks about Appcelerator applications that communicate via messages. This architecture works with a message broker and service broker that work with Java, Ruby, PHP, .NET, Python and Perl. I'm confused by the example given on the documentation page, as I can't see how this example extends to the usage of this architecture in an application. To be quite honest: This is where Appcelerator kinda lost me. But moving on.

Web Expression Language

The goal of this language is to make the visual and interaction design relatively simple. It works with several custom "set" attributes (control, behavior, layout, theme). Appcelerator provides a number of nice features for different user interactions. As I work with JavaScript and jQuery, I'm hesitant to learn this new language, as I'm not sure what additional features I'll get out of it.

Widget Framework

Widgets are small applications based on JavaScript. There's a number of existing widget created by the Appcelerator team. The platform is extendable and developers can create their own widgets. Speaking in Drupal terms: widgets are modules that extend the core of the Appcelerator platform.

Conclusion:
On the plus side, it's great to see that the Appcelerator platform technically works with all programming languages. Being a Drupal developer, I am comparing Appcelerator to Drupal, so the programming language compatibility isn't that relevant for me, as I'm more interested in the feature set and how easy it is to use the platform to build applications.

In order to build an application, I really appreciate the fact that Drupal offers a platform with all core features I need: nodes/content, categories, users, application-based permissions. Rebuilding these key elements for an application usually takes the largest chunk of time. I don't see how the message oriented architecture adds to building that "core" of any application. I like the Web Expression Language for what it is: A language that gives you nice user interface effects. I'm skeptical, as this language doesn't seem to extend the "feature" set of jQuery. The concept of an extendable platform that works with widgets is great, but the number of existing widgets is small compared to the availability of Drupal modules.

The main reason why I'd chose Drupal over Accelerator is the fact that while I was doing some research on Google, I hardly found any documentation, code snippets or developer discussions about Appcelerator other than on their own sites. As a developer, it's crucial to me to be able to learn from others. The main point of choosing Appcelerator is to develop applications faster. While this might be true for adding features that are currently covered by an existing Appcelerator widget, I am skeptical if Appcelerator would contribute to delivering a rich application faster considering a potentially steep learning curve and little online documentation.

Comments

Thanks for a solid and fair review of appcelerator.

A few points i'd like to mention:

- Appcelerator is pretty new from a community standpoint. While we have worked on it for a while, we only open sourced it officially last November and launched the community in March.

- We do have a Manning book called Appcelerator in Action being published now.

- Drupal is a great platform and was started over 7 years ago and it mature, has a very strong community, etc. All new platforms start from zero and take time to evolve and gain adoption . :)

- The upcoming 3.0 release that's due out soon from Appcelerator uses jquery at the core and "extends" the plugins and capabilities of jquery out of the box much better. it's a good combination of the two.

- our online doc is pretty unsatisfactory and we know that and are working hard to release new doc very soon.

again, thanks for your feedback. keep watching .... :)

Jeff

Very good post, thanks a lot.

Thanks for your rapid feedback on my story (how did you know about that?!).

I was talking about the review with a friend after posting it who mentioned that a direct comparison to Drupal might not be appropriate. I think the release of your book and extended online doc will help tremendously. Something that'd be great would be more tutorials with practical use cases that show off the feature set better.

Also, one thing that I didn't mention originally is the fact that not every website is built in Drupal or can easily be re-built in Drupal. In a lot of cases, clients need or want to stay with their existing application. In my eyes, that seems like the perfect opportunity for using Appcelerator to build features faster.

Having spent some time looking at appcelerator this morning, my initial impression is that it may be the beginning of the next great thing on the web (if that's a little over-the-top, I apologize). As an application developer, I feel that this is moving us towards what I wanted Web 2.0 applications to be when I first looked into them: great client apps that reside in the browser and that access services for business logic and data. Simple and separated. In the model appcelerator is pushing, everyone wins. The developer get a clean separation of concerns and the backend of his or her choice, the network gets less traffic, and the user gets a far better experience because more of the application is pushed to where it should be: the edge of the network. Why, when we have so much unused potential on our local machines, do we continue to build applications that resend truckloads of html/javascript/css on every request (at least when they're not cached)? We certainly don't need to. Something like appcelerator is what I thought AJAX was going to immediately usher in a few years ago but somewhere along the way we got sidetracked by Rails/MVC mania. Don't get me wrong, MVC is nice and I understand that we all use jQuery or Prototype along with our favorite frameworks to spice up our apps and make them more RIA-ish, but the promise of an end-to-end, open source RIA platform for building true RIAs is really exciting. If appcelerator delivers (and it may already have, I can't wait to mess around with it and find out), it will make developing these RIA applications so much easier it's hard for me to imagine why anyone would choose something different. Flex is certainly an alternative but the truth is I just don't trust Adobe and I don't trust other companies to fully support flash/flex. Will we get everything we need for Flex in the mobile phones of the world? Do search engines treat flash/flex the same as html, javascript, css and other standard web technologies? I'm not sure where all that stands right now but I would bet it's more likely that a platform that uses standard web technologies has a better chance of being universally accepted and that's the platform I want to use.

Thanks for your article on appcelerator, I was a bit suprised by you initial responses but then I developed a better understanding of where you were coming from.

Drupal is a very popular package but it is not a RIA platform, it is a back end content management system with an extensibility mechanism. It was built for an era that predated Web2 and due to it's sucess it has not managed to evolve as quickly as many more modern products.

Appcelerator offers something far more flexible, a tool to manage client server development over a wide array of hardware platforms (web, iPhone, Android, desktop). It uses an architecture (MQ) which has proved it's worth on a range of earlier big money hardware and appears eminently suitable for the distributed nature of modern web applications.

I am think of jumping deep into using appcelerator, but before I go all in I am looking to see what else there is to achieve the same goals. Any one have other frameworks I should be looking into?

Swire: I think the decision about the framework depends on your goals and the app you're trying to build. Can you let us know a little more about the nature of your app?

Drupal is to Oranges as Appcelerator is to Kangaroos as far as I can tell. I'm a Drupal expert of sorts, in the R&D team at Acquia. I'm really interested in Appcelerator, I'd like see how we could integrate common Drupal modules with it. I'm a little concerned that Appcelerator will make my application non-portable, or the generated code will be impossible to work with should I need to.

I guess I'll have to take a look :)