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
|