Page MenuHomePhabricator

The `data-mw` attribute should be reserved for Parsoid use; rename data-mw="interface" to data-mw-interface
Open, Needs TriagePublic

Description

As in the title, the data-mw attribute should be reserved for Parsoid use. Even though there is no specific conflict at the moment, as the use of Parsoid Read View html increases (with data-mw attributes on article pages) and gadgets that might try to parse those data-mw attributes, it would be best to avoid the possibility of conflict.

Background

This is needed by the editing team to avoid issues when copying and pasting into the editor.

Sequencing

Readers teams

  • Update logout feature for Minerva
  • Update logout feature for Vector 2022
  • Update logout feature for CologneBlue
  • Update logout feature for Timeless, Monobook gerrit
  • Update notifications and watchstar gerrit 1 gerrit 2

Editing

Moderator tools (and editing)

Content transformers

Probably not necessary but listed for completeness

The following repos have index files referencing old markup.

  • Update services/recommendation-api
  • Update wikifeeds

Sign off

Details

Related Changes in Gerrit:
SubjectRepoBranchLines +/-
mediawiki/extensions/VisualEditormaster+1 -3
mediawiki/extensions/DiscussionToolsmaster+1 -3
mediawiki/extensions/Flowmaster+6 -6
mediawiki/coremaster+9 -13
mediawiki/extensions/RevisionSlidermaster+5 -5
mediawiki/corewmf/1.46.0-wmf.7+14 -12
mediawiki/coremaster+14 -12
mediawiki/extensions/VisualEditormaster+3 -1
mediawiki/extensions/DiscussionToolsmaster+3 -1
mediawiki/extensions/Flowmaster+6 -6
mediawiki/coremaster+3 -16
mediawiki/coremaster+3 -3
mediawiki/skins/MinervaNeuemaster+1 -1
mediawiki/coremaster+7 -3
mediawiki/coremaster+4 -1
mediawiki/coremaster+1 -1
mediawiki/skins/Vectormaster+3 -3
mediawiki/coremaster+1 -1
mediawiki/skins/MinervaNeuemaster+11 -11
mediawiki/skins/MinervaNeuemaster+1 -1
mediawiki/skins/CologneBluemaster+1 -1
mediawiki/skins/Vectormaster+3 -3
mediawiki/skins/CologneBluemaster+0 -1
mediawiki/services/recommendation-apimaster+1 -1
mediawiki/services/recommendation-apimaster+1 -1
mediawiki/services/wikifeedsmaster+1 -1
mediawiki/services/wikifeedsmaster+1 -1
mediawiki/extensions/VisualEditormaster+1 -1
mediawiki/extensions/DiscussionToolsmaster+1 -1
mediawiki/extensions/RevisionSlidermaster+5 -5
Show related patches Customize query in gerrit

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Change #1201762 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/services/wikifeeds@master] Replace data-mw="interface" with data-mw-interface

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

Change #1201763 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Use data-mw-interface instead of data-mw="interface"

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

Change #1201764 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/skins/CologneBlue@master] Add data-mw-interface in addition to data-mw="interface"

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

Change #1201765 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/skins/CologneBlue@master] Replace data-mw="interface" with data-mw-interface

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

Is the plan for data-mw-interface to eventually replace data-mw ? I am not a big fan of having to add two obscure parameters to elements and it also seems risky given the main existence of this attribute is for security. This also seems like signing us a lot of teams up for a lot of migration work. What is the timeline for standardizing on one?

The intention is to replace data-mw with data-mw-interface entirely. The patches have already been written, so I don't expect any teams need to do additional work. I was unable to find any documentation of data-mw="interface" to begin with (!) other than comments in the code, which I've updated.

I expect this will can go out in a single train; adding support for both interfaces just works around CI dependencies. For extra safety, it could go out in two trains, with the data-mw="interface" not being removed from generated elements until after data-mw-interface was successfully deployed to production.

If I recall correctly, we objected to data-mw="interface" originally, but it was considered a one-off special case at the time. I was a little surprised to see how far it has spread since then, and I think it's important to fix it now before this becomes an even larger problem as data-mw attributes appear on parsoid-read-views pages and the chance of gadgets getting confused grows larger.

Change #1201761 abandoned by C. Scott Ananian:

[mediawiki/services/wikifeeds@master] Add data-mw-interface in addition to data-mw="interface"

Reason:

Squashed with Ie2f80559f4f2748860fcd6e8a52aaac03225f7d4

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

My assumption is that data-mw="interface" is only used on interface elements, ie from the skin and special pages, and not in article body content. As such we don't need a length overlap of data-mw="interface" and data-mw-interface in production; the switch could (in theory) roll out in a single train. @Jdlrobson do you know that not to be the case? If data-mw="interface" appears in the ParserCache, then we should wait 30 days between switching to data-mw-interface in the producers and removing support for data-mw="interface" from the clients.

I'm not sure if you can make that assumption. I'm pretty sure I've seen data-mw in content somewhere (but that may have since been removed). It would need to be checked.

However, we do need to wait on Varnish/ATC cache which is 2 weeks (T366517#10104090).

However I think if changing this you need to understand all the features to make sure they are adequately tested.

For example the logout link modification you are proposing in A and B definitely needs its own task - the readers experience team should be manually testing this patch to ensure we don't break logout workflows (this previously broke in a way that when unnoticed for quite some time).

I'd recommend this approach for that:

  1. Update JavaScript in core to check both data-mw and data-mw-interface
  2. Skins: Update HTML to data-mw-interface to use only data-mw-interface
  3. Wait 2 weeks and then update core to only use one

I think duplicating this attribute everywhere it occurs is inviting bugs by skirting around a need to test.

There are uses of data-mw in mainspace (never mind others) but I would guess all of it is being pooped out of ContentTranslation or VisualEditor via copy-paste bugs or similar.

Change #1201753 merged by jenkins-bot:

[mediawiki/extensions/RevisionSlider@master] Add data-mw-interface in addition to data-mw="interface"

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

I see a couple gadgets on he and hu wiki also that seem to care about the property.

I tweaked your regexp a bit and see this on 7 wikis.

Change #1202229 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] [Mod Tools] Allow use of data-mw-interface instead of data-mw="interface"

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

Change #1202230 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Use data-mw-interface instead of data-mw="interface"

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

Change #1202299 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Remove data-mw="interface"

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

Change #1201709 abandoned by C. Scott Ananian:

[mediawiki/extensions/DiscussionTools@master] Add data-mw-interface in addition to data-mw="interface"

Reason:

Squashed into I7f20c2d06c67ce37c4df105de6d25b695d0bfd8d

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

Change #1201757 abandoned by C. Scott Ananian:

[mediawiki/extensions/VisualEditor@master] Add data-mw-interface in addition to data-mw="interface"

Reason:

Squashed into I7f298a9002228b28c2b81f2209d3e23f00a613e7

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

Change #1202311 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/skins/MinervaNeue@master] Switch logout link to use data-mw-interface

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

Change #1201761 restored by C. Scott Ananian:

[mediawiki/services/wikifeeds@master] Add data-mw-interface in addition to data-mw="interface"

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

Change #1210679 had a related patch set uploaded (by Jdlrobson; author: Jdlrobson):

[mediawiki/core@master] Logout: Replace data-mw="interface" with data-mw-interface

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

Change #1210680 had a related patch set uploaded (by Jdlrobson; author: Jdlrobson):

[mediawiki/core@master] Logout link: Remove support for data-mw="interface"

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

Change #1201765 abandoned by Jdlrobson:

[mediawiki/skins/CologneBlue@master] Replace data-mw="interface" with data-mw-interface (server-side)

Reason:

Done in https://gerrit.wikimedia.org/r/c/mediawiki/skins/CologneBlue/+/1201764

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

Change #1210728 had a related patch set uploaded (by Jdlrobson; author: Jdlrobson):

[mediawiki/core@master] Logout: Switch Monobook, Timeless, Vector to data-mw-interface

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

Change #1201708 abandoned by Jdlrobson:

[mediawiki/skins/Vector@master] Replace data-mw="interface" with data-mw-interface (server-side)

Reason:

Not necessary. Can be done in single patch https://gerrit.wikimedia.org/r/c/mediawiki/skins/Vector/+/1201707

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

Change #1201764 merged by jenkins-bot:

[mediawiki/skins/CologneBlue@master] Swap data-mw="interface" with data-mw-interface for logout

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

Change #1202311 abandoned by Jdlrobson:

[mediawiki/skins/MinervaNeue@master] Switch logout link to use data-mw-interface

Reason:

Not necessary. See https://gerrit.wikimedia.org/r/c/mediawiki/skins/MinervaNeue/+/1201703

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

Change #1210679 merged by jenkins-bot:

[mediawiki/core@master] Logout: Replace data-mw="interface" with data-mw-interface

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

Change #1201703 merged by jenkins-bot:

[mediawiki/skins/MinervaNeue@master] Logout: Switch data-mw="interface" for data-mw-interface

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

Change #1201707 merged by jenkins-bot:

[mediawiki/skins/Vector@master] Logout: Swap data-mw="interface" for data-mw-interface

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

Change #1202231 had a related patch set uploaded (by Jdlrobson; author: C. Scott Ananian):

[mediawiki/core@master] Remove back-compat support for data-mw="interface"

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

Change #1210680 abandoned by Jdlrobson:

[mediawiki/core@master] Logout link: Remove support for data-mw="interface"

Reason:

Will be done in https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1202231

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

Change #1210728 merged by jenkins-bot:

[mediawiki/core@master] Logout: Switch Monobook, Timeless, Vector to data-mw-interface

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

Change #1201763 merged by jenkins-bot:

[mediawiki/core@master] [Readers Exp] Switch to data-mw-interface (client-side)

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

Change #1201704 merged by jenkins-bot:

[mediawiki/skins/MinervaNeue@master] Switch notification area to mw-data-interface

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

Change #1202229 abandoned by Jdlrobson:

[mediawiki/core@master] [Moderator Tools] Switch to data-mw-interface (client-side)

Reason:

Folded into parent and updated JS to work with old and new HTML

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

Change #1202299 abandoned by Jdlrobson:

[mediawiki/core@master] [Moderator tools] Remove data-mw="interface" (server-side)

Reason:

Folded into https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1202231?usp=search

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

Change #1201705 abandoned by Jdlrobson:

[mediawiki/extensions/Flow@master] Replace data-mw="interface" with data-mw-interface (server-side)

Reason:

Not necessary. Covered by https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Flow/+/1201701

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

There are uses of data-mw in mainspace […]

These are not "uses". The purpose of data-mw is for software to securely communicate internally between two components. These have always been stripped the Parser/Sanitizer. The changes in this task do not affect these pages in any way, as these attributes aren't actually there.

Edit wikitext input
<div data-mw>x</div>
<div data-mw="y">y</div>
<div data-mw="interface">z</div>
<div data-mw-interface="1">one</div>
Preview output
<div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<div>x</div>
<div>y</div>
<div>z</div>
<div>one</div>
</div>

There are uses of data-mw in mainspace […]

These are not "uses". [...]

That's good to know. The main point of that comment was actually the second half of the sentence i.e that they're probably there due to bugs in CX/VE (and so perhaps not something to care about in this context).

Change #1201710 merged by jenkins-bot:

[mediawiki/extensions/DiscussionTools@master] Replace data-mw="interface" with data-mw-interface

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

Change #1201758 merged by jenkins-bot:

[mediawiki/extensions/VisualEditor@master] Replace data-mw="interface" with data-mw-interface (client-side)

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

Test wiki created on Patch demo by Jdlrobson using patch(es) linked to this task:
https://653121c8ae.catalyst.wmcloud.org/w/

Change #1202230 merged by jenkins-bot:

[mediawiki/core@master] [Moderator tools] Add data-mw-interface in addition to data-mw="interface"

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

Change #1218776 had a related patch set uploaded (by Jsn.sherman; author: C. Scott Ananian):

[mediawiki/core@wmf/1.46.0-wmf.7] [Moderator tools] Add data-mw-interface in addition to data-mw="interface"

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

Change #1218776 merged by jenkins-bot:

[mediawiki/core@wmf/1.46.0-wmf.7] [Moderator tools] Add data-mw-interface in addition to data-mw="interface"

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

Mentioned in SAL (#wikimedia-operations) [2025-12-16T23:28:18Z] <egardner@deploy2002> Started scap sync-world: Backport for [[gerrit:1218776|[Moderator tools] Add data-mw-interface in addition to data-mw="interface" (T409187)]], [[gerrit:1218825|Delay StickyHeaders section click instrumentation for slow loads (T412857)]]

Mentioned in SAL (#wikimedia-operations) [2025-12-16T23:32:31Z] <egardner@deploy2002> jsn, egardner: Backport for [[gerrit:1218776|[Moderator tools] Add data-mw-interface in addition to data-mw="interface" (T409187)]], [[gerrit:1218825|Delay StickyHeaders section click instrumentation for slow loads (T412857)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2025-12-16T23:40:05Z] <egardner@deploy2002> Finished scap sync-world: Backport for [[gerrit:1218776|[Moderator tools] Add data-mw-interface in addition to data-mw="interface" (T409187)]], [[gerrit:1218825|Delay StickyHeaders section click instrumentation for slow loads (T412857)]] (duration: 11m 47s)

For the record, this change affects several user scripts, in addition to the aforementioned gadgets.

Nardog subscribed.

Please announce these kinds of changes beforehand...

Hello, how should this be worded for Tech News?

@STei-WMF Something like

🛠️ Interface elements such as diffs and categories generated by MediaWiki used to have the attribute data-mw="interface" to distinguish from wiki content. The attribute has been replaced with data-mw-interface="", to avoid potential conflicts with other data-mw attributes, which are generated by Parsoid.

Change #1202231 merged by jenkins-bot:

[mediawiki/core@master] Cleanup: Remove back-compat support for data-mw="interface"

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

Change #1201754 merged by jenkins-bot:

[mediawiki/extensions/RevisionSlider@master] Cleanup: Replace data-mw="interface" with data-mw-interface

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

Change #1201701 merged by jenkins-bot:

[mediawiki/extensions/Flow@master] Replace data-mw="interface" with data-mw-interface

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

Change #1225800 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/VisualEditor@master] Remove no-longer-needed data-mw="interface" selector

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

Change #1225811 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/DiscussionTools@master] Remove no-longer-needed data-mw="interface" selector

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

Change #1225811 merged by jenkins-bot:

[mediawiki/extensions/DiscussionTools@master] Remove no-longer-needed data-mw="interface" selector

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

Change #1225800 merged by jenkins-bot:

[mediawiki/extensions/VisualEditor@master] Remove no-longer-needed data-mw="interface" selector

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