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.
Please send public feedback to email@example.com. OpenAjax Alliance members are encouraged to send feedback either to firstname.lastname@example.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)
- 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 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 toolkit
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 :
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.
There are three conformance levels, Full, Configurable and Limited.
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.)
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.)
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.)
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.
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 (email@example.com) 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).
|Hub 1.0||1||Required for Limited, Configurable and Full||Libraries||Read-only
||To claim Limited, Configurable or Full Conformance, libraries MUST treat
|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
|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.|