The jQuery Foundation• Created in March 2012• Coordinates the work of jQuery team members and volunteers
The jQuery Foundation Is...• A non-profit organization o Volunteer board of directors o Volunteer president (thats me) o A few paid staff, mainly devs/ops• Funded by o Conferences o Donations – http://jquery.org/donate o Memberships o YOU or your company can be a member http://jquery.org/join
jQuery Foundation• Founding Members
jQuery Foundation• Gold Members
jQuery Foundation Projects• http://github.com/jquery • jQuery Core • jQuery UI • jQuery Mobile • Sizzle selector engine • QUnit unit test framework • jQuery Migrate plugin • TestSwarm CI testing • Documentation sites
Join The Community• It’s all on Github – not just the code• File an issue when you see a problem• Make pull requests against docs• Join our forum and share knowledge
The jQuery Core Library Plan• jQuery 1.9 vs. 2.0 o jQuery 1.x still supports IE 6/7/8 o jQuery 2.x supports modern browsers o The two versions stay in API sync o Both branches maintained by the team• Heavily publicized changes during 2012• Released several public betas• Shipped jQuery 1.9 in January
What We Learned (the Hard Way)Far too many peopleare using "latest"versions in live sites!NEVER HOTLINK:http://code.jquery.com/jquery-latest.jshttp://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js
jQuery 1.9: Users Love It!
jQuery Migrate Plugin• Identifies things your code is doing that jQuery 1.9/2.0 dont support anymore• Actually changes jQuery back to pre-1.9 behavior so older code just works• Lets you use jQuery 1.9/2.0 with code that hasnt been upgraded yet• Documentation gives advice on how to remediate the issue
jQuery Migrate Example
jQuery Migrate Warnings• Shown in the uncompressed version• Problem and solutions documented
How Do I Fix This?
Shut-Up-and-Fix-It ModeInclude the minified version of the plugin and no warnings appear
What We Broke Fixed, and Why• Removed $.browser• Removed .live()• Fixed $.parseJSON
Why $.browser Deserves To Go• Usually the wrong inference• Often assumes future browsers and versions will be broken the same way• Horribly misused and misunderstood
Why You Dont Assume BrowsersChrome added focusin/out two years ago!
Browser Name is Only a BRANDOpera just announced their future products will be based on the WebKit engine, not their own Presto engine.
Internet Explorers Disguises• IE can emulate older versions via <meta name="X-UA-Compatible“ …>• Can be accidentally lobotomized via that confounded Address Bar button• Browser version in the UA string does not represent the real version The Enemy!
Who Else Used $.browser?
Who Else Used $.browser?
Please Dont Do This ...
... copy/pasta is bad!Not fixing the problem, no code attribution
... copy/pasta is bad!Use jQuery Migrate or (better) Modernizr!
Whats Wrong With .live()?• Its like global variables, but for events• Every event that occurs must bubble to document before it can be processed• Processing events can be expensive, especially on deep documents• Still easy to process events globally: o $(document).on("click", "a", linkyClicky);
Whats Wrong With .live()?• Doesnt work well on iPhone/iPad!• iOS doesnt bubble touch events all the way to document• Delegated touch events must be processed below the <body> element Letting all events bubble to document destroys the usefulness of the event propagation model
JSON Should Be JSONThe Bug:• Before 1.9, $.parseJSON("") returned null but its not valid JSONThe Fix:• In 1.9, $.parseJSON("") is an error
The Result: PANIC• We called invalid JSON invalid.• Were also out of coffee.
The Moral of the StoryIn jQuery, every change is a breaking change for some poor developer.
The Other Moral of the StoryNobody tries the jQuery alpha and beta builds.
Big News!• How Big?
Big News!• How Big?
Big News: jQuery 2.0 Beta 2• Released yesterday -- please try it!• Custom builds can shrink size• Bare-bones selector engine option o Basically, just querySelectorAll• How small? o Normal build: 28KB minified and gzipped o Blog example: 17KB o Tiniest build: 14KB
jQuery 2.0: README.NOW Making a public web site? You dont need 2.0 right now!jQuery 2.0 is a good fit for:• Chrome or Firefox plugins• node.js apps (jsdom, Cheerio)• Windows 8 Store ("Modern/Metro") apps• PhoneGap (iPhone/Android/BlackBerry)• Apps using UIWebKit or WebBrowser
jQuery 2.0 is Forward Looking• The jQuery team supports both 1.9 and 2.0; there isnt a problem of using an "unsupported version"• Since 1.x/2.x APIs are the same, there is no problem in using 1.x exclusively on a public web site -- its recommended• You can detect platforms and include 1.9 or 2.0, but beware of your code or plugins using undocumented semantics!
Old Android Browsers Lack ES5EcmaScript 5 is was the 2.0 baseline (-: :-(