jQuery 2.0 Beta 2 Released

Posted on by

The next beta of jQuery 2.0 has arrived! This beta has several changes and tweaks based on the feedback we received from those of you who generously tested the first beta. We really need you to test this version as well and let us know what still needs to be done. We believe this version is very stable and ready for you to try; don’t wait until the final release and then find out your code doesn’t run with it.

Remember that jQuery 2.0 will not run on IE 6, 7, or 8; we’re saving that duty for jQuery 1.9. We fully expect that most Internet web sites may continue to use jQuery 1.x for quite a while, as long as older versions of IE still comprise a large proportion of web surfers. And so the jQuery team will also continue to support both the jQuery 1.x and 2.x lines. Don’t feel like you’re missing something or falling behind by using 1.9 on your web site, since the APIs for 1.9 and 2.0 are the same.

If you’d like to try jQuery 2.0 on web sites where you still need to support IE 6, 7, and 8, you can use conditional comments. All browsers except old IE will get the second script and ignore the first:

<!--[if lt IE 9]>
    <script src="jquery-1.9.1.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0b2.js"></script>
<!--<![endif]-->

There are lots of other environments where jQuery 2.0 should fit in very well. Here are a few suggestions:

  • Google Chrome plugins
  • Mozilla XUL apps and Firefox extensions
  • Firefox OS apps
  • Chrome OS apps
  • Windows 8 Store (“Modern/Metro UI”) apps
  • BlackBerry 10 WebWorks apps
  • PhoneGap/Cordova apps
  • Apple UIWebView class
  • Microsoft WebBrowser control
  • Cheerio or jsdom with node.js
  • Intranet applications

On the node.js front, the jQuery team now owns the “jquery” and “jQuery” names in npm and will soon be shipping 2.0 releases there.

You can get this latest beta from the jQuery CDN:

http://code.jquery.com/jquery-2.0.0b2.js

To run pre-1.9-era code with jQuery 2.0, you can also use the jQuery Migrate plugin to restore deprecated features from those older versions and/or diagnose compatibility issues. We strongly recommend that you do use Migrate for older code, it will save a lot of time and trouble in debugging.

What’s New

Lots of bug fixes: All the relevant fixes from jQuery 1.9.1 and 1.9.2pre have been incorporated into jQuery 2.0 beta 2. We sadly had to back out some optimizations that aren’t supported by older versions of WebKit such as Android 2.3, but most of those didn’t have a significant size impact. Still, we plan to bring them back as soon as we can! To help us out, anytime you see an old Android phone you can “accidentally” whack it with a hammer.

New .data() implementation: This new code is a complete rewrite by Rick Waldron. It’s smaller, simpler, and much more maintainable than the old code.

Increased modularity in custom builds: You can now exclude all the redundant event shorthands such as .mouseover(...) if you’re willing to use .on("mouseover"...) instead.

Minimal selector engine: Richard Gibson created a small wrapper around the browser’s native querySelectorAll and matchesSelector APIs that can be used as a replacement for the full-fledged Sizzle selector engine. Be aware, however, that there are major differences in the supported selectors and semantics. This minimal engine does not support jQuery selector extensions like :radio or :first for example.

Custom Builds

We’d love for you to try out the custom build system which is based on grunt. The README gives more detail on making a custom build. As of beta 2 you can replace Sizzle with a simple selector engine and exclude css, event aliases, animations, offset, and deprecated functionality such as .andSelf() that has not yet been removed. In addition you can exclude a subset of the script, JSONP, or XMLHTTPRequest transports. That’s right, reject any module in our jQuery reality and substitute your own.

Here is an example of what you can save with modular builds. Let’s say you don’t need the css, offset, dimensions, or deprecated modules and plan to do animations completely via CSS transitions and classes. In addition you only use JSONP via $.ajax(). You’ll use .on() for event management and keep your selectors simple so that the minimal selector engine can do the job. The build command to do that is:

grunt custom:-sizzle,-css,-event-alias,-effects,-offset,-dimensions,-deprecated,-ajax/xhr

The resulting file from that custom build is just 17,530 bytes when transferred by gzip, which is 40 percent smaller than the full 2.0 build at 29,387 bytes gzipped. For comparison, the current 1.9 branch is 32,770 bytes gzipped.

We still think that the vast majority of jQuery users are best served by the simplest option: Use the full version of jQuery, served from a CDN or your local server. Most jQuery plugins are not written in a way that would allow you to use a subset of jQuery core functionality — after all, they never anticipated any of it would be missing! But for situations where it’s worth the time to determine those dependencies, jQuery’s current level of modularity offers awesome flexibility.

Many thanks to the people who contributed fixes to this release: Adam Coulombe, Andrew Plummer, Danil Somsikov, Dmitry Gusev, Isaac Schlueter, James Burke, Jean Boussier, Julian Aubourg, Karl Sieburg, Mark Raddatz, Mike Sherov, Nguyen Phuc Lam, Oleg Gaidarenko, Pascal Borelli, Richard Gibson, Rick Waldron, Ryunosuke Sato, Timmy Willison, and Timo Tijhof. Special recognition to Scott González for his minimalist work simply titled, “Whitespace“.

Changelog

Ajax

Build

Core

Css

Deferred

Effects

Event

Manipulation

Selector

Support

Traversing

Try jQuery Interactive Course

Posted on by

Reading documentation, blogs, and forums are useful ways to learn how to use jQuery, but there is ultimately no substitute for actually writing code. That’s why we’ve been collaborating with Code School to create Try jQuery, a brand new introductory course with video and interactive examples to make it easier to take those first steps. Try jQuery Course Badge

Try jQuery walks you through the most fundamental building blocks of jQuery, from actually getting the library into your page to selecting, manipulating, and creating DOM elements, and reacting to user input. The entire experience takes place in the browser, so there’s live feedback on your code as you complete the exercises and learn the basics.

The course takes about three hours to complete, but you can take it all at your own pace. Best of all, Try jQuery is completely free! If you’d like to save your progress and earn badges, you can sign up with Code School.

We’re really glad to be able to provide new jQuery users with an easy way to get started. So if you’re looking to understand how to use jQuery — or know someone else who is — we hope Try jQuery helps get you in gear!

Should you encounter any trouble with the course, please contact Code School. If you’d like want to provide feedback on Try jQuery, you can get in touch with us at content at jquery dot com, and you can also reach out to Code School.

jQuery Migrate 1.1.1 Released

Posted on by

To magnify your jQuery migration pleasure, version 1.1.1 of the jQuery Migrate plugin is now available. This plugin can greatly simplify the process of moving older jQuery code to version 1.9.0 or higher of jQuery by identifying deprecated features. It can also restore those features so that older code can run without needing any changes at all. We strongly recommend that you use this plugin in your initial jQuery 1.9 upgrade — make it easy on yourself, that’s why we wrote this plugin!

If you haven’t yet read about jQuery 1.9 and the Migrate plugin, we recommend that you check out the jQuery 1.9 upgrade guide and the original jQuery 1.9 blog post.

Using the plugin is easy; just include it immediately after the script tag for jQuery, for example.

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.1.js"></script>

For more information, see the jQuery Migrate documentation.

Here are the items we’ve polished for this version; you can see the complete list at Github. Many thanks to jQuery team member Richard Gibson for his help on this release.

  • Remove “use strict”: Not all code is compatible with JavaScript’s “use strict” mode, so we’ve removed this restriction for the same reason we did in jQuery 1.9.1. This fixes some issues with diagnostic software that uses arguments.caller and with form processing in ASP.NET.
  • $.parseJSON in $.ajax: In 1.9 when an $.ajax() call specifies a dataType: "json" the returned value MUST be valid JSON. Older versions treated an empty string as a success even though it was not valid JSON. The Migrate plugin will now warn about this, treat the result as success and return null as older versions did.
  • Preserve custom $.browser: If the $.browser object has been changed or augmented by code that loaded before jQuery Migrate, those changes will now be preserved. However, we still advise the Migrate plugin be loaded immediately after the jQuery core file.

Happy upgrading!

jQuery Learning Center: Welcome!

Posted on by

Today I’m proud to announce the official opening of the jQuery Learning Center, a community-driven site dedicated to helping people learn about jQuery, JavaScript and front-end development. The goal is to provide a resource that can fill in the gaps that necessarily exist between reading about APIs and actually understanding how to use jQuery effectively. We know a lot of people scour the web each day for this type of information, and we hope the Learning Center can serve as a dependable place for our users to turn.

The Learning Center will continue to evolve, but it would not be what it is today without Rebecca Murphey’s jQuery Fundamentals, which she donated to the jQuery Foundation to form its original nucleus. (Thanks Rebecca!) For this initial launch, we’ve worked to supplement this with information about jQuery UI and jQuery Mobile, features that have been added to jQuery in the interim, and other blog posts and articles from other authors. We’ve also ported over most of what remained on docs.jquery.com, as the Learning Center is indeed intended to be its replacement: documentation that anyone can use — and edit!

There are lots of folks in the jQuery community who like to share their knowledge with others and spend a lot of time writing articles and giving advice, hoping only that it helps someone else understand how to make a decision or get out of a jam. The jQuery Learning Center is for you too. We hope that it will empower those of you who already do this (and those who haven’t — yet) to reach the right audience: the people looking for it! The Learning Center is the latest in the jQuery Foundation’s series of open content sites, so all of the articles are written in Markdown and the entire site is open source. Whether you’ve got a new article you’d like to get published or just notice a typo, the Learning Center is certainly one area of jQuery that’s open to all sorts of new feature requests!

You can find out more about the jQuery Learning Center, and if you’re interested in helping out, you should definitely take a look at our Contributing Guide. We’ll continually seek to flesh out the subject matter on the site, so whether you’ve already got a great idea, an old StackOverflow answer that you always thought “should be in the docs,” or want to take a look at the existing issues for inspiration, there’s sure to be something you can dig into!

We hope the new Learning Center will be a useful new reference for users and authors alike, and welcome your feedback. You can get in touch with us by filing issues, joining us in the #jquery-content IRC channel on freenode, or send an e-mail to content at jquery dot com.

jQuery 1.9.1 Released

Posted on by

The jQuery team is pleased to announced that jQuery 1.9.1 is available! This release addresses the bugs and regressions that have been reported during the past few weeks. Whether you’re using 1.9.0 or using an older version, these are the droids you’re looking for.

Please, please, please, use the jQuery Migrate plugin and look at the upgrade guide if you’re just starting your upgrade to jQuery 1.9. The plugin will quickly find and fix any compatibility issues, just look in the browser console. Once you fix the warnings you can remove it. Or, leave the plugin in place until you have the chance to fix your code and plugins to make them 1.9-compatible.

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script>

We’ve sent the files to the Google and Microsoft folks, so you should see them up on their CDNs shortly.

Many thanks to those of you who reported bugs, and to the following people who contributed patches to the 1.9.1 release: Adam Coulombe, Andrew Plummer, Corey Frang, Danil Somsikov, Jean Boussier, Julian Aubourg, Mike Sherov, Oleg Gaidarenko, Richard Gibson, Ryunosuke Sato, and Timmy Willison.

Gold-leaf-cluster thanks to Paul Irish, who mobilized special forces to find a solution for 13274!

Change Log

Ajax

Build

Deferred

Effects

Event

Manipulation

Selector

Support

Traversing

jQuery Migrate 1.1.0 Released

Posted on by

Thanks for all your feedback on jQuery 1.9.0! We’re preparing an update to address the issues you’ve found already, but in the meantime here’s a new version of the jQuery Migrate plugin. The plugin can be used with either 1.9 or 2.0 to detect deprecated and removed features, or to restore old features for those sticky situations where you need old code to run with new jQuery. The plugin and the messages it generates are documented in the project README.

Judging by many of the questions and bug reports we’ve gotten, far too many of you are trying to do an upgrade to jQuery 1.9 without also using jQuery Migrate. Stop hitting yourself! We created this plugin to make things easy on you. Just include the plugin after your jQuery file to see if it gives you any warnings. The updated jQuery Migrate plugin is available on jQuery’s CDN, and should be available on the Google and Microsoft CDNs within a few days:

<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script>

With this development version, warning messages appear on the browser’s console. They all start with JQMIGRATE so they’re easy to find. Just match up each message with its description in the warning list to determine what it means and how it can be fixed.

In a perfect jQuery world, you’ll be able to update your code and run without the jQuery Migrate plugin. But we’re realists, and know that it may be a while before you and the authors of your plugins can get around to fixing compatibility issues. We’ve got you covered there as well. Just use the minified version and the plugin’s fixes will stay, but the warnings will be silenced so you can deploy to production:

<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.0.min.js"></script>

Finally, remember that you can include the jQuery Migrate plugin with your existing copy of jQuery all the way back to 1.6.4, to see what issues may arise when you do get around to upgrading.

What’s New?

For a detailed list of the issues that were closed you can see the issue tracker; here are the important highlights:

  • Traces by default: In browsers that support console.trace(), a stack trace will appear after each warning message to make it easier to diagnose. If you prefer to do your own debugging and want to reduce the console clutter, set jQuery.migrateTrace = false.
  • A “Logging is active” message: This message shows up when the plugin starts to let you know it is running. If you don’t see any other messages on the console when testing your pages, you done did good.
  • Invalid JSON: Before jQuery 1.9.0, $.parseJSON() would accept some invalid JSON values such as "" or undefined and return null rather than throwing an error. Migrate 1.1.0 warns about this and restores this old behavior.
  • HTML strings with leading whitespace: jQuery 1.9 restricts the strings processed by $() for security reasons. Although we recommend you use $.parseHTML() to process arbitrary HTML like templates, the 1.1.0 version of the Migrate plugin restores the old behavior.
  • Inappropriate warnings: The Migrate plugin showed a warning for $("<button>", { type: "button" }), which was not correct since that form is allowed on IE6/7/8. That’s been fixed.
  • We’re in the jQuery Plugins site: To set a good example, the jQuery Migrate plugin is on the Plugins site! You can always find it on Github as well.

jQuery Comes to Portland

Posted on by
jQuery Conference Portland logo

jQuery Conference is back and better than ever! We’re excited to invite you to the City of Roses—Portland, Oregon on June 13 and 14, 2013 at the Oregon Convention Center. We’ve got more room (and lead time) than ever before, so if you haven’t been able to make it to a jQuery Conference in the past, this is your best opportunity yet!

We’re returning to our traditional two-track lineup, which means there’ll be lots to learn and even more chances to speak. Early-bird registration is open right now, but we only have a limited number of slots, so you definitely want to act fast.

Call For Papers

A conference is nothing without a great lineup of speakers sharing their experience, knowledge, and tools with the community. Whether you’re a regular on the conference circuit or you’ve always considered speaking but haven’t yet, we’re eager to hear from you. Our Call for Papers will be open from now through March 2nd, which gives you a month and a half (at most) to prepare your proposal. We’re also continuing our “inverted” proposal process, so if there’s someone you really want to hear from, let us know.

Training Day

If you’re looking for a bit more than the regular conference experience, perhaps a more focused opportunity to grow as a developer, we’ve partnered with Bocoup to host a two-track training day the day before the conference  (June 12). With both Front End Fundamentals and Advanced jQuery courses available, it’s a great way to make the most of your trip.

Sponsors

Sponsoring a jQuery Conference is a great way to build your company profile in the jQuery community; your best opportunity to meet (and hopefully hire) top jQuery developers, evangelize your products, and help support the jQuery Foundation. We’re still looking for partners to work with us on the largest jQuery event yet, so take a look at our prospectus and get in touch to get the ball rolling.

That’s it for now; stay tuned to the blog and @jqcon for announcements about speakers, parties and all other manner of conference goodness. We’ll see you there!

QUnit 1.11 Release: A Look Back (and Forth)

Posted on by

Earlier this week, we released a new version of QUnit, jQuery’s solution for unit testing JavaScript. Along with some details on the new release, I wanted to take this opportunity to tell you a bit more about QUnit, where it came from and where it is going. I’m also looking for your input, to help us shape the future of JavaScript testing.

New in 1.11

The most visible change (aside from our new purple logo) is a runtime display for individual tests. Before, QUnit would show you how long it took to run a full test suite. Now it’ll also show individual times for each test, making it easy to spot slow tests in your test suite. Since it’s useful to have unit tests finish within seconds, tuning tests now becomes a bit easier.

Other changes are mostly bug fixes to built-in features, and various improvements to add-ons. There’s a new theme, a overhaul of the PhantomJS add-on to use its callback system and more. Check out the changelog for a full list of changes.

QUnit’s Evolution

Unlike jQuery UI and jQuery Mobile, QUnit doesn’t have a code dependency on jQuery, it just happens to be developed as a jQuery Foundation project. How did that happen? It all started a long time ago, but in a galaxy pretty close by. Back in 2006, this guy named John was working on jQuery and wrote his own little unit test runner, since there wasn’t much to start with. Two years later, John and I figured that this test runner would be useful as a standalone tool, and it got the name QUnit, as a mashup of jQuery and JUnit. It lived in the same SVN repository as jQuery itself, along with a few pages on the jQuery wiki.

In 2009, we moved it to its own GitHub repository and rewrote QUnit to get rid of the dependency on jQuery. Until October 2011, QUnit was just updated in master, without versioned releases, which kind of worked, but also caused maintenance and dependency headaches. I finally tagged 1.0.0, along with regular releases since then. Recently, QUnit got its own website and API reference.

Moving Forward

Today QUnit is used not only to test jQuery Core, jQuery UI and jQuery Mobile, but many other other projects as well. One notable example is Ember.js. Those guys don’t get tired of telling me how great QUnit is, putting emphasis on the reliability. We’d like to find out more about how developers are using QUnit, so if you’re using QUnit (or planning to), please take a few minutes to complete this brief survey.

From the ~50 answers we’ve received so far, it’s clear that people use QUnit since it’s so easy to get started with, and we certainly intend to keep it that way. It’s also clear that a lot of people are looking for tools and guides on integrating QUnit in CI tools like Jenkins, which is also something we’re planning to work on. Along with that comes a heavy refactoring of the QUnit codebase, which currently lives in a single JS file (and a sister CSS file). We’re going to split the codebase into a few modules, which should help future maintenance and make it easier to integrate other libraries. This will allow us to improve our diff implementation, for instance.

If you’re interested in following future QUnit updates, follow @qunitjs on Twitter and watch the project on GitHub.

A Site To Behold: Open Content & Design Comes to jQuery

Posted on by

In the past few days and weeks, you’ve probably already noticed the new theme we’ve been rolling out across our websites. In fact, unless this is your very first time looking at the jQuery blog, this very post probably looks a lot different than what you’ve been used to seeing over the past few years. Today, as this new design finally reaches jquery.com, we are very excited to pull back the curtain and explain the work we’ve been doing and how it goes above and beyond the simple “facelift” it may appear to be at first glance.

As the jQuery ecosystem has grown, it’s become increasingly difficult for the jQuery Team to keep our arms wrapped around a burgeoning balloon of documentation, design, CMS installs and wikis. Community members who’ve wanted to report and fix documentation errors have been left with nowhere to take action, and the picture wasn’t much better even for those who did have access. With all this content and design locked away in production environments behind a slew of different user accounts, and nowhere to track bugs, visibility has been low and progress incremental at best. We knew we had to make a change.

Over the past year, we’ve undertaken a massive effort to consolidate and simplify our site infrastructure and open source all of our web site content, documentation, and design. We’ve done this because it has already done wonders for our own ability to collaborate and move forward, and because we hope it will open up new avenues of participation for all of you out there who have wanted to find a way to get involved with jQuery, but have been unsure you could contribute.

So, enough with the platitudes — on to the stack!

git + grunt + WordPress

We’ve moved nearly all of our documentation and site content into static content repositories on GitHub, where they are maintained in HTML, Markdown, or XML, depending on the type of content. Now, if you notice a typo or think something needs clarification, you can file an issue and even send a pull request with a fix. Everything from the source documentation for jQuery.ajax to the front page of jquery.com to the raw Markdown of this new page that includes the full list of content repositories is open source!

The content is brought to life on our websites using WordPress and our custom theme and multi-site configuration, jquery-wp-content. Using this single WordPress instance makes it exponentially easier and more manageable for us to keep the look and feel of all our different sites in sync, and preserves our ability to easily layer on dynamic features like site search and user accounts as we need them. jquery-wp-content also contains a custom installation script that makes it easy to stand up the entire jQuery sites network for local development, opening up the doors for much less conservative experimentation with fixes and new features. Again, all this means that if you notice bugs on any jQuery website, there’s somewhere to report them, and you can even work on the fix yourself if you want!

(We’ve received an incredible amount of help creating and maintaining jquery-wp-content from WordPress developers Andrew Nacin and Daryl Koopersmith, and we’d be remiss if we didn’t thank them right here for all their hard work!)

The link between WordPress and the static content repositories is a grunt build and deployment process that processes the content files and synchronizes them into a WordPress installation using XML-RPC. That means we don’t ever use the WordPress Administration pages; all authoring and editing just happens in your favorite text editor, then grunt does the hard work.

In order to deploy to our production and staging servers, we simply use git webhooks to respond to commits on the content repositories and jquery-wp-content. Whenever a commit lands on the master branch of these repositories, the content and design is reflected immediately in the staging environment, which is just the URL of the website with a stage. subdomain prefix, e.g., stage.jquery.com. To deploy to the production sites, all that’s necessary is tagging with a semver and pushing the tag.

New Sites

In addition to today’s new look for the blog and jquery.com, we’re happy to unveil some brand new sites that are all powered by this system, which you should find especially useful if you’re looking to find ways to get involved with with jQuery.

Contribute to jQuery

URL: contribute.jquery.org | Repo: github.com/jquery/contribute.jquery.org
Our new hub for information on how to actually get started with contributing to jQuery and open source in general. It’s also full of useful resources for contributors, like our CLA form and style guides used across all of our projects.

jQuery IRC Center

URL: irc.jquery.org | Repo: github.com/jquery/irc.jquery.org
The jQuery Foundation uses Internet Relay Chat extensively for support and project communication. This is where we host the logs from our channels and keep documentation about how you can get connected and what to expect when you get there.

jQuery Brand Guidelines

URL: brand.jquery.org | Repo: github.com/jquery/brand.jquery.org
As we’ve recently freshened up a lot of the conventions we’re using for representing jQuery, we’ve also published these guidelines so that the community can have a better understanding of how they can — and can’t — use the names and marks of jQuery Foundation projects.

Sunrise, Sunset

We’ll also be saying goodbye to some subdomains in the next few weeks, and we wanted to give you a heads up, so you can prepare if necessary.

docs.jquery.com

Our original MediaWiki documentation-and-catch-all site has served admirably over the years, but it is time to put it out to pasture. We’ll continue to redirect the popular URLs on this site to their more modern counterparts.

meetups.jquery.com

Hosting our own meetup network was an interesting experiment, but the site gets almost no usage and is cumbersome for us to continue to manage, so we will be shutting it down. We recommend organizers use other, more established platforms such as meetup.com.


In addition to the new sites we’ve just launched, we’ll be continuing to roll out other new sites and integrate more of our existing sites into with the new theme over the coming days and weeks. We’re really happy with how it’s working so far, and look forward to continuing to improve the sites — perhaps with your help! As always, if you have trouble with any of this, please file issues, join us in the #jquery-content channel on freenode, or send an e-mail to content at jquery dot com.

Announcing the jQuery Plugin Registry

Posted on by

They say good things come to those who wait, and today we’re happy to end the waiting and unveil the jQuery Plugin Registry. We’ve worked long and hard to put together a brand new site that will serve to reduce the fragmentation and distribution problems that can be obstacles for plugin developers and consumers. We’ve also put an emphasis on remedying a number of the issues that plagued the old jQuery plugins site, especially with respect to workflows for contribution of both plugins and enhancements to the repository itself. The goal is to make sharing and browsing quality jQuery plugins a pleasant experience for everyone!

jQuery Plugin Registry: plugins.jquery.com
Source/Documentation/Issues: github.com/jquery/plugins.jquery.com

Downloading and Using Plugins

If you’re looking to just browse and use jQuery plugins in your application or site, not a lot has changed. Plugins each have basic pages that provide a link to the plugin download, as well as past versions, documentation, issue tracker, and source code repository. Download links may serve you a zip file with the plugin assets, or link to the best resource to download the build of the plugin you’re looking for.

Registering Your Plugin

Registering your plugin and having it listed on the site is not a complicated process; however, it assumes a number of aspects of the plugin development process, including using version control (git) and providing documentation on how to use it. You also have to include a plugin.jquery.json package manifest file, which provides all the information used to describe your plugin on the registry, including the version number, as well as the locations of the files and the documenation.

To register and publish your plugin, you’ll need to push your code to a public repository on GitHub, and add our post-recieve webhook URL (http://plugins.jquery.com/postreceive-hook) to your repository. The next time you push a semver tag, we’ll take care of registering the plugin name and updating its page on the site. When you’re ready to release the next version of your plugin, just tag and push again!

Users can download your plugin however you’d like them to. You can link directly to a JavaScript file for your users to save into their project, take advantage of the GitHub’s built-in zip file distribution, or even link to a custom build tool you may have online for further configuration.

That’s it — no uploading files to us, no wading through forms, and no manual updates for new versions.

(We plan to support other sites in the future! However, we’ve only been able to implement integration with GitHub at this point. If you’d like to assist with adding services, read on!)

Contributing to the Plugin Registry

Our work building the registry has informed and overlapped with a major initiative we’ve taken to open-source all of the content and design of all jQuery web sites. You’ve already seen part of this launch with the new api.jquery.com and jqueryui.com, and we’ll be talking more about this initiative later this week. As it relates to the Plugin Registry, it means that everything from the site documentation to the styles and templates to the post-receive hook itself is open source. So if you notice bugs or have ideas, you can raise and track issues and file your fixes as pull requests. You can even run a local instance of the site to iterate and test your changes.

Of course, if you’re a plugin author, you can also contribute by publishing your plugins to the registry. Even if you haven’t written plugins of your own, you can help out the authors of your favorite plugins by submitting pull requests that add a plugin.jquery.json manifest to their plugin’s repository.

Be Excellent To Each Other

We know this site has been long in the making, and we’re excited to finally be able to open it up for you to use, whether you’re looking for plugins to use in your app or you want to share your work with other developers. We’re looking forward to seeing lots of new plugins and old favorites make their way into the registry, so if you’re a plugin developer, we encourage you to get started as soon as you can with the registration process.

Name registration is on a first-come, first-served basis, and you can’t reserve a name prior to releasing a plugin. However, we recognize there is a huge ecosystem of jQuery plugins already out there, so especially in these early days of the registry’s existence, we do ask that authors reserve judgment and respect for other popular, widely-adopted plugins that may already have a reasonable historical claim to a particular name, even if it has not yet been registered. By and large, we hope that this will discourage “land grab” registrations, but we may step in to manually resolve a situation, should a particularly egregious case arise. “Squatting” on a plugin name is similarly disallowed, and may result in removal without warning!

(Translation: Ben Alman’s BBQ (Back Button & Query) plugin has long been a popular tool for working with the location.hash for navigation. Now is NOT a good time to create and register a sweet plugin for marking up quotations and call it the jQuery BBQ (<bold>,<blockquote>, & <q> plugin!)

That’s All, Folks

Thanks for your patience. Now go forth and publish! Should you encounter any trouble, please file issues, join us in the #jquery-content channel on freenode, or send an e-mail to plugins at jquery dot com