Announcing Globalize 1.0

Posted on by

The jQuery Foundation is excited to announce the 1.0 release of the Globalize project, our internationalization (i18n) library. This release has been a long time coming and as Globalize picks up steam and gains more and more adoption every day, we are proud to finally announce the first stable release of this project. We could go on about the features and benefits of this latest release but we felt it was important that you hear it from the source. Below, Rafael Xavier, the lead for the Globalize project, details everything you need to know about the 1.0 release of Globalize and what is yet to come.

An always up-to-date, modular and simple i18n library

Allow me to skip the details and jump to the fun part. Below is what you get with Globalize today, which provides number formatting and parsing, date and time formatting and parsing, currency formatting, message formatting (ICU message format pattern with gender and pluralization support).

Date formatting and parsing

The date module provides methods that convert dates and times from their internal representations to textual form (formatting) and back again (parsing) in a language-independent manner. Your code can conveniently control the length of the formatted date, time, datetime.

locale .dateFormatter({ datetime: "medium" })( new Date() );
en "Feb 20, 2015, 12:15:00 PM"
zh "2015年2月20日 下午12:15:00"
zh-u-nu-native "二〇一五年二月二〇日 下午一二:一五:〇〇"
es "20 de feb. de 2015 12:15:00"
ar "٢٠‏/٠٢‏/٢٠١٥ ١٢،١٥،٠٠ م"

Your code can even select the fields individually, completely independent of the locale conventions. The pattern “GyMMMd” selects era in its abbreviated form, year, month in its abbreviated form, and day.

locale .dateFormatter({ skeleton "GyMMMd" })( new Date() );
en "Feb 20, 2015 AD"
zh "公元2015年2月20日"
es "20 feb. de 2015 d. C."
ar "٢٠ فبراير، ٢٠١٥ م"

 

Relative time formatting

In addition to formatting dates and times, the relative time module provides internationalized messages for date and time fields, using customary word or phrase when available.

locale, value .relativeTimeFormatter( "day" )( value );
en, -15 "15 days ago"
en, 0 "today"
en, 1 "tomorrow"

 

Number formatting and parsing

The number module provides methods that format and parse numbers. Your code can be completely independent of the locale conventions for decimal points, thousands-separators, or even the particular decimal digits used, or whether the number format is even decimal. Though, it can still conveniently control various aspects of the formatted number like the minimum and maximum fraction digits, integer padding, rounding method, display as percentage, and others.

locale .numberFormatter()( Math.PI );
en (English) "3.142"
es (Spanish) "3,142"
ar (Arabic) "٣٫١٤٢"

Formatting thousands-separators:

locale .numberFormatter()( 1000000 );
en-US (English as spoken in the United States) "1,000,000"
en-IN (English as spoken in India) "10,00,000"

Formatting percentages:

locale .numberFormatter({ style: "percent" })( 0.15 );
en (English) "15%"
es (Spanish) "15 %"
ar (Arabic) "١٥٪"

 

Currency formatting

The currency module provides methods that allow to format a currency. Your code can be completely independent of the locale conventions for which currency symbol to use, whether or not there’s a space between the currency symbol and the value, the side where the currency symbol must be placed, or even decimal digits used by particular currencies. Currencies can be displayed using symbols (the default), accounting form, 3-letter code, or plural messages.

Formatting currencies using symbols:

3-letter currency code en (English) de (German) zh (Chinese) ar (Arabic)
.currencyFormatter( "USD" )( 1 ); "$1.00" "1,00 $" "US$ 1.00" "US$ ١٫٠٠"
.currencyFormatter( "EUR" )( 1 ); "€1.00" "1,00 €" "€ 1.00" "€ ١٫٠٠"
.currencyFormatter( "CNY" )( 1 ); "CN¥1.00" "1,00 CN¥" "¥ 1.00" "ي.ص ١٫٠٠"
.currencyFormatter( "JPY" )( 1 ); "¥1" "1 ¥" "JP¥ 1" "JP¥ ١"
.currencyFormatter( "GBP" )( 1 ); "£1.00" "1,00 £" "£ 1.00" "£ ١٫٠٠"
.currencyFormatter( "BRL" )( 1 ); "R$1.00" "1,00 R$" "R$ 1.00" "R$ ١٫٠٠"

Formatting currencies in their full names:

locale .currencyFormatter( "USD", { style: "name" })( 1 );
en (English) "1.00 US dollar"
de (German) "1,00 US-Dollar"
zh (Chinese) "1.00美元"
ar (Arabic) "١٫٠٠ دولار أمريكي"

Formatting currencies in the accounting form, which, for example, in the English locale uses parens instead of the minus sign for negative numbers:

locale .currencyFormatter( "USD", { style: "accounting" })( -1 );
en (English) "($1.00)"

 

ICU message format support (with gender and pluralization support)

The message module provides methods that allow for the creation of internationalized messages, with optional arguments (variables/placeholders) allowing for simple replacement, gender and plural inflections. The arguments can occur in any order, which is necessary for translation into languages with different grammars.

Globalize.loadMessages({
  en: {
   likeIncludingMe: [
      "{count, plural,",
      "    one {You have one task remaining}",
      "  other {You have {count} tasks remaining}",
      "}"
    ]
  }
});

 

locale, count .messageFormatter( "likeIncludingMe" )({ count: count });
en, 1 "You have one task remaining"
en, 99 "You have 99 tasks remaining"

 

Built on standards

Globalize is based on the Unicode Consortium standards and specifications (UTS#35) and it uses its Common Locale Data Repository (CLDR), the largest and most extensive standard repository of locale data available. CLDR is constantly updated and is used by many large applications and operating systems, so you’ll always have access to the most accurate and up-to-date locale data.

CLDR content

Globalize needs CLDR content to function properly, although it doesn’t embed or host such content. Instead, Globalize empowers developers to load CLDR data the way they want. Vanilla CLDR in its official JSON format (no pre-processing) is expected to be provided. As a consequence, (a) Globalize avoids bugs caused by outdated i18n content. Developers can use up-to-date CLDR data directly from Unicode as soon as it’s released, without having to wait for any pipeline on our side. (b) Developers have full control over which locale coverage they want to provide on their applications. (c) Developers are able to share the same i18n dataset between Globalize and other libraries that leverage CLDR. There’s no need for duplicating data. For more information read our documentation on CLDR Usage.

Browser and Node.js Support

Globalize is systematically tested against desktop and mobile browsers and Node.js. So, using it you’ll get consistent results across the various browsers and between client and server. For more details read our Browser Support section.

Get Started

Install it and use it today. See examples for AMD + bower, or Node.js + npm, or plain JavaScript in our Usage section.

If you’re coming from Globalize 0.x, don’t panic. We’ve created a migration guide for you.

Team and Community

We’re grateful for all the support we have received, specifically from Jörn Zaefferer and Scott González for their help with the initial rewrite concept and for being constant advisors; John Emmons, Steven R. Loomis, and Mark Davis (Unicode) for their help with CLDR and UTS#35 specification questions; Alex Sexton and Eemeli Aro for their messageformat.js and make-plural.js libraries that power respectively our MessageFormat and Plural modules; and the jQuery Foundation for the community building, collaborative efforts and its continued support of Globalize and web internationalization.

We want to also thank Nebojša Ćirić, Mihai Niță, and Shanjian Li (Google); Steven Loomis, Steven Atkin, and John Emmons (IBM); Rick Waldron (Ecma-402 2nd Edition editor); Caridy Patiño and Eric Ferraiuolo (Yahoo); Christophe Jolif and Clement Mathieu (Dojo); Cameron Dutro and Kirill Lashuk (Twitter); Craig Cummings and Tex Texin (jsi18n.com); Santhosh Thottingal and Kartik Mistry (Wikipedia); Axel Hecht (Mozilla); Bruno Lewin and Daniel Goldschmidt (Microsoft); Lily Wen (Adobe); Edwin Hoogerbeets (LG); Eirik Rude (Oracle); Xiang Xu (Paypal); Iskren Chernev (moment.js); and Tingan Ho (l10ns.org) to have joined us in an effort to better coordinate the globalization (internationalization and localization) activity of the JavaScript community. If you want to get involved or read more about it, head over to the javascript-globalization@googlegroups.com mailing list or take a look at our JavaScript Globalization overview page.

Upcoming

We’re working on even more exciting features that will soon be part of Globalize. To name a few: runtime optimization and non-gregorian calendar support. So, if any of these are of your interest, make sure you chime in. Express your thoughts and your needs (e.g., which calendars you want to be supported).
We are always looking for contributors to join our team. If you want to get involved, please read the contributing guide. Your help is very welcome.

Come help the jQuery Foundation

Posted on by

For many years now the jQuery team first, and then the jQuery Foundation as an organization, has helped developers all over the world to write simple, concise, and clean code that isn’t affected by all the browser incompatibilities that developers are well-accustomed to. As you know, all the jQuery Foundation projects are maintained by a group of volunteers who keep the libraries relevant and in line with modern browser APIs and issues. The team also keeps the API documentation and educational guides up to date.

In the next few months, the team will work on the several jQuery-related websites to ensure an even higher standard of quality to help millions of users write their code. There is so much to do and our resources are limited, so today we are asking you for help. Part of the team is currently focusing their attention on the Learning Center, but we appreciate help in any repository. If ever the jQuery Foundation projects have saved you work and frustration, this is the right time to give something back. There are many ways in which you can contribute, and you don’t have to be an expert developer. You can help the project by fixing issues in the code or improving the documentation. Everything counts. The jQuery Foundation welcomes contributions from anyone willing to put in the time and effort to help us and our community of users.

To learn more about how you can contribute, visit the Contribute website, sign our Contributor License Agreement and start helping. In case you can’t help us by addressing code or documentation problems but you still love our projects, you can help us by making a small donation.

jQuery Foundation 2014 Annual Report

Posted on by

The jQuery Foundation exists to support web developers in creating web content built on open standards that is accessible to all users. We accomplish this through the development and support of open source software, and collaboration with the development community. The Foundation houses open source projects that are essential to this vision.

What we’ve accomplished

We’ve always been known for our namesake projects and their excellent documentation. In the past year, the jQuery Foundation has continued its quest to ensure that web developers have the tools and information they need to get their jobs done, beyond just jQuery, jQuery UI, and jQuery Mobile.

The past few months in particular have been incredibly productive. In October, we adopted the jQuery Mousewheel plugin. In December, Google transferred ownership of the Pointer Events Polyfill (PEP) to the jQuery Foundation. Finally, in January, we announced adoption of the Esprima project, a JavaScript parser that is used by dozens of developer tools. We’re working to foster the continued development of all of these projects, and welcome contributions from the community.

In 2014 we started work on the Chassis project to create an open standard for CSS libraries. We’ve had discussions with developers from Topcoat, Zurb Foundation, Filament Group, Cardinal, Famo.us, Yandex, WordPress, Automattic, 10up, 960grid, Unsemantic, jQuery Mobile, jQuery UI, Intel App Framework, Cascade CSS, Portland Webworks, Adobe, Hulu, and Bootstrap. We’re looking for additional contributors and input from the community about what you want in a CSS framework.

Our year by the numbers

Today, the jQuery Foundation hosts 45 open source repositories at GitHub. These include both code and documentation.

If you need evidence that jQuery Foundation projects are used everywhere, look no further than our Content Delivery Network (CDN) powered by MaxCDN. The 290 billion requests in 2014 transferred nearly 11 petabytes of data. That, of course, does not include the requests for locally hosted copies of jQuery and to other CDNs such as Google, Microsoft, or CDNJS. No doubt the overall number of requests is in the trillions.

Even the best code project can be unusable without good documentation. Web developers don’t just tell us our documentation is good, they tell us that it’s excellent. There were 149 million page views of jQuery Foundation documentation in 2014, coming from 230 countries. All of our documentation sites are available on GitHub so that developers can open issues and make pull requests to improve them. Open source isn’t just for code, it works equally well for documentation!

The jQuery Foundation also hosted, licensed, and participated in 10 events around the world during the past year, including jQuery Conferences in San Diego, Chicago, Vienna Austria, Toronto Canada, and Oxford England. These events always include a wide variety of subjects, and are not just about projects hosted by the jQuery Foundation. The common thread in all the conferences is that they cover topics that web developers should learn in order to do their jobs well.

Future plans

This year we will continue to drive standards forward based on the needs of web developers. Our participation in groups such as EcmaScript TC39 and the W3C has given web developers a say in this process that, until recently, was primarily controlled by large for-profit companies and browser makers. We also plan to increase our participation in the Unicode Consortium as we ramp up our investment in Globalize, so that developers can easily make their software usable worldwide.

Our recent adoption of Esprima highlights another area where web developers could use some more help: development tools. The tools landscape for processing JavaScript, CSS, and HTML is incredibly fragmented. There are multiple processes for authoring, creating, modularizing, and consuming JavaScript, none of which have established themselves as a standard. There are more than a dozen package managers, each with its own unique set of advantages and drawbacks. We’d like to work with developers to settle on a smaller set of options that impose fewer burdens on both the producers and consumers of JavaScript libraries.

2014 Financial Information

Thanks to generous contributions from members and sponsors, we were able to fund a variety of activities that gave back to the cause of open source. The majority of our investments were dedicated to fostering development of jQuery Foundation projects and furthering the use of those projects through events and educational opportunities.

2014 Revenue Chart2014 Expenses Chart

Acknowledgments

We’re proud of the accomplishments of the jQuery Foundation, all of which were realized by the continuing hard work of our team members. Many thanks also to the web developers who take the time to report issues, fix documentation, or contribute code patches. By improving jQuery Foundation projects, you’ve improved web development for everyone.

We’re also grateful for our jQuery Foundation members and their support. In the past year, companies such as IBM and Famo.us have joined and provided resources that allow us to accomplish our mission. Let’s all go out and do even more in 2015!

Esprima 2.0 Released

Posted on by

Last week, the jQuery Foundation announced our adoption of the Esprima project, the widely used JavaScript parser that powers many code analysis tools. Today we’re pleased to announce the release of version 2.0, now available on npm.

Up until now, the official releases of Esprima have only parsed ECMAScript 5 standard syntax. However, the experimental “harmony” branch has been adding ECMAScript 2015 (also popularly known as ES6) features for quite some time. A lot of the work there has been driven by Facebook. Now that the syntax for many ES6 features has stabilized and even shipped on some browsers, there is a need for tools that support the new syntax.

Esprima 2.0 introduces many stable ES6 features brought from the harmony branch, where they’ve been pretty reliable. This new baseline for Esprima makes it possible for tools such as code coverage analysis, style checkers, and linters to start to process the new ES6 syntax.

Since ES5 is likely to be with us for quite a while longer, Esprima 1.x will continue to be maintained for now in order to provide ES5-only parsing. Tools that currently use Esprima 1.x can continue to do so until they are ready and able to process ES6 constructs.

The 2.1 release of Esprima should follow relatively quickly, based on feedback on the stability of the 2.0 release. That means the Esprima team needs feedback from the makers of Esprima-based tools to know whether there are any problems. If you have built an Esprima-based tool and have problems with this release, please report them. (Note that the project is now using GitHub for issues rather than Google Code.)

We’re excited to see where Esprima goes next!

jQuery Foundation adopts Esprima

Posted on by

The jQuery Foundation is excited to announce that we are now hosting the Esprima project! The Abstract Syntax Tree generated by this JavaScript parser is used by many important developer tools such as ESLint, Istanbul, JSDoc and JSCS.

Ariya Hidayat has decided to transfer ownership of the Esprima project and its repo to the jQuery Foundation. We’re glad that Ariya has taken this step, since Esprima is such an important part of so many projects and is downloaded more than 2.5 million times every month from npm. Many thanks to Ariya for entrusting this project to us.

The adoption of the Esprima project, following the recent adoption of the Pointer Events polyfill, are the initial steps in a big shift toward realizing our mission to improve the open web and make it accessible to everyone. The jQuery Foundation looks to ensure that other important tools and emerging standards are also given the chance to grow and shape the open web.

The jQuery Foundation is committed to providing support to Esprima and opening it up for contributions. If you’ve been a contributor to this project already, we want you to continue that work and are always open to new contributors. Please stay tuned, we’ll be making more announcements soon.

Famo.us Joins the jQuery Foundation

Posted on by

In case you haven’t heard, Famous Industries (Famo.us) announced today that they are joining the jQuery Foundation as a Founding-level member.  Famo.us joins our other Founding-level members, WordPress and IBM, and our growing list of member companies, who recognize the power and importance of the jQuery Foundation’s open governance for JavaScript technologies.

For those who are not familiar with Famo.us, they offer a free, open source JavaScript platform that enables engineers to build beautiful, cross-platform web apps. It is the only framework that provides an open source 3D layout engine fully integrated with a 3D physics-based animation engine that can render to DOM, Canvas, or WebGL.

Famo.us also provides extensive free training, examples, and tutorials through Famo.us University. Their live coding environment allows students to see their code rendered in real time and work through topics at their own pace. We plan on taking advantage of their passion for education by partnering with Famo.us to deliver a top notch developer event in San Francisco in mid 2015 (stay tuned!).

Today, jQuery continues to be one of the most preferred JavaScript libraries available with 8 out of 10 of the top JavaScript enabled websites and over 60% of the top one million websites* choosing jQuery-enabled libraries. As our community grows and continues to innovate, so do we. This makes the support of our members more critical than ever.

We are working on a number of new initiatives: Making improvements to how our innovative technical community collaborates. Famo.us has a number of widgets they intend to make available as jQuery plugins and we look forward to taking advantage of their support and expertise as we work to improve the extended community guidance around jQuery plugins.

Famo.us developers will be joining our technical efforts so please say ‘hello’ and make them feel welcome. Co-founder and CEO Steve Newcomb has been elected to the jQuery Foundation board of directors. We look forward to benefiting from the unique perspectives, business acumen and life experiences Steve will bring to our board in helping us move forward toward accomplishing our mission.

It’s going to be a great partnership and a busy New Year. With that, please join us and give Famo.us a shout out and welcome them to the jQuery Foundation!

*stats from BuiltWith.com

Improving the Pointer Events Polyfill

Posted on by

Today, we’re excited to announce that Google has transferred its Pointer Events polyfill to the jQuery Foundation. This polyfill was originally written by Google’s Polymer team but since Google has chosen to put their Pointer Event implementation on hold, we engaged to ensure that the polyfill is maintained and continues to be a tool developers can use as a path to the eventual native implementation in all browsers. Many thanks to Google and the Polymer Team for allowing us to build off their work and continue development.

The jQuery Foundation has been, and continues to be a strong proponent of standards and we are specifically strong proponents of the Pointer Events standard because it will simplify the way web developers handle user interactions. Today developers are saddled with two very different event models for mouse and touch, even though they share many similarities. The result is often code that has a myriad of special cases, particularly when the device itself generates “fake” mouse events from touches. The jQuery Foundation hopes to drive developer adoption of this unified event system. Our goal is to have all browsers implement this standard natively.

Just yesterday, the W3C took the Pointer Events specification to the Proposed Recommendation stage. This makes Pointer Events one step closer to a finished standard and gives browsers a solid base on which to implement these APIs. Some browsers have even begun their implementation. Unsurprisingly Internet Explorer, where the first implementation of Pointer Events began before being submitted to the W3C for standardization, has implemented Pointer Events and Firefox has a branch of their code base implementing Pointer Events which they intend to port to all version of Firefox. Both of these implementations recently passed 100% of the Pointer Events test suite so implementation is progressing nicely.

We want to thank Microsoft Open Technologies for their hard work on Pointer Events and their continued support. We also want to thank IBM, Mozilla, Google, Dojo and the many other organizations and individuals that have helped and continue to help make developers lives easier through the creation, fostering and promotion of new standards like Pointer Events. If you want to get involved or just want to start using Pointer Events in your projects, head over to the new Pointer Events repo and check it out.

The (Not Just) jQuery Foundation

Posted on by

The jQuery Foundation’s mission has always been about more than just our namesake projects of jQuery, jQuery UI, and jQuery Mobile. We already host several projects such as Sizzle, QUnit and Globalize that are not dependent on the jQuery library.

This wider web-oriented mission is evident in our jQuery Conferences, which span a wide range of developer concerns beyond jQuery, including Node, CSS, tooling, testing and much more. Over the years we’ve had talks on build tools, accessibility, security, performance, design patterns, and frameworks such as Ember and Angular. At our San Diego conference this past February, for example, Lenny Markus gave a great talk on PayPal’s continuing adoption of Node as they move away from Java and proprietary solutions, Catherine Farman talked about real world responsive design, and John Dimm gave a talk on the HTML5 speech APIs.

The jQuery Foundation is participating in the continuing evolution of the web platform via our memberships in both the W3C and ECMA TC39 (The group standardizing what we know as JavaScript). We feel that it’s essential to have strong representation in those standards groups to ensure they meet the needs of developers. The Foundation provides a platform for developers to have a voice in these standards bodies.

Beyond the technical compatibility between our projects, we also share the open source model and all the benefits it provides. The Foundation adds the benefit of a top-level structure designed to serve the projects, providing the resources they need but letting the contributors decide the best direction for the project based on community input. Any project that joins the Foundation is given the ability to serve their community’s needs rather than be constrained by the goals of a for-profit company.

Though this has been our mission for a long time, we felt we needed to make this clearer. We are excited to start bringing this part of our mission into the light and start actively working toward a more open web accessible to everyone. If you are excited as well, please help us. Contribute your time to Foundation projects. Offer your company’s services. If you or your company have an established open source project that you believe could benefit everyone and flourish by becoming part of the jQuery Foundation, check out our philosophy around projects joining the Foundation and let us know you’re interested. If you would rather just support the existing and future projects of the Foundation through financial support, become a member of the Foundation. Open source projects will only thrive if everyone who benefits from them contributes back in whatever way they can.

Supporting the Cause, Improving the Web

Posted on by

To help the jQuery Foundation accomplish its mission to improve the open web and make it accessible to everyone, we established a membership program where organizations and individuals could join the foundation to help us support our goals. In return, members are recognized both on our websites and at conferences. Since that time, a number of companies, large and small, as well as individuals, have stepped up to support the foundation and continued success of the jQuery projects. A full listing of our members is available on the member page on jquery.org.

Corporate Memberships

Corporate memberships are available in several levels based on support, ranging from Bronze to Platinum. Beyond those levels is our top level membership called our Founding members. Currently, WordPress is our single Founding member at this time and they are a huge part of the jQuery Foundation mission and we would like to say a special thank you to them. We would not be here if it wasn’t for the support of WordPress and our many corporate members at every level.

So what does a member get in return for their support of the Foundation? Depending on the level of support, there are a number of ways we recognize and thank our members. Every member is recognized on the member page. As you progress up through the different levels of membership, more benefits such as conference recognition, free and reduced price conference sponsorship packages, invitations to team meetings to discuss the development and direction of the jQuery projects, and even the ability to host jQuery licensed events of your own. For more information about the corporate membership program, e-mail us at membership@jquery.org.

I’m not a Corporation, how can I help?

We’re glad you asked. The jQuery Foundation also has an individual membership program where people can donate smaller amounts to help support the Foundation and in return, we send out some cool jQuery branded gear. When the program started, we offered three levels of membership for individuals. That just got too complicated for both the members joining as well as the folks managing the payment and gift fulfillment. There is now only one level of individual membership at the $400 per year level. If you think about it, that’s really only a little more than $1/day to help keep the jQuery Foundation running. You can see all of our individual members listed on the member page. As new members are added, they will be listed as Heroes until the transition from a 3-tier to 1-tier program is complete and everyone has merged into a single list of Individual Members. If all of this has got you itching to become part of the next wave of individual members, head on over to https://jquery.org/join/ and join our ranks.

Membership may not be an option for everyone, but there are still ways you can support the Foundation’s work. The first way is through donations. The jQuery Foundation accepts donations, both large and small, through PayPal. If that’s an option that interests you, check out our donate page. Another way to help the foundation is by grabbing yourself a nice shirt or some stickers over at DevSwag. We have partnered with DevSwag, as many other open source projects have, to license the sale of official jQuery branded clothing and other items and a portion of the proceeds from those items are donated to the jQuery Foundation.

No matter if you’re a company or an individual, we hope you’ll take the time to consider supporting the jQuery Foundation to keep us working toward making the web accessible to everyone.

One Last Thing …

We thought we would let you know one more time about the upcoming jQuery Conference in San Diego. The conference is February 12-13 and is preceded by Bocoup’s 2 day training conference Roost on February 10-11. Don’t forget to take $50 off your ticket to one or both of these events using discount code jqblog50 at checkout!

The jQuery Foundation and Standards

Posted on by

Most web developers think about jQuery in terms of its roots, as a library that tries to bring sanity to a disparate set of APIs and quirks that vary from browser to browser. Although that’s one of the things that jQuery was built to do, and still does, it’s not the only thing. jQuery defines a useful API that makes it as easy to work with one element as it does for a dozen. jQuery shortens verbose DOM API names and removes tedious boilerplate code, making it easier to write and to read code. jQuery adds functionality beyond the standard APIs for the work that web developers often need to do.

In short, jQuery isn’t just an API repairman for browsers. To the extent that we need to fix problems, we do it. But we’re even more interested in getting browsers to fix their problems, and in shaping future standards to avoid problems, so native APIs will work properly from the start. Then we can all build useful functionality on top of that solid foundation.

jQuery team members bring plenty of real-world experience that guide standards in the right direction. The earliest example of this is the querySelectorAll method, where John Resig pointed out that the implementation wasn’t quite what JavaScript developers needed. Unfortunately in the case of querySelectorAll, it was too late to do anything to fix the problems.

How jQuery Can Shape Standards

In order to provide input into emerging standards, the jQuery Foundation joined the World Wide Web Consortium (W3C) and ECMA International last year. In fact, it’s one of the main reasons the Foundation was formed. W3C and ECMA members tend to be representatives of the companies that make browsers and commercial software. We believe that we bring the voice of the rank-and-file web developer to the standards process.

Yehuda Katz and Rick Waldron have been active in the ECMA TC39 group, which defines the language officially known as EcmaScript but that we know as JavaScript. Rick’s excellent meeting notes can give you an inside view of the deliberations that go on during their in-person meetings.

Scott González and Kris Borchers have been working to refine the Pointer Events standard. It brings simplicity, regularity, and sanity to the handling of pointer technologies so that developers don’t have inconsistent (and conflicting!) event models for touch and mouse. During the transition, developers will be dealing with three pointer models–mouse, touch, and pointer. jQuery and jQuery UI want to simplify this transition to the standard.

Julian Aubourg has been participating on revisions to the XMLHttpRequest standard, a position for which he’s been battle-tested by jQuery’s $.ajax implementation. Knowing all the problems that jQuery has worked around provides him with experience to avoid the same problems in the future.

Scott González and TJ VanToll have been active in helping to define HTML5 input types such as <input type=”date”>, providing practical input based on experience with jQuery UI. TJ’s talk at the Portland jQuery Conference does a great job of covering the pitfalls of using HTML5 input types today, and emerging standards like Web Components that could make things easier for web developers.

The jQuery Foundation is also a strong advocate of accessibility; we want to make it easy for web developers to reach all users including those with vision or motor impairments. The W3C addresses those issues through the Web Accessibility Initiative, and specifically with Accessible Rich Internet Applications (ARIA). jQuery UI widgets are incorporating ARIA attributes, and Foundation member Deque Systems has sponsored several events on jQuery accessibility issues.

Finally, we coordinate and pass along bugs reported to jQuery that are due to standards violations in a particular browser. With most browsers updating every few months, it often doesn’t make sense for jQuery to incorporate large and complex bug fixes for temporary problems. But we’re committed to getting them fixed by the browser makers as soon as possible.

A Standards-Driven jQuery Future

jQuery isn’t a highly opinionated framework that demands control over all the DOM. In most cases you can (and often should) use the DOM APIs alongside jQuery. That was always the intended design; you can see it in aspects like the this object inside an event handler being a DOM element, not a jQuery object. About the only place where jQuery requires control is when elements in the DOM are replaced via methods like .html() or removed with a method like .empty(), so that any associated jQuery data can be cleared out.

Similarly, the built-in HTML5 input types can coexist with jQuery UI input widgets. jQuery UI is committed to providing user interface widgets that provide great functionality without sacrificing accessibility, inherently supporting standards such as ARIA.

The jQuery Foundation wants standards-based APIs and cutting-edge JavaScript features to be usable directly by developers. The good news is that the community is making good progress on that goal, and jQuery team members are helping through our participation in the standards process. Yet the continuing evolution of web standards and practices, combined with a vibrant third-party ecosystem of plugins and knowledge, still provide compelling reasons to use jQuery. Web developers deserve to have the best of both.