It would be of use to be able to link to a specific change of any given diff, especially in the case of a complex diff. For example, in this diff between two versions of the article "Wikipedia" on the English Wikipedia that I selected at random:

the sentence "Also, all pie-charts may be displayed properly in desktop view, but not in mobile view." has been added to the article at what was previously line 449. If I want to direct someone to that particular change, I need to instruct them to either scroll down to the "Line 449" indicator or search for the text in question. This is inefficient.

So, I suggest that every change in the diff (displayed with a "+" or "-" indicator) is accompanied with an anchor link (preferably using an icon of the chain type commonly used online for permanent links). These would be simply calculated as integers starting at 1.

Let's pretend that in the case of the example above, the change I refer to was the 56th in the diff (it wasn't - actually counting what it was would take a long time). An anchor link for that change would generate the following URL:

That could work. I do quite like having a definite visible icon for discoverability, but some people might see that as clutter. If there were, I would suggest that they be slightly lower contrast until mouseover, to reduce visual noise. Would be interesting to hear from design people about this.

A diff without difftype= would always use the latest algorithm, whatever it may be. Obviously this raises the complexity somewhat; I don't know what the internal policy with regards to diff algorithms is. I would like to imagine that access could still be provided to older ones in the event of changes. Someone who's actually a developer, unlike me, can hopefully shed some light on that.

@Nemo_bis@Legoktm I suppose that change does not affect most/all Wikimedia sites, which use the wikidiff2 PHP extension? Why are IDs added only for lines on the left, not on the right? How would you avoid duplicate IDs when a page contains more than one diff? What about the concern raised in T63486#668897 -- that links could potentially break when the diff algorithm, or even the format in which the diff is presented (split vs. unified vs. something else) is changed? What if the new style of diff doesn't use wikitext at all?

How can a change in this HTML aspect "break" something? Is something relying on this exact HTML structure? That would seem fragile, as the header itself is altered in later stages by DifferenceEngine. Similarly, in what cases two diff tables are combined in one page, causing a possibility of ID reuse?

As for radically different diff engines, probably they wouldn't be using TableDiffFormatter at all. If they do, the only requirement would be that they have a table structure (of course, that's the name) and that they present the diff in a series of chunks headed by a line number: this was already there, nothing new.

mw-diff-left-l-$N ? Who is going to discover and remember such an anchor? If the anchor is not meant to be found and remembered, what's its purpose? Is any other web application using such a pattern for line diff anchors? Is it valuable or not to use something similar to what gitblit, GitHub and others do?

It seems to me that we don't really want to fix this bug, removing myself.

Add Comment

Text is available under the Creative Commons Attribution-ShareAlike 3.0 License (CC-BY-SA); code is available under the GNU General Public License (GPL) or other appropriate open source licenses. By using this site, you agree to the Terms of Use and Privacy Policy. · Wikimedia Foundation · Privacy Policy · Terms of Use · Disclaimer · CC-BY-SA · GPL