DOMAssistant 2.7.1 released, future plans and asking for help

As most of you are aware of, me and a small group of very talented people are working on our JavaScript library of choice, DOMAssistant, because we have a strong belief that light-weight code, fast and accurate performance, Unicode support and modularity is very important, and crucial for the future state of the web.

A little over a month ago, we released the 2.7 version, which included a lot of new features and improvements. However, as with all releases and when something is gaining more and more ground usage, both more features are desired as well as additional tweaks and fixes are need to provide an optimal experience.

Therefore, I’m happy to say that we have just updated DOMAssistant to the 2.7.1 release.

What’s new?

The new features and small fixes are:

  • Added support for pseudo-classes :nth-last-child, :nth-last-of-type and :target.
  • Added support for single and double quotes around attribute values.
  • Added “noParse” option to .ajax() for disabling the forced conversion of GET-parameters to POST-parameters in a POST-call.
  • Fixed setAttributes method on IE.
  • Fixed xhtml namespace evaluation in XPath.
  • Fixed so addContent accepts a number value as content as well.
  • Fixed so events can be added or removed from an event itself without causing any problem in the event handler.
  • Fixed <object> creation in Firefox.

Downloading the new version

Just download the new version and let us know how it works out for you!

Future DOMAssistant plans

Having achieved great results when it comes to performance, efficiency and Unicode support, the next major step for us is taking a bigger look on how we can make such a vital and important part as event handling more flexible and adaptable. We’re talking about custom events, more options for event delegation and other features that we hope will make your life easier.

What we need from you

Naturally, DOMAssistant isn’t about getting an opportunity for us team members to pat each others’ back and praise each other, but rather offering you the best JavaScript library experience possible. Therefore, we would like to ask you to tell us what you want out of a JavaScript library.

Our questions

  • Do you use a JavaScript library, or do you custom code everything yourself?
  • If you’re using JavaScript libraries, do you use just one JavaScript library, or several depending on what’s best for the task?
  • Which, if any, JavaScript library do you use today? And why?
  • What features do you deem most important in a JavaScript library?

Plugin development wishes

Another important factor is that we need help from you to develop a community with plugins to DOMAssistant, targeted at the most common uses. If you like DOMAssistant, and have developed functionality on top of it, please consider packaging it and releasing it as a module.

Talk to us

Help us help you. Write a comment here, in the DOMAssistant blog or partake in the DOMAssistant discussion group. You don’t have to have an issue or a complete plan to contribute; just speak what comes to your mind, and together I hope we can come up with some great ideas!

10 Comments

  • Olly says:

    I use jQuery at the moment.

    What I want from a library? All the usual stuff. Simplicity, decent documentation, a nice selection of features, a vibrant community.

    Most importantly though, it needs to be faster than light, if not quicker πŸ™‚

  • Andreas says:

    I use jQuery and jQuery alone. I want the same things as Olly, speed, simplicity, cool features and cross-browser support.

    Every time I read a post DOMAssistant I wanna try it out. Never get around to it though.

    How similar is it to jQuery? From what I've seen they look almost identical? Perhaps converting my jQ-plugins to DA wouldn't be too much work…

  • I've tried Prototype, but only actually use DOMAssistant. Mostly because I don't want all the additional draggable/transition functionality that comes with other libraries. As a library gets larger, I get less interested.

    How about a last() function to go along with the first() function?

    In the AJAX module, can you define event handlers for other ready states?

    I find that the documentation, while good, sometimes is not precise enough. I end up doing testing to figure out exactly what is going on. For example, you have a function <code>DOMAssistant.AJAX.getReadyState()</code>. I assume it doesn't mean that only one AJAX call can be made at a time? Can the function only retrieve the state for the last AJAX call?

  • As you know, Robert, I use a custom little thingy which handles most of what I want, plus a little extra (animations, drag/drop, auto-complete, that sort of thing).

    I've tried Prototype a year ago, mostly to learn from, but at the time I thought it was bloated.

    I've also used YUI some time ago back when YUI was the only respectable framework, to solve the drag and drop needs of a client.

    Overall I've never really used a framework for more than a couple of pages that required specific functionality which I didn't have handy myself at the time.

    By developing my own library code I've been able to clearly state my preferences;

    a consistent interface (example: if all your objects or classes have an <code>init ()</code> method, don't suddenly use <code>setup ()</code> for one module)

    custom event handlers rock. (example:

    <code>var ajax = new Namespace.AJAX ();

    ajax.onReady = function () {

    alert (this.response);

    };</code>

    They mostly rock because it's such a familiar system. Everyone with even the slightest bit of Javascript experience knows <code>element.onclick = function () {}</code>.

    Being able to extend classes rocks as well. Also, having a good subclassing system is the best way to guarantee consistency.

    A tiny file-size! (but I believe you've already got that covered ;))

    All in all I think you're doing great work, especially filesize- and performance-wise.

    To think a couple of months ago you weren't sure if DOMAssistant was a successful project… man, that's just crazy talk! πŸ˜‰

  • Robert Nyman says:

    Thanks for sharing guys!

    Olly, Andreas and Harmen,

    The obvious follow-up question, of course, is: how can we persuade to use DOMAssistant, at least in some cases? πŸ™‚

    Chris,

    It makes me happy to hear that you're using DOMAssistant! And about what should be included in the core of a JavaScript library, we're definitely on the same page.

    A <code>last</code> method could be nice, and I don't see why we couldn't add it in a future version.

    With event handlers for other ready states, that is unfortunately not possible at the moment. With AJAX, you can make as many parallel AJAX calls as possible, but <code>getReadyState</code> only returns the value for the latest call.

    In regards to the documentation, I agree that some points arent really clear, and in the long run, we would definitely try to make it better and more clear. Are you interested in contributing to making it more precise?

  • Tino Zijdel says:

    I exclusively use my own toolkit. I never really have the need for full CSS-like selector-syntax to pick elements from the DOM. I have full control over the generated markup and gEBID and (my own ;)) gEBCN mostly suit just fine.

    I do however take a great interest in JS-libraries, either to pick up some nifty tricks myself or to point out bugs and suggest improvements πŸ™‚

  • The obvious follow-up question, of course, is: how can we persuade to use DOMAssistant, at least in some cases? πŸ™‚

    I think that depends on your target audience.

    If you want complete newbies to be able to simply add Javascripts to their websites, I guess you have to provide lots of "Accordion menu's", transitions, etc. Just some out-of-the-box-cool-stuff. Newbies like hot air ;).

    If your target audience consists more of Javascript veterans, than I think you're on the right track. People who know the ins and outs of Javascript just wish to be helped a little. They already know Javascript is capable of doing cool stuff, so they don't need to be convinced with sparkles and pretty lights. I think these users are primarily looking for a library with awesome performance and a tiny filesize. These users wish to write their own scripts and a library should make things easy for them, not be in the way.

    I think at the moment, your library is aimed more towards the veteran group (which is a Good Thing, 'cause there's already a lot out there aimed at wowing newbies, think Scriptaculous).

    Another thing you could use to persuade, is just fixing really complex things, that even veterans won't take the time for to develop for any random project. I, personally, am still looking for a decent, cross-browser rich text editor for my clients.

    Then you can offer such scripts as bundles, backed up by the DOMAssistant core. Making such "standalone" scripts extensible, or even just scriptable, will also make people familiar with DOMAssistant. If they then like the syntax they might continue to use DOMAssistant for future projects.

  • Robert Nyman says:

    Tino,

    Yes, and that's a bit how DOMAssistant started; just core functions for selecting elements by id, class and attribute. THen it escalated into this CSS selector thing, which I was first a bit skeptical about, but now have come to really appreciate.

    Finding tricks or pointing out bugs are both highly appreciated. πŸ™‚

    Harmen,

    Thanks for such thorough comments!

    I'd definitely say that the general target audience is people who know JavScript to a certain degree, although I'm sure newcomers would also be well of with very simple and solid ways to select elements, adding events etc.

    With extending it, taht was exactly why we introduced plugins, since we believe the core should be small, lean and efficient, and then people themselves chan choose to extend it to suit their own needs.

  • I would be happy to contribute to making the documentation more precise and extensive. How do I get involved?

    It'll be about a month before I can contribute in any large way. Right now I'm finishing up a semester studying abroad in the UK.

  • Robert Nyman says:

    Chris,

    Great! I'll get in touch with you over e-mail!

Leave a Reply to Tino Zijdel Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.