Your SlideShare is downloading. ×
jQuery Conference 2012 keynote
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

jQuery Conference 2012 keynote


Published on

Published in: Technology
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. jQuery Conference 2012 San Francisco Dave Methvin President, jQuery Foundation Lead Developer, jQuery Core
  • 2. Just a few things going on…• jQuery Foundation – Gives us a way to organize support for the jQuery project and community efforts • Software development • Documentation and training • Conferences – Tomorrow mornings keynote by Richard Worth• jQuery Core, UI, Mobile
  • 3. jQuery Core Timeline• jQuery 1.0: January 2006• jQuery 1.1: January 2007• jQuery 1.2: September 2007• jQuery 1.3: January 2009• jQuery 1.4: January 2010• jQuery 1.5: January 2011• jQuery 1.6: May 2011• jQuery 1.7: November 2011
  • 4. jQuery Core Timeline• jQuery 1.0: January 2006• jQuery 1.1: January 2007• jQuery 1.2: September 2007• jQuery 1.3: January 2009• jQuery 1.4: January 2010• jQuery 1.5: January 2011• jQuery 1.6: May 2011• jQuery 1.7: November 2011
  • 5. jQuery 1.8: July 2012• Only major release this year• Fix bugs, make things faster (of course!)• Add some nice things (CSS vendor prefixes)• Dump unneeded code (Safari 2 for example)• Deprecate "trip hazards" – E.g. $.browser• Set the stage for future work
  • 6. jQuery 1.8: Modularity• New grunt build system (yay @cowboy!)• Intended for advanced users in 1.8 – You must understand your project dependencies• Exclude parts you dont need – ajax, css, dimensions, effects, offset, deprecated• Simple option in the jQuery build – Documented in the README file – Blog post to come
  • 7. jQuery 1.8: Modularity• Theoretical example: Small mobile app – Uses classes for CSS styling and animations – No third-party plugin dependencies – Only needs JSONP, using jaubourgs jsonp.js – jQuery 1.7.2: 32.8KB min-gz (full jQuery) – jQuery 1.8: ~24KB min-gz (including jsonp.js!)
  • 8. THIS is why it cant be simple
  • 9. jQuery 1.8: Closure Compiler• Experimental branch, not yet available• Supports CCs ADVANCED_OPTIMIZATIONS – Renames variables and property names – Eliminates dead (uncalled) functions – Inlines function calls• Intended for really advanced users – vs. obj["name"] confuses optimizer – Code annotations act as optimizer hints – All your code needs to be CC AO safe – Difficult to debug
  • 10. The Future of jQuery
  • 11. The Future of jQuery
  • 12. jQuery 1.9: Early 2013• Continued API cleanup – Better modularity and speed, smaller size – Remove some deprecated APIs• Compatibility plugin – Includes most of the APIs we remove – For the times you just want to "make it work"• Support and unit tests for all major market- share browsers (including IE7/8)• IE6 serious-regressions-only policy
  • 13. This is the exciting part
  • 14. jQuery 2.0: Early 2013• Same API as jQuery 1.9• No major feature additions
  • 15. jQuery 2.0: Early 2013• Same API as jQuery 1.9• No major feature additions
  • 16. jQuery 2.0: Early 2013NO SUPPORTFOR IE6, IE7,NOT EVEN IE8
  • 17. Why This Approach?• OldIE workarounds permeate jQuery – Refactoring to a plugin isnt practical• We have a solution for oldIE – version 1.9 – Remember, its the same API
  • 18. Shunning oldIE: Advantages• Jettison all the oldIE hacks – "Attroperties" – DOM-vs-JavaScript memory leaks – innerHTML serialization quirks – HTML5 shimming – Spontaneous tbody in empty tables – Opacity via filters, causes grainy text – Incorrect case sensitivity on attributes – Non-W3C attachEvent model – Cant change type property of inputs – Link href attribute returns absolute URL – No bubbling on change and submit events – Unreliable offsetHeight on table elements – Thrᵒ exceptions on invalid CSS values ws – Appended checkboxes lose their chec√s – Broken try/finally – theres G0T to be a catch – Host objects, please NOT hosT objects – It comes it cOmes cannot fi​ght it com̡e̶s, ̕ – ̵Un̨ho͞ly code destro҉ying all enli̍̈́̂̈́ghtenment, – JScript lea͠ki̧nᵒ fr̶ǫm ̡yo​ r eye͢s̸ ̛l̕ik͏e liq​uid pain, g ͟u – ALL IS Lo ̩͇̗̪̏̈́T ALL I​S LOST – MY CODE MY CODE ᵒh noNO NOO o
  • 19. Simplify, Simplify, Simplify• Removing oldIE improves the code base – Faster • Fewer feature detects required at load time • Fewer tests needed at run time – Smaller • Especially when combined with modularity! – Revisit design decisions warped by oldIE • E.g., attach data directly to DOM elements
  • 20. Not Just Mobile – Modern• Yes, oldIE is just a "desktop" concern• But "mobile" is not just iOS/Webkit – Poster boy: Microsoft Surface Tablet • Not just one screen size; not Webkit • Mouse, touch, stylus, maybe even Kinect? – Responsive design to the rescue?• jQuery 2.0 will support modern browsers – Not just a Webkit subset of browsers – We dont want to break the web
  • 21. "IE8 cant use my site?"
  • 22. Breaking the Web?• jQuery Core team will support two versions – Version 1.9 works with IE 6/7/8 – Version 2.0 does not "But Dave, my web site still needs to support IE 6/7/8 but I want to use jQuery 2.0!"
  • 23. jQuery 2.0: "Tears of Joy" Policy• Include jQuery 1.9 only for oldIE: !--[if lt IE 9]> <script src="jquery-1.9.0.js"></script> <![endif]--> <!--[if gte IE 9]><!--> <script src="jquery-2.0.0.js"></script> <!--<![endif]-->
  • 24. jQuery Core Future Growth
  • 25. jQuery Core Future Growth• Improve browser features or solve issues that exist everywhere (e.g. CSS vendor prefixes)• Beyond that, emphasis on plugins – Dont make everyone pay for platform-specific features and needs• You can still use a CDN jQuery but compress all your plugins and site code!
  • 26. Why We Plugin: Touch Events• Two non-standard implementations – Webkit touch events – Microsoft MSPointer – No sign of a W3C standard (Apple patents)• Can we normalize like we did with oldIE? – Maybe … but to which implementation? – Webkit: de facto; MSPointer: flexible, unproven• Should we include this in core? – Way too early for that. Plugin for now!