OpenAjax Conformance

From MemberWiki

Revision as of 22:05, 1 February 2007; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

NOTE: This is the wiki page where the Marketing Committee will collaborate on the text to place on the OpenAjax Web site about the definition of the term "OpenAjax Conformance" and what we are promoting to the industry relative to that term.

The executive summary of current thinking is that OpenAjax Conformance will require the following three things. The proposed text below represents work-in-progress towards describing those three things in more depth.

  1. Support for the Conformance Requirements defined within the OpenAjax Hub Specification
  2. Registration of Ajax runtime libraries and their globals with the OpenAjax Registry
  3. Support for all of the relevant Conformance Requirements within the various OpenAjax Best Practices specifications
    • Note: Current thinking is that the Best Practices documents will contain two types of best practice items:
      • Conformance Requirement, where the given item represents a requirement on Ajax software. If a given Conformance Requirement is relevant to a given Ajax software product or technology, then that Ajax software must support the given Conformance Requirement in order to claim OpenAjax Conformance. It is expected that few of the Best Practices will be Conformance Requirements, and instead the majority will be Suggested Best Practices.
      • Suggested Best Practice, where the given item defines what OpenAjax Alliance believes is recommended behavior in the majority of circumstances. These items represent general recommendations to the industry, but Ajax software is not required to support any of the Suggested Best Practices in order to claim OpenAjax Conformance.
    • Note: The Best Practices specifications might not get strong attention until after the first versions of the Hub and the Registry are published, which means that the first formal definition of OpenAjax Conformance might not include any conformance requirements from the Best Practices specifications.

Contents

Introducing OpenAjax Conformance

The term OpenAjax Conformance is shorthand for the set of conformance requirements that OpenAjax Alliance places on Ajax technologies, products, and applications. These requirements focus on a small number of simple but important aspects of Ajax usage, thereby providing the critical bits of Ajax interoperability that customers need, but in a manner that allows Ajax suppliers to continue to innovate and move forward with new technologies and products.

OpenAjax Conformance provides the following benefits to IT managers and the Ajax developer community:

  • Seemless integration of multiple Ajax products and technologies within the same Web application, particularly with applications that use mashup techniques
  • Greater certainty about product choices, where OpenAjax Conformance plays a similar role in the Ajax community as the Good Housekeeping Seal does with consumer products
  • Lower training costs, lower development costs, and faster delivery of Web 2.0 innovations due to industry adoption of common approaches that build from OpenAjax standards
  • Interchangeability of OpenAjax Conformant products, such that customers can choose among multiple vendors (and change vendors in the future)

The pillars of OpenAjax Conformance

An Ajax runtime library may claim OpenAjax Conformance only if it:

  • Supports the OpenAjax Hub and all of the Conformance Requirements defined within the OpenAjax Hub Specification
  • Registers its JavaScript global objects with OpenAjax Registry maintained by OpenAjax Alliance
  • Supports all relevant Conformance Requirements defined within OpenAjax Alliances collection of OpenAjax Best Practices specifications

Support for the OpenAjax Hub and its various conformance requirements

The OpenAjax Hub is a set of standard JavaScript functionality defined by the OpenAjax Alliance, with strong focus on being small and fast, that addresses key interoperability issues that arise when multiple Ajax libraries are used within the same web page.

OpenAjax Alliance has produced an OpenAjax Hub Specification, an open source reference implementation at SourceForge, and an automated test suite for implementations of the specification (also at SourceForge).

The following are the major features that are included in OpenAjax Hub 1.0:

  1. Ajax library loading and unloading control - The Hub provides APIs for registering libraries, unregistering libraries, and querying about previously registered libraries.
  2. Techniques and tools to minimize JavaScript object collision - The Hub provides for managing the global objects that are added to the JavaScript runtime environment by Ajax libraries, thereby helping to minimize JavaScript objection collisions.
  3. Load and Unload Event Manager - The Hub provides APIs and mediates processing of 'load' and 'unload' event handlers on the <body> element to ensure that event handlers from different Ajax libraries do not collide with each other and are invoked at the appropriate time.
  4. Publish/Subscribe Event Hub - The Hub provides an event hub using a publish/subscribe approach allows libraries to publish and subscribe to events in a reliable manner in order to coordinate actions across components from different Ajax libraries.
  5. Markup scanner - The Hub provides APIs and logic to controls markup scanning and dispatching of particular elements for processing by particular libraries. At initialization time, Ajax libraries identify to the Hub the pattern matching criteria for the markup that the given library controls. When the Hub scans the document, whenever it encounters markup that matches the criteria, it invokes the library's appropriate callback function.

Within the OpenAjax Hub Specification are a series of Conformance Requirements which Ajax products must support in order to claim OpenAjax Conformance.

Successful registration with the OpenAjax Registry

One of the challenges with Ajax programming, particularly when mixing and matching different Ajax technologies within the same Web application, are JavaScript object collisions where different Ajax libraries and the application developer attempt to use the same names for global objects. The OpenAjax Registry provides a centralized, industry-wide global object registration authority that provides the following benefits to the Ajax community:

  • Ajax product vendors with existing libraries that successfully their Ajax runtime libraries and list of global objects with the OpenAjax Registry gain confidence that other Ajax libraries will not replace or modify their global objects and thereby compromise the reliability or performance of their products
  • Ajax library developers who are developing new libraries can look at the OpenAjax Registry to see which global object names have been allocated to other libraries and choose names for global objects that will not collide with existing products
  • Ajax application developers (i.e., developers who use Ajax toolkits to build and deliver Ajax applications) can also look at the OpenAjax Registry to see which global object names have been allocated to which libraries and make sure that the global objects used by his application do not collide with the global objects used by any of the libraries that will be included within his application
  • The OpenAjax Registry also will tend to drive Ajax technology providers to adopt good practices in their use of JavaScript global objects because OpenAjax Alliance generally will only approve global object registration requests that conform to OpenAjax Best Practices.

Instructions for registering an Ajax library and its global objects can be found on the OpenAjax Registry wiki page.

Support for all relevant Conformance Requirements defined within the OpenAjax Best Practices specifications

OpenAjax Alliance defines a collection of OpenAjax Best Practices that are designed to promote and accelerate customer success using Ajax technologies. T

The Best Practices specifications will contain two types of best practice items:

  • Conformance Requirement, where the given item represents a requirement on Ajax software. If a given Conformance Requirement is relevant to a given Ajax software product or technology, then that Ajax software must support the given Conformance Requirement in order to claim OpenAjax Conformance. It is expected that few of the Best Practices will be Conformance Requirements, and instead the majority will be Suggested Best Practices.
  • Suggested Best Practice, where the given item defines what OpenAjax Alliance believes is recommended behavior in the majority of circumstances. These items represent general recommendations to the industry, but Ajax software is not required to support any of the Suggested Best Practices in order to claim OpenAjax Conformance.

There are different Best Practices for different aspects of Ajax application development:

Note: The Best Practices specifications might not get strong attention until after the first versions of the Hub and the Registry are published, which means that the first formal definition of OpenAjax Conformance might not include any conformance requirements from the Best Practices specifications.

Different Versions over the Course of Time

The meaning of OpenAjax Conformance will evolve over time as OpenAjax Alliance addresses new Ajax standards issues on behalf of the Ajax community. Current thinking is that the first official approved version of OpenAjax Conformance will be labeled "OpenAjax 1.0 Conformance". Subsequently, there will be periodic updates, each with their own version number (e.g., version 1.1 or 2.0).

Multiple Conformance Levels

There is a possibility in the future that the term OpenAjax Conformance might provide multiple OpenAjax Conformance levels, particularly as OpenAjax Alliance defines its OpenAjax Best Practices.

Conformance Claims

When an Ajax technology provider claims OpenAjax Conformance, it must identify which version of OpenAjax Conformance with which it is compatible. For example, the documentation might say: "This product is OpenAjax 1.0 Conformant".

The acceptable ways of expressing OpenAjax Conformance within conformance claims are to use the phrases:

  • OpenAjax n.m Conformance
  • OpenAjax n.m Conformant
Personal tools