My last post discussed some options we considered when deciding the platform for developing a mobile product. I laid out the pros and cons of each option, but left off on a bit of a cliffhanger. The big reveal: we chose to use Appcelerator Titanium. We wanted to be able to have both iOS and Android versions of the product, yet we knew that we'd have to make to do with a small team that could not hope to maintain two separate native codebases. At the same time we really wanted an optimized, native mobile experience that we did not believe could yet be achieved with a mobile HTML5 application. Given these considerations, Titanium was really the only tool that fit the bill.
We've been getting up to speed and working with Titanium for a couple of months now. I wanted to share a few observations about our experience with the various components of the Titanium platform.
APIs and Frameworks
The one thing to note is that the APIs are fairly low-level. For example, there are APIs to create and manage UI elements like table views, spinners and tab groups, but there is no MVC or component framework built-in. Likewise the local database support is low-level, with no Core Data-type ORM capabilities. Some third-party frameworks are starting to crop up to provide these (e.g. helium and joli), but these are still in a rudimentary state.
The Titanium application (and the new Titanium Studio, more on which later) provides for one-click building and executing your application in the simulator or on the device, both for iOS and Android. The process is quite fast - a first time build/deploy/run-in-simulator cycle takes on the order of 10-15 seconds for our app at this point, while subsequent cycles take 2-3 seconds. While out of the box Titanium does not support live code changes, there are some third-party frameworks that claim to enable it; however, with the 2-3 second cycle, we haven't needed it.
Tooling / IDE support
Initially, Titanium only came with an application for compiling your app and either running it in the simulator, deploying to device, or publishing to the app store. It was up to the developer to write the code using the editor of his/her choice. While you could use something like Eclipse or Aptana for doing this, there was no support for code-completion of the Titanium APIs, and, most acutely, no debugging support - it was back to the bad old days of debugging via log statements.
Fortunately this is set to change as Appcelerator released a developer preview of Titanium Studio, an Aptana Studio-based IDE that is the product of their purchase of Aptana a couple of months back. Titanium Studio includes a full Titanium-optimized environment, with code-completion of APIs, debugging, integrated log viewing, and one-click deployment. It also includes everything that Aptana Studio (and by extension Eclipse) does, and so can be a one-stop place to do server and client development. The developer preview is still pretty rough around the edges - I've had several problems with the debugger in particular - but i expect them to be smoothed out quickly.
Titanium has good documentation, though not quite on the par of, say, Apple's developer documentation. The documentation is broad but not especially deep - almost all the properties, methods and events are documented, but it is not always clear how they play together. The best way to learn the framework is to browse the source code for the KitchenSink application, a kind of comprehensive showcase for the framework capabilities.
Overall it's been a very good experience, and while there are still some weak spots, they are rapidly being addressed by the Appcelerator team. We are excited to hone our skills as the platform matures, and use it to build a great product.