Page MenuHomePhabricator

Remove jQuery.UI from Extension:Translate or use a local version
Closed, ResolvedPublic8 Estimated Story PointsBUG REPORT

Description

jQuery UI has been deprecated since 2017 and is now end of life.

Please help us migrate away from it in MediaWiki core by working out the migration path for this code.

jquery.ui is used in the following modules :

  • ext.translate.groupselector - https://jqueryui.com/position/#default - Used a local copy of jquery.position with tweaks
  • ext.translate.special.aggregategroups - https://jqueryui.com/autocomplete/ - Used OOUI entity.selector
  • ext.translate.special.importtranslations - Does not appear to be used. I think can be safely removed
  • ext.translate.special.managetranslatorsandbox - Does not appear to be used. Can be safely removed.
  • ext.translate.special.searchtranslations.operatorsuggest - Removed and added a hint at the bottom of the control

Event Timeline

or use a local version

Surely if we're saying it's EOL then the Security risk rating for maintaining a local version would not be acceptable?

Surely if we're saying it's EOL then the Security risk rating for maintaining a local version would not be acceptable?

Correct, but could be useful as a short term measure to migrate away at own pace.

abi_ set the point value for this task to 4.

Change 929957 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/Translate@master] ManageTranslatorSandbox: Remove jQuery.ui

https://gerrit.wikimedia.org/r/929957

Change 929959 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/Translate@master] ImportTranslations: Remove jQuery.ui dependency

https://gerrit.wikimedia.org/r/929959

abi_ changed the point value for this task from 4 to 8.

Change 931305 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/Translate@master] AggregateGroupsSpecialPage: Use entity.selector to select groups

https://gerrit.wikimedia.org/r/931305

Change 929959 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ImportTranslations: Remove jQuery.ui dependency

https://gerrit.wikimedia.org/r/929959

Change 929957 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ManageTranslatorSandbox: Remove jQuery.ui

https://gerrit.wikimedia.org/r/929957

Nikerabbit changed the task status from Open to In Progress.Jul 4 2023, 8:41 AM

Change 939792 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/Translate@master] GroupSelector: Use jquery.ui.position to remove jquery.ui dependency

https://gerrit.wikimedia.org/r/939792

Change 940389 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/Translate@master] SearchTranslation: Remove autocomplete for operator suggestions

https://gerrit.wikimedia.org/r/940389

To remove jquery.ui from the SearchTranslations page, I've removed the autocomplete that was being used for suggestion operators. Instead I added a help message under the search input.

See image below:

image.png (396×729 px, 29 KB)

Change 931305 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] AggregateGroupsSpecialPage: Use entity.selector to select groups

https://gerrit.wikimedia.org/r/931305

Change 940389 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] SearchTranslations: Remove autocomplete for operator suggestions

https://gerrit.wikimedia.org/r/940389

Change 939792 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] GroupSelector: Use jquery.ui.position to remove jquery.ui dependency

https://gerrit.wikimedia.org/r/939792

We've removed the usage of jQuery.ui in the group selector component. This is deployed on translatewiki.net and tested:

On translatewiki main page:

image.png (691×1 px, 167 KB)

On Special:Translate:

image.png (657×744 px, 44 KB)

@abi_ You said in https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Translate/+/939792/comments/5dd59da3_2a99a05f that using the copy of jQuery.UI is only a stopgap solution. Since you closed this task as resolved, what other task tracks replacing it with a permanent solution?