OpenAjax Conformance

From MemberWiki

Jump to: navigation, search

Contents

About this document

This is the wiki page where the Marketing Working Group and Interoperability Working Group collaborate on the definition of the term "OpenAjax Conformance". After more than a year of work we believe that we are near completion towards what we hope will be an approved Version 1 of OpenAjax Conformance.

Feedback

Please send public feedback to public@openajax.org. OpenAjax Alliance members are encouraged to send feedback either to marketing@openajax.org or other mechanisms that are available to members, such as this member wiki.

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:

  • Seamless 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)

Definitions

Ajax
See the OpenAjax Alliance white paper titled "Introducing Ajax and OpenAjax"
Ajax application
An application that uses Web technologies and Ajax techniques (see "Ajax" above). The most common form of Ajax applications runs as an HTML page within a browser, but sometimes Ajax applications manifest themselves as desktop widgets or as installed desktop applications.
Ajax library (aka Ajax runtime library or JavaScript library)
A reusable collection of JavaScript, often available as a commercial or open source product, that provides Web developers with convenient access to Ajax technologies
Ajax product
A software product, either commercial or open source, that is used by developers to help them create Ajax applications. Here are some of the categories of Ajax products that a developer might use:
  • Ajax library (see "Ajax library" definition above)
  • Server-side Ajax component, which typically allows creation of Ajax applications or use of Ajax programming techniques by adding Ajax features to server-side application frameworks (e.g., PHP, Java or .NET)
  • Ajax IDE, a visual developer tool that helps the developer create applications more efficiently, such as providing code-assist, JavaScript debugging, or drag-and-drop layout support
Ajax toolkit
A software product, or collection of products, either commercial or open source, that is used by developers to create Ajax applications. An Ajax toolkit might be any combination of various Ajax product types (e.g., JavaScript library, server component, and IDE).

Conformance Requirements found within OpenAjax Alliance Specifications

The various formal Specifications published by OpenAjax Alliance contain various specific Conformance Requirements that an Ajax product must support in order to claim OpenAjax Conformance. For example, the OpenAjax Hub 1.0 Specification contains the following Conformance Requirement [1]:

OpenAjax Conformance Requirement: Verify Hub Version

(Applies to Libraries. Required for Limited, Configurable and Full Conformance)

To claim Limited, Configurable or Full Conformance, libraries that require a particular version of the OpenAjax Hub MUST check that the currently installed version of the Hub matches its requirements, and if not, produce an appropriate error.

Each Conformance Requirement describes:

  • The category of Ajax product to which it applies - In the Conformance Requirement shown above, the requirement says Applies to Libraries, which indicates that the requirement applies to Ajax libraries.
  • Conformance level - There are three Conformance Levels, Full Conformance, Configurable Conformance and Limited Conformance. (See "Conformance Levels", below.) Some of the more basic conformance requirements are identified as "Required for Limited, Configurable and Full Conformance". Other more advanced conformance requirements are identified as "Required for Configurable and Full Conformance" or "Required for Full Conformance".

Versions of OpenAjax Conformance

The definition of OpenAjax Conformance grows each time that OpenAjax Alliance approves a new Specification. When a new Specification is approved, the alliance usually will define a new version of OpenAjax Conformance that encompasses all of its approved Specifications up to that point.

As of today, we are on version 1 of OpenAjax Conformance, which includes the following two approved Specifications:

When the alliance approves its next formal Specification, most likely we will move to version 2.

EDITORIAL NOTE: The assumption is that OpenAjax Conformance 1.0 will be approved simultaneously with OpenAjax Registry 1.0.

Conformance Levels

There are three conformance levels, Full, Configurable and Limited.

Full Conformance

The term "Full Conformance" is reserved for Ajax products that have sufficiently strong Ajax interoperability characteristics that there is high expectation that the given product can be used successfully and conveniently with other Ajax products as part of the same Ajax development task. For example, it is expected that if you have two Ajax libraries that are Fully Conformant, it will be reasonably straightforward and convenient to use the two libraries within the same Web page.

From a detailed technical perspective, an Ajax product or toolkit can claim Full Conformance to a particular version of OpenAjax Conformance (see Versions of OpenAjax Conformance, above) if it supports all of the Full Conformance Requirements associated with that version and that apply to that type of product (e.g., Ajax library, server product or IDE) in its default configuration.

Only Ajax products and toolkits that are Fully Conformant can make the simple claim that they are "OpenAjax Conformant". (See Conformance Claims below.)

Configurable Conformance

The term "Configurable Conformance" is reserved for Ajax products support all of the same strong interoperability characteristics as for Full Conformance, except not in their default configuration.

From a detailed technical perspective, an Ajax product or toolkit can claim Configurable Conformance to a particular version of OpenAjax Conformance (see Versions of OpenAjax Conformance, above) if it can be configured in a simple and straightforward manner to support all of the Configurable Conformance Requirements associated with that version and that apply to that type of product (e.g., Ajax library, server product or IDE).

Ajax products and toolkits that only support Configurable Conformance cannot make the simple claim that they are "OpenAjax Conformant", and instead must claim Configurable Conformance. (See Conformance Claims below.)

Limited Conformance

The term "Limited Conformance" indicates an Ajax product that has taken important steps towards Ajax industry interoperability by supporting many of the Conformance Requirements defined in OpenAjax Alliance Specifications. However, on the question of whether the given Ajax product can interoperate successfully and conveniently with other Ajax products, the answer is "it depends". Products that only support Limited Conformance usually require some amount of research and study at the detailed technical level to determine whether that product can interoperate successfully with other Ajax products with your particular Ajax development task.

From a detailed technical perspective, an Ajax product or toolkit can claim Limited Conformance to a particular version of OpenAjax Conformance (see Versions of OpenAjax Conformance, above) if it supports all of the Limited Conformance Requirements associated with that version and that apply to that type of product (e.g., Ajax library, server product or IDE).

Ajax products and toolkits that only support Limited Conformance cannot make the simple claim that they are "OpenAjax Conformant", and instead must claim Limited Conformance. (See Conformance Claims below.)

Conformance Claims

Making conformance claims

When an Ajax technology provider claims to be OpenAjax Conformant, it must identify which version of OpenAjax Conformance with which it is compatible and the conformance level (i.e., Full, Configurable or Limited).

Here are three alternate recommended ways for expressing a Full Conformance claim:

  • <productname> supports OpenAjax Conformance v1 (Full Conformance).
  • <productname> supports OpenAjax Conformance v1.
  • <productname> is OpenAjax v1 Conformant.

Here is a recommended way for expressing a Configurable Conformance claim:

  • <productname> supports OpenAjax Conformance v1 (Configurable Conformance).

Here is a recommended way for expressing a Limited Conformance claim:

  • <productname> supports OpenAjax Conformance v1 (Limited Conformance).

For products that support Configurable Conformance, product documentation should provide relevant details about the relevant configuration settings to achieve conformance.

For products that support Limited Conformance, to help developers understand the interoperability considerations associated with that product, it is recommended that the documentation provide relevant details about the Full Conformance Requirements that are not supported and the constraints this places on using this product in conjunction with other products.

When a conformance claim is made on a Web page, that content should include a hyperlink to http://www.openajax.org/member/wiki/OpenAjax_Conformance.

Conformance logos

Ajax products that support OpenAjax Conformance are allowed to use the appropriate OpenAjax Conformance logos that can be found at:

What if you disagree with someone else's conformance claims

There is no formal certification process or enforcement mechanism for OpenAjax Conformance. Technology providers simply study the instructions on this page for how to make conformance claims. It is assumed that the industry will police itself and that most companies will determine that it is in their own best interests to make truthful and accurate claims.

If you believe an erroneous conformance claims have been made, we recommend contacting the company making the claim with your concerns. If the given company for some reason is not willing or able to correct those claims, one possible avenue of last resort for reporting the problem is to send an appropriately courteous and civil email to the OpenAjax Alliance's public email list (public@openajax.org) to help build awareness of the potential problem. However, only in certain cases will the alliance take any action in response to a particular conformance claim.

Complete list of OpenAjax Conformance Requirements

The following table lists the various Conformance Requirements that we have to date in our various approved Specifications. The following color-coding is used

  • Items that must be supported for Limited Conformance have a yellow background
  • Items that must be supported to go beyond Limited Conformance to reach either Configurable or Full Conformance have a green background
  • Items that must be supported for Full Conformance have a blue background

A product may claim OpenAjax Conformance (Full, Configurable or Limited) only if it satisfies all of the relevant conformance requirements below across all OpenAjax Specifications (i.e., both OpenAjax Hub 1.0 and OpenAjax Registry 1.0).

SpecVersionLevelCategoryTitleDetails
Hub 1.0 1 Required for Limited, Configurable and Full Libraries Library Registration To claim Limited, Configurable or Full Conformance, libraries MUST register themselves properly via OpenAjax.registerLibrary() at the time when the <script> tag(s) that includes the given library is processed (i.e., when the JavaScript files are fetched and then parsed by the browser's JavaScript's engine). NOTE: See Hub 1.0 spec for additional detail. For example, this does not mean that every Ajax library has to bundle Hub 1.0 inside of it.
Hub 1.0 1 Required for Limited, Configurable and Full Libraries Read-only OpenAjax.libraries To claim Limited, Configurable or Full Conformance, libraries MUST treat OpenAjax.libraries as a read-only public variable.
Hub 1.0 1 Required for Limited, Configurable and Full Libraries Prefix and Namespace To claim Limited, Configurable or Full Conformance, a library MUST define its own unique prefix and namespace URI. These two values MUST be passed as parameters to OpenAjax.hub.registerLibrary() (see http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification_Libraries). The prefix specifies a short name for the given library and the namespace URI holds a URI reference that uniquely identifies the library. prefix and the namespace URI MUST conform to W3C rules for namespace prefixes and URI references as defined in Namespaces in XML.
Hub 1.0 1 Required for Limited, Configurable and Full Libraries Verify Hub Version To claim Limited, Configurable or Full Conformance, libraries that require a particular version of the OpenAjax Hub MUST check that the currently installed version of the Hub matches its requirements, and if not, produce an appropriate error.
Hub 1.0 1 Required for Configurable and Full Libraries Multiple usage To claim Configurable or Full Conformance, libraries MUST provide a reasonable approach to application developers for addressing the possibility that the given library might be used multiple times within the same Ajax application, such as mashups where different mashup components use the given library multiple times (either same version of the given library or different versions of the given library).
 
Registry 1.0 1 Required for Limited, Configurable and Full Libraries The library MUST have an approved entry within the OpenAjax Registry To claim Limited, Configurable or Full Conformance, the library MUST have submitted a candidate entry to the OpenAjax Registry that provides the information required by this specification (e.g., global objects, custom markup, etc.) and that entry MUST have been approved using the process defined within this specification.
Registry 1.0 1 Required for Limited, Configurable and Full Libraries All "non-approved" globals and extensions MUST be documented To claim Limited, Configurable or Full Conformance, the library MUST offer developer documentation that identifies the globals, extensions, custom elements and custom attributes that might conflict with similar features from other Ajax toolkits and must document any mechanisms, if any, for disabling the potentially conflicting features, relocating these features, and/or accessing these features via "approved" Registry entries.
Registry 1.0 1 Required for Configurable and Full Libraries All "non-approved" globals and extensions either MUST be relocatable or MUST offer a mechanism to disable To claim Configurable or Full Conformance, the library MUST offer a mechanism to developers such that a developer can either disable any global or extension that is not listed as “approved” in the OpenAjax Registry or control the location of where that global or extension is installed into the runtime environment.
Registry 1.0 1 Required for Configurable and Full Libraries All features MUST be available via "approved" Registry entries To claim Configurable or Full Conformance, the library MUST offer a mechanism to developers such that it is possible to use the library via APIs that are listed in the OpenAjax Registry as "approved" entries.
Registry 1.0 1 Required for Full Libraries In its default configuration, all globals and extensions are "approved" To claim Full Conformance, in its default configuration, a library MUST only use globals and extensions that are listed in the OpenAjax Registry as "approved" entries.
Personal tools