Team Spotlight: The jQuery Bug Triage Team

Posted on by

Allow me to introduce the bug triage team with a chart:

Over the past 60 days, the bug triage team has taken an unwieldy hairy mess of tickets and addressed every single one of them.

Yes that’s right; as it stands, there are zero unreviewed tickets in the jQuery issue tracker. The last one to be closed was a rather malodorous bug.

The jQuery Bug Triage team are a group of jQuery core and community members who actively assist in narrowing down and patching bugs submitted on the jQuery bug tracker. Between them this team have a number of years worth of experience in debugging and fixing both JavaScript and jQuery issues. When you submit a bug, feature request or enhancement request to the project, they’re the team that looks at your tickets.

The team members are:

  • Dave Methvin is co-founder of PC Pitstop, jQuery user since 2005, and on the jQuery core team.
  • Addy Osmani is a London-based User-interface developer at Aol as well as a regular jQuery blogger.
  • Colin Snover is an independent software designer and developer based out of Minneapolis.
  • Rick Waldron is Head of Research and Development at Bocoup in Boston, MA
  • Alex Sexton is a Labs Engineer at Bazaarvoice in Austin TX, and a co-host of the yayQuery podcast.
  • Adam J Sontag is a NYC-based developer for Bocoup, and a co-host of the yayQuery podcast.
  • Mike Taylor works for Opera Software and sometimes gets hit by cars on his bike.
  • Dan Heberden is a web consultant based in Portland, Oregon and is on the jQuery UI team
  • Anton Matzneller is a computer science student and developer located in Vienna, Austria.

We all owe these guys a good amount of thanks. They’ve done a tremendous amount of work to benefit jQuery.

<== jQuery heroes

Now, some other news from the development front…

New (and undocumented) Features

jQuery.readyWait
Introduced in jQuery 1.4.3 was a counter called readyWait. This provides a way for control flow to get to a point where registered ready() handlers are invoked.

Event Map Support Extended
.live(), .die(), .delegate() and .undelegate() now support maps of events as a parameter in the same manner that bind and unbind currently do.

Overrides available for .getData(), .setData() and .changeData()
As mentioned in the jQuery 1.4.3 release notes we previously provided two events, setData and getData (broadcast whenever data is set or retrieved through the .data() method). In the latest versions of jQuery you are actually able to override these events in order to provide alternative behavior for those features. For example, you can return a different value or prevent a particular value being set.

Regressions

We determined that a regression was introduced in 1.4.3 which limited the use of attr() to nodeType 1 DOM element nodes. Although this was fixed in 1.4.4, attr(name) and attr(name, value) still fail in specific circumstances. We are targeting a fix for this to land in jQuery 1.4.5.

jQuery UI Bug Tracker Updated

The jQuery UI Bug tracker recently received the same enhancements as jQuery Core from Mr. Colin Snover and you can now find the same great voting and tracking options for submitting bugs, features and enhancement requests as you can on the jQuery Core tracker. This will make it significantly more easy for you to find out when we’ve taken a look at your ticket so you can follow-up in case there are any additional questions or updates regarding fixes.

Tips For jQuery Bug Patching

jQuery has quite an active development community and from time to time our community members wish to patch bugs or issues they’ve discovered for submission to the project for review.

If this sounds like something you would like to get involved in, we’ve put together a commented build file (courtesy of Rick Waldron) that will help you get setup for patching bugs using a LAMP or MAMP stack. You can download this build file via a gist. If you have questions on how to get setup, please feel free to leave a comment on the gist above or ask us about it in the #jquery IRC channel.

(Thx to Addy Osmani, who drafted much of this post for me :)

jQuery 1.4.4 Released

Posted on by

jQuery 1.4.4 is now out! This is the fourth minor release on top of jQuery 1.4 and lands a number of fixes for bugs including some nice improvements over 1.4.3.

We would like to thank the following community members that provided patches, input and their time towards this release: Rick Waldron, Dan Heberden, Alex Sexton, Colin Snover.

Along with the following members of the jQuery core team: John Resig, Dave Methvin, Karl Swedberg, Paul Irish.

We also thank our bug triage team who assisted in narrowing down some of the important fixes needed for this release: Colin Snover, Rick Waldron, Addy Osmani, Alex Sexton, Adam Sontag, Dave Methvin, Mike Taylor, Aaron Boushley, Jitter and John Resig.

Downloading

As usual, we provide two copies of jQuery, one minified and one uncompressed (for debugging or reading).

You can feel free to include the above URLs directly into your site and you will get the full performance benefits of a quickly-loading jQuery.

Additionally you can also load the URLs directly from Microsoft and Google’s CDNs:

Microsoft CDN: http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.4.min.js

Google CDN: https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js

General Improvements

We’ve made a number of improvements with this release, many of which have fixed bugs that were highlighted by the jQuery Community. For the complete list of changes, see the section below marked ‘Changes’ for more information.

New Features

All new features and changes can be found in the jQuery API documentation for 1.4.4.

.fadeToggle()

In an attempt to further unify the methodology across our API, we’ve introduced a new method to Effects called .fadeToggle(). We already have existing toggle methods in our API for sliding (.slideToggle()) and toggling classes (.toggleClass()) and it made sense for us to extend the availability of a built in toggle to fading effects as well. See the API documentation on .fadeToggle() for more information.

Changes

What’s Been Updated?

There are a few areas in jQuery that have seen changes since 1.4.3 was released:

  • (New) Added a new animation method, .fadeToggle()
  • (Enh) Calling .data() with no arguments now includes data from HTML5 data- attributes (#7222)
  • (Enh) Moved jQuery.props from support.js to attributes.js (#6897)
  • (Enh) .width() and .height() now report the width and height of hidden elements (#7225)
  • (Bug) stopImmediatePropagation was not being honoured in live/delegate event handlers (#7217)
  • (Bug) Fixed an issue where host and protocol were not compared case-insensitively when determining whether an AJAX request was local or remote (#6908)
  • (Bug) Fixed an issue where the “clone” variable was not being declared correctly (#7226)
  • (Bug) Fixed a bug where we only change the ID on nodes that don’t already have an ID for rooted qSA (#7212)
  • (Bug) Limited the scope of the CSS ‘auto’ change to just height/width (#7393)
  • (Bug) Fixed a bug to ensure that unquoted attribute selectors are quoted (allowing them to go into qSA/matchesSelector properly). Fixes (#7216)
  • (Bug) Fixed a bug to ensure that if additional load events are triggered (eg. an iframe being dynamically injected in DOM ready) the ready event isn’t triggered twice (#7352).
  • (Bug) Fixed a condition that prevents attr from working on non-Element nodes (#7451).
  • (Bug) Changing an HTML5 data attribute after calling .data(‘foo’) no longer causes .data(‘foo’) to also change (#7223)
  • (Bug) Fixed a bug where Opera didn’t give height/width of display: none elements with getComputedStyle but did with currentStyle – fall back to that if it exists added.
  • (Bug) Fixed a bug to ensure accessing computed CSS for elements returns ‘auto’ instead of ” consistently (#7337)

It also fixes a number of regressions in 1.4.3. One that caused:

  • (Bug) JSONP calls to fail when cleaning up after a callback (#7196)
  • (Bug) .removeData() to fail (#7209)
  • (Bug) “ready” events to fire twice when added using .bind(“ready”, foo) (#7247)
  • (Bug)  .css(‘width’) and .css(‘height’) to return 0 or negative values when trying to get the style of a hidden or disconnected element (#7225)
  • (Bug) the attribute not equals selector ([foo!=bar]) to not work in Firefox (#7243)
  • (Bug) find() to fail when selecting from forms containing inputs named “id” (#7212)
  • (Bug) .children(selector) to fail on XML documents (#7219)
  • (Bug) child (>), next sibling (+), and previous sibling (~) selectors to fail when combined with non-CSS pseudo-selectors like :last (#7220)
  • (Bug) an error “handler is null” to be raised when passing null as the event handler (#7229)
  • (Bug) it to be impossible to include a content-body with DELETE requests (#7285)
  • (Bug) it to be impossible to include data with HEAD requests (#7285)
  • (Bug) an issue where IE was firing click events on disabled elements when using live/delegate (#6911)
  • (Bug) .show() to fail if .hide() was first called on an already-hidden element (#7331)
  • (Bug) .show() to fail if an element was hidden in a stylesheet, then had .css(‘display’) manually set prior to calling .show() (#7315)


Backwards-incompatible changes in jQuery 1.4.4

The .width() and .height() methods no longer return 0 when inspecting an element hidden using ‘display: none’. To determine if an element is hidden, always use .is(‘:hidden’).

and that’s it!. jQuery 1.4.4 is now out so feel free to update your projects to use the latest version. We welcome any and all feedback from the community.

What Features Would You Like To See In jQuery 1.5?

Now that jQuery 1.4.4 is out, we’re starting the process of planning our next major release and we would like the community’s help in deciding what features we should include. The process for suggesting a feature is quite straight-forward; here’s what you need to do:

1. Think of a feature you would like included in jQuery 1.5
2. Create a new ticket for that feature in our [bug tracker] if one does not already exist
3. Send your nomination by filling out the [jQuery 1.5 feature nomination form]

Thats it! In a couple of weeks the jQuery team will be sitting down to review all nominations. The features that we think would benefit the majority of the community will be added to our roadmap.

We’re aiming to release jQuery 1.5 early next year and we appreciate any help you can provide in letting us know how we can improve it for you. We look forward to hearing your ideas and feature requests.

jQuery 1.4.4 Release Candidate 2 Released

Posted on by

We’re happy to announce that jQuery 1.4.4 Release Candidate 2 is now available! This is the second release candidate of jQuery 1.4.4 – a follow-up maintenance release to jQuery 1.4.3. The code is stable (passing all tests in all browsers we support), feature-complete (we’re no longer accepting new features for the release), and needs to be tested in live applications.

Grab the code:

How can I help?

To start, try dropping the above version of jQuery 1.4.4rc2 into a live application that you’re running. If you hit an exception or some weirdness occurs immediately login to the bug tracker and file a bug. Be sure to mention that you hit the bug in jQuery 1.4.4rc2!

We’ll be closely monitoring the bug reports that come in and will work hard to fix any inconsistencies between jQuery 1.4.3 and jQuery 1.4.4.

What’s Been Updated?

There are a few areas in jQuery that have seen changes since 1.4.3 was released:

  • (New) Added a new animation method, .fadeToggle()
  • (Enh) Calling .data() with no arguments now includes data from HTML5 data- attributes (#7222)
  • (Enh) Moved jQuery.props from support.js to attributes.js (#6897)
  • (Enh) .width() and .height() now report the width and height of hidden elements (#7225)
  • (Bug) stopImmediatePropagation was not being honoured in live/delegate event handlers (#7217)
  • (Bug) Fixed an issue where host and protocol were not compared case-insensitively when determining whether an AJAX request was local or remote (#6908)
  • (Bug) Fixed an issue where the “clone” variable was not being declared correctly (#7226)
  • (Bug) Fixed a bug where we only change the ID on nodes that don’t already have an ID for rooted qSA (#7212)
  • (Bug) Changing an HTML5 data attribute after calling .data(‘foo’) no longer causes .data(‘foo’) to also change (#7223)
  • (Bug) Fixed a bug where Opera didn’t give height/width of display: none elements with getComputedStyle but did with currentStyle – fall back to that if it exists added.
  • (Bug) Fixed a bug to ensure accessing computed CSS for elements returns ‘auto’ instead of ” consistently (#7337)

It also fixes a number of regressions in 1.4.3. One that caused:

  • (Bug) JSONP calls to fail when cleaning up after a callback (#7196)
  • (Bug) .removeData() to fail (#7209)
  • (Bug) “ready” events to fire twice when added using .bind(“ready”, foo) (#7247)
  • (Bug)  .css(‘width’) and .css(‘height’) to return 0 or negative values when trying to get the style of a hidden or disconnected element (#7225)
  • (Bug) the attribute not equals selector ([foo!=bar]) to not work in Firefox (#7243)
  • (Bug) find() to fail when selecting from forms containing inputs named “id” (#7212)
  • (Bug) .children(selector) to fail on XML documents (#7219)
  • (Bug) child (>), next sibling (+), and previous sibling (~) selectors to fail when combined with non-CSS pseudo-selectors like :last (#7220)
  • (Bug) an error “handler is null” to be raised when passing null as the event handler (#7229)
  • (Bug) it to be impossible to include a content-body with DELETE requests (#7285)
  • (Bug) it to be impossible to include data with HEAD requests (#7285)
  • (Bug) an issue where IE was firing click events on disabled elements when using live/delegate (#6911)
  • (Bug) .show() to fail if .hide() was first called on an already-hidden element (#7331)
  • (Bug) .show() to fail if an element was hidden in a stylesheet, then had .css(‘display’) manually set prior to calling .show() (#7315)
  • (Bug) Sizzle.contains to throw an error on browsers that have no support for compareDocumentPosition or documentElement.contains (#7236)

Full details concerning the release are forthcoming – for now we just need your help in catch regressions.

With your input we should be able to produce a solid release. Right now we’re looking to get the final 1.4.4 release out in about a week. Thanks for your help in reviewing jQuery 1.4.4rc2!

We would also like to remind you that the sixth maintenance release for jQuery UI 1.8 is also now out. For more information on this release, feel free to head over to the jQuery UI blog for more information.

jQuery Community Updates 10/26

Posted on by

Updates From jQuery Core

I’ve got some good news today about the next version of jQuery: jQuery 1.4.4. On the heels of the 1.4.3 release, which included many fixes (and of course the introduction of jQuery Mobile), we felt it would be of most benefit to the community if we were to make a maintenance release soon after, aimed to further improve the stability of the jQuery core.

For 1.4.4, we’ve identified those bugs that were most critical for us to fix and thanks to John Resig and the bug triage team, we’ve already fixed the majority of these issues. We currently intend on releasing 1.4.4 in early November, assuming no further major bugs are targeted for this release.

Today, we would like to ask the community to assist us in ensuring this new release is as stable as possible through stress-testing it. While we already run a comprehensive suite of automated unit tests on jQuery, adding real-world user testing into our project flow allows us the opportunity to fix critical bugs sooner and will assist in 1.4.4 being a significant improvement over the last release.

If you would like to test 1.4.4, you can download an up-to-the-minute version of it (dubbed jQuery Git) here:

http://code.jquery.com/jquery-git.js

Please bear in mind that this version is not yet ready for production systems and is only made available for evaluation and testing. It is also now available on jsFiddle.net under the entry ‘jQuery 0 Git’.

We appreciate the community’s assistance in helping us make this release as stable as possible and welcome any feedback you may have on it. If you notice a bug in this release and would like to report it, please see the guidelines on bug submission.

Updates From the jQuery UI Team

The developers from the jQuery UI team stayed in Boston for three days after the conference and were able to fix quite a few bugs and do some face-to-face planning on the future of jQuery UI. jQuery UI 1.8.6 is nearing a release date very soon, so keep an eye on the jQuery UI blog for it.

Additionally, the jQuery UI team is working with Colin Snover to migrate jQuery UI’s ticket system over to a new system like jQuery Core just received. We are really excited about having a more stable and collaborative ticket tracking system and would love more contributions from the community helping in ticket triage. If you are interested in contributing, please talk to a jQuery Developer Relations team member.

The Official jQuery Podcast with Ralph Whitbeck and Rey Bango released their 37th episode last week. Their guest this week was Ben Nadel and they discussed jQuery in the ColdFusion community as well as talk about the jQuery Conference that took place in Boston last weekend. This week they’ll be interviewing John Resig about jQuery 1.4.3 and jQuery Mobile. If you have any questions you would like answered please send your question via the contact form.

Don’t forget about our forums. We have a vibrant community asking and answering questions. We would love more people contributing by helping others out in answering questions. It’s a great way to get involved in the project; being able to give your knowledge back to others is very rewarding.

jQuery 1.4.3 Released

Posted on by

jQuery 1.4.3 is now out! This is the third minor release on top of jQuery 1.4, fixing some bugs and landing some nice improvements.

I would like to thank the following community members that provided patches and input for this release: Anton M., Justin Meyer, Colin Snover, Ryan Tenney, Louis-Rémi Babé, David Petersen, Rick Waldron, Dave Reed, John-David Dalton, temp01, Heungsub Lee, J. Ryan Stinnett, Robert Katic, Juriy Zaytsev, James Burke, Jeffery To, Carl Fürstenberg, Jacob Wright, Jeff Robinson, Christian C. Salvadó, Andrée Hasson, Jason Webster, Dave Furfero, Adam Sontag, Travis Hardiman, DBJDBJ, and Ben Alman.

Along with the following jQuery team members: Scott González, Brandon Aaron, Yehuda Katz, Dave Methvin, Karl Swedberg, Paul Irish, Ralph Whitbeck, Jörn Zaefferer, Richard Worth, Doug Neiner, and Mike Alsup.

Downloading

As usual, we provide two copies of jQuery, one minified (we now use the Google Closure Compiler as the default minifier) and one uncompressed (for debugging or reading).

You can feel free to include the above URLs directly into your site and you will get the full performance benefits of a quickly-loading jQuery.

Additionally you can also load the URLs directly from Google’s CDN:

General Improvements

We’ve made a number of improvements to the internals of jQuery and to the guidelines that we use for development.

JSLint

To start jQuery is now passing Douglas Crockford’s JSLint tool. We’ve integrated his tool into our workflow (checking out jQuery from Github and running ‘make lint’ will show the results) – giving us the ability to keep on top of possible regressions.

We’ve made a few minor changes to JSLint to suit our particular development style and have documented the results in the jQuery Core Style Guidelines.

Modularity

We’ve also removed a number of the inter-dependencies that exist in the jQuery source (inbetween modules). Doing this allows for a greater amount of flexibility when using a copy of jQuery from source. For example you could now use a script loader, such as LABjs or RequireJS to dynamically load individual jQuery modules (e.g. core, support, data, and events).

Additionally this change has made it so that you no longer need to build a copy of jQuery in order to run the jQuery test suite. This has dramatically improved our development workflow – allowing us to quickly make changes to jQuery and test the results without a (comparatively) slow build step.

New Features

All new features and changes can be found in the jQuery API documentation for 1.4.3.

CSS Module Rewrite

Nearly the entire CSS module has been rewritten focusing entirely on extensibility. You can now write custom CSS plugins that extend the functionality provided by .css() and .animate().

For example here is a plugin written by Louis-Rémi Babé that takes advantage of the new functionality: jQuery Rotate.

The plugin provides a cross-browser means of setting and animating the rotation of DOM elements just by using the traditional jQuery methods, like so:

$('#myDiv').css('rotate', 90);
$('#myDiv').animate({rotate: 180});

During the rewrite we broke down the functionality contained within jQuery into two very clear paths: Getting and setting an element’s .style property (done through jQuery.style) and getting the current computed style information of an element (done through .css() and jQuery.css – note that jQuery.curCSS is no longer used and is deprecated as a result). The functionality provided by .css() uses both the jQuery.style and jQuery.css methods.

Making this change has allowed for some speed-ups in computed style retreival, as well – yielding results that are up to 20% faster.

jQuery 1.4.3 .css() Getting a Value

The raw data for all the performance tests can be found in the following Google Doc Spreadsheet. All tests can be found in the jQuery source repository.

Data

The data module has seen a number of improvements greatly increasing its utility.

HTML 5 data- Atributes

To start the primary functionality provided by the jQuery Metadata plugin has been moved into core. HTML 5 data- attributes will be automatically pulled in to jQuery’s data object.

For example, given the following HTML:

<div data-role="page" data-hidden="true" data-options='{"name":"John"}'></div>

All of the following jQuery code will work.

$("div").data("role") === "page";
$("div").data("hidden") === true;
$("div").data("options").name === "John";

Note that strings are left intact while JavaScript values are converted to their associated value (this includes booleans, numbers, objects, arrays, and null).

The data- attributes are pulled in the first time the data property is accessed and then are no longer accessed or mutated (all data values are then stored internally in jQuery).

JavaScript Objects

A number of changes were made to when .data() is used on JavaScript objects (or, more accurately, anything that isn’t a DOM node). To start whenever you set data on a JavaScript object the data is set directly on the object – instead of going into the internal data object store. Additionally events that are attached to objects are put in a new ‘__events__’ property that is actually a function. This was done to allow events to be attached directly to an object, be garbage collected when the object is collected, and not be serialized by a JSON serializer. These changes should make jQuery’s data and event systems much more useful on JavaScript objects.

Events

jQuery has already had setData and getData events (which are broadcast whenever data is set or gotten through the .data() method) – overriding these methods makes it possible to override the default behavior for those features (namely you can return a different value or prevent a value from being set. Note that in jQuery 1.4.3 these events no longer bubble (allowing them to bubble proved to be too costly in most applications).

In 1.4.3 we’ve introduced a new event called changeData. This event is fired after any individual data properties are changed when using .data(). For example:

var user = new User();
$(user).bind("changeData", function( event, name, value ) {
  $("#user").find("#" + name).val( value );
});

The changeData event is used extensively by the new jQuery Data Linking plugin. It makes it possible for the data API to synchronize setting of JavaScript object properties with form fields.

Misc

There was one minor API change to .data() in 1.4.3: Calling .data(Object) no longer completely replaces the data object instead it extends the existing object, leaving the unspecified values in place. We found this to be the expected result based upon a number of confused bug reports.

Traversing

The performance of nearly all the major traversal methods has been drastically improved. .closest(), .filter() (and as a result, .is()), and .find() have all been greatly improved.

These improvements were largely the result of making greater use of the browsers querySelectorAll and matchesSelector methods (should they exist). The jQuery project petitioned the browsers to add the new matchesSelector method (writing up a test suite, talking with vendors, and filing bugs) and the whole community gets to reap the excellent performance benefits now.

jQuery 1.4.3 .closest() Performance

jQuery 1.4.3 .filter() on a Single Element

jQuery 1.4.3 .find() on an element

The raw data for all the performance tests can be found in the following Google Doc Spreadsheet. All tests can be found in the jQuery source repository.

The above performance results specifically look at three very common cases in jQuery code: Using .closest() on a single DOM node, using .filter() (or .is()) on a single DOM node, and using .find() rooted on a DOM element (e.g. $(“#test”).find(“something”)).

Note that the the browsers shown are those that actually support querySelectorAll or matchesSelector – existing browsers that don’t support those methods continue to have the same performance characteristics.

Ajax

A few new Ajax features have landed which should help plugin authors and those building progressively-enhanceable applications.

A new jQuery.readyWait property has been introduced which, when added to, delays the execution of the ready event. This should be used by plugins that wish to delay the ready event from occurring until a specified time. For example RequireJS has already implemented the use of this property allowing you to load dependencies that should be handled before the ready event fires. Whenever an item finishes loading you should end up calling jQuery.ready(true) (and if all dependencies are finished loading – and the DOM is ready – then the ready event will fire).

We’ve also added a new support property: jQuery.support.ajax. Simply this returns true in browsers that are capable of handling an ‘Ajax’ (XMLHttpRequest) request.

Events

.bind(“click”, false) and .unbind(“click”, false)

A convenient shortcut for binding a function that does nothing but return false (preventing the default action and stopping the event bubbling).

.click(data, fn)

All built-in event methods (such as .click()) now accept data as an initial argument (much like the bind method does).

event.namespace

A new property of the event object that contains the event namespace that was passed in to .trigger().

Effects

.show(speed, easing, callback), etc.

All animate methods now support easing. Much like how .animate() supports an easing argument (to be utilized by an easing plugin)

jQuery.fx.interval

A new property that exposes the rate at which all effects fire (in milliseconds – defaults to 13). Making this number smaller will make animations smoother in some browsers (such as Chrome) at the expense of CPU.

Misc

jQuery.type

Determine the internal JavaScript [[Class]] of an object. A number of different aspects are utilized to determine the exact return value for an object. The logic can be determined as follows:

  • If the object is undefined or null then “undefined” or “null” is returned accordingly.
  • If the object has an internal [[Class]] equivalent to one of the browser’s built-in objects we return the associated name. (More details about this technique.)
    • jQuery.type(true) === “boolean”
    • jQuery.type(3) === “number”
    • jQuery.type(“test”) === “string”
    • jQuery.type(function(){}) === “function”
    • jQuery.type([]) === “array”
    • jQuery.type(new Date()) === “date”
    • jQuery.type(/test/) === “regexp”
  • Everything else will return “object” as its type.

jQuery.isWindow

A simple method for determining if an object is likely to be a window.

jQuery.isWindow(window); // true

Additionally we now use he native Array.isArray method for jQuery’s isArray (if available) and we utilize the native String trim method provided by the browser (again, if available). A number of performance improvements were made to jQuery.trim, detailed in the following thread.

Testing

jQuery 1.4.3: Passing 3621 Tests in All Browsers

jQuery 1.4.3 is passing 3621 tests on all supported browsers. We’re 100% passing on Firefox 4 and nearly passing in IE 9 (we discovered two bugs, filed them, and one of them has already been fixed).

jQuery Community Updates 10/12

Posted on by

This is a big week for jQuery with our second release candidate for jQuery 1.4.3 already out and available for testing. We would like to thank everyone that’s been submitting their feedback and bug reports on it as they have been very helpful in making this release as stable as possible. Remember that if you’ve got a bug you would like to report, you can easily submit one through our bug tracker.

Our New Bug Tracker

Regarding the bug tracker, I would like to hand you over to Colin Snover who has an announcement to make about our bug tracking system:

Today we’ve introduced a new bug tracking system for jQuery core. In addition to being a lot faster and easier to use, the new Trac has a bunch of great new features that we hope you enjoy. We’ve tried hard to make sure that both end-users and developers are given a much better experience than what they were used to from the old service.

The most important change is the addition of voting, which will help the team prioritize which bugs and new features are of greatest concern to the members of the jQuery community. Up until now, there was no way to get such a concrete metric of which issues people felt were most important, so we’re very excited about this feature and hope you will use it to help us get an idea of what you want to see most in the library.

We added a login-free bug reporting mode, which will allow anyone to report a bug without needing to go through a registration process first. We also significantly improved the reporting process, so that when submitting a ticket, only a summary, description, version number, and issue type need to be provided.

Another great new feature of the new Trac is a more customisable notifications system, which allows anyone to pick and choose exactly when they receive emails about ticket changes. This feature also introduces the ability to “watch” tickets, so you can be kept up-to-date about tickets that you care about without needing to visit the bug tracker on a regular basis.

For jQuery developers, the new bug tracker offers a glut of improvements. Most visibly, we are now able to set up cross-references, so we know which issues block and are blocked by other tickets. We’ve also integrated support for GitHub, so changes to the jQuery GitHub repository are reflected automatically in Trac on the timeline and in the ticket system. Finally, changes have been made to the ticket workflow such that duplicate tickets can be addressed much more quickly, and tickets that are abandoned by their submitters are automatically closed to keep the number of invalid reports low.

We’re really excited about everything that has been added to the new bug tracker and we hope you will take a look today!

We encourage users to login when submitting a new bug report as this will allow you to see and use some of the new improved features such as the voting widget and notifications regarding follow-ups on your bug report. Let us know what you think about it!.

Community Support

One of the great things about our community is that we’re always ready and willing to give a hand to those just getting started out with jQuery.

In this spirit, we would like to invite members with experience using it to get involved with the jQuery Forums – this is a great place for assisting beginners with questions they may have about jQuery or just helping out members that are having some trouble getting their code to correctly function. To get started all you need to do is create a new forum account or alternatively sign in using your Google, Yahoo or Facebook account.

A Call For New jQuery And jQuery UI Tutorials

The jQuery & jQuery UI documentation sites are an excellent source of information on how to get started with jQuery, but we also like to provide the community with links to tutorials which might go into greater depth about particular topics.

If you enjoy writing about jQuery or jQuery UI, we would like to invite you to write an up-to-date tutorial on a particular aspect, function or component that we can then share with the rest of the community. The best tutorials may get added to our officially recommended tutorials page here.

Please feel free to get in touch if you would like to submit a tutorial for review.

jQuery Conferences

The Official jQuery Conference in Boston is going to be held on the 16th of this month and all jQuery team members attending are looking forward to seeing you there if you’re going. If you can’t make it however, don’t worry! No matter where you’re based, you can still register for the jQuery Online Summit running between November 16th-17th featuring speakers such as John Resig, Paul Irish, Rey Bango and many more.

Thanks and stay tuned for more updates from the jQuery team!

jQuery 1.4.3 Release Candidate 2 Released

Posted on by

jQuery 1.4.3 Release Candidate 2 is released! This is the second release candidate of jQuery 1.4.3. The code is stable (passing all tests in all browsers we support), feature-complete (we’re no longer accepting new features for the release), and needs to be tested in live applications.

Grab the code:

NOTE: If you’re using jQuery 1.4.3rc2 and you run into an error please make sure that you’re using the regular version of the code, it’ll make it easier to spot where the error is occurring.

How can I help?

To start, try dropping the above un-minified version of jQuery 1.4.3rc2 into a live application that you’re running. If you hit an exception or some weirdness occurs immediately login to the bug tracker and file a bug. Be sure to mention that you hit the bug in jQuery 1.4.3rc2!

We’ll be closely monitoring the bug reports that come in and will work hard to fix any inconsistencies between jQuery 1.4.2 and jQuery 1.4.3.

More details regarding the 1.4.3 release can be found in the previous post on jQuery 1.4.3rc1.

jQuery 1.4.3 Release Candidate 1 Released

Posted on by

jQuery 1.4.3 Release Candidate 1 is released! This is the first release candidate of jQuery 1.4.3. The code is stable (passing all tests in all browsers we support), feature-complete (we’re no longer accepting new features for the release), and needs to be tested in live applications.

Grab the code:

NOTE: If you’re using jQuery 1.4.3rc1 and you run into an error please make sure that you’re using the regular version of the code, it’ll make it easier to spot where the error is occurring.

How can I help?

To start, try dropping the above un-minified version of jQuery 1.4.3rc1 into a live application that you’re running. If you hit an exception or some weirdness occurs immediately login to the bug tracker and file a bug. Be sure to mention that you hit the bug in jQuery 1.4.3rc1!

We’ll be closely monitoring the bug reports that come in and will work hard to fix any inconsistencies between jQuery 1.4.2 and jQuery 1.4.3.

What to Watch For

There are a few areas in jQuery that have seen extensive changes since 1.4.2 was released:

  • .css() and related css-handling methods were all overhauled.
  • Logic for determining element visibility and toggling of display in animation code.
  • Much of the traversing logic has been improved and changed (is, filter, closest, find).

Full details concerning the release are forthcoming – for now we just need your help in catch regressions.

With your input we should be able to produce a solid release. Right now we’re looking to get the final 1.4.3 release out in time for the jQuery Conference in Boston this next weekend. Thanks for your help in reviewing jQuery 1.4.3rc1!

New Official jQuery Plugins Provide Templating, Data Linking and Globalization

Posted on by

As the jQuery project has grown, so have the needs of the developer community. As a project, we’re focused on building the best features possible and providing them in a reliable and open manner. Like most open-source projects, the software we’re able to offer is in no small part due to the generosity of many volunteers who donate their time and coding skills to make jQuery and jQuery UI some of the most widely used JavaScript libraries available.

In March, we announced at MIX 2010 that Microsoft had committed to supporting the jQuery Project via code contributions and resources. Shortly thereafter, Microsoft made available for public review their first jQuery plugin which provided client-side templating capabilities to the jQuery community. This was soon followed by their second plugin, jQuery Data Link, which offered data synchronization capabilities and, most recently, the jQuery Globalization plugin which offers globalization information to JavaScript applications for over 350 cultures ranging from Scottish Gaelic, Frisian, Hungarian, Japanese, to Canadian English.

During the seven months of development, the jQuery and Microsoft teams worked closely to ensure that the code conformed to the best practices specified by the jQuery project and filled specific needs of the jQuery community. We also ensured that any code contributed would be available to the jQuery community under the same non-restrictive licensing terms as the jQuery JavaScript Library.

Official jQuery Plugins

Today, we’re very happy to announce that the following Microsoft-contributed plugins – the jQuery Templates plugin, the jQuery Data Link plugin, and the jQuery Globalization plugin – have been accepted as officially supported plugins of the jQuery project. As supported plugins, the jQuery community can feel confident that the plugins will continue to be enhanced and compatible with future versions of the jQuery and jQuery UI libraries.

The jQuery Templates and jQuery Datalink plugin will be managed by the jQuery Core team while the jQuery Globalization plugin will become part of the jQuery UI project, allowing for extended globalization functionality for our rich UI library. In addition, the functionality found in the jQuery Templates plugin will be directly integrated into the jQuery Core library starting with version 1.5.

Documentation and Tutorials

To help you immediately use these plugins, we’re providing API documentation and tutorials that will help you ramp up on these new technologies.

API Documentation

Tutorials

Available for Download

Source code for the new plugins can be found on Github and we encourage the community to evaluate & enhance the functionality. The new plugins are available immediate download and the code can be found here:

jQuery Templateshttp://github.com/jquery/jquery-tmpl
jQuery Datalinkhttp://github.com/jquery/jquery-datalink
jQuery Globalizationhttp://github.com/jquery/jquery-global

New Contribution Vehicle

We’d like to thank Microsoft for their commitment to helping the jQuery Project and providing new and exciting functionality for the jQuery libraries. This has been a rewarding experience for both teams, laying the foundation for future collaboration and creating a new path for meeting the needs of the jQuery community.

Please be sure to read Microsoft’s joint announcement outlining the history of the effort and the importance of these contributions to Microsoft and the jQuery community:

jQuery Templates, Data Link, and Globalization Accepted as Official jQuery Plugins – Scott Guthrie, Corporate Vice President in the Microsoft Developer Division

jQuery Templates is now an Official jQuery Plugin – Boris Moore, Microsoft

jQuery Templating in the wild – James Senior, Microsoft

Web Camps TV #5 – Microsoft Commits Code to jQuery!
– Channel 9 Video

jQuery Conference 2010: Boston – Update

Posted on by

The jQuery Conference in Boston is fast approaching and we are officially sold out.  Thank you so much for your support it’s going to be a great event.  For those that are coming there is some venue information on the Events home page if you are still looking for a cheaper hotel or if your driving to the venue, there is some parking information you’ll need to be aware of.

Sponsors
We are still looking for last minute sponsors.  Last minute sponsors are our favorite sponsors!

Why sponsor?  The jQuery Conference is supported by our generous Sponsors and Donors, without whom things would be very different. The jQuery Conference is a great way to get your message out to 500+ highly qualified influential technology decision makers; if you or your company are interested, download our prospectus for more information. We are willing to talk with you about a package that would work for you.  Contact information can be found on the prospectus.

Training Class Seats Still Available
I did want to remind everyone about our training class we are holding before the conference. We still have openings for the training class and it is separate from the conference.

In San Francisco, the training class was ran by appendTo and it was a great success.  In Boston, the class will be run by Bocoup, a Boston JavaScript Company.  Here are some of the details about the class.

About the class
Over the course of this one day class the group will build an exciting web application using jQuery. This class will teach you what jQuery does and how to use it responsibly in your websites. Intended for web development beginners.

Trainers
Let me introduce you to the trainers.

From left to right: Boaz Sender, Pete Karl, Rick Waldron and Ben Alman

Agenda

  • What is jQuery?
  • What is the DOM?
  • jQuery and Selectors
  • jQuery and Methods
  • Get stuff do something: DOM traversal and manipulation
  • jQuery and Events
  • jQuery and AJAX
  • jQuery and Effects
  • Using plugins
  • jQuery UI and the widget factory
  • Debugging techniques with jQuery

Advanced classes
Bocoup does offer more advance classes around the same time as the conference.  Check out their site for more details. (18% of the proceeds go directly to the jQuery Foundation)

The jQuery Team would like to thank Bocoup for their donation of the one day training class and the proceeds for the other classes.