I recently had the opportunity to read through some of the, brand new, Learning jQuery book and I wanted to take this opportunity to write up some of my thoughts concerning the jQuery project and open source in general.
Learning jQuery was written by Karl Swedberg and Jonathan Chaffer and I feel lucky that they were the first to have been given the opportunity to write about jQuery. Being part of the core jQuery team, I’ve had the opportunity to come to know Karl quite well in the past months, and especially within the context of his book writing effort. Looking at the end result, it’s clear that his skills as both a developer, and a former English teacher, will suit the reader well.
What’s most interesting for me, though, is the subject matter and context of the book. jQuery has always meant something completely different to me, than to most people, so to see it described in such a frank and descriptive manner is quite an experience.
For example, whenever I talk about jQuery, I inevitably discuss the design decisions that surrounded picking the feature-set that I did, and why I chose to set the focus of the library on DOM interaction above all else. Whereas, Learning jQuery immediately jumps into “What You Can Do” with the library, followed by many chapters of “How You Can Do It”. In the context of the book it works quite well, but it provides a stark contrast, for myself, as to how the library relates to me, personally. For example, the sum total of my work and design decisions that have gone into the library is relegated to a single line of a single paragraph at the start of the book:
Created by John Resig, jQuery is an open-source project with a dedicated core team of top-notch JavaScript developers. It provides a wide range of features, an easy-to-learn syntax, and robust cross platform compatibility in a single file…
Seeing my work divorced from my personal experience is surreal and fantastic, for all that I know about jQuery is my personal experiences in creating, and sculpting, it over the past couple years. Seeing the library progress to a point that transcends anything that I’ve put into it is both exciting and daunting.
For me, jQuery is much more than a block of code. It’s the sum total of experiences that have transpired over the years in order to make the library happen. The considerable ups-and-downs, the struggle of development together with the excitement of seeing it grow and succeed. Growing close with its users and fellow team members, understanding them and trying to grow and adapt.
Seeing this long tome talking about jQuery and discussing it like a proper tool, as opposed to the experience that it’s come to encapsulate for me is what makes this such a strange read for me.
I’m not the only one who enjoys jQuery on a plane that is far different from a normal tool-user relationship. I don’t know if I can properly encapsulate why this is, but it’s something that you can’t get from reading a book, nor produce simply through following tutorials.
It’s almost cliche, at this point, to say that your open source project is community-oriented, or that you want to focus on helping new users get started. But it’s not just an orientation for jQuery, it’s the liquid-oxygen fuel for the project.
I’ll confess that I’ve never truly participated in a large open source project before, nor have I really, truly, understood how they worked internally. Taking nuggets of information that I could pan from projects like Drupal and Dojo, I began to better understand how an open source project could be structured and run. Before that point, though, I made a couple (and in retrospect, rather radical) decisions that have helped to truly shape the project and make it what it is today.
The first decision that I made with the library was to sculpt a sort-of custom programming language around the concept of HTML-JavaScript interaction. Instead of enhancing the normal DOM layer (using simplified method names, for example), I instead decided to make selectors the absolute core of the library (making it a sort-of CSS-JavaScript-HTML-DOM domain specific language).
An example of jQuery-as-a-language:
$("div.section") .find("ul") .addClass("sectionlist") .hide() .end() .filter(".header") .find("h1") .css("fontSize", 20) .click(function(){ $("ul.sectionlist").show(); }) .end() .end();
I love being able to see users who truly understand just how different the end result can be, especially in comparison to normal DOM scripting. There’s a specific moment where it just clicks for them, where they realize that, this tool that they had been using, was in fact much much more than that all along. And suddenly their understanding of how to write dynamic web applications completely shifts. It’s an incredible thing, and absolutely my favorite part of the jQuery project.
The next decision was to form a jQuery Evangelism team, led by Rey Bango, to drive the jQuery community. At first, I only really expected this team to focus on things like handling community participation on the mailing list and blog tracking/response, but it has since progressed rather drastically.
Blog tracking is a particularly interesting area of project evangelism. A couple points had come up to make it necessary: First, that it was important to get a good response to user comments and questions (and it had simply overwhelmed me, personally) and secondly, that it was important to get a good, consistent, response to people, coming from the project itself. (We had had a number of instances where misinformation was spread, and although it was done with best intentions, it was better that we get an accurate message out first, acting as a definitive voice of the project.) Tracking is also quite controversial. We’ve been able to answer the questions and doubts of dozens of bloggers. The end result being users who aren’t just interested in this new project, but almost fanatical.
This brings up the second interesting point about evangelism, and its logical next step: relation management. While we don’t, internally, yet have a proper CRM to keep track of all our users (we’re in the process of switching to Basecamp to try and make this possible) we do keep very close ties with all of users, even giving special attention to high profile companies and open source projects (at our discretion). This is something that the evangelism team really takes to heart, and something that most users don’t see. We keep internal threads to track specific problems that a user might be having, trying to figure out ways that we can best help them (either through bug fixes, pointers to specific resources, or simply affirmation that we’re there and we care about their progress with jQuery). We don’t really have a specific means of picking which people we pay extra attention to (if we were a business, it would be the customers that paid us the most, I would assume) but it boils down to which people have the biggest opportunity to make the project look good. (So open source projects, companies with public-facing web sites, and vocal/influential users and bloggers; and roughly in the order too.) This is something that we’re still working on, and we’re starting to get real good at it. What’s interesting about this, though, is that this is what helps us to turn a normal user into a devoted user – one whose interest in the project goes beyond that of the normal tool-user relationship.
All of this is related. How we run the project, and how you use the code, is fundamentally very different from most open source projects, and most JavaScript libraries. We’re incredibly devoted, and understand this fundamental difference in how our code works, and pass that on to our users. Devoted users breed more devoted users, and the cycle continues. This isn’t something that you can get from a book, nor is it something that you can read to understand. It’s something that you actually have to experience in order for it to fully sink in, and something I hope that most of the book readers will be able to enjoy.
Incidentally, I get the feeling that the jQuery community will be increasing the book sales, and not the other way around.
pd (July 25, 2007 at 5:58 am)
Thanks for this insight John. It’s a shame you seem to feel that the book understates your work. I’m sure it’s difficult to see ‘your baby’ promoted by others in a manner you don’t find completely comfortable.
On the other hand, as you seem to suggest, the book is a step in the growth of the library and that has to be a good thing. You also mention how hard everyone is working to maintain touch with those using the library. I expect that this will hopefully help you keep close to the library you have no doubt spent countless hours and great energy developing.
Keep up the great work John. The jQuery syntax takes a little familiarising but the selector and DOM manipulation power behind the syntax is what makes jQuery brilliant.
Felix Geisendörfer (July 25, 2007 at 8:23 am)
Fantastic and inspiring post John. I remember how you guys picked up my first blog post about jQuery which was the first time I realized the community of this project goes beyond of what most OS projects have to offer.
I can also confirm that there is this the moment where one realizes that the approach taken by the library itself is very radical in terms of providing more then just a tool, but an entire philosophy on how to write interactive web applications. Yet another aspect of what makes jQuery so great of a project.
Another thing that sounded familiar was how you mentioned that jQuery in a way documents your journey in becoming an (incredible) JS developer. The reason for this is: Whenever I look for the solution to a specific JS problem or simply want to improve guess what I do? I open up the latest version of jQuery and read the source. IMHO there is no better place for exceptional JS code to study.
Anyway, enough praise (I could fill pages with it for jQuery). Thanks for this post and hopefully other OS projects will be able to learn from it. I certainly will try to make some of that good jQuery juju spread to the CakePHP community ; ).
— Felix
Jake McGraw (July 25, 2007 at 9:12 am)
John:
Since discovering jQuery, I’ve been inspired to devote more of my time to actively participating in open source projects. Helping others on the jQuery listserv and developing JavaScript front ends for various Drupal modules has been an incredibly rewarding experience. I have both you and the jQuery team to thank for this for fostering such a great community.
Once again, thanks for all the hard work and forethought!
– jake
Sander (July 25, 2007 at 11:31 am)
Must be difficult to let go of your baby and have others tell you what it’s all about. Anyway, I love jQuery and it’s good to see success happen to a nice guy (cf. barcamp nyc 1)
Do politely question your choice of BasecampHQ software for CRM. It really isn’t suitable for a large project/client base. Highly recommend vTiger (open source) or Salesforce (simply professional) instead.
– sander
Simon Reed (July 25, 2007 at 5:18 pm)
Awesome article, jQuery’s DOM handling and CSS-Javascript-HTML-DOM orientation make it such an exciting library with some of the most passionate users.
Seeing the passionate that your work has created must invoke a very strong pride. As ever thanks for the posts and your hard work, it’s very much appreciated.
Rey Bango (July 25, 2007 at 5:53 pm)
@pd & Sander: I didn’t read anything that would seem like John feels that his work is understated or he’s letting go of his baby. What I got from that posting is that he now views the project from a totally different perspective, one of which you can’t typically achieve without taking a step back. The book gives him that perspective.
Talking to John on an almost daily basis, I’ve been fortunate to see how he’s changed and grown along with the jQuery project, all in positive ways. From the day he brought on the first core developer to the day he asked me to help him promote jQuery, John has actively extended control of certain facets to others because he realized that the project couldn’t evolve without doing so.
At the end of the day, he’s not losing his baby, he’s helping it grow up the right way.
Karl Swedberg (July 25, 2007 at 6:30 pm)
John, thanks for this eloquently written post about your experiences. I’m grateful that you took the time to write down your thoughts about the book and the community and jQuery itself. I can only imagine what it must be like to see your personal project take on a life of its own. It must be, in some way, similar to the feeling parents get when their kids go off to college. I hope you know that both your work on jquery.js and your leadership of the community that has built up around it have been a huge inspiration to me and many others.
Rey, thanks for your response to pd and Sander. I think they may have missed the point John was trying to make.
General note, for the record: Jonathan Chaffer (who deserves tons of credit for the book; he’s a brilliant programmer and a great writer) and I set out to write a book about what you can do with jQuery and how to do it. We could have padded it with “A Look Behind the Scenes at the jQuery Project” or “John Resig, My Hero” (and he really is my hero), but I think most readers will appreciate that we kept the focus on jQuery as a tool. That said, jQuery is much, much more than a tool to me, too. My whole experience with jQuery over the past year — from learning how to use it, to helping others learn and use it, to participating on the project team, to getting to know John and Rey and many others in the community — has been life-changing. The whole thing caught me by surprise. And I’m very glad it did.
whooops (July 25, 2007 at 10:23 pm)
well if you want stricter attribution control, put it in your license. hell, someone might even fork jquery one day and get totally rich off of it. stranger things have happened…
Rey Bango (July 26, 2007 at 12:28 pm)
@whooops: In terms of changing the license, I don’t see that happening but thank you for the suggestion. Forking is a concern with any OSS project. If that happens, I’m sure we’ll handle it the right way. I don’t think John is in need of any attribution and I believe you’ve misread the intention behind his post. If you read my comments as well as Karl’s I think it will give you a different perspective.
Finally, don’t be afraid to post your name. We don’t bite. :)
Dylan Clendenin (July 31, 2007 at 11:56 am)
everyone:
I am really loving using jQuery. It might be backwards, but jQuery is my first step into using any code libraries or anything for a functional web app. I can’t believe what I’ve built with it so far. I am proud of it. I agree, John, it is awesome when jQuery “clicks” as you are using it—I am looking forward to much more of that in the future.
I can just say thanks to all the helpful programmers in the IRC chat room. I found the room yesterday and someone helped me do in five minutes what I haven’t been able to do in weeks of tinkering. I think it is so COOL you guys are doing this, and I can’t say that enough. Thanks.
hayden (August 3, 2007 at 2:01 am)
Hi John and team,
Firstly (and almost supuerfluously) thankyou for the INCREDIBLE work!
I come from a design background (not com-sci) and have been using jquery for a while now but the ‘click’ you spoke of is harder to come by… so I’m wondering if there are any plans (by anyone on the team) for a more conceptual book?
veking (August 6, 2007 at 9:05 am)
I want to join Open Source Community,for jQuery do contribute.
John Resig (August 6, 2007 at 6:39 pm)
@hayden: Possibly – I’ve been asked by a couple publishers to do an advanced book, but I just don’t have the time. We’ll have to see!