Blogosphere
Search:
AdSense
Login
Login here to be able to
  • post comments (everybody)
  • insert articles (administrator only)
Subscribe

I want to receive notification when new comments are posted
E-mail address:
                     

 

Adobe > The Ajax library mash-up: mixing the Yahoo UI Library, Spry, Prototype and some secret sauce
Published: June 14, 2006 11:30 AM

Choosing the right Ajax library from the 174+ out there is a difficult task. Especially when you're aiming to simplify web development for Dreamweaver users :)

Our Ajax-related history goes way back in 2002, when we've first released an Ajax application - MX Query Builder. Designed to help developers create SQL queries visually, it used the XMLHttpRequest and a lot of DHTML for an Access-like experience, over the web.

Then we've continued to create Ajax-libraries for our visual HTML editor, KTML. In version 3, we have started to build a utility library for most of the complex stuff that we needed, cross-browser and stuff.

In 2005, our Ajax work continued with the release of MX Kollection 3 and KTML 4. Two products that heavily rely on Ajax libraries to increase the user experience - MX Widgets with desktop-like form controls, usable form validation and Word-like content editing experience. We've used a clearly separated namespace for supplemental attributes in Widgets, like Dojo and Backbase.

Now we're working on the next generation of our products. MX Ajax Toolbox and MX Kollection 4 are two of our products that heavily rely on Ajax, and we need to find a library, or extend one, to match our needs.

Initially we've started to work with our in-house libraries. But we've realized that it would be better for us to join the efforts of a public library, one that was designed for public use and that is embraced by lots of developers. Something like joining a standard.

So we've researched the world out there. And initially we've chosen Prototype and Scriptaculous. Based on these, we've ported our in-house libraries to them, and then started to work on the Ajax Toolbox. But we've met problems. Documentation was missing completely, and some of the stuff we were building in-house is already present in other libraries like Dojo or Yahoo UI Library.

After several months of work, we've decided to go out again and check if we could change Prototype and Scriptaculous with a more advanced library. Two libraries made it on the short list: Dojo and the Yahoo UI Library. Both seem really profesional, well-architected and with a solid future.

After half of day of research, Dojo was rejected:

  • It's huge, and people that use Dreamweaver don't want 600K of code to be required for their first page to render. Nor they want 200 files in the their project. Dojo provides a really nice and powerful building system, unfortunately unusable in our Dreamweaver related stuff
  • It's not well documented
  • It's hard to extend unless you invest massively in it (we've tried to create some widgets programatically and we weren't able to)

And the Yahoo UI Library was chosen:

  • It's well documented.
  • It's backed up by a suite of very clever guys and by a real company. (we've been impressed at the AjaxSeminar by this Yaho guy that talked 1 hour about autocomplete, in a very profesional manner)
  • It has most of the stuff we need right now
  • It has a brighter future
  • Seems like Dreamweaver will know how to render the Yahoo widgets in design view

Now for our part. We're working on the Ajax Kore, a common library between the Ajax toolbox and the Kollection 4 that will provide us with required features:

  • Some "lang" elements from Prototype that we think are good for writing code easy.
  • Browser history (back and and forward browser buttons will work with Ajax requests)
  • JavaScript incremental loading engine (Dojo had one but we think we can do at least better :). We also plan to generate a clean code in our pages for including lots of JS files and use the browser cache in order to minimize the number of requests to the server.
  • Ajax Request error handler and loading indicator
  • Web service support: server side object "Ajax stub" generator for transparent calls on the server from Ajax code
  • Dom utility functions that extend the Yahoo provided ones
  • Debugging library for our development needs

Along with Ajax Kore, each of our products will have some of their own Ajax sub-libraries for various subneeds:

MX Ajax Toolbox:

  • Panels - a new concept we've created to load sections of pages using Ajax, while providing a fully degradable approach.
    • This means that our Ajax pages are indexable by google, work well with screen readers and are accesible.
  • Several Ajax controls like Poll and Rating

MX Kollection 4

  • Spry for dataset connectivity. To simplify the page markup and improve the loading speed for NeXTensio lists and forms.
    • We will make Kollection non-degradable (or make Spry degradable), as the product is used only in backends. We plan to extend Spry to make it work with JSON instead of XML, and also make it use our Ajax Kore for XHR requests and error handling.
  • Form Validation library and other form utils that will make forms really easy to use

So we've ended up mash-ing up several Ajax libraries:

  • Some basic prototype.js functions
  • The Yahoo UI Library
  • A part Spry - somehow we have to take it out and make it use the Yahoo UI and the Ajax Kore behind the scenes for achiving a unified platform
  • Our internal library - Ajax Kore

We'll repost with our advancements, let's hope that everything will be ok and that we'll be able to create a small-footprint, usable framework.

Alexandru



Comments for this article:

To add a comment to this article, click here.
Your name*:
Your email*:
Your comment*:
Word verification*:
This is a captcha-picture. It is used to prevent mass-access by robots.
Type the characters you see in the picture above
 
excellent news, particularly:
JavaScript incremental loading engine
our Ajax pages are indexable by google
achiving a unified platform
I am impatient to know the continuation of the developments. Interakt cheer!
» Posted by Dominique Valkenborgh on June 14, 2006 3:55 PM
That is all good for people who want to use your components. Yet, for things like Machii, Fusebox 5, etc. ... what will your library offer people who want to build are resell open source applications on common platforms like that? Will your framework be open source also... or will it be something exclusive to the build tools that your sell. (Note: I don't have any problem with that... other than people like Backbase who say free but you cannot actually deploy it for free. That is to most of us false advertising.)
» Posted by John Farrar on June 14, 2006 4:10 PM
I thinks these decisions are really hard to take at the moment when all the libraries really are growing insanely fast and no one is really to called mature yet. I have written some things about this at <a href="http://domino.dagerot.com">my blog</a> but never really managed to take the decision.

Another thing I would like to see is a common standard for describing the widgets used in portal frameworks. Much as the JSR168 in the java world.
» Posted by Joche on June 15, 2006 12:31 AM
for french users it is a wiki doc in french about Yahoo library, see this topic : http://www.interaktonline.com/Support/Forums/AJAX/Details/77853/Yahoo+releases+JavaScript+library+for+AJAX+and+Web+2.0+devel.html
» Posted by dominique valkenborgh on June 15, 2006 11:37 AM
Powered by Macromedia Dreamweaver MX & MX Kollection