Coordinators & PLT Contact
- The coordinator for this working group is Joe LeBlanc.
- The PLT Contact for this working group is Andy Tarr.
Code Quality / Utilities
Technical Work produced by this group
Primary communication will occur on the Joomla CMS Development list. The JUX site will also be used for specific tasking and discussion.
- Integrate jQuery with noConflict mode enabled by default
- Replace frontend MooTools dependencies with jQuery code
jQuery Integration Plan
The overall goal for integrating jQuery is to maintain backwards compatibility in a predictable fashion, while having a plan for upgrading as newer versions come out. While jQuery has broken backwards compatibility in the 1.x series, it always happens with minor releases and not patch releases. They are planning on removing things in 2.0 while deprecating them now: http://blog.jquery.com/2011/11/22/call-for-jquery-1-8-ideas/
For Joomla, the general policy should be to stay with a specific minor release of jQuery for a specific minor release of Joomla. That is, if jQuery 1.7.x is still current, Joomla 3.0 will adopt it. If jQuery 1.8 comes out before Joomla 3.1 is released, Joomla 3.0 will continue to stay on the 1.7.x branch of jQuery. If Joomla 3.0.1 ships with jQuery 1.7.2 and then jQuery 1.7.3 comes out, 1.7.3 would be rolled into Joomla 3.0.1 after testing core functionality.
Rare exceptions to the general policy could be made in the event of a security issue or some other such pressing need.
J! and Beyond 2012
Managing jQuery noConflict, potential solutions:
- load no_conflict.js
- clean up library manager plugin
- JSLint - add to the unit tests
- Ordering: Ability to add a declaration before or after
- Browser Caching - ?#342384623749873 <--- cache bust
- Joomla Caching - addScriptDeclaration: doesn't cache properly.
- Different behavior in modules vs. components
- OR: use defer for asynchronous loading.
Possibility: add code on the client side to detect whether libraries are loaded.
- Would need to document
- Or: Joomla.library('nameoflibrary', '1.0', 'libraryurl');
- Just use Require.js (or don't, it's madness, has ordering issues because it's asynchronous)
- Just use the plugin Joe authored. Or the patch Beat submitted.
- Don't code onClick events directly into markup! Use stopPropagation.
- Geraint brings up a good point: maybe you need to do something before DOMready... but it's on the level of eval()
- Optimize: We're currently loading everything.
- As long as we're still using it, use it modularly, the way it was intended.
- Might have to be done server side.
- Look at LABjs.
- Start a GitHub branch
- Start a Google Group - or do it on the CMS list.
- Sort out 2.5 issues from 3.0 features
- Look at replacing frontend MooTools
- Get email addresses