Page MenuHomePhabricator

Users are provided with a meaningful object diff to determine what changes have been made
Closed, ResolvedPublic

Description

Provide a tree-grouped, labelled object diff, rather than a JSON diff. This makes it easier for the user to determine what changes have been made, as ZIDs aren't particularly meaningful.

We will want to split out differences on the Z2Kxs and group them together, like Wikibase does.

Technically, we WikiLambda needs to implement a subclass of SlotDiffRenderer

Some examples from Wikidata of structure diffs, for inspiration:

Event Timeline

Change 714138 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/WikiLambda@master] Don't explode when the user tries to get a diff

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

Change 714138 merged by jenkins-bot:

[mediawiki/extensions/WikiLambda@master] Don't explode when the user tries to get a diff

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

Jdforrester-WMF renamed this task from WikiLambda needs to implement a subclass of SlotDiffRenderer to Users are provided with a meaningful diff when changes have been made .Mar 8 2022, 10:09 PM
Jdforrester-WMF added a project: Epic.
Jdforrester-WMF updated the task description. (Show Details)

Change 905696 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/WikiLambda@master] [WIP] Render an HTML version of the diff

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

Jdforrester-WMF renamed this task from Users are provided with a meaningful diff when changes have been made to Users are provided with a meaningful object diff to determine what changes have been made.Jun 16 2023, 9:44 AM
Jdforrester-WMF removed a project: Patch-For-Review.

Just want to add a link to @Terasail's amazing script https://www.wikifunctions.org/wiki/User:Terasail/ReadableDiff.js which does some of this in the meantime client-side

Change #1311120 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/WikiLambda@master] diff: Render human-readable grouped ZObject revision diffs

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

Change #1311121 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/WikiLambda@master] diff: Label ZObject body keys in revision diffs

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

Change #1311122 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/WikiLambda@master] diff: Link reference values in ZObject diffs to their targets

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

Change #1311123 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/WikiLambda@master] diff: Tag language-specific diff values with their language and direction

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

Initial implementation:

image.png (1,928×2,266 px, 342 KB)

There'll be more to improve (not least, if you add a value to a list and remove another value, they should show as a such a not a number of moves). But this is a start.

Testing this I'm not sure this makes it easier to understand what's going on.

For example, seeing a simple change of adding one English alias, this is the JSON diff (on master):

Screenshot from 2026-07-20 10-32-05.png (1,917×791 px, 67 KB)

This is the same diff rendered by this patch:

Screenshot 2026-07-20 at 10-29-49 Monolingual text - Wikifunctions.png (1,920×1,873 px, 211 KB)

Found the cause, working on a fix :) Once I'm done, I will test your patch chain again with unbroken diff code and finish the review!

Change #1311120 merged by jenkins-bot:

[mediawiki/extensions/WikiLambda@master] diff: Render human-readable grouped ZObject revision diffs

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

Change #1311121 merged by jenkins-bot:

[mediawiki/extensions/WikiLambda@master] diff: Label ZObject body keys in revision diffs

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

Change #1311122 merged by jenkins-bot:

[mediawiki/extensions/WikiLambda@master] diff: Link reference values in ZObject diffs to their targets

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

Change #1311123 merged by jenkins-bot:

[mediawiki/extensions/WikiLambda@master] diff: Tag language-specific diff values with their language and direction

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