User:YMS/ORC

From Meta, a Wikimedia project coordination wiki

Open-ended Recent Changes tool [ORC][edit]

This patrol-focused tool was designed to give you the possibility to scroll through an endless amount of recent changes, while giving as much overview and context information as possible at a glance and allowing easy and efficient usage.

It's best suited to browse large portions of the recent changes, not for real-time watching of the newest ones.

Features[edit]

Screenshot of the ORC tool (as used on Wikidata)
File:Orque-Terre du Milieu.jpg
The developer believes that this orc is deeply engaged in vandal fighting
(image author: Antoine Glédel)
  • Browse back in time through the whole recent_changes table, either checking all changes (hence the name) or jumping back by any amount of time
  • Display all recent changes on a page at once (i.e. all from the recent_changes, not just those from the last RC search result); indicate whether all are patrolled
  • Display rich information about edits (full diffs inline, highlighted critical tags, ...) and pages (Wikidata labels/descriptions, sandbox page marker, ...) at a glance
  • Identify subjects at a glance
    • On Wikidata, by showing the label/description, the sitelinks (incl. preview popup), and the most important statements
    • On other projects, by showing a preview of the introduction of the page
  • Touch-friendly UI designed for good overview
  • Provide an on-page log display that lists all your performed actions (reverts, patrols, ...) and their results to allow quick re-evaluation of own actions
  • Easy to patrol individual edits or all unpatrolled edits of a user or on a page; automatic patrols upon revert, undo, restore or thank
  • Ignore certain users, to avoid getting flooded by edits you can't judge
  • No accidental reverts: Requires a second confirmation click for all destructive actions
  • Uses MediaWiki's new recent changes filter component to allow comfortable filtering, store filter configurations, etc. Also supports its tag coloring, which is highly recommended to use.
  • Revert, undo or restore changes without opening a new tab, to allow reducing number of tabs especially on mobile devices. Opens all other links in new tabs/windows, preventing accidentally losing the session by opening a link in the same tab.
  • Automatically reloads the history after actions like revert, allowing you to check for missed edits oder erroneous reverts
  • Indicate when and which fallback languages are used to display Wikidata labels and descriptions, to allow better identification of subjects and evaluation of label/description changes
  • Color-coding different IPs, so it will be easier to distinguish two similar but different IPs
  • Device-independent, no installation needed. Transparent, actual executed code visible and editable (for admins) on meta.wikipedia.org, easy to fork

Installation[edit]

Advanced JavaScript and CSS features are used, so a modern browser is required. Google Chrome is the only browser for which code campability was checked in advance. Firefox should work as well. Microsoft Edge and Internet Explorer are known to not support some of the required features currently.

MediaWiki's new recent changes filter component is used, so if you have disabled this in your settings ("Hide the improved version of Recent Changes"; or haven't enabled it where it still is a beta feature), the tool won't be fully usable.

In your vector.js / common.js / global.js / whatever, insert the following lines:

// [[User:YMS/ORC]]
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:YMS/orc.js&action=raw&ctype=text/javascript', 'text/javascript');

Then go to the project's Special:RecentChanges page and click the "ORC" tab to start the tool.[1]

Documentation[edit]

Still to come.

Alternatives[edit]

Not convinced? You might be interested in existing approaches to design RC tools (thanks to all their authors and contributors!):

Development[edit]

Feedback[edit]

Got feedback (bugs, feature requests, questions, ...)? Great! Any comments are appreciated. Please drop a note at the tool's talk page or write a mail to YMS. Thank you!

In case of errors, please check developer console and the tool's own error log (if possible, even the verbose log that can be enabled in the settings) and try to submit any suspicious entries along with your error report. If the error only happened at some specific page or revision, you should provide this information, too.

Contribution[edit]

You want to change something yourself in the code[2] or this documentation: Go ahead!

You want to fork the tool and develop it in your own way? Great! Please inform me about it, though (see #Feedback for contact).

The code can be found at User:YMS/orc.js.

Plans[edit]

The code contains a bunch of TODOs and FIXMEs, which point to smaller issues and tweaks that should be handled sometime soon. Planned bigger features and changes which will require more development work are not listed there, but instead here:

  • Fix several severe scrolling issues observed on mobile browsers:
    • Clicks are sometimes registered on the wrong y position after scrolling
    • Chrome on smartphone is jumping heavily when scrolling (especially when scrolling up the first time per page -> browser jumps to the end of the page)
  • Preload diffs, labels and patrol state in background for next page to speed up pagination and avoid resizing of components
    • This should seriously speed up using the tool
    • Also may solve the scrolling issues, which are probably coming from the resizing due to AJAX loading of contents
  • Support pending changes
  • Wikidata:
    • Offer additional filters for edit on labels/escriptions/statements, etc. (see Yair Rand; could even be extended e.g. by allowing to filter for specific statements)
    • More specific filters, e.g. "Ignore text changes in languages not in fallback chain", "Ignore changes on items about villages"?
  • Persist settings; settings should be saved, and tool should offer to begin at the time the last check ended
  • Optional autopatrol feature that automatically patrols all edits on sandbox pages or that have been reverted already
  • Single edit mode, where not the history is loaded but just the one edit that was found by the filter
  • Log: "Open page in ORC" button (similar to user mode; or more simply: just jump back to that page)
  • ​Also check CVN scores (https://meta.wikimedia.org/wiki/Countervandalism_Network / explained at https://www.mediawiki.org/wiki/User:Krinkle/Patrolling#Initiatives)
  • Infinite scrolling (mode)?
  • Externalize script part that creates the page header for Wikidata pages and make it usable standalone, e.g. in search results pages?
  • Translations (as soon as code is stable)
  • Option: merge edit series: reduce multiple consecutive revisions by the same user to one, showing diff over all, concatenating all summaries
  • AutoDesc feature for Wikidata items that don't have any valuable labels/descriptions set. Will only be implemented if function is exported from labelcollect or autodesc.

Development milestones[edit]

  • 18 February 2017: User:YMS started prototype development
  • 2 October 2017: Started complete rewrite
  • 25 December 2017: Public beta phase started

For a complete version history, see orc.js version history.

Footnotes[edit]

  1. Actually, the ORC tab is also available on previews of user JavaScript pages, so you should be able to have a quick look at ORC before even saving your JavaScript page. This can also be used for development, to preview changes in the code if you don't want to set up an entire development environment including a server etc.
  2. and are allowed to do it technically, i.e. your an admin on Meta-Wiki