Dear Appcelerators,
First off, I hope the holidays found you and your family happy and healthy, and best wishes from all of us for a happy new year as well.
With all the excitement around the release of the Titanium desktop application platform, it might seem like the RIA framework at the heart of Appcelerator's product offerings might be lacking in some love. I'd like to assure you that is not the case, and update you on some plans we have for the next release of the Appcelerator SDK, slated for delivery in February.
You may have heard through the grapevine that the whole of the Appcelerator Web SDK (our JavaScript codebase) was being ported over to jQuery. That was indeed the case, and almost a full rewrite was underway as we moved from Prototype/Script.aculo.us to jQuery. However, this effort proved more costly in terms of time than what was hoped for, and was ultimately substituting a dependency of Prototype for a dependency on jQuery. So in the interest of moving the SDK forward and providing more flexibility to our users, we have made a few development decisions that will allow us to move ahead for a February release:
- We will move as quickly as possible to phase out any 3rd party library-specific code in favor of coding to a more generalized API that could be implemented by a number of 'vendors' (more on this later)
- Rather than focusing on adding many new features, we will be concentrating on improving packaging, integration with existing webapp infrastructures, and fixing a long overdue pile of bugs
To accomplish the first goal, we will revisit the code that is written in a third party JS library and replace that with consumption of a generalized Ajax, selector, DOM manipulation, and effect API that we are calling "Swiss JS". The goal of Swiss JS is to provide a layer of abstraction that insulates our code from any specific third party library, allowing us to create Swiss implemetations in a variety of libraries, such as jQuery, Prototype, YUI, etc. This will eventually afford Appcelerator developers the ability to power Appcelerator with the third party library of their choosing. For our February release, we are likely to only ship with a Swiss implementation for jQuery, but as the community demands (and hopefully contributes) other Swiss implementations to power Appcelerator, we will make those available as well.
On the packaging and refactoring front, we are attempting to make it possible for developers to leverage Appcelerator in existing projects more easily by breaking out the SDK into its major functional components:
- Message Queue
- Web Expression Language
- UI Components (Visual Web Expressions)
This will allow developers the ability to engage with Appcelerator for just a few pieces of functionality (like messaging or widgets), rather than forcing developers to use the CLI and create full blown Appcelerator projects that must then be dissected into smaller pieces to be used in pre-existing projects. On the client side, it will be possible to consume existing JSON web services with a REST style interface through a long awaited API for mapping request/response messages to service URLs. We hope this will free developers to explore other avenues for implementing their web service layers, other than forcing them to use our service broker implementations.
On the maintenance front, we have a few big objectives for our next release:
- Improve the reliability and interface to the new UI components via visual web expressions
- Improve the nest-ability (not sure that's a word...) of our iterator widget - it's a common pain point for most developers using it
- Many more minor bug fixes - if you have an issue that's driving you nuts in particular, speak up now and we'll try to get on it before our next release
We thank you for your patience in waiting for this release - we know it has been a long time coming. We look forward to and encourage your feedback on the direction for this and future releases of the Appcelerator SDK.