Page MenuHomePhabricator

Language team: Review stable code (hooks, mw object, undocumented) and mark (un)stable interfaces before 1.42.0
Open, In Progress, HighPublic2 Estimated Story Points

Description

The stable interface policy was introduced in September 2023 during the 1.41 MediaWiki release. As a result of the introduction of this policy I am asking teams to take the opportunity to review their existing stable APIs and take appropriate action to limit unsupported APIs where necessary and possible.

TODO

  • Please read the guidelines around what constitutes stable code
  • Please remove any functions on the mw object that you do not wish to consider stable. Note "Code that was never part of a public MediaWiki release, and never consumed according to Codesearch and Global Search MAY be changed (including marked explicitly as @private) or removed without deprecation, since the code has never become part of the stable interface or used."
  • Please add @private or @internal documentation tags to hook events that you wish to limit usage of.

Details

SubjectRepoBranchLines +/-
mediawiki/extensions/Translatemaster+1 -1
mediawiki/extensions/Translatemaster+18 -1
mediawiki/extensions/Translatemaster+1 -0
mediawiki/extensions/Translatemaster+9 -5
mediawiki/extensions/Translatemaster+15 -0
mediawiki/extensions/Translatemaster+20 -1
mediawiki/extensions/Translatemaster+9 -8
mediawiki/extensions/Translatemaster+43 -2
mediawiki/extensions/Translatemaster+13 -1
mediawiki/extensions/Translatemaster+11 -11
mediawiki/extensions/Translatemaster+18 -0
mediawiki/extensions/Translatemaster+69 -2
mediawiki/extensions/Translatemaster+18 -0
mediawiki/extensions/Translatemaster+4 -2
mediawiki/extensions/Translatemaster+5 -0
mediawiki/extensions/Translatemaster+1 -0
mediawiki/extensions/Translatemaster+1 -1
mediawiki/extensions/Translatemaster+1 -0
mediawiki/extensions/Translatemaster+1 -0
mediawiki/extensions/Translatemaster+26 -4
Show related patches Customize query in gerrit

Event Timeline

Jdlrobson renamed this task from Language team: Review code on mw object and mark (un)stable interfaces before 1.42.0 to Language team: Review code on mw object and mark (un)stable interfaces before 1.41.0.Oct 4 2023, 12:12 AM
Jdlrobson edited projects, added MW-1.41-release; removed MW-1.42-release.
Jdlrobson updated the task description. (Show Details)
Jdlrobson renamed this task from Language team: Review code on mw object and mark (un)stable interfaces before 1.41.0 to Language team: Review stable code (hooks, mw object, undocumented) and mark (un)stable interfaces before 1.42.0.Oct 4 2023, 4:46 PM

FYI, the 1.42 branch point is in a matter of hours; it doesn't appear that this will be done by then?

Hey @Nikerabbit the stable policy grace period is now closed, so any code from now on that has not been marked as @internal or @private should be considered stable per the frontend stable policy.

For language team I think the implications of this is that Translate, ULS, ContentTranslation now have the following APIs (and all public methods associated with these objects) can now be considered stable for use in extensions and gadgets (and are subject to the deprecation policy). I've included the list of methods/hooks that can now be considered stable below.

If this is not acceptable please comment in the next 7 days so we have a record of the intent to change this, otherwise we can decline this ticket. If it isn't this should be prioritized asap and backported to the deployment branch.

  • mw.translate
  • mw.uls
  • mw.ime

*mw.webfonts

  • mw.cx

Hooks:

  • mw.uls.interface.language.change
  • mw.uls.compactlinks.initialized
  • mw.uls.login.click
  • mw.uls.interface.morelanguages
  • mw.uls.webfonts.enable
  • mw.uls.webfonts.disable
  • mw.uls.font.change
  • mw.uls.ime.disable
  • mw.uls.ime.change
  • mw.uls.ime.morelanguages
  • mw.uls.ime.change
  • mw.uls.language.revert
  • mw.uls.settings.open
  • mw.uls.settings.cancel
  • mw.uls.settings.apply
  • mw.uls.compact_language_links.open
  • mw.uls.interface.language.change
  • mw.cx.dashboard.ready'
  • mw.cx.error
  • mw.cx.translation.conflict
  • mw.cx.warning
  • mw.cx.success
  • mw.cx.cta.accept
  • mw.cx.suggestion.action
  • mw.cx.translation.deleted
  • mw.cx.betafeature.enabled
  • mw.cx.cta.shown
  • mw.cx.cta.reject
  • mw.cx.translation.published
  • mw.cx.translation.publish.error
  • mw.cx.translation.saved
  • mw.cx.translation.save-failed
  • mw.cx.translation.continued
  • mw.cx.draft.restore-failed
  • mw.cx.translation.abusefilter
  • mw.cx.error.anonuser
  • mw.cx.draft.restored
  • mw.translate.editor.afterEditorShown
  • mw.translate.editor.beforeSubmit
  • mw.translate.editor.afterSubmit
  • mw.translate.editor.afterEditorShown
  • mw.translate.messagetable.formatMessageBeforeTable
  • mw.translate.translationView.stateChange
  • mw.translate.editor.showTranslationHelpers
Nikerabbit raised the priority of this task from Medium to High.Apr 16 2024, 6:13 AM

We are planning to mark the values on the global mw object as internal and leave the hooks to be public.

Thanks! On the long term you may also want to move the code off the global and into require statements, but no need to do this as part of this ticket - the intention of this ticket is only to make sure the stability of these APIs is well documented in jsdoc blocks. Let me know if you have any more questions!

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

[mediawiki/extensions/Translate@master] ext.translate.base.js: Mark methods as @private

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

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

[mediawiki/extensions/Translate@master] MessageRenameDialog: Mark constructor as private

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

abi_ changed the task status from Open to In Progress.May 2 2024, 4:10 AM
abi_ claimed this task.

Change #1025273 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.base.js: Mark methods and properties as @private

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

Change #1025274 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] MessageRenameDialog: Mark constructor as private

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

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

[mediawiki/extensions/Translate@master] mw.translate.TranslationApiStorage: Mark as private

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

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

[mediawiki/extensions/Translate@master] mw.translate.recentGroups: Mark as @private

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

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

[mediawiki/extensions/Translate@master] ext.translate.parsers.js: Mark method as private

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

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

[mediawiki/extensions/Translate@master] ext.translate.special.pagemigration: Mark methods as private

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

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

[mediawiki/extensions/Translate@master] ext.translate.messagetable: Mark method as private

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

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

[mediawiki/extensions/Translate@master] ext.translate.translationstats.graphbuiler: Mark method as private

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

Change #1036203 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] mw.translate.storage.js: Mark methods as private

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

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

[mediawiki/extensions/Translate@master] ext.translate.editor.helpers: Mark methods as internal

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

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

[mediawiki/extensions/Translate@master] ext.translate.editor.js: Mark methods as private or internal

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

Change #1036204 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] mw.translate.recentgroups.js: Mark method as internal

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

Change #1036205 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.parsers.js: Mark method as internal

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

Change #1036226 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.special.pagemigration.js: Mark methods as internal

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

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

[mediawiki/extensions/Translate@master] ext.translate.groupselector.js: Mark methods as private and internal

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

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

[mediawiki/extensions/Translate@master] ext.translate.pagemode.js: Mark methods as private

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

Change #1036227 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.messagetable.js: Mark methods as private or internal

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

Change #1036229 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.translationstats.graphbuiler: Mark methods as internal

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

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

[mediawiki/extensions/Translate@master] ext.translate.pagetranslation.uls.js: Mark methods as internal

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

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

[mediawiki/extensions/Translate@master] ext.translate.proofread.js: Mark methods as private

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

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

[mediawiki/extensions/Translate@master] ext.translate.special.translate.js: Mark methods as private or internal

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

Change #1036587 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.editor.helpers: Mark methods as internal

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

Change #1041084 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.editor.js: Mark methods as private or internal

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

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

[mediawiki/extensions/Translate@master] ext.translate.workflowselector.js: Mark methods as private or internal

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

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

[mediawiki/extensions/Translate@master] ext.translate.editor.js: Tweaks to method level comments

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

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

[mediawiki/extensions/Translate@master] jquery.ajaxdispatcher: Mark method as internal

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

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

[mediawiki/extensions/Translate@master] ext.translationstats.graphbuilder: Update method as internal

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

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

[mediawiki/extensions/Translate@master] ext.translate.base.js: Update methods as internal

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

Change #1041397 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.groupselector.js: Mark methods as private and internal

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

Change #1041398 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.pagemode.js: Mark methods as private

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

Change #1043143 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.pagetranslation.uls.js: Mark methods as internal

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

Change #1043144 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.proofread.js: Mark methods as private

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

Change #1043145 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.special.translate.js: Mark methods as private or internal

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

Change #1047476 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.editor.js: Tweaks to method level comments

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

Change #1047479 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.workflowselector.js: Mark methods as private or internal

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

Change #1049119 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] jquery.ajaxdispatcher: Mark method as internal

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

Change #1049120 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translationstats.graphbuilder: Update method as internal

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