Page MenuHomePhabricator

Add "1 year" to watchlist duration dropdown box
Closed, ResolvedPublicFeature


Feature summary

Would like "1 year" to appear as an option in the following dropdown box

image.png (701×613 px, 39 KB)

Use case(s)

On enwiki, drafts are automatically deleted after 6 months of no edits. 1 year would allow the watchlister to see the deletion event when the creator edits the draft for a month, then goes inactive, then the draft gets deleted at the 7 month mark.


  • Increased usefulness
  • Easy to code

Don't forget to verify that the API will accept 1 year as a value, and possibly change API code if needed.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript
MusikAnimal added subscribers: Marostegui, MusikAnimal.

The 6 month limit was imposed because we were unsure if this feature would cause problematic growth of watchlist_expiry table (and in turn the watchlist table itself, which is the real concern). To my knowledge it has not, especially after T258108 and T258098, which purged a lot of unused rows from the main watchlist table and kept new unused rows from being added.

That said, I think we can probably increase to 1 year or even higher (via wgWatchlistExpiryMaxDuration), but I'd like to get DBA input. @Marostegui to your knowledge, has the watchlist tables on any wiki grown to be problematic again? Our belief is the watchlist expiry is actually helping reduce the overall size, since instead of watchlisting indefinitely, you only do so for N amount of time. This helps i.e. for editors who later leave the project, or forget to unwatch, etc. See T268096 for monitoring we did back in 2020.

I think we can go for a year. The table on enwiki and commons is quite big already though (not necessarily because of this!) but they are both +30GB
cc @Ladsgroup

I think this is a good opportunity to do a double of check of biggest users of watchlist table and possibly clean it up a bit more but generally it should be fine.

Also please postpone enabling it on commons for a couple of weeks, once the templatelinks clean up is done, it'll be back to 1.5TB "only"

I looked at some data, These users have massive watchlists that can be cleaned up:


|  940976 | Reinheitsgebot      |  2040900 |
| 2454409 | MicrobeBot          |  1751222 |
| 3084860 | GeneDBot            |  1573162 |
|  201281 | Liangent-bot        |  1452716 |
|  282770 | ProteinBoxBot       |  1315370 |
|  300311 | SuccuBot            |  1088604 |


| 28207637 | Test.user.watchlist   |   450234 |
|  1215485 | Cydebot               |   187162 |

I don't know who created Test.user.watchlist, who is the owner, etc. Nothing on wiki


| 2120548 | Slick-o-bot      |   637814 |

If people talk to the owners and get their approval, I can clean them up.

Also note that we have ~4k rows with wl_user = 0 in several old wikis (enwiki, commons, etc.), not a big thing but would be nice to clean it up.

Change 815802 had a related patch set uploaded (by Novem Linguae; author: NovemLinguae):

[mediawiki/core@master] [WIP] Add "1 year" to watchlist expiry

@Ladsgroup. I left user talk messages to all the bot operators mentioned above. A couple should start trickling in to this Phab thread to give permission to wipe their watchlists. About half of them were active.

I've received permission from the following users. I will edit this post as new data comes in. Some or all of the permission granters might have also self-cleared their watchlists.


|  940976 | Reinheitsgebot      |  2040900 |  Permission received
| 2454409 | MicrobeBot          |  1751222 |  Permission received
| 3084860 | GeneDBot            |  1573162 |  Permission received
|  201281 | Liangent-bot        |  1452716 |
|  282770 | ProteinBoxBot       |  1315370 |  Permission received
|  300311 | SuccuBot            |  1088604 |  Permission received


| 28207637 | Test.user.watchlist   |   450234 |
|  1215485 | Cydebot               |   187162 |


| 2120548 | Slick-o-bot      |   637814 |  Permission received

I cleaned Slick-o-bot's watchlist. The rest are already cleaned (except the ones we haven't had permission yet). I think this is good to go from my point of view (except on commons, wait for there for a two weeks).

I'll hold the patch for another two weeks. Setting my calendar reminder for August 25.

Change 815802 merged by jenkins-bot:

[mediawiki/core@master] Add "1 year" to watchlist expiry

MusikAnimal assigned this task to Novem_Linguae.

Thanks again to Novem Linguae for the patch! I admit I didn't double check that the templatelinks normalization is done on Commons yet (it's been ~4 weeks now when we were told to wait two), but I'm quite sure the patch won't cause any problems. All we've done is increase the maximum watchlist expiry period to 1 year up from 6 months. This by itself shouldn't change the behaviour of editors and their likelihood to watch a page, thus we shouldn't see a dramatic growth of the main watchlist table. The rows that were cleared at T313255#8091136 by itself freed up a lot of space that I suspect will take quite a while to fill again. Pinging @Ladsgroup just to be sure; it's not too late to revert the patch if necessary.

Nah, the drop of templatelinks is already on the way and most done (dropping ~220GB). As you said the commons watchlist clean up already freed more than we need for a while.

@Novem_Linguae why has this addition not propagated to some wikis? for example, lvwp and yuewp?

@Novem_Linguae why has this addition not propagated to some wikis? for example, lvwp and yuewp?

The message needs to be translated. The '1 year' option is there if you force English for instance with ?uselang=en in the URL.

The message needs to be translated. The '1 year' option is there if you force English for instance with ?uselang=en in the URL.

It's needed to rewrite the concept so that MediaWiki:Watchlist-expiry-options would contain just values in English that are submitted via the form, and these values would be auto-translated if another language is used in the user interface. Also, it's needed to remove the infinite value from MediaWiki:Watchlist-expiry-options and make a separate message used for permanent watching (MediaWiki:Watchlist-expiry-none), like in MediaWiki:Userrights-expiry-options that doesn't have infinite value (which is defined in MediaWiki:Userrights-expiry-none).
I'll create another task later with more detailed explanation.