Palm is replacing its legacy operating system with an innovative new Linux-based webOS platform that will support application development with web technologies. We got some early clues about the platform SDK from a developer shortly after the launch, but those few tantalizing hints weren't enough to satisfy the techno-lust of those of us who are eagerly awaiting the public SDK launch. Fortunately, Palm has decided to give us a sweet hit of the good stuff with new technical details that have been published at the Palm Developer Network website.

The new documentation is the first chapter of a book about webOS that is being authored by Palm CTO Mitch Allen in collaboration with the O'Reilly publishing company. The chapter provides a basic overview of the webOS platform and introduces its intriguing application model and some of the basic terminology behind its user interface paradigms.

Palm's webOS leverages standards-based web technologies and allows third-party developers to build complete applications using a mix of HTML, CSS, and JavaScript. It uses a custom JavaScript framework called Mojo and bundles some popular third-party JavaScript libraries, including Prototype.

Stages and scenes

WebOS applications are displayed on "stage" elements, which are described with HTML and contain various "scene" elements. Scenes are organized in a stack and can be displayed or removed programmatically with push and pop actions that are executed through the JavaScript scene assistant. Basic widgets are described in HTML by inserting a div element with a custom x-mojo-element attribute that specifies the name of the widget. The user interface elements are accessible through the DOM and can be styled with CSS. Various widget events can be bound to JavaScript callback functions.

Access to underlying platform capabilities is provided by the Services API, which is accessible through a JSON bridge. This gives applications access to the device's geolocation, telephony, and camera capabilities. The Service API system seems to be a generalized abstraction layer through which a wide range of external services and data sources can be exposed. According to the chapter, it can also be used to access web services and data from various applications on the device. It seems likely that it's extensible, but no details have been provided yet to indicate how that works.

The platform supports headless background services that interact with the user through passive notifications and interactive dashboard elements. Persistent data storage in webOS is facilitated by the HTML 5 database features. The platform's integrated media server supports audio and video playback through the open source GStreamer media engine.

Applications are organized into a particular directory structure and are bundled with various resources and an appinfo.json file that will include application metadata. Although many aspects of the webOS platform are built on existing standards, this is one that is not. It's a little disappointing that Palm didn't adopt the nascent w3c web widgets spec.

Applications will have to be signed in order to run on the device. The signing services will be provided through the Developer Portal and applications will be deployed to end users through Palm's new Application Catalog. From the details available in the chapter, it seems as though there is not going to be a single official IDE for building webOS applications. The SDK will include command-line tools and some plugins to aid webOS development with a variety of existing HTML editors including Eclipse and Aptana Studio.

After reading through all nine pages of the first chapter, I'm moderately impressed with what I've seen. It appears as though webOS significantly lowers the barriers to entry for new developers and makes it easy to adapt and reuse existing JavaScript code. I still have some doubts about the performance implications of using web-based technologies pervasively throughout the platform, however. Unfortunately, Palm has still not yet disclosed any technical details about the inner workings of the application runtime.

The additional details that have been released in this first chapter have answered quite a few of my own questions about webOS application development. It's starting to look like a very promising platform and I'm looking forward to exploring it in greater detail when the SDK is released.