One problem that we’ve encountered with jQuery, and that I did not foresee by any stretch, was the difficulty in synchronizing releases with other projects and companies. Specifically, when certain projects need the latest copies of your code by a certain time in order to make it for inclusion.
There’s two classes of problems, as far as I’m concerned:
- When a project is including a library for the benefit of its users (plugin authors, module developers, theme writers, etc.). Generally these deadlines are much more important. Having a release come out in time, to synchronize, could influence the next year of development in the project. Missing the deadline causes users to be stuck with old code and deprecated APIs.
- When a site needs a copy of the library in order to meet an upcoming deadline. These can be easier to meet. Typically the issue here is a single, problematic, bug fix – or important API addition. Thankfully, it’s usually sufficient enough to just build a nightly for them, to get them started – it’s not always a requirement that they be using the final version of a release.
Broken down within those two categories there’s a degree of freedom: A site, or project, could be Free Software (and open source) or closed – and generally proprietary. How you choose to deal with each of those categories is completely up to you. For example, as an open source project yourself do you give more leverage to other open source projects in the hopes of future collaboration? or do you give more attention to corporate projects in the hopes of more eyeballs and potential donations?
At the jQuery project I’ve generally split our time indiscriminately but with a sleight bias towards Free Software. By biasing towards Free Software projects we’re able to get better mind share amongst developers – who are our key users. For example, getting jQuery support in Drupal was a major victory for us as it meant that all future Drupal module developers would be compelled to, at least, examine jQuery to see if it suits them well, or not. While there isn’t, necessarily, a financial reward to working closely with Free Software the eventual market control will be quite significant and useful for further leverage.
The actual synchronization process, itself, can be quite challenging. Frequently, only corporations tend to have rigid release schedules (which can be a good thing, as it gives you a tangible goal to work against). Whereas open source projects will have loose deadlines like “sometime within the next two weeks,” which are especially problematic. The only solution here is to become really good at communication. I wish I could say that I had some magical tool that made it easy, but that’s definitely not the case – and it’s only barely gotten easier with time.
The result of this whole process is that you end up having to keep really close tabs on your big-name users. This is why I constructed the jQuery Evangelism team. They work hard to ping our most influential users to make sure that we keep on top making them happy. Sometimes this means some level of tech support, bug triage, and even free consulting – but the end result is most-definitely worth it.
I want to take a look at some of the best partners that we’ve had for the jQuery project, in terms of pay-off, from the work that we’ve put towards on synchronizing our releases.
Drupal – Partnering with Drupal has been huge for us. They use jQuery all throughout their system and recommend it to all of their module and theme authors as the JavaScript authoring interface of choice. They were our first partner and we’ve learned a lot from working with them. It’s because of them that jQuery is dual-licensed under the MIT and GPL (they are a GPL-only shop). Because we were able to bend to help them we saw a huge increase in our user base. We’re in the process, right now, of synchronizing for their upcoming Drupal 6 release (and will be doing an extra jQuery 1.2.3 release for them, to help them out).
WordPress – This has been a, relatively, new partnership for us but we’re already starting to see some of the benefits. WordPress’ use of jQuery was gradual. At first they included it as an optional include for theme authors, then they migrated the admin interface to use jQuery, and then finally made jQuery the library of choice for plugin and theme developers. We haven’t done much, explicit, synchronization with them, yet, but this is definitely something that we should work on.
BBC – They recently redesigned their homepage to use jQuery and Interface. Unfortunately, we found out them too late and we weren’t able to help them (they had been having troubles with jQuery UI and were forced to revert to using the Interface plugin). This is a case where synchronization would’ve helped but will need serious improvement in the future.
Digg – They’ve been our most loyal, and dedicated, corporate partner. We’ve worked hard to resolve weird bugs, included specific features, and push new releases out to help their projects. In return they’ve redesigned the Digg homepage to use jQuery and use it in the Digg iPhone application. We have a great line of communication here, which has been excellent.
Google – Projects at Google, using jQuery, have started to pop up which has been really exciting for us. Coordination with them has been much more challenging as it’s generally on a team-by-team basis (most decisions as to which libraries should be used are done by the developers themselves rather than by the corporation). However we’ve had a lot of success in communicating with them on the jQuery developer mailing list and have received numerous bugs and patches, which has been quite helpful.
Adobe – This is one of our upcoming partners. We’ve been working with them to try and make sure that some of their upcoming releases go smoothly. This is a case where a corporation will be providing copies of jQuery for developers to use (a different use case for us, as this is typically coming from open source projects). We’ll be seeing a lot more from this partnership in the upcoming months, which will be exciting. They’ve been great about keeping communication open – conference calls, emails, and patches – a great partner.
Mozilla – This is probably our highest communication-level partner, for the simple fact that I work at Mozilla (which tends to get developers excited, when they know that they have someone whom they can ask questions of). Additionally, however, our relationship has gone well beyond that – including the integration of our test suite into Mozilla’s test suite. I’ve also worked hard to make sure that the release of Firefox 3 would go as smoothly as possible with jQuery. Obviously this is one of our most fruitful partnerships – playing on both teams will have that effect.
In the end, the synchronization of releases is an interesting problem. It’s, generally, un-related to the actual code of an open source project but instead completely hooked to its process. I feel like a lot of projects leave administration and process by the wayside, and for that tend to suffer in the long run. It’s a lot of hard work but the benefit that you’ll receive, through your successful partnerships, is just too strong to ignore.
Robert (January 25, 2008 at 2:12 am)
As the developers of Textpattern, we have found it quite pleasing to have jQuery as a default JS library, and we noticed that plugin developers are happy to have it at their disposition since our initial inclusion in the Textpattern distribution package.
As long as compatibility isn’t an issue, we tend to use jQuery as an infrastructure component with it’s own life cycle where we wouldn’t expect to have large release synchronizing issues.
John Resig (January 25, 2008 at 2:36 am)
@Robert: That’s fantastic to hear! Definitely be sure to drop me a line if compatibility becomes an issue (and when you’re planning on doing another major release, so we can make sure that you have the best code available).
Mladen Mihajlovic (January 25, 2008 at 3:22 am)
I also see that the Trac project has started using JQuery in their releases too. Might be worth watching…
Mladen Mihajlovic (January 25, 2008 at 3:24 am)
PS, I’m quite glad that you’ve started bloggin on a more frequent basis – I think the JQuery blog needs some more frequent posts too ;)
John Resig (January 25, 2008 at 3:29 am)
@Mladen: Yep, Trac has actually been a long-time user of jQuery, it’s been great having them on board. Thankfully (?) they don’t have as much issue with synchronization as other projects do as they don’t have releases very often. If I remember correctly they started using jQuery a couple months after it came out and still have yet to release the final version of 0.11. Not necessarily a problem, it works just fine for us. I love the new Ajax-y features in it, though – it’s great knowing that they’re powered by jQuery!
backdraft (January 25, 2008 at 5:21 am)
I use jQuery for itbreaks.com and I still use interface plugin, I have too many troubles with jQuery UI. I hope it will be well improve.
pd (January 25, 2008 at 8:00 am)
Congratulations on the success of jQuery John. You very wholeheartedly deserve a lot of kudos for producing – with your team – probably the best contribution to the web since Firefox 1. Mozilla should give you a raise.
Robert Accettura (January 25, 2008 at 8:40 am)
Really good stuff. I did however run into ticket #2174 the other day at work while upgrading jQuery… thankfully trac had a patch already, so I applied that to the release and everything checked out.
Keep up the good work.
Next up I need to see about perhaps using jQuery UI in some places… but that might be a bigger project.
Ted Mielczarek (January 25, 2008 at 9:53 am)
We need to get Bugzilla distributing jQuery so we can fix fun stuff like https://bugzilla.mozilla.org/show_bug.cgi?id=386600 (JavaScript autocomplete for review request field).
Travis (January 25, 2008 at 11:44 am)
What, no BrandLogic? ;-)
FWIW though, I just updated our standard XHTML templates last week and included jQuery by default since we seem to have a use for it on every project.
Tane Piper (January 25, 2008 at 11:56 am)
As a long time user and occasional contributor to jQuery, I have loved seeing jQuery go from neice tool to the one of the most powerful JS libraries on the web.
Great post, I agree there needs to be more sync between projects when they depend on each other. I was there when the D6 team wanted to freeze the beta with jQuery 1.1, which would have created a divide of sites using old, potentially buggy or insecure code. I think Projects like Drupal and WordPress need to be prepared to release more macro-releases with updates to just 3rd party libraries that are used.
Marc (January 25, 2008 at 1:03 pm)
Thank you for outlining jQuery’s communication and partnerships with the marketplace. This is gold for the corporate workforce, since it shows that you are open and putting forth effort to strengthen relationships with high profile companies that fuel the marketplace, and our lives.
I use products from mozilla, google, intuit, digg, wordpress, drupal, adobe, etc.. It makes me proud of the time I spend working on and with the jQuery project and surrounding community. You show great leadership and jQuery is helping out companies whom I respect and cherish their products.
Keep up the great work – John, and everyone else involved.
Patrick Wolf (January 25, 2008 at 1:38 pm)
Great to see jQuery in more and more products/web sites!
But speaking of different versions used by the products, it’s currently quite hard to get a jQuery documentation for a version which isn’t the current version. jQuery.com just contains the documentation for the last version. It would be useful to include the documentation of a release into the distribution or add a section on the web page for the old releases.
Keep up the good work!
Patrick
Toe (January 25, 2008 at 3:24 pm)
I know Eclipse does rather large coordinated releases. Granted, jQuery’s userbase is more diffuse than Eclipse’s (an Eclipse plugin is used with Eclipse, while jQuery is used in all sorts of places). Still, I wonder if they might have any tips.
Toes (January 25, 2008 at 5:33 pm)
>>Adobe – This is one of our upcoming partners.
Would that be due to Adobe AIR?
Karim Nassar (January 25, 2008 at 6:08 pm)
John, Just wanted to thank you for your (and everyone else’s) hard work on jQuery. We’ve recently begun a migration program of our client-side application layer to jQuery from a number of legacy libraries, and the experience has been great.
(BTW: Any chance that jQuery’s unit test framework might be packaged for distribution? We’re still looking for a good test suite.)
Nick Fletcher (January 26, 2008 at 2:02 am)
Nice to see so many big names up there.
I work as a contractor developing internal web tools for Cisco Systems and my team has started using jQuery as our primary JS library. I have to say that every second has been a dream.
Like many posters before me have said, we have unfortunately had to downgrade to the 1.1.2 in order to keep compatibility with the Interface plugin. jQuery UI is showing great potential, but unfortunately it’s not quite as stable as Interface.
Thanks for all the excellent contributions you’ve made to the web development world, John. I just ordered your book yesterday. :)
ffrk (January 27, 2008 at 8:11 pm)
I second Toes question: Would that be due to Adobe AIR?
Chris Charlton (January 30, 2008 at 11:35 am)
I’m an Adobe User Group Manager (LA AIR), and I’m a LA Flash & LA Drupal member, and I see jQuery popping up all over the place. I use it, friends use it, people blog about it. :)
I also made a free Dreamweaver extension for the jQuery API; for versions 6-9 (MX-CS3), over at http://xtnd.us
Rob Tan (February 12, 2008 at 2:58 pm)
We are also using the jquery plugin, “interface”, which has a dependency on jquery 1.1.2. It is a great plugin but its dependency on an older version of jquery is a major drawback. Are there plans in the near future to upgrade interface to be compatible with later versions of jquery?
Shaddy (March 7, 2008 at 7:01 pm)
When we started working on our free learning management system, Trellis, we decided to enhance it with jQuery. We consider it to be a critical component of our system since it allows us to quickly and easily incorporate advanced interface and interaction functionality we would not have had time to develop from scratch. The Trellis team thanks you for the contribution you have made to the free software community. Thanks.