John Resig: From Custom Scrollbars to jQuery, Mozilla, Khan Academy and Beyond
I’ve always been a fan of John Resig (Wikipedia, Personal site). It might be safe to say that anyone web developer out there owes Resig a huge thanks for making web app development much easier. We take for granted that we no longer need to worry about hand-writing 5 different versions of XMLHttpRequest and maintaining all of them separately for each browser. The same could be said of the countless contributions that lie within the jQuery library: method chaining, selectors, traversal, animations, the list goes on.
- Quick background: started out in high school designing web sites for friends and freelance work. Initially used Perl and CGI.
- Where did the idea for jQuery come from? Resig was scratching his own itch. Didn’t do client scripting until 2004. Idea started at a branding firm internship when Resig was asked to create a customized scrollbar. Resig argued against it because the complexities of cross-browser compatibility support.
- Where did inspiration come from? Prototype, Dojo, Mochikit were good but not easier and simpler. Focus on reducing cross browser issues. Inspiration came from Prototype’s behavior library. New library used CSS selectors, event binding and animations. First released in 2006 while Resig was in school.
- What set jQuery apart, why did it succeed? jQuery was the first client side library released with documentation. Prototype didn’t get any documentation until 2007.
- How did jQuery grow post-launch? Lots of blogging, commenting on other people’s blogs, responding to bug requests, strong focus on community answering every single support question on the mailing list. Tried to get promoted on Delicious and Digg and it performed very well on both sites. There were some inflection points, but mostly a gradual increase over time. It was around 2009 where jQuery became the undisputed leading library.
- Getting into Y Combinator: Resig left college in 2006 to do a startup in Y Combinator with two of his friends. He was writing a book, releasing jQuery, and the startup all at the same time. He was rejected from the first batch using one of his college side projects (Schedule Maker), but applied again the following summer with a new idea that was accepted (JumpChat). The idea was to send messages to groups of friends regardless of medium (text message, e-mail, etc). The idea failed because they could not raise money and eventually ran out of money, but was a great learning experience.
- How does the jQuery team work remotely and stay productive? The main issue is with communication. The team has changed apps numerous times, but currently they hold all meetings publicly and in IRC. All of the subteams (jQuery UI, Core, Grid, etc) are responsible for maintaining their own blogs of weekly updates.
- What is the jQuery release process like from idea to released code? It’s mainly by group consensus from the core committers. They collaborate and try to understand how many blockers or major issues there are or where the focus should be. Deadlines are set based on those discussions. jQuery 1.7 in progress and holds open forums allowing proposals (bug fixes, feature requests, etc). 81 submissions were submitted for jQuery 1.7 and jQuery team decides “yes”, “no”, or “I don’t care.” They get ranked and then assign people to specific tasks. Critical issues are called “blockers” and the release won’t go live until those are all addressed.
- What’s the design philosophy behind jQuery? Keep the code simple, above all else. Simple code that works with fewer use cases is superior to more complex code that handles more use cases. Everything must be documented. Everything is immensely clear as to what is going on. Cross-platform compatibility is also very important.
- How are feature request conflicts or contentions handled? If someone really wants a specific feature, it becomes their job to make the changes and improvements.
- What’s the next big thing? Node.JS looks promising; there’s lots of room for improvement in many spaces.
- Are there universal traits you look for when deciding to work with someone? Depending on the project, the person must have a deep understanding of their field (e.g. Prototypal inheritance, functions, closures, as well as how the DOM works, browser quirks from IE 6/7/8, etc). In general, Resig looks for people who go above and beyond. Many students from M.I.T. were very smart and had good grades, but they did nothing outside of class; they knew Java and LISP, but they might not show initiative to do anything else. Looking at another candidate who does something like building several projects in Ruby on Rails is much more competitive and appealing to work with. Don’t be content to do the bare minimum. GPA is not a good indication (Resig had a bad GPA in college).
- Student advice: If you contribute to an open source project, employers can see the code you write, how well you work with others, the documentation you write, how clear your API is, etc. Compared to someone who doesn’t have the same experience, it becomes much easier to hire you. You can go from “just another college student” to someone far above and beyond that. Nothing else matters except code in the end; it’s a complete meritocracy in the software industry.
- Why leave Mozilla? Resig saw a job posting on Hacker News and thought about it briefly. He realized this would be absolutely amazing to work with them. jQuery is in a great position where Resig doesn’t need to spend as much time to keep it running smoothly, so looking to get back into application development, Resig reached out. There are lots of interesting technical challenges (building a mobile application as well as a framework for building exercises) and social problems (how to get people involved and contributing). Resig says it’s a huge opportunity to help people learn.
- Will Khan Academy add computer science curricula such as data structures and algorithms? It’s definitely feasible—more of a matter of “when” rather than “if”. This might something done in Resig’s spare time.
- Khan Academy is hiring. Looking for well-rounded developers (server-side and client-side). Front-end development is very hard; some server-side developers just can’t hack it.