Alex Proposal 2006-05-24
Alex's proposal for a simple approach to toolkit interoperability is posted on the web at: http://alex.dojotoolkit.org/oaa.tar.gz.
Here is the text from the proposal
Ajax toolkit proliferation is continuing at an amazing rate. Choice is a good thing for users, but in today's environment it's too easy for users choosing more than one toolkit to get burned by incautious development practices among some toolkit authors. Instead of forcing users to choose one toolkit over another, a situation in which the most poorly behaved code often wins, we will instead hold participants in the Open Ajax Alliance (hereafter, OAA) to a minimum set of compatibility guarantees.
All compatible toolkits MUST:
- Publish a full and accurate list of all global objects and functions that they define when included in a page. This list will made available to the public (under an open documentation license, TBD) by the OAA and checked for conflicts by the Compatibility Working Group. Global namespace conflict resolution will be mediated by the OAA Interop Working Group and recommendations for API changes will be binding upon toolkits wishing to advertise their compatibility.
- Implement non-destructive ``onload`` and ``onunload`` event handlers such that other toolkits wishing to attach (non destructively) to these events will operate correctly when introduced into an environment subsequent to the loading of an Open Ajax Alliance toolkit in the page. No guarantee need be made regarding the correct functioning of the Open Ajax Alliance toolkit should destructive code be loaded subsequent to it's inclusion in the page environment.
- Implement an "event bus" API at a well-known location. This API will facilitate cross-toolkit communication and interoperability. This API MUST be defined non-destructively and at a name agreed upon by the OAA Interop Working Group. A reference implementation of this API will be prepared by the OAA Interop Working Group and licensed royalty-free under the terms of the BSD license. Events published to the event bus by toolkits will use an OAA assigned prefix.
Compatible toolkits SHOULD
- Publish a list of OAA events generated by their toolkit. This list will be re-published by the OAA and made available to the public (under and open documentation license, TBD).
Currently un-addressed are:
- oaa object versioning
- toolkit versioning support
- enumeration of globals for compatibility testing purposes
- widget-level event normalization and profiles
- markup-level toolkit interoperability
Issues / Questions
- Does hub need to support pull-model (equivalent of get to retrieve state)?
- Is pull-model required when subscriber comes to life after event has occured?