3. The Ajax explosion (2005-2007)
Huge amount of hype
~200 Ajax toolkits appear almost instantly
Microsoft Atlas (now called ASP.NET AJAX)
• Helps contribute to legitimacy
Several other major “proprietary” Ajax frameworks
• Adobe/Spry, Backbase, ICEsoft, Nexaweb, Sun/jMaki, TIBCO, …
Several major open source projects
• Prototype/Scriptaculous, Dojo, Yahoo, DWR, Google GWT, jQuery,…
Why so many so quickly? Simply rebrand DHTML to Ajax
Interoperable Ajax Tools and Mashups 3
4. Why OpenAjax Alliance?
A rich but fragile ecosystem
Interoperability shortcomings
Educational/marketing shortcomings
Dependence on browsers companies for technical advances
Ajax vendors motivated to work together (united we stand,
divided we fall)
Ajax technology layer not addressed by other industry
groups
HTML app Ajax app
Ajax toolkit(s)
Browser
Interoperable Ajax Tools and Mashups 4
5. OpenAjax Alliance Formation
Kick-off meeting May 2006
30 companies
Objectives, process, scope, and initial tasks
Scope of activities
Interoperability
Educational
Help shape the future of the Ajax ecosystem
What we produce
Documents (e.g., specs)
Open source (mostly JavaScript)
Interoperable Ajax Tools and Mashups 5
6. OpenAjax Alliance Areas of Focus
Interoperability
Ajax runtime libraries (OpenAjax Hub, OpenAjax Registry)
Ajax IDEs (OpenAjax Metadata)
Mashups and widgets (Hub 1.1, Metadata)
Mobile Ajax (Mobile Device APIs)
Marketing, education and evangelism
7 White papers
Future browsers
Browser wishlist initiative
Interoperable Ajax Tools and Mashups 6
8. What should be possible?
Intelligent code assist for APIs in Ajax libraries
What Aptana does with APIs
Visual design using widgets from Ajax libraries
What jMaki/Netbeans does with widgets
So what’s the problem?
NxM problem (~200 Ajax toolkits, ~15 Ajax IDEs)
Each toolkit documents APIs and widgets their own way
Interoperable Ajax Tools and Mashups 8
10. Solution: OpenAjax Metadata
OpenAjax Metadata for JavaScript APIs
Embraced an industry leader (Aptana ScriptDoc XML)
Standard stuff: <class>, <namespace>, <method>, <parameter>, etc.
Open source
• JSDoc to OpenAjax Metadata (extension to JSDoc Toolkit)
• Aptana ScriptDoc XML to OpenAjax Metadata (and probably vice versa)
OpenAjax Metadata for Widgets
Embraced an industry leader (Adobe Dreamweaver submission)
Standard stuff: <widget>, <content>, <require>, <author>, <icon>, etc.
Markup designed for strong alignment with Google Gadgets
Open source
• Sample widgets
• Reference implementation of a simple mashup editor
Interoperable Ajax Tools and Mashups 10
11. OpenAjax Metadata for JavaScript APIs
Sample JavaScript with JSDoc
/**
* Processes a method found in the JSDoc data structure.
* Produces an OpenAjax 'method' element.
* @param {object} method JSDoc object that holds info on this method
* @param {number} indent Current indent level for pretty printing
*/
this.method_element = function(method, indent) { … }
Corresponding OpenAjax Metadata
<method name=quot;method_elementquot;>
<description>
Processes a method found in the JSDoc data structure.
Produces an OpenAjax 'method' element.
</description>
<parameter name=quot;methodquot; datatype=quot;Objectquot; usage=quot;requiredquot;>
<description>JSDoc object that holds info on method</description>
</parameter>
<parameter name=quot;indentquot; datatype=quot;Numberquot; usage=quot;requiredquot;>
<description>Current indent level for pretty printing</description>
</parameter>
</method>
Interoperable Ajax Tools and Mashups 11
14. OpenAjax Metadata for Widgets
<widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
<requires>
<require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
<require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
<require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
<require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
<require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
</requires>
<properties>
<require> elements specifydatatype='Date' publish='true' topic='date'/>
<property name='date' the various resources that the
</properties>to run successfully
widget needs
<content type='fragment'>
<![CDATA[
<input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot;
style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
]]>
</content>
<javascript location=quot;atEndquot;>
this.init();
</javascript>
</widget>
Interoperable Ajax Tools and Mashups 14
15. OpenAjax Metadata for Widgets
<widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
<requires>
<require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
<require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
<require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
<require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
<require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
</requires>
<properties>
<property name='date' datatype='Date' publish='true' topic='date'/>
</properties>
<content type='fragment'>
<property> elements specify the list of widget parameters
<![CDATA[
that should ID=quot;__WID___calendarquot; dialogs.
<input appear in property editor class='tundra' lang=quot;en-usquot;
style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
You can say whether a given property should participate
]]>
in cross-widget message via ‘publish’ and ‘subscribe’
</content>
<javascript (Also, there is a <topic> element)
attributes. location=quot;atEndquot;>
this.init();
</javascript>
</widget>
Interoperable Ajax Tools and Mashups 15
16. OpenAjax Metadata for Widgets
<widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
<requires>
<require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
<require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
<require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
<require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
<require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
</requires>
<properties>
<property name='date' datatype='Date' publish='true' topic='date'/>
</properties>
<content type='fragment'>
<![CDATA[
<input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot;
style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
]]>
</content>
<content> element contains the HTML snippet for the
<javascript location=quot;atEndquot;>
visualthis.init(); widget.
rendering of the
</javascript>
</widget>
Interoperable Ajax Tools and Mashups 16
17. OpenAjax Metadata for Widgets
<widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
<requires>
<require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
<require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
<require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
<require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
<require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
</requires>
<properties>
<property name='date' datatype='Date' publish='true' topic='date'/>
</properties>
<content type='fragment'>
<![CDATA[
<input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot;
<javascript> elements are mainly for initialization dojoType=quot;dijit._Calendarquot;/>
style=quot;background-color:#f5f5f5quot; logic.
]]>
The “this” object will be set to the widget instance.
</content>
<javascript location=quot;atEndquot;>
this.init();
</javascript>
</widget>
Interoperable Ajax Tools and Mashups 17
18. Standards improve industry efficiency and
unleash innovation
Ajax libraries can produce one format (OAM) for their APIs
Their library will now be compatible with many IDEs
If the library uses JSDoc, then auto-generation of OpenAjax Metadata
We are investigating auto-generation for other inline documentation
formats, such as what Dojo uses
Ajax IDEs can consume one format (OAM)
That IDE will now support dozens of Ajax libraries
By unifying the industry around a single XML file, IDEs can
now innovate and compete in other areas
Interoperable Ajax Tools and Mashups 18
19. IDE WG Participants
Aptana Studio (chair of the WG)
Adobe Dreamweaver (Spry toolkit)
Microsoft Visual Studio (ASP.NET AJAX toolkit)
Eclipse ATF and JSDT
Sun jMaki/Netbeans
TIBCO (GI toolkit)
OpenLink SW (OAT framework)
Interoperable Ajax Tools and Mashups 19
20. Current status
Specification
We have a complete draft spec for OpenAjax Metadata
Now in the implementation phase (see 2008 InteropFest, subsequent
slide)
Schema (in RelaxNG) and validator
Open source implementation
OpenAjax’s open source mashup tool implements the widget format
Eclipse JSDT has implemented the JavaScript API features
Version 0.1 of JSDoc to OpenAjax Metadata is available
Commercial implementation
Adobe Dreamweaver is implementing the widget features in the spec
Aptana Studio is implementing the JavaScript APIs features
Interoperable Ajax Tools and Mashups 20
22. Mashups – the self-service business
pattern
Interoperable Ajax Tools and Mashups 22
23. Business value of mashups
• Faster, cheaper delivery of applications
• Save time and money through reuse and
lightweight integration techniques
• Lower skill set needed to assembly new
applications
• Support innovation and new business
opportunities
• Users empowered to innovate and explore
• Gain valuable insights
• Due to remixing enterprise and web
information
• Better align IT and business
• Do-it-yourself IT will be expected by
Facebook generation
• Extend reach and value of SOA
• Service reuse illuminates the business value
of SOA
Interoperable Ajax Tools and Mashups 23
24. Mashup software
• Mashup tools
• Widget and feed discovery
• Application assembly
• Instant deployment
• Widgets
• Pre-packaged, remixable mini-applications
• Usually tied to a back-end web service
• Sometimes leveraging previous
investment in SOA
• Public or company-private
• Key enabler of the long tail
Interoperable Ajax Tools and Mashups 24
26. Industry challenges
Interoperability
Dozens of proprietary technologies
Good news: many use the “Web Runtime” (i.e., Ajax)!
Bad news: even when using the Web Runtime, widgets
are not interoperable
Security
The power of mashups – comes largely from discovering
and integrating great widgets from 3rd parties
But 3rd party widgets might be malicious
Interoperable Ajax Tools and Mashups 26
27. Security vulnerabilities
Web browser
URL: http://example.com/mashup_builder/my_mashup1
Widget-C Widget-E (trusted)
Communicates in the Company server
background with one
of the company’s web
servers (untrusted)
Communicates in the
background with a Public server
public web server
Message
passing
Widget-A between
Communicates in the (untrusted)
the widgets
background with a Public server
public web server
What if one of the
widgets is malicious?
Interoperable Ajax Tools and Mashups 27
28. OpenAjax – Addressing the challenges
Web browser
URL: http://example.com/mashup_builder/my_mashup1
Widget-C Widget-E (trusted)
Communicates in the Company server
(1) OpenAjax Hub 1.1
background with one
provides framework for
of the company’s web
loading/isolating widgetsservers (untrusted)
and secure message Communicates in the
management background with a Public server
public web server
Message
passing
Widget-A
(4) Open source mini- between
Communicates in the (untrusted)
mashup application the widgets
background with a Public server
shows how to use all of
public web server
these technologies
(2) OpenAjax Metadata
defines an industry (3) Open source transcoders
standard widget wrapper convert popular existing
format proprietary gadget formats into
OpenAjax Metadata
Interoperable Ajax Tools and Mashups 28
30. OpenAjax Hub 1.0
What is it?
Small bit of standard JavaScript (< 3K after compaction)
Enables multiple Ajax runtimes to work together
Key use case: Developer mashups
Where a professional developer mashes up components
using HTML+JavaScript+…
Version 1.0 features
Ajax library registration
• OpenAjax.hub.registerLibrary()
Simple publish/subscribe engine (the pub sub hub)
• OpenAjax.hub.publish(topicName, payload)
• OpenAjax.hub.subscribe(topicName, callbackFunction)
Interoperable Ajax Tools and Mashups 30
31. OpenAjax Hub 1.0 – an example
Assume multiple Ajax
OpenAjax Hub 1.0 Example
toolkits: This is a mockup of a Web
application that uses UI controls
• UTILS.js – Various utils, inc. XHR from multiple Ajax toolkits.
• CALENDAR.js – Calendar control
• DATAGRID.js – Powerful tables
• CHARTS.js – Charting utilities
The visual controls need to react
to new server data and to each
other and update their views
appropriately.
Interoperable Ajax Tools and Mashups 31
32. Example – under the hood
<html>
<head>
...
<script type=quot;text/javascriptquot; src=quot;OpenAjax.jsquot;/>
<script type=quot;text/javascriptquot; src=quot;UTILS.jsquot;/>
<script type=quot;text/javascriptquot; src=quot;CALENDAR.jsquot;/>
<script type=quot;text/javascriptquot; src=quot;CHARTS.jsquot;/>
<script type=quot;text/javascriptquot; src=quot;DATAGRID.jsquot;/>
<script type=quot;text/javascriptquot;>
...
function MyCalendarCallback(...) {
OpenAjax.hub.publish(quot;myapp.newdatequot;, newdate);
}
...
function NewDateCallback(eventname, publisherData, subscriberData) {
...update the given visualization widget...
}
OpenAjax.hub.subscribe(quot;myapp.newdatequot;, NewDateCallback);
...
</script>
</head>
...
Interoperable Ajax Tools and Mashups 32
33. OpenAjax InteropFest
Objectives:
Allows OpenAjax Alliance to verify that OpenAjax Hub is reliable, performant, and suitable
Allows members to verify that they are OpenAjax Conformant
Jan-March 2007 July-Sept 2007
12 toolkits participated 14 organizations, 20 toolkits participated
http://www.openajax.org/member/wiki/InteropFest_2007_March http://www.openajax.org/member/wiki/InteropFest_1.0
Interoperable Ajax Tools and Mashups 33
34. InteropFest Demos
For people who are just looking at the slide deck, some
InteropFest demos can be found at:
http://www.openajax.org/member/wiki/InteropFest_1.0
Participating organizations Participating toolkits
24SevenOffice AjaxEngine
Apache XAP Apache XAP
Dojo Foundation Dojo Toolkit
IBM Ext
ILOG ILOG JViews
DWR/Getahead IT Mill Toolkit
IT Mill jMaki
Lightstreamer JQuery
Microsoft Lightstreamer
Nexaweb Microsoft Ajax Library
OpenLink SW Nexaweb Ajax Client
Open Spot OAT: OpenLink AJAX Toolkit
Software AG OpenSpot CalcDesk
Sun Microsystems Prototype
TIBCO script.aculo.us
Software AG's webMethods/CAF
TIBCO General Interface
24SevenOffice Vili
YUI
Interoperable Ajax Tools and Mashups 34
35. OpenAjax Hub 1.0
Status
Approved
Specification
http://www.openajax.org/member/wiki/OpenAjax_Hub_1.0_Specification
Reference implementation at SourceForge
http://openajaxallianc.sourceforge.net
Interoperable Ajax Tools and Mashups 35
36. OpenAjax Hub 1.1 – New features
OpenAjax Hub 1.0
Key use case: Developer mashups
Key technology: pub/sub within a single browser frame
OpenAjax Hub 1.1
Key use case: Secure end-user mashups
Key technologies
• Widget isolation (for security)
• Pub/sub across browser frames
• Security manager mediates all cross-widget messages
Interoperable Ajax Tools and Mashups 36
37. Security vulnerabilities
Web browser
URL: http://example.com/mashup_builder/my_mashup1
Widget-C Widget-E (trusted)
Communicates in the Company server
background with one
of the company’s web
servers (untrusted)
Communicates in the
background with a Public server
public web server
Message
passing
Widget-A between
Communicates in the (untrusted)
the widgets
background with a Public server
public web server
What if one of the
widgets is malicious?
Interoperable Ajax Tools and Mashups 37
38. Browser Security
Browser same-origin policy
IFRAMEs isolation - IFRAMEs from different domains
(and subdomains) cannot communicate with each other
via DOM bridging or JavaScript bridging
Implemented in all popular Web browsers today
Today’s tricks for cross-domain mashups
Dynamic SCRIPT tag to another server
Server-side proxies
“IFrame proxy” (window.location fragment identifier)
New browsers: W3C postMessage() and Access Control
Interoperable Ajax Tools and Mashups 38
39. SMash
SMash stands for “Secure Mashups”
Secure handling of 3rd party mashup components
Runs in today’s browsers (without plugins)
Designed and implemented at IBM™ Research (beginning
of 2007)
Open-sourced (openajaxallianc.sourceforge.net) in August 2007
Research Paper describing SMash in WWW 2008 Conference
High-level APIs, independent of implementation
technology
Fragment communication, HTML5 postMessage, Java™ platform,
Flash etc.
Will still work when browsers add native support for secure cross-frame
messaging
Interoperable Ajax Tools and Mashups 39
41. OpenAjax Hub 1.1: Simple example
Web browser
URL: http://example.com/mashup_builder/my_mashup1
Mashup container Widget-C Widget-E
Broadcast an event using
connHandle.publish()
Hub 1.1 (Managed Hub) Hub 1.1 Hub 1.1
inline provider inline provider smash provider
smash provider Widget-A
Subscribe to a topic and register a
Security callback function using
manager connHandle.subscribe()
Invoke the callback
function
Hub 1.1
smash provider
Interoperable Ajax Tools and Mashups 41
42. OpenAjax Hub 1.1: the steps
Web browser
URL: http://example.com/mashup_builder/my_mashup1
Mashup container Widget-C Widget-E
1 2 Load the
Initialize and widgets used 4 Broadcast an event using
connHandle.publish()
create a in the mashup
“Managed Hub”
Hub 1.1 (Managed Hub)
7 5 Hub 1.1 Hub 1.1
8 inline provider 6 inline provider smash provider
9
smash provider Widget-A
3 Subscribe to a topic and register a
Security callback function using
manager connHandle.subscribe()
10
12 Invoke the callback
function
Hub 1.1
11
smash provider
Interoperable Ajax Tools and Mashups 42
43. Hub 1.1 status
Specification
First draft spec – far along
http://www.openajax.org/member/wiki/OpenAjax_Hub_1.
1_Specification
Reference implementation at SourceForge
First implementation (far along)
http://openajaxallianc.sourceforge.net
Timeline for Hub 1.1
August-October 2008: 2008 InteropFest
End of 2008: Finalize and approve
Interoperable Ajax Tools and Mashups 43
46. OpenAjax Metadata
Mashup shortcomings today
Widget interoperability
• Many widget formats (Google, Yahoo, Apple, Microsoft…)
• Widget developers usually have to build different versions of their widgets
to work with different containers
Security
• No comprehensive, standards-based approach to widget isolation
OpenAjax Metadata addresses these two shortcomings
Widget interoperability
• OpenAjax Metadata defines industry standard XML for mashup widgets
• Very close to Google Gadgets (easy to transcode with XSLT)
Security
• OpenAjax Metadata designed to work with OpenAjax Hub 1.1 (which
provides a secure mashup runtime)
Interoperable Ajax Tools and Mashups 46
48. OpenAjax Metadata for Widgets
<widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
<requires>
<require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
<require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
<require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
<require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
<require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
</requires>
<properties>
<property name='date' datatype='Date' publish='true' topic='date'/>
</properties>
<content type='fragment'>
<property> elements specify the list of widget parameters
<![CDATA[
that should ID=quot;__WID___calendarquot; dialogs.
<input appear in property editor class='tundra' lang=quot;en-usquot;
style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
You can say whether a given property should participate
]]>
in cross-widget message via ‘publish’ and ‘subscribe’
</content>
<javascript (Also, there is a <topic> element)
attributes. location=quot;atEndquot;>
this.init();
</javascript>
</widget>
Interoperable Ajax Tools and Mashups 48
49. Widget Isolation and Security
Widget content is either a stand-alone HTML snippet (a
DIV) or an entire HTML page
Container manages the widget
Widget loading and unloading
Widget isolation (e.g., widget in its own IFRAME)
Inter-widget communication – container provides connection handle
• connHandle.publish()
• connHandle.subscribe()
Container implements pub/sub security
Container includes a “policy manager” (who can pub/sub to what)
Widget is oblivious to message passing technology
• fragment identifiers, postMessage, window.Name or whatever
Interoperable Ajax Tools and Mashups 49
50. OpenAjax Metadata and Google Gadgets
Google Gadgets
The gorilla is the “Web Widget” space (tens of thousands of
Gadgets)
Solid technology
OpenAjax Metadata strategy
Match Google Gadgets wherever possible
Open source XSLT transcoders to/from Google Gadgets
Interoperable Ajax Tools and Mashups 50
51. OpenAjax Metadata status
Specification
First draft spec - far along
http://www.openajax.org/member/wiki/OpenAjax_Metadata_Specifica
tion
Open source
Mini mashup application
Includes support for Google Gadgets (via transcoder)
Timeline for OpenAjax Metadata
August-October 2008: 2008 InteropFest
Fall 2008: Finalize and approve
Interoperable Ajax Tools and Mashups 51
52. OpenAjax – Addressing the challenges
Web browser
URL: http://example.com/mashup_builder/my_mashup1
Widget-C Widget-E (trusted)
Communicates in the Company server
(1) OpenAjax Hub 1.1
background with one
provides framework for
of the company’s web
loading/isolating widgetsservers (untrusted)
and secure message Communicates in the
management background with a Public server
public web server
Message
passing
Widget-A
(4) Open source mini- between
Communicates in the (untrusted)
mashup application the widgets
background with a Public server
shows how to use all of
public web server
these technologies
(2) OpenAjax Metadata
defines an industry (3) Open source transcoders
standard widget wrapper convert popular existing
format proprietary gadget formats into
OpenAjax Metadata
Interoperable Ajax Tools and Mashups 52
54. 2008 InteropFest
Objectives
Test OpenAjax Metadata
interoperability across
multiple vendors
Test OpenAjax Hub 1.1 for
reliability, performance, and
suitability
When
August – October, 2008
http://www.openajax.org/member/wiki/2008_InteropFest
http://www.openajax.org/2008_InteropFest/mashupapp
Interoperable Ajax Tools and Mashups 54
56. Summary
Ajax IDEs aren’t realizing their potential yet
Inteoperability challenges
Mashups aren’t realizing their potential yet
Security challenges
Interoperability challenges
OpenAjax Alliance is addressing the challenges
For Ajax IDEs
• OpenAjax Metadata addresses IDE interop challenges
For mashups
• OpenAjax Hub 1.1 addresses security challenges
• OpenAjax Metadata addresses widget interop challenges
Interoperable Ajax Tools and Mashups 56
57. Thank you!
For more information:
Web site: http://www.openajax.org
Wiki: http://www.openajax.org/member/wiki
Blog: http://www.openajax.org/blog
Mail list: public@openajax.org
Email: Jon Ferraiolo <jferrai@us.ibm.com>
Interoperable Ajax Tools and Mashups 57