Page MenuHomePhabricator

Investigate: Which features display user links?
Closed, ResolvedPublic5 Estimated Story Points

Description

Motivation

We want to identify all the places that temporary account names will be displayed. We can then do a follow-up audit task to ensure we are providing the optimal experience for end user on all of these pages.

Spec

User links are displayed via Linker::userLink.

We should try to get a list of features which call this function. (Note that this may involve looking for places that call UserLink directly, but also indirectly via other Linker functions)

Event Timeline

I looked at Linker::userLink and found that within the Linker class, only revUserLink and revUserTools called userLink internally. I then searched for all 3 using code search. Here's the raw data using code search. I didn't do any filtering on this, just grabbed all the repo titles of extensions using the functions and output them here. I'll follow up with some rough grouping separately.


Using Linker:: userLink (code search):

mediawiki/core
extensions/AbuseFilter
extensions/CheckUser
extensions/CodeReview
edwardspec/mediawiki-moderation
extensions/RevisionCommentSupplement
extensions/LiquidThreads
examknow/CentralCheckUser
extensions/ApprovedRevs
extensions/ArticleFeedbackv5
extensions/Contributors
extensions/GrowthExperiments
extensions/SecurePoll
extensions/Video
extensions/WatchAnalytics
enterprisemediawiki/WatchAnalytics
extensions/CampaignEvents
extensions/ContributionCredits
extensions/ContributionScores
extensions/Flow
extensions/GlobalContribs
extensions/IPInfo
extensions/Newsletter
extensions/PagesList
extensions/SimilarEditors
extensions/SimpleChanges
extensions/Thanks
extensions/WikimediaIncubator
InternationalScratchWiki/scratch-confirmaccount-v3
miraheze/IncidentReporting
PowerpediaInterns/mediawiki-extensions-ListDuplicateUsers
skins/BlueSky
Wikifab/UsersWatchlist
wikiskripta/advanceduserstats

Using Linker::revUserLink (code search):

mediawiki/core

Using Linker::revUserTools (code search):

mediawiki/core
extensions/ApprovedRevs
extensions/RevisionCommentSupplement
extensions/SocialProfile
extensions/TwoColConflict
extensions/Video

tl;dr: AHT, Growth, Campaigns, and volunteers should probably be notified, if they haven't already, that extensions they maintain will be affected by this change. LiquidThreads appears to be deployed with no maintainer and will possibly require additional investigation/work. Newsletter appears to be deployed but may not be in active use and will possibly require additional investigation/work. A large number of undeployed extensions use Linker::userLink function but can probably be deprioritized because...they're not deployed. I don't know what to do, if anything, about the third-party extensions cc @Tchanders?

Core requires updates to a few independent parts and I am making a rough guess here that it can be bucketed based on its file structure into changes, revisions, pagers, logs, and special pages.


Sorting the extensions into what I thought were reasonable buckets, using the following methodology:

  1. Exclude core (to be dealt with independently) and exclude third-party extensions/skins (because I don't know what to do with them)
  2. Check the maintainer list for any active maintainers and bucket accordingly
  3. If no maintainer is listed, check if the extension is deployed using InitialiseSettings.php
  4. For good measure, check that maintained extensions are deployed via InitialiseSettings.php

No active maintainer listed:
extensions/LiquidThreads
extensions/Newsletter // wmgUseLiquidThreads has a comment saying "Do not enable this on new wikis."

AHT:
extensions/CheckUser
extensions/SecurePoll Not technically but :shrug:
extensions/IPInfo
extensions/SimilarEditors
Not currently deployed

Growth:
extensions/GrowthExperiments
extensions/Flow Needs new owner
extensions/Thanks
Needs new owner

Campaigns:
extensions/CampaignEvents

Volunteers:
extensions/AbuseFilter
extensions/WikimediaIncubator

Not deployed (based on maintainer list/InitialiseSettings.php):
extensions/CodeReview
extensions/RevisionCommentSupplement
extensions/ApprovedRevs
extensions/ArticleFeedbackv5
extensions/Contributors
extensions/Video
extensions/WatchAnalytics
extensions/ContributionCredits
extensions/ContributionScores
extensions/GlobalContribs
extensions/PagesList
extensions/SimpleChanges

Unsure:
edwardspec/mediawiki-moderation
examknow/CentralCheckUser
enterprisemediawiki/WatchAnalytics
InternationalScratchWiki/scratch-confirmaccount-v3
miraheze/IncidentReporting
PowerpediaInterns/mediawiki-extensions-ListDuplicateUsers
skins/BlueSky
Wikifab/UsersWatchlist
wikiskripta/advanceduserstats


I did a more focused search for core to try and bucket the work into domains of concerns.

Linker::userLink (code search):
includes/actions/CreditsAction.php
includes/changes/ChangesList.php
includes/changes/RCCacheEntryFactory.php
includes/linker/DummyLinker.php
includes/logging/LogFormatter.php
includes/page/ImageHistoryList.php
includes/revisiondelete/RevDelFileItem.php
includes/specials/SpecialFileDuplicateSearch.php
includes/specials/SpecialUndelete.php
includes/specials/pagers/ActiveUsersPager.php
includes/specials/pagers/BlockListPager.php
includes/specials/pagers/ContribsPager.php
includes/specials/pagers/ProtectedPagesPager.php
includes/specials/pagers/UsersPager.php
tests/phpunit/includes/LinkerTest.php
tests/phpunit/includes/logging/LogFormatterTest.php

Linker::revUserLink (code search):
includes/changetags/ChangeTagsRevisionItem.php
includes/linker/DummyLinker.php
includes/revisiondelete/RevDelRevisionItem.php
includes/revisionlist/RevisionItem.php

Linker::revUserTools (code search):
includes/actions/InfoAction.php
includes/actions/RollbackAction.php
includes/actions/pagers/HistoryPager.php
includes/diff/DifferenceEngine.php
includes/linker/DummyLinker.php
includes/page/Article.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialUndelete.php
tests/phpunit/includes/page/ArticleViewTest.php

Thanks for this @STran!

My understanding is that @Niharika would like a list of all the (WMF deployed) features that might display temporary account username links, so that we can check that our IP reveal workflows are working as expected.

tl;dr: AHT, Growth, Campaigns, and volunteers should probably be notified, if they haven't already, that extensions they maintain will be affected by this change. LiquidThreads appears to be deployed with no maintainer and will possibly require additional investigation/work. Newsletter appears to be deployed but may not be in active use and will possibly require additional investigation/work. A large number of undeployed extensions use Linker::userLink function but can probably be deprioritized because...they're not deployed. I don't know what to do, if anything, about the third-party extensions cc @Tchanders?

Some answers to specific questions:

  • For WMF-owned features, should we notify owning teams?
  • What should we do about WMF-deployed, unowned features?
    • We can just test and fix these ourselves
  • What about third party features, or those not deployed by WMF?
    • We don't need to do anything, as far as this task is concerned, but people will need to be notified. @ARamirez_WMF and @Niharika are working on communications for third parties about the IP Masking project. It could be helpful to include the search results found here.

I did a more focused search for core to try and bucket the work into domains of concerns.

Thank you, this is very helpful! I suppose we should check that all of these are working.

In terms of next steps, what do you think about filing one task to check the core features are working as expected, and one task for checking the deployed extensions? We should also define what is meant by "working as expected" - @Niharika any thoughts?

Closing, since the information is there. Further decisions may follow, but the investigation is done.