Problem Statement
In most cases, users watchlist entries (on Special:EditWatchlist) can grow as large as >700 articles and figuring out the latest article added to watchlist (for example) is a difficult task (taking into consideration the user can't even remember the name of this particular article that was added), so, I was experimenting on building an extension (say WatchListFilter extension maybe?) to filter watchlist based on various parameters (like desc order of timestamp, asc order of timestamp, date added, etc) but by default, based on their timestamps added.
See also: T100508: Watchlist expiry: Watch pages for a specified time frame (2013), T208487: [RfC] Add CURRENT_TIMESTAMP support for `wl_notificationtimestamps` in watchlist table
Proposed Solution
MediaWiki already has a way of dealing with Timestamps, see https://www.mediawiki.org/wiki/Manual:Timestamp, which is very nice so a solution to handle this problem would be altering the watchlist table to add the wl_addedtimestamp attribute to it so it can be used in the filtering process. The attribute will store MW timestamp that will be used by MW or other extensions that may need this feature.
There would be a lot of filters that can help the users find the article added to watchlist without knowing the name of the article;
- ASC order of TS
- DESC order of TS
- Range TS / Date search
- Order by Alphabet (this can make use of other attributes in the watchlist table)
- Filter by Regex
- etc
| Motivation | Other thoughts |
| Trying to solve the finding watchlist entry problem with an extension I'm intending to work on "WatchListFilter". | Whether the feature may be made available in core could be a different topic for discussion but the basic level usage here is for an extension. Also, other topics as per how the filter will look on the Special:EditWatchlist special page based on the OOUI-fication that has happened and others can be addressed on other tickets, maybe sub-tasks of this one I guess :) |
Alternative solutions
I've not had deep investigations on an alternative way to solve this problem with other means different from this proposal. Looking at the current watchlist table, I don't yet see an alternative means although there may be a way I don't yet know but others do :).
As proposed here: T209773#4756088, that can be another approach in introducing this feature.
Side effects
- More data going into the database which will increase the DB size over time, this feature is quite advantageous as other things can be built on it like the WatchListFilter extension etc.
- After adding this attribute to the table (approach 1) or even approach 2 (as suggested by Brian), items already added to watchlist before the introduction to this feature will have no timestamp or default timestamp (which can cause some inaccuracy in the filtration process). So this is something worth noting how to deal with.
- Another side effect (adv) can be that, this feature can act as a partial "watch this and read for later" as the user won't bother to bookmark the page or remember the name of the article. All the user needs to know is the approximate time the article was added to their watchlist and the filter can be used to figure the potential article.
Use cases (3 most possible scenarios)
(1) Getting the latest entry added watchlist: Assuming I added an entry to watchlist few days ago but have forgotten the exact name of the article but I've not added any other entry to my watchlist (so the one I added few days ago is the latest added), the current system can't tell which was the last entry added but with a feature like this, the user can just sort by/filter by descending order of time added and the first entry at the top of the list will be the one that was lastly added and then read it. So the user won't bother thinking or trying to figure out the name, the filter will help the user achieve that.
(2) Finding an entry in watchlist in order of alphabet: In another scenario, this kind of filter could be needed when the watchlist entry is added (at any time) but the user only knows the first letter that the article begins with. So the user can just filter the entries in ascending or descending order of alphabet or use a regex to get just all the articles in the tries that begin with "A" (for example) and then check the resulting list and see if the article will be found.
(3) Get the oldest watchlist entry: In some cases, users would want to cleanup their watchlist entries but may want to begin with the oldest added to watchlist but currently they can't know exactly which one is the oldest as there is way for MW to figure out that. So with a feature like this, there can be a filter to filter in ascending order of time added and then the latest at the top of the entry would be the oldest. If the user hasn't read it yet, he/she may read it and then remove it from watchlist and the process continue so very old watchlist entries are removed (some clean-up to watchlist approach). I would not want to cleanup/remove what I just added yesterday so a filter will help me do this.
Comments
An RfC was filed some weeks ago (as of today) which was quite wrong per the request, see https://phabricator.wikimedia.org/T208487, thanks to @daniel, @aaron, @Catrope, @Anomie for feedback that enlightened me to create this "real" RfC proposal. This RfC is a product of T208487.