javascript ant

RSS or Atom

 

Piles of javascript goodness
 

JavaScript Libraries By Comparison

 

In October, 2007, I wrote a well-received post entitled How to choose a JavaScript framework. JavaScript Libraries in particular have grown immensely in popularity, and the article continues to be a great resource. However, it was apparent from how the Web development community responded that there was a single missing component. Designers and developers wanted an at-a-glance comparison chart. I considered how to go about researching and writing such a comparison, and shortly thereafter, I was contacted by Cody Lindley. He let me know that he'd been working on such a chart. Here is that chart.

  DOM Assistant 2.5 YUI 2.4.1 jQuery 1.2 Dojo 1.0 Prototype 1.6 EXT 2.0 Mootools 1.11
1
Official (complete!) documentation (API found on domain)
2
Official off-line documentation (off-line API found on domain, included in download, and managed by Dev. team)
3
Real code, with working live examples included in the API (not just demo's/tutorials out side of the API)
4
An official manual/book, not an API, not tutorials, but a manual/book online or hardcopy
5
Official real world demos included in download
6
Modular by design (one file by design, or multiple)
7
File size (KB) not minified, obfuscated, or gzip (? = depends upon what you include)
41.4 29 - ? 77.4 219 - ? 121 29 - ? 9k - ?
8
Official minified version (removing just comments and spaces)

6 - ?

44.6

7 - ?
9
Official packed/obfuscated version

21

26.2

50 - ?
10
Official hosted minified version with gzip (free, unlimited)
11
Official widgets/UI toolkit
12
SVN/CVS access
13
Unit tested
14
Public unit testing
15
Open development
16
100% Funded development (paid, full-time developers, only focus)
17
Official forum
18
Official Mailing list
19
Commercial support and training
  DOM Assistant YUI 2.4.1 jQuery 1.2 Dojo 1.0 Prototype 1.6 EXT 2.0 Mootools 1.11
20
Official plug-in architecture (was the base code designed and documented (documentation key) to facilitate open plug-in development by the community) Similar to modular, but with a different intent.
21
License type
GNU BSD GPL / MIT AFL / BSD MIT LGPL MIT
22
Free for Commercial use
 
Official support for Safari 1.3+
 
Official support for Safari 2+
 
Official suppor for Safari 3+
 
Official support for Opera 8+ Mac/Win
 
Official support for Opera 9+ Mac/Win
 
Official support for Firefox Mac/Win 1.5+
 
Official support for Firefox Mac/Win 2.0+
 
Official support for IE 7
 
Official support for IE 6
 
Official support for IE 5.5
 
Official support for IE 5.0

There are several factors to consider when compiling the necessary information for this comparison. The first, and most important, is terminology. Even though there are numerous features and functionalities for each JavaScript library that are similar, they do not always fit neatly into predetermined headings. It remains imperative that each library feature be weighted while keeping this in mind, and when appropriate, read the full description that accompanies each heading. This is a fantastic starting point for your own research and analysis.

Although the groundwork has been laid, another factor to consider is that there is still the effort to maintain an accurate comparison. Remember, this is a living document, and you should use the chart whenever you begin a new project that requires a library. After listening to developers who have used these libraries, we intend to make updates, modifications, and maybe even a major overhaul. The intent is to facilitate discussion, and to be the primary (most accurate) resource for determining which framework is right for you, and right for the task you need to accomplish.

Before the initial release, several of the programmers who are responsible for the creation of these libraries were contacted, and their opinions will always be taken into consideration. This helps us to maintain a balanced, unbiased opinion. The number of options available to developers today can be daunting, and helping you to choose the right tool should be done without any preconceived notions on our part. We will not always be able to guarantee that each of the creators of these libraries agrees on our comparison criteria, but we will always take the steps necessary to listen and cooperate.

The final consideration is determining which libraries to include for comparison. This is a little easier to determine, since the decision is driven from a set of closed questions. Is the library licensed under an open-source license? Is there API documentation, and how often is it updated? How mature is the library, and how often are updates released? Is this a core library, or is it an extension/add-on/plugin to an existing library? These are not the only questions to ask, but they are a few that can help with the process of elimination.

Your input is critical, so let us know what improvements we can make, or drop us an email and let us know if we are on the right track. At the present time there is no plan to include meta-comparisons for different versions of each JavaScript framework. We intend to keep the comparison limited to the most recent release.


Comments:

on 01/02/2008 Jonathan Snook said...

This looks like a good breakdown. The only downfall is that each library really approaches things differently so it’s hard to just look at this and say, “X library is better”. I suspect that’s not what you’re trying to accomplish with this table but I fear that’s what people will take away from it. Otherwise, well done on the research. :)

on 01/02/2008 Brian Reindel said...

Hey Jonathan,

Thanks for the feedback. We are definitely on the same page. There are a lot of concerns with releasing this comparison, and our hope is that developers use it responsibly as an aide to choosing the right tool for the right job. Only time will tell :)

on 01/03/2008 Andrew Dupont said...

Prototype has public unit tests. They live in our SVN repository. Also, regarding “Official widgets/UI toolkit”: script.aculo.us is just as “official” as, for instance, jQuery UI. They’re separate projects, but tightly affiliated and with coordinated release schedules.

on 01/03/2008 Guy Fraser said...

jQuery uses google groups – I’d expect that to give it a tick against forum (row 17) as you can view and post comments/topics via the browser, search for posts, etc.

on 01/03/2008 Aaron Newton said...

Nice work. I agree with Jonathan’s comment above. On the topic, I recently wrote an article on why I choose Mootools vs. other frameworks, and most of the points I make about it have nothing to do with the data in this table. That’s not to say that this data isn’t helpful, but rather that the decision has much more to do with style, (code) philosophy and other subjective things (I also say none of these frameworks make a bad choice; they’re all excellent).

FYI, Mootools 1.2 (due out very, very soon) has included unit tests in the code base, included documentation in the code base, and I’m personally in the process of writing the first book, due out on Apress in a few months.

on 01/04/2008 Vidal Comstock said...

This is silly. Not a single comparison item is usefull. What people need to know is what features/functionality is provided, not these obscure side issues.

on 01/04/2008 PaulHH said...

Any reason that Tibco’s GI isn’t included in the list – I understand it’s BSD/Apache?

on 01/04/2008 Brian Reindel said...

Hi Vidal,

That is actually on our immedate to-do list for the comparison. We will be analyzing features that designers/developers desire like animations, AJAX implementations, etc. The trick is coming up with commonalities that make sense. Thanks for the feedback.

on 01/04/2008 cody lindley said...

@Vidal – Thanks for the comment. However in a kind manner I would like to suggest to you that the table is incredible useful from certain perspectives. For example, this table can quickly help organizations (decision makers) make informed decisions before banking on the use of one of these libraries. This is just a starting point.

From the perspective of a developer, looking for code comparisons, the table obviously falls short. But, again this is not what the table is trying to communicate.

The table is a high level overview of the libraries and the factors that an organization (or development team) might want to consider before using one of the libraries.

I hope that from this perspective you might see some value in the table.

on 01/04/2008 Pragma said...

(surfed on in from dzone)

The breaker for me with most, if not all, JS kits is the total lack of Section-508 compliance. As a government contractor, this requirement has proven as a huge barrier to moving my work on the job toward a web 2.0 style experience.

The other features are nice, don’t get me wrong, but without 508, there’s almost no point.

on 01/04/2008 Andrew Ingram said...

Nice breakdown, should be useful.

Comment about the table though, I imagine it’d be easier to read quickly if you only used the ticks and not the crosses, at the moment it looks like a huge wall of red and green and it’s a bit overwhelming.

on 01/08/2008 Robert Nyman said...

Just some more info about DOMAssistant:

Official hosted minified version:
There is a version offered through cachefile.net

SVN/CVS access is available at the Google code site

Official Mailing list: you can sign up for e-mail updates

on 03/20/2008 Dennis said...

@Pragma: Great point on the lack of attention for accessibility. However, it’s up to the developer to implement progressive enhancement, and maintain accessible content and behavior, and it is possible with some of these JS libraries. For example, with jQuery, the AJAX behavior re-uses the “normal” server calls (such as action in a form)—it’s building on top of the regular behavior. This way, if JS is not available, the default functionality still works.