From Fedora Project Wiki
m (→‎Release Notes: Would be informative to quantify what "many" means in "many ... applications have migrated". 50%? 5%?)
 
(15 intermediate revisions by 4 users not shown)
Line 16: Line 16:


== Current status ==
== Current status ==
* Targeted release: [[Releases/21 | Fedora 21 ]]  
* Targeted release: [[Releases/23 | Fedora 23 ]]  
* Last updated: 2014-01-18
* Last updated: 2015-06-23
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
Bugzilla states meaning as usual:
Bugzilla states meaning as usual:
Line 31: Line 31:
Traditionally, a copy of jQuery has been included with every web application that requires it.  This change will migrate many of those applications to a shared system copy of jQuery.
Traditionally, a copy of jQuery has been included with every web application that requires it.  This change will migrate many of those applications to a shared system copy of jQuery.


The following packages will be provided:
The following packages are available in Fedora 21 and later and EPEL 6 and later:
* '''js-jquery''' - The latest version of the jQuery 2.x branch, suitable for web applications that are only compatible with modern web browsers that fully support modern web standards.
* '''js-jquery''' - The latest version of the jQuery 2.x branch, suitable for web applications that are only compatible with modern web browsers that fully support modern web standards.
* '''js-jquery1''' - The latest version of the jQuery 1.x branch, suitable for web applications that endeavor to be compatible with older web browsers such as Internet Explorer 6.
* '''js-jquery1''' - The latest version of the jQuery 1.x branch, suitable for web applications that endeavor to be compatible with older web browsers such as Internet Explorer 6.
* '''js-jquery-migrate''' - The jQuery migrate plugin, which is a compatibility shim that enables web applications that depend on older versions of jQuery to work with the latest version, so that they can be ported away from old, unsupported jQuery versions that may potentially have security issues.
* '''js-jquery-migrate''' - The jQuery migrate plugin, which is a compatibility shim that enables web applications that depend on older versions of jQuery to work with the latest version, so that they can be ported away from old, unsupported jQuery versions that may potentially have security issues.
Some new packages are already beginning to use the system version of jQuery with little trouble, so for Fedora 23 we're going to open the doors to converting existing packages.  We'll send announcements explaining how to unbundle existing packages.  We'll also find all the packages we can that are bundling jQuery and inform maintainers about them, via e-mail only at this time.  (We'll save the mass bug filing for F24 to allow maintainers to have a go at it voluntarily first.  :-)


== Benefit to Fedora ==
== Benefit to Fedora ==
Line 40: Line 42:


== Scope ==
== Scope ==
=== New Packages ===
In addition to the new packages described above, several support packages must be introduced to enable proper building and minification of jQuery packages in Fedora.  For more information, see the [[#Dependencies|dependencies section]].


=== Migrating Web Applications ===
=== Migrating Web Applications ===
Line 58: Line 56:


Certain documentation frameworks, such as python-sphinx, ship copies of jQuery as well.  These frameworks will be modified to use a symlink or other means so that they too can use the new systemwide versions.
Certain documentation frameworks, such as python-sphinx, ship copies of jQuery as well.  These frameworks will be modified to use a symlink or other means so that they too can use the new systemwide versions.
=== Policies and guidelines ===
None other than [[Changes/Web_Assets#FPC_2|those needed for JavaScript packaging in general]].


=== Release Engineering ===
=== Release Engineering ===
Line 84: Line 78:


Once it's all done, change it to <code><nowiki>{{status|done|your_FAS_username}}</nowiki></code> and give yourself a pat on the back!  You'll also be awarded a shiny [https://badges.fedoraproject.org/badge/web-warrior Web Warrior badge] for your effort.
Once it's all done, change it to <code><nowiki>{{status|done|your_FAS_username}}</nowiki></code> and give yourself a pat on the back!  You'll also be awarded a shiny [https://badges.fedoraproject.org/badge/web-warrior Web Warrior badge] for your effort.
=== js-jquery* BuildRequires ===
{| border="0"
! Package !! Status
|-
| nodejs-archiver || {{status|inprogress|patches}}
|-
| &rarr; nodejs-lazystream || {{status|inprogress|patches}}
|-
| &rarr; nodejs-readablestream || [https://lists.fedoraproject.org/pipermail/nodejs/2014-March/000112.html not needed]
|-
| &rarr; &nbsp; &rarr; nodejs-string_decoder || [https://lists.fedoraproject.org/pipermail/nodejs/2014-March/000112.html not needed]
|-
| &rarr; nodejs-zip-stream || {{status|inprogress|patches}}
|-
| &rarr; &nbsp; &rarr; nodejs-lodash-dot-defaults || {{status|inprogress|patches}}
|-
| &rarr; nodejs-file-utils || {{status|inprogress|patches}}
|-
| &rarr; &nbsp; &rarr; nodejs-isbinaryfile || {{status|inprogress|patches}}
|-
| nodejs-gzip-js || [[{{TALKPAGENAME}}|not needed]]
|-
| &rarr; nodejs-crc32 || [[{{TALKPAGENAME}}|not needed]]
|-
| &rarr; nodejs-deflate-js || [[{{TALKPAGENAME}}|not needed]]
|-
| nodejs-testswarm || {{status|done|jamielinux}}
|-
| nodejs-load-grunt-tasks || {{status|needreview|jamielinux}} [https://bugzilla.redhat.com/show_bug.cgi?id=1082343]
|-
| &rarr; nodejs-multimatch || {{status|done|jamielinux}}
|-
| nodejs-requirejs || {{status|done|jamielinux}}
|-
| nodejs-shelljs || {{status|needreview|jamielinux}} [https://bugzilla.redhat.com/show_bug.cgi?id=1082341]
|-
| nodejs-grunt || {{status|done|jamielinux}}
|-
| nodejs-grunt-cli || {{status|done|jamielinux}}
|-
| nodejs-grunt-contrib-uglify || {{status|needreview|jamielinux}} [https://bugzilla.redhat.com/show_bug.cgi?id=977125]
|-
| &rarr; nodejs-grunt-contrib-clean || {{status|done|jamielinux}}
|-
| &rarr; nodejs-grunt-contrib-internal || {{status|done|jamielinux}}
|-
| &rarr; nodejs-chalk || {{status|done|jamielinux}}
|-
| &nbsp; &nbsp; &rarr; nodejs-ansi-styles || {{status|done|jamielinux}}
|-
| &nbsp; &nbsp; &rarr; nodejs-has-color || {{status|done|jamielinux}}
|-
| &nbsp; &nbsp; &rarr; nodejs-strip-ansi || {{status|done|jamielinux}}
|-
| &rarr; nodejs-maxmin || {{status|done|jamielinux}}
|-
| &nbsp; &nbsp; &rarr; nodejs-pretty-bytes || {{status|done|jamielinux}}
|-
| &nbsp; &nbsp; &rarr; nodejs-gzip-size || {{status|done|jamielinux}}
|-
| &nbsp; &nbsp; &nbsp; &nbsp; &rarr; nodejs-concat-stream || {{status|done|jamielinux}}
|-
| &nbsp; &nbsp; &nbsp; &nbsp; &rarr; nodejs-zlib-browserify || {{status|done|jamielinux}}
|-
| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &rarr; js-zlib || {{status|done|jamielinux}}
|-
| nodejs-grunt-contrib-watch || {{status|needreview|jamielinux}} [https://bugzilla.redhat.com/show_bug.cgi?id=1082334]
|-
| &rarr; nodejs-tiny-lr-fork || {{status|done|jamielinux}}
|-
| &nbsp; &nbsp; &rarr; nodejs-noptify || {{status|done|jamielinux}}
|-
| &nbsp; &nbsp; &rarr; nodejs-faye-websocket || {{status|needreview|jamielinux}} [https://bugzilla.redhat.com/show_bug.cgi?id=1082329]
|-
| &nbsp; &nbsp; &nbsp; &nbsp; &rarr; nodejs-websocket-driver || {{status|done|jamielinux}}
|-
| nodejs-grunt-bowercopy || [[{{TALKPAGENAME}}|nice to have]]
|-
| nodejs-grunt-compare-size || {{status|needreview|jamielinux}} [https://bugzilla.redhat.com/show_bug.cgi?id=1082340]
|-
| nodejs-grunt-git-authors || {{status|needreview|jamielinux}} [https://bugzilla.redhat.com/show_bug.cgi?id=1082339]
|-
| nodejs-grunt-jscs-checker || [[{{TALKPAGENAME}}|not needed]]
|-
| nodejs-grunt-jsonlint || [[{{TALKPAGENAME}}|not needed]]
|}


=== Web Application packages that need to be migrated ===
=== Web Application packages that need to be migrated ===


This section will be updated once jQuery packages are available with a complete list and status table as above.  [http://patches.fedorapeople.org/js-repoqueries/jquery.js.txt Some low-hanging fruit is listed here.]
Coming Early July!


=== Documentation frameworks that need attention ===
=== Documentation frameworks that need attention ===


This section will be updated once jQuery packages are available with a complete list and status table as above. [http://patches.fedorapeople.org/js-repoqueries/jquery.js.txt Some low-hanging fruit is listed here.]
Coming Early July!


== Contingency Plan ==
== Contingency Plan ==
Line 193: Line 100:
jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. With a combination of versatility and extensibility, jQuery has changed the way that millions of people write JavaScript.
jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. With a combination of versatility and extensibility, jQuery has changed the way that millions of people write JavaScript.


Traditionally, a copy of jQuery has been included with every web application that requires it.  Starting with Fedora 21, many of those applications have migrated to a shared system copy of jQuery.
Traditionally, a copy of jQuery has been included with every web application that requires it.  Starting with Fedora 21, many <sup>[what fraction?]</sup> of those applications have migrated to a shared system copy of jQuery.


If you're developing an application that uses jQuery on Fedora and don't want to download your own copy or rely on a third-party CDN, you can now install one of our jquery packages and use it instead.  You can find the 1.x branch of jQuery that supports Internet Explorer 6 in the js-jquery1 package, and the 2.x branch of jQuery that only works with modern web browsers in the js-jquery package.  For more information on using these packages in your applications, see [https://fedoraproject.org/wiki/Web_Assets].
If you're developing an application that uses jQuery on Fedora and don't want to download your own copy or rely on a third-party CDN, you can now install one of our jquery packages and use it instead.  You can find the 1.x branch of jQuery that supports Internet Explorer 6 in the js-jquery1 package, and the 2.x branch of jQuery that only works with modern web browsers in the js-jquery package.  For more information on using these packages in your applications, see [https://fedoraproject.org/wiki/Web_Assets].


[[Category:ChangeAcceptedF21]]
[[Category:ChangePageIncomplete]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->

Latest revision as of 14:19, 11 August 2015

jQuery

Summary

jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. With a combination of versatility and extensibility, jQuery has changed the way that millions of people write JavaScript.

Traditionally, a copy of jQuery has been included with every web application that requires it. This change will migrate many of those applications to a shared system copy of jQuery. Both the 1.x branch of jQuery that supports Internet Explorer 6 and the 2.x branch of jQuery that only works with modern web browsers will be provided.

Owners

Current status

Detailed Description

Traditionally, a copy of jQuery has been included with every web application that requires it. This change will migrate many of those applications to a shared system copy of jQuery.

The following packages are available in Fedora 21 and later and EPEL 6 and later:

  • js-jquery - The latest version of the jQuery 2.x branch, suitable for web applications that are only compatible with modern web browsers that fully support modern web standards.
  • js-jquery1 - The latest version of the jQuery 1.x branch, suitable for web applications that endeavor to be compatible with older web browsers such as Internet Explorer 6.
  • js-jquery-migrate - The jQuery migrate plugin, which is a compatibility shim that enables web applications that depend on older versions of jQuery to work with the latest version, so that they can be ported away from old, unsupported jQuery versions that may potentially have security issues.

Some new packages are already beginning to use the system version of jQuery with little trouble, so for Fedora 23 we're going to open the doors to converting existing packages. We'll send announcements explaining how to unbundle existing packages. We'll also find all the packages we can that are bundling jQuery and inform maintainers about them, via e-mail only at this time. (We'll save the mass bug filing for F24 to allow maintainers to have a go at it voluntarily first.  :-)

Benefit to Fedora

Fedora's "first" foundation will finally be extended to a core library of the web. Numerous potential security vulnerabilities, including known cross-site scripting attacks, will be prevented by requiring all web applications to use upstream-maintained versions of jQuery.

Scope

Migrating Web Applications

Web applications that depend on modern versions of jQuery will simply be ported to use the systemwide version instead,

Web applications that use older versions of jQuery (> 1.6.4 but <1.9) will be ported to use jquery-migrate and the systemwide version of jQuery. Packagers will be encouraged to work with upstream to migrate to the latest version of jQuery without jquery-migrate, since using this plugin re-enables misfeatures rightly removed from jQuery core that are XSS holes waiting to happen.

Maintainers of web applications that use extremely old versions of jQuery (< 1.6.4) will be strongly encouraged to work with upstream to migrate to the latest versions of jQuery and update their packages. However, current Fedora policy regarding bundled libraries permits these packages to be grandfathered in, so I am unable to force any action here.

Preliminary repoqueries have been performed to identify potentially affected packages, see the dependencies section for more details.

Migrating documentation frameworks

Certain documentation frameworks, such as python-sphinx, ship copies of jQuery as well. These frameworks will be modified to use a symlink or other means so that they too can use the new systemwide versions.

Release Engineering

No special attention required.

Upgrade/compatibility impact

Modifications to packages in accordance with this Change should be performed such that they are transparent to consumers of these packages.

How To Test

Try a converted web application and make sure it still works.  :-)

User Experience

End users should notice no difference. System administrators may be pleased to see that they no longer have dozens of copies of the same file on their systems.

Dependencies

This section will be used to track affected packages and individuals working on them.

If you'd like to take on a task, let us know you're working on it by adding {{status|inprogress|your_FAS_username}} to the status column. If you've got something done, but either need a patch reviewed by the maintainer or a review request for a new package to completed, add {{status|needreview|your_FAS_username}} and link to the relevant bug.

Once it's all done, change it to {{status|done|your_FAS_username}} and give yourself a pat on the back! You'll also be awarded a shiny Web Warrior badge for your effort.

Web Application packages that need to be migrated

Coming Early July!

Documentation frameworks that need attention

Coming Early July!

Contingency Plan

None needed. Packages that aren't converted will continue to just bundle jQuery as they always have.

  • Blocks release? No

Documentation

Release Notes

jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. With a combination of versatility and extensibility, jQuery has changed the way that millions of people write JavaScript.

Traditionally, a copy of jQuery has been included with every web application that requires it. Starting with Fedora 21, many [what fraction?] of those applications have migrated to a shared system copy of jQuery.

If you're developing an application that uses jQuery on Fedora and don't want to download your own copy or rely on a third-party CDN, you can now install one of our jquery packages and use it instead. You can find the 1.x branch of jQuery that supports Internet Explorer 6 in the js-jquery1 package, and the 2.x branch of jQuery that only works with modern web browsers in the js-jquery package. For more information on using these packages in your applications, see [1].