Introduction to OpenAjax Metadata (and OpenAjax Widgets)

Blogged by: Jon Ferraiolo on May 8, 2010 at 3:15 pm

This post provides some background information to supplement the announcement of formal approval of the OpenAjax Metadata 1.0 Specification.

OpenAjax Alliance started its IDE Working Group back in 2007, with participation over the years from Abiss, Adobe (Dreamweaver), Aplix, Aptana, Dojo Foundation, Eclipse Foundation, GDE Solutions, IBM, Marcos Caceres (now employed by Opera), Microsoft, RadWebTech, SAP, Sun Microsystems, TIBCO, and WebTide. The  objective was to promote better Ajax tools, both widget-centric designer tools and code-centric developer tools. To meet this objective, the IDE Working Group produced the OpenAjax Metadata 1.0 Specification, which defines a set of industry-standard metadata defined by the OpenAjax Alliance that enhances interoperability across Ajax toolkits and Ajax products.

OpenAjax Metadata 1.0 defines metadata for the following:

  • Ajax widgets (“OpenAjax Widgets”), which include:
    • UI controls – The user interface components — such as combo boxes, menu bars, charts, and calendars — that some Ajax libraries provide.
    • Mashup components – Pre-packaged mini-applications (sometimes called “widgets” or “gadgets”) that can be combined together within a composite application (the “mashup”), where the mashup components react to each other intelligently, such as when the user selects an address in one component, and a different component displays an updated map for that address.
  • Ajax APIs – The runtime JavaScript APIs (e.g., classes and methods) that are available for an Ajax library.

The primary target consumers of OpenAjax Metadata 1.0 are Web page developer tools targeting Ajax developers. These software products consume and use the metadata to provide an enhanced experience for users building Ajax-powered solutions. In particular:

  • Ajax IDEs use OpenAjax Metadata to provide developers with API documentation, intelligent code-assist, widget palettes, and widget property editors.
  • Mashup assembly applications use OpenAjax Widget Metadata (“OpenAjax Widgets”) for definitions of widget user interface, widget APIs, identification of pub/sub messages to which the widget publishes or subscribes, and identification of shared properties.

The widget parts of OpenAjax Metadata, “OpenAjax Widgets,” grew out of a file format submission from the Adobe Dreamweaver team. The IDE Working Group concluded that Adobe’s submission represented solid technology, but made various detailed changes to the original proposal. The Dreamweaver team tracked the spec changes, and now Dreamweaver CS4 and CS5  support OpenAjax Widgets as defined by the the OpenAjax Metadata 1.0 Specification as its standard format for 3rd party widget extensibility. Various OpenAjax Widgets are available on the Dreamweaver Exchange (where Dreamweaver users can find 3rd party widgets).

The Dreamweaver widget submission was focused on user interface components — such as combo boxes, menu bars, charts, and calendars — that some Ajax libraries provide. Some members of OpenAjax Alliance pushed to extend the OpenAjax Widget spec to address mashup requirements. This resulted in a handful of additional features that are optional for IDE but required for mashup tools. The mashup-oriented features found in OpenAjax Widgets are summarized in this section of the spec. The “mashable widgets” feature in OpenAjax Widgets overlaps largely with the OpenSocial Gadgets format developed by OpenSocial Foundation, but not completely. There are various features critical to mashup scenarios that are not yet supported by OpenSocial Gadgets. Various members of OpenAjax Alliance are now working with members of OpenSocial Foundation to mirgrate mashup-oriented features from OpenAjax with OpenSocial, although this process will likely take some time.

The other major piece in the OpenAjax Metadata spec is an XML format for representing JavaScript APIs (“OpenAjax API Metadata”). The starting point for these features was the ScriptDoc XML format supported by Aptana Studio. The OpenAjax API Metadata spec is generally close to ScriptDoc XML. Aptana implemented support reading the OpenAjax API Metadata format (which provides information to help with code assist) and worked with leading Ajax toolkits to generate OpenAjax API Metadata. Eclipse Foundation also includes support for OpenAjax API Metadata within its JSDT component.

OpenAjax Metadata 1.0 Completed and Approved

Blogged by: Jon Ferraiolo on May 8, 2010 at 2:25 pm

The OpenAjax Metadata 1.0 Specification has been finalized by the IDE Working Group and formally approved by the members of OpenAjax Alliance and the Steering Committee. OpenAjax Metadata 1.0 therefore now represents an  approved Ajax industry standard.

OpenAjax Metadata (OAM) defines a set of industry-standard metadata for Ajax widgets and Ajax APIs that promote interoperability across Ajax toolkits and Ajax products. In general, Ajax toolkits will produce OAM files (directly or indirectly using post-processing utilities) and Ajax IDEs will consume OAM files.

The IDE Working Group, in conformance with its charter, delivered the following specifications and open source:

  • A complete and detailed formal Specification (the OpenAjax Metadata 1.0 Specification). This specification went through three separate detailed editorial reviews and multiple products have implemented major parts of the specification over the past couple of years.
  • Open source implementations at OpenAjax Alliance of major parts of the spec:
    • Open source implementation of an OpenAjax Widget loader (loader.js)
    • Open source converter from JSDoc inline comments into OAM’s XML for describing JavaScript APIs
    • Open source converter from YUI’s JSON format for describing their APIs into OAM’s XML for describing JavaScript APIs
    • An open source sample mashup application that demonstrates how to build a mashup assembly application using OpenAjax Hub 2.0 and OpenAjax Widgets (defined in the OpenAjax Metadata 1.0 Specification)
  • A formal language schema, expressed in RelaxNG Compact Syntax, available within the alliance’s open source project
  • A online validator utility that allows developers to verify the syntax correctness of their metadata files
  • Sample OpenAjax widgets, available within the alliance’s open source project
  • A multiple-vendor interoperability event in 2008 (the 2008 InteropFest where various companies integrated their products and technologies with OpenAjax Hub and OpenAjax Widgets (see press announcement)

Beyond the open source implementations done within OpenAjax Alliance listed above, we know of the following other implementations of key features found in the spec:

  • The widget features are supported by Adobe Dreamweaver CS4 and are the preferred format for 3rd party widget extensions. The Dreamweaver Exchange contains 3rd party widgets defined in OAM format that use a variety of Ajax toolkits, including jQuery UI.
  • The widget features are supported by multiple IBM commercial products and research projects, including Rational Application Developer (RAD) and IBM Mashup Center. RAD includes a complete collection of Dojo’s widgets (from the Dijit library) expressed in OAM format.
  • Eclipse Foundation has an open source implementation of the OAM JavaScript API features within the JSDT component that is a standard piece of the Web Tools Project.
  • OAM’s JavaScript API features are supported by Aptana Studio.
  • OAM’s JavaScript API features are supported by IBM Rational Application Developer.