It’s really hard to answer the question: Was a release successful? In the jQuery project we try to look at a number of criteria.
- Are users pleased with the release?
- Are users adopting the release?
- Are we meeting the needs of those who don’t use jQuery?
It’s hard to put exact numbers on those points (we listen very closely to the response on our blog, on twitter, on the mailing list, and elsewhere – and thus far it’s been very positive) but we do have a couple tools that we use to try and simplify that process, namely: Google Analytics and Google Trends.
Above is a Google Analytics comparison of Jan 2009 (blue) to Dec 2008 (green) for jquery.com.
We’re currently seeing a +30% growth in visitors day to day over December. I’m really pleased to see that the 1.3 release was "sticky" (users liked what they saw and stuck around to keep using it – the daily numbers aren’t dropping to their pre-release levels).
Note the increase of bounce rate and decrease in pages/visit and avg. time on site – both were linked to the 1.3 and 1.3.1 releases where people come to check out the release then leave again.
The 14th of January was the 1.3 release (had a lot of traffic that week – we hit Ajaxian, Reddit, Hacker News, and a number of blogs). We hit Digg on the week of 26th and saw no appreciable gain in traffic.
I trimmed out the Christmas-New Years time frame since traffic was very low (and doesn’t make for a good comparison).
None of this data includes jQuery UI or static files which are tracked separately.
Google Trends has helped us to learn some things about the use of the library. The biggest of which is the "Christmas slump."
jQuery users largely appear to use it during their day jobs (see the analytics stats to see the weekend slumps). Every year at around the December holiday season (Dec 23rd to Jan 3rd) we see a major drop-off in traffic – we can see a direct correlation within the Google Trends stats, as well.
One thing that I’ve learned while managing jQuery it’s that there’s a huge potential to lose users in between projects. A developer ends a project and then re-evaluates his tool chain to see if any improvements can be made. Every time a user finishes a project there’s a possibility that they’ll leave for another tool – it’s our job to make sure that we consistently provide the best tool and experience possible so that the need doesn’t arise (better documentation, better code, frequent releases, etc.).
A very similar problem occurs over the holiday break. The users are away from their code for about 1-2 weeks and when they come back they have a chance to choose another tool, pick up where they left off, or to become engaged and continue strong.
The question now becomes: How well can we retain (and hopefully grow) the userbase over this slump?
If we look at the slump from 2006 to 2007 we see an immediate pick-up again after the users return from their breaks. The reason? jQuery 1.1 was released.
But look at 2007 to 2008 – there was almost no pick-up and it took almost half a year to get back to the point at which growth had resumed. Incidentally, there was no significant release in January.
We fixed that this time around – we released jQuery 1.3. Note how we instantly picked up our users and even grew our share during that time period.
From a growth perspective I’m very pleased with the 1.3 release – I think we’re setting ourselves up for an outstanding 2009. It’s likely that we’ll be pushing another follow-up release (1.3.2) this week to address one last 1.3 regression – but other than that, it looks like we’re in the clear to heads toward some solid new features and fixes in 1.3.3 and beyond.
Joseph McCann (February 1, 2009 at 4:45 pm)
No surprise here! So far I’ve had immense success with 1.3.1. Keep it up John (and jQuery team)!
Wolf (February 1, 2009 at 4:47 pm)
Besides the 1.3 releases, I’m very pleased with “communication” posts like these that clearly show jQuery is or has been the right framework choice. The last thing I would want is a framework that appears to be dead. Keep the good work up!
James (February 1, 2009 at 4:48 pm)
I think it would be interesting to find out where these new users are coming from; other libraries perhaps? Or, are these new users people who would’ve previously not considered a JavaScript library.
Unfortunately, the figures from Google aren’t really a good indication of adoption rate. It would be interesting to graph the quantity of websites still using 1.2.x versus 1.3.x. Does code.google.com offer any stats? – You could compare figures quite easily if so.
What do you mean by “Are we meeting the needs of those who don’t use jQuery”?
John Resig (February 1, 2009 at 4:57 pm)
@Joseph and Wolf: Thanks – will certainly try to keep it up!
@James: Other libraries are certainly one source – but I imagine that the “never used a library before” market is still our best source for new users. I’m definitely open to thoughts on how to make inroads there.
There really is no way to get a good picture of 1.2.6 use vs. 1.3.x use, it ends up being more of a “gut” thing. We’ve been watching people on Twitter and on the mailing lists and looking for problems when upgrading. Thus far there have been very few – and those problems that have cropped up we’ve been quick to fix. I absolutely understand if a company isn’t willing to take a risk to upgrade right away but we just want to make sure that the library is solid for when that time arrives.
“Are we meeting the needs of those who don’t use jQuery” – by that I mean: If someone had tried jQuery and gave up – or someone who is using an other library and isn’t convinced by jQuery – are we giving them features that will interest them? For example: If someone tried jQuery a while ago and gave up because it wasn’t fast enough for their needs – hopefully they’d be willing to come back now that we’ve landed a ton of performance improvements.
It’s hard to determine what that sweet set of features is so it’s something that we try to listen for and constantly improve upon.
Ariel Flesler (February 1, 2009 at 4:58 pm)
Loved the article, John. We rock :)
David (February 1, 2009 at 5:31 pm)
This is amazing. I’m using jQuery for a year now and I can’t imagine, what I’ve done without it. jQuery makes Javascript really enjoyable. Thank you!
Chad Grant (February 1, 2009 at 5:31 pm)
I have been using jQuery for almost two years now, every day…
I would suggest finishing jQuery UI …. jQuery is seriously lacking a stable/usable UI lib which most of the other projects seem to have had forever. I would also suggest reviewing and helping the people out that are writing jQuery plugins, can’t tell you how many times I’ve had to re-write a plugin, fix them or refactor them to the latest jQuery since the authors are MIA.
I tried to switch to 1.3 and had some serious IE issues and I had to revert back to 1.2.6. I’m sure I’ll get back around to upgrading soon.
As an aside, I would also love a “Hardened” jQuery. You added cross-domain hacks to earlier versions … and that almost forced me to stop using jQuery, and might still someday. I work with jQuery in very secure environments and by adding in the cross domain functionality, jQuery has widened the app’s security surface area. Since jQuery is so succinct, it is a lot easier to XSS inject some $.ajax call’s rather than plain old javascript.
Maybe a configurable version? Even if you removed all the $.ajax stuff, jQuery is still extremely useful.
John Resig (February 1, 2009 at 5:55 pm)
@Chad: As to a “final” jQuery UI release, it should be coming out this week. The final RC of 1.6 was just released and UI team is putting the finishing touches in place right now.
As to plugin quality, we’re definitely looking for ways to do code reviews (either automated or manual). Being able to flag plugins that have documentation, demos, good-quality code, and frequent updates would seem really ideal.
I don’t understand your concern regarding the cross-domain requests in jQuery – perhaps there’s a misunderstanding as to what exactly you’re able to do with JavaScript? You seem to be worried about some sort of situation where someone maliciously inserts some jQuery code that brings in a malicious external file (or transmits information externally). If that’s the case you certainly don’t need to worry about jQuery at that point as all bets are off the table – the malicious user can do whatever they please.
Unless you’re worried about some case where you, or an other developer, pulls in from an external API that injects malicious code into your site. If that’s the case that sounds more like a policy decision and nothing to do with jQuery. It’s very-much possible to write code that’ll access external APIs without using any jQuery code whatsoever.
I don’t think there’s anyone who would consider JavaScript to be “hardened” in any respect. You should check out Caja, it sounds like it might be more up your alley. (I should mention that the Caja team is very close to being jQuery compatible – so you’ll be able to continue to use jQuery within this locked-down environment.)
Abdul-Rahman Advany (February 1, 2009 at 6:22 pm)
@john: Could you share you thoughts on 1.4 and beyond?
sNop (February 1, 2009 at 7:45 pm)
Hi,
first i want thank You all and especilly to John that have created so very very good JS framework. It’s very easy to learn jquery syntax, i have learned jquery few hours!! the code is very light, structured and simply to read and learn. Thank you
BUT! I think, that the big weakness of the jQuery is, that the development it’s very veery slow and the lib doesn’t offer users new and new stuff’s. I know that here is biggest repo of plugins and jquery UI, but the develop could be faster ;)
I think, that this release 1.3 was completly and very good refactored and extending will be more smooth and more light than before ;)
But here is very big competition as in first place DOJO, ExtJS, YUI
jQuery is for most peoples springboard and many peoples substitute jQuery for some biggest and more complex framework.
So I suggest, aim yours effort to the new functions and features(if code is clear as never before) and aim one’s effort to the FROMs!!!(
sNop (February 1, 2009 at 7:47 pm)
(form action…) and support for really web 2.0 fuctions as is sites without refresh, because sites without refresh are the future
That is one my view and again thank you for jQuery especially Chainability (The Magic of jQuery) (fluent interface) :D ;)
Thank you John I hope that it’s readable, sry for my english
Neal G (February 1, 2009 at 11:01 pm)
Holy crap, I’ve never seen a Google Analytics number that high!
Steve (February 1, 2009 at 11:14 pm)
No complaint John, I’m a serious big fan of jQuery. I use alot of the UI stuff, as well as plugins.
With 1.3, I had problems with jquery tab views, etc… where I finally figured out I’d have to go ‘fix’ or update all my css files, etc…
jQuery is ‘huge’ – and much effort IMO needs to go in making sure your covering your large user base.
ie. I understand not expecting all the plugins to work, but your very own tabview should be working without a major overhaul.
refactor css style sheets is not an easy task :)
Adam Schwartz (February 2, 2009 at 3:35 am)
@Wolf: Well said, I completely agree.
@John: No question 1.3 is a great improvement. After reading nettuts’s “everything-you-need-to-know-about-13” post I could really tell how much thought was put into this release. But even more importantly, it’s great to see how open you and the jQuery team are with the javascript community at large.
On a side note, Caja is really cool. I can’t believe I’d never heard of it before. Thanks for sharing.
Sam (February 2, 2009 at 6:19 am)
@John: Regarding the goal of attracting the “never used a library before” segment, my largest issue when evaluating jQuery was its minimal error reporting. Typically when you do something wrong with jQuery, nothing happens at all. This is likely typical of JavaScript itself, plus adding error checking to jQuery would increase its size and slow it down.
Nonetheless it could be worth thinking about if anything can be done to improve this aspect of jQuery. New users make a lot of mistakes, and can easily give up altogether if the first impression is that low quality due to perceived bad or nonexistent error checking.
Brian Crescimanno (February 2, 2009 at 10:00 am)
@John,
After reading the post and the performance metrics around the jQuery 1.3 release, we’ve decided that we simply can’t ignore the differences anymore. I’m going to be doing an evaluation this week by porting some of our Prototype-based code to jQuery to see:
1) How easy it is
2) Can we maintain our Object-oriented nature?
3) What improvements do we see in both code and speed?
I’m looking forward to posting the results on my blog; but I wanted to drop a quick line here to thank you and the team for putting out an incredible release here; the performance metrics were simply staggering!
Nosredna (February 2, 2009 at 10:30 am)
@Brian Crescimanno
>>Can we maintain our Object-oriented nature?
I’ve gradually abandoned the idea of object-oriented JavaScript. Or, rather, I’m more interested in objects now than classes. jQuery reinforces that. With jQuery, you’re working with collections of objects rather than a class system.
Having said that, Joose is attracting my attention.
http://code.google.com/p/joose-js/
And there are many other object-oriented systems. That stuff really doesn’t belong in jQuery, which is all about dealing with the DOM.
Sean Catchpole (February 2, 2009 at 11:23 am)
The timing was well placed, and the update to the library was much needed.
I agree that spending some time focusing around plugin development will really help bolster the project. As a user it is a little hard to browse around the plugins, and even harder to notice if any plugin updates. As a developer it is hard to let people know when updates are made, or to spread the word about a plugin.
A few ideas to throw around are tagging for better categories, subscribing to update notifications via email, and perhaps a different voting scheme that promoted and/or featured plugins as they grow in popularity.
Keep up the good work!
James L. (February 2, 2009 at 1:13 pm)
@John: I’m wondering whether Google provides you statistics on jQuery (or other JS libraries) that is loaded through their AJAX Library API?
Keep up the great work!
John Resig (February 2, 2009 at 1:21 pm)
@Steve: We mentioned the Tabs plugin explicitly in the release notes. Since it’s a part of jQuery UI it required an upgrade along with the rest of UI to be compatible with 1.3.
@James L: Unfortunately Google does not provide us with any data, in that respect.
Nick (February 2, 2009 at 2:09 pm)
I love JQuery, but that bottem chart looks like Oil before the crash
Brian Crescimanno (February 2, 2009 at 2:28 pm)
@Nosredna
Thanks for pointing me in that direction for Joose–that looks like a pretty solid implementation. I completely agree that it goes against the philosophy of jQuery to include that type of code in the library; but in our environment we’re trying to smooth the transition for a lot of people very familiar with Prototype.
I’d be curious to know about your reasons for abandoning the concept of OO JS.
Nosredna (February 2, 2009 at 3:08 pm)
>>I’d be curious to know about your reasons for abandoning the concept of OO JS.
It was a gradual transition. The more I got used to building anonymous functions and objects on the fly, the less I used OO.
I mentioned this in my very first blog post… http://dreaminginjavascript.wordpress.com/2008/06/27/the-object-slinger/
One of the biggest challenges in JavaScript is in reading the code of other programmers. I think that’s because the language has so many ways to do thing. There’s not a lot of language there, but what is there is insanely flexible.
Because there is no classical system built in, everyone does it a bit differently, so I really enjoy reading JS that’s based on objects, and I get a stomach ache reading JS that’s based on classes.
Mark McDonnell (February 2, 2009 at 5:05 pm)
I’ve recently stopped using jQuery for every project when I suddenly realised it just wasn’t needed. There is too much bloat for what I needed. The CSS selector was a god send when I first discovered it but then I realised I started to abuse the feature unnecessarily.
jQuery gave me back my passion for using JavaScript, and then it helped push me towards Douglas Crockford who helped me become a better JavaScript developer.
Thanks to John Resig’s “Pro JavaScript Techniques” I’m also able to implement some of the nice animation functions into my own scripts without having my users have to download the 50k jQuery library when a 5k file would suffice!
I still use jQuery though, but only when I haven’t the time for “thinking” and just need to quickly knock something together.
Right tool for the job and in strict moderation.
M.
Kyle Simpson (February 3, 2009 at 10:46 am)
jQuery 1.3.1 fixed the cross-domain iframe bug, and now all of my regression tests for flXHR work great with jQuery (without having to use a patched jQuery). Thanks for all the great work!
Dusan (February 3, 2009 at 10:51 am)
Congrat’s to John & the team !
Just so you do not think of me as the one who asks difficult questions ;o)
Dusan
PS: as for every widely used library — the issue of legacy code is nearing. Get ready.
Roald (February 3, 2009 at 3:22 pm)
People are wondering where the new users come from. I’m new here and I tried to work with dojo and jsp. I stopped using it because it was way to complex and barely supported. Since i’ve been using it I converted half a dozen developers in our company to switch to jQuery as well. jQuery rocks from the first moment on. We used to use server-side rendering of pages using jsp and only used dojo where absolutely needed (because it costs to much time tom implement dojo). Now we use client side rendering of the page and inject the data with the jQuery ajax functionality. We have gained about 500% productivity using this method. And since productivity leads to money, we will not turn away from jQuery any time soon :-D
Nosredna (February 3, 2009 at 6:08 pm)
The only problem I had in moving from 1.2.6 to 1.3.1? I had some deprecated @’s lying around.
Luckily it was the first thing mentioned in the “Upgrading” section.
“The ‘@’ in [@attr] has been removed. Deprecated since 1.2 this old syntax no longer works. Simply remove the @ to upgrade.”
F1LT3R (February 4, 2009 at 11:48 am)
Upgrade went very well for me thanks jQuery team. I had plenty of @’s lying around also. But that was the ONLY issue I have came across so far. Good to see the little j is still growing. Every web-designer I’ve shown it to has fallen in love with it’s simplicity instantly. I really like MooTools too, but jQuery still holds the magic for me. It has completely changed the way I write my APIs.
Tomasz T (February 5, 2009 at 9:29 am)
Keep up the great job and thanks for the insight on what’s going on behind the doors, really interesting to see analytics as this one.
I can tell you from looking at my own play field that jQuery in Poland is getting really strong, almost every job position for front-end web developer when you browse through the offers mentions knowing jQuery as essential or desired perk so keep it up! :)
Oh, and loved the way the traffic drops on weekends – gives hope that it is possible to have a weekend off!
TT
David Murdoch (February 5, 2009 at 9:49 pm)
One thing that shocked me was that :first and :last (and others, I think you call them position selectors) were broken in 1.3. But it did force me to dive into the sizzle code to see what was going on in there.
p.s. I’m looking forward to Secrets of the JS ninja.
David Murdoch (February 5, 2009 at 9:52 pm)
I forgot to mention how said selectors were fixed in 1.3.1. Go jQuery team!
Derek Pennycuff (February 9, 2009 at 9:36 am)
I plan to make the switch to 1.3 later today. Plug in breakage is the only problem I ever have when updating jQuery, and there’s not much that can be done about that. When I updated to 1.2 I figured out that one broken plug in was using some outdated method that I could replace with slice(), so I did and then everything worked fine. In a perfect world the plug in authors would do that for me in a timely manner. :)
Tom (February 11, 2009 at 11:52 am)
Can we have more information about what maybe coming in 1.4?
carlos (February 28, 2009 at 10:30 am)
@jhon, people are not a bunch of numbers, and anyway to some extent what you have done with jquery is good but lots of the stuff that is included in jquery comes form other people , not you.i will never see the point in buildin a js library and to see so many people using it.iy can bring lots of satisfaction at first(oh yeah i can do a toggle with a timeout animation)but in the end libraries are not worth it.
Rui Luis (March 6, 2009 at 11:06 am)
Before i start using JQUERY my javascript knowledge was almost zero, besides copy pasting or small tweaking some little spinets i truly did not know what i was doing
Wend i first start using JQUERY almost 2 years ago I immediately felt in love with the ease and fun that i could do some pretty advanced stuff – well at least to me they were advanced.
I’ve been growing with this library and with JQUERY documentation being so well written it’s a pleasure to come back and keep learning new stuff.
TANKS
taelor (March 19, 2009 at 8:37 pm)
Asking if jQuery is a success is like asking if a kid likes ice cream!
Of course its a success! Every web developer I know, I try to get them to use some jQuery, and they fall in love instantly.
Keep up the great work.
BrandonZ (March 24, 2009 at 11:16 pm)
@carlos
How familiar are you with classical languages? Personally, I see writing in JavaScript without building or using an existing library of some sort like going from C# or Java back to C++. I, like most frontend developers, would rather spend more time on business logic.
carlos (March 26, 2009 at 8:26 am)
@brandom,
i really love classical languages like java or C but im not really into them, just from time to time i read a very good book i have about C and then “sees” from where it all comes. i like writing and affronting logic problems in plain javascript because this way you can really see the “mechanism” of it but yeah this can also be called “love for the art”, libraries have their place too for production i guess. oh and sorry for the comment “prototype is better”(this actually means nothing), what do you mean by “spend more time on business logic”?
Arun (March 27, 2009 at 2:57 pm)
Hi John,
This is first time i came across to work on a project involved jQuery, I need to learn it more from start, can you refer me some good resource or book which i can buy to learn it more. I need to learn the design practice followed by jQuery. Thanks
shamun (May 1, 2009 at 4:00 pm)
John,
jQuery, YUI, extjs, bindows etc making the web complex. jQuery is great tools, its like spider man movie, you are the hero, dont forget powers came to you, you have the power now to burn.
jQuery concept is great, why not you focus the jQuery UI, to have (Visual Basic 6.0 GUI tools so that any users call)
(list of YUI tools making good job, but they are making it like c/c++ which have no father like java.)
What the world will be shocked from jquery is i think as following:
# Idea comes but power not comes to everyone
# – any ‘gui.’ = load plugin automatic and put the GUI item in the window
#
$(gui.form1).load.visible = true; // a GUI window is placed in the whole page.
$(gui.form1.button1).visible = true; // a button is reloaded in container
$(gui.form1.text1).visible = true; // a text box is loaded in the form1
# What it does is, changing the world of javascript to GUI javascripting, which was a big job and a future of coding.
# Other companies can then create a IDE to use jquery for GUI designing, and it can be a very good release!
Its a great job u are doing. But put some more creativity on GUI Javascripting (all you need create the way, there are millions of ppls can read the road map and create our own massive new jQuery ).