SelectiveDelete and RevisionDelete Similarities and Differences

SelectiveDelete is a fictional user ability that allows users with the ability to delete pages to selectively delete revisions from the page history. It is basically the same as deleting a page and then restoring the selective revisions. Except that the article doesn't show up as deleted during the process. My inspiration for the fictional user ability started between August and October 2014 when I discovered that Administrators were unable to perform selective deletions using the (delete) permission. They could only perform selective restorations using the (undelete) permission, which also requires the (deletedhistory) permission. Sometime in 2016 I discovered the (deleterevision) permission which allows users to show and hide the contents of specific revisions, the edit summaries of the revisions, the names of the users/IP addresses that made the edits, or any combination of those three. Though unlike the (delete) and (undelete) permissions, I did not have access to (deleterevision) on any of the sites that I was active on at the time.

I initially believed that the (deleterevision) permission was a combination of the (delete) and (undelete) permissions that only focussed on deleting and undeleting one revision at a time. It wasn't until 2018 that I truly understood that (deleterevision) was completely unrelated to the page deletion and page restoration systems that (delete) and (undelete) are part of, respectively. And that it was actually the core permission of an entirely unrelated system, the revision deletion system.

It was around that time where I decided to publish the concept for my own fictitious permission which was titled MultipleRevisionDelete and later SelectiveDelete. The fictional (selectivedelete) permission would allow users to selectively delete revisions by the ?action=delete parameter, but only if they already had the (delete) permission. All of the selected revisions in the page would be moved from the revision table to the archive table.

SelectiveDelete and RevisionDelete Similarities and Differences
When I shared my concept to many users on Fandom and, it is not surprising that several of them said that the fictional SelectiveDelete ability sounded like the RevisionDelete ability.

The two permissions however despite sharing the same overall purpose would be quite different from one another. Below is a list of all the similarities and differences between the two permissions, what one can do that the other can't do and vice versa.

Pages
SelectiveDelete requires the (delete) permission to use or the user will get a permission error saying that they don't have permission to delete pages. It also cannot be used to undelete revisions, as the (undelete) and (deletedhistory) permissions are required to undelete revisions.

RevisionDelete can be used to hide revisions on pages even if the user doesn't have the (delete) permission. It can also be used to unhide revisions, even if the user doesn't have the (undelete) and (deletedhistory) permissions.

Pages with large histories
SelectiveDelete requires the (delete) and (bigdelete) permissions to delete revisions on pages with large histories or the user will get a permission error saying that they don't have permission to delete pages with large histories. It also cannot be used to undelete revisions on pages with large histories, as the (undelete) and (deletedhistory) permissions are required to undelete revisions on pages with large histories.

RevisionDelete can be used to hide revisions on pages with large histories even if the user doesn't have the (delete) and (bigdelete) permissions. It can also be used to unhide revisions on pages with large histories, even if the user doesn't have the (undelete) and (deletedhistory) permissions.

Semi-protected Pages
SelectiveDelete requires the (delete) and (editsemiprotected) permissions to delete revisions on semi-protected pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on semi-protected pages, as the (undelete) and (deletedhistory) permissions are required to undelete revisions on semi-protected pages.

RevisionDelete can be used to hide revisions on pages that are semi-protected even if the user doesn't have the (delete) and (editsemiprotected) permissions. It can also be used to unhide revisions on semi-protected pages, even if the user doesn't have the (undelete) and (deletedhistory) permissions.

Protected Pages
SelectiveDelete requires the (delete) and (editprotected) permissions to delete revisions on fully protected pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on fully protected pages, as the (undelete) and (deletedhistory) permissions are required to undelete revisions on fully protected pages.

RevisionDelete can be used to hide revisions on pages that are fully protected even if the user doesn't have the (delete) and (editprotected) permissions. It can also be used to unhide revisions on fully protected pages, even if the user doesn't have the (undelete) and (deletedhistory) permissions.

Cascade-Protected Pages
SelectiveDelete requires the (delete) and (protect) permissions to delete revisions on cascade-protected pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on cascade-protected pages, as the (undelete) and (deletedhistory) permissions are required to undelete revisions on cascade-protected pages.

RevisionDelete can be used to hide revisions on pages that are cascade-protected even if the user doesn't have the (delete) and (protect) permissions. It can also be used to unhide revisions on cascade-protected pages, even if the user doesn't have the (undelete) and (deletedhistory) permissions.

User CSS Pages
SelectiveDelete requires the (delete) and (editusercss) permissions, the (delete), (editinterface), and (deleteinterfacetrusted) permissions, or the (delete), (editinterface), and (editinterfacetrusted) permissions to delete user CSS pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on user CSS pages, as the (undelete), (deletedhistory), and (editusercss) permissions are required to undelete revisions on user CSS pages.

RevisionDelete can be used to hide revisions on user CSS pages even if the user doesn't have the (delete) and (editusercss) permissions, the (delete), (editinterface), and (deleteinterfacetrusted) permissions, or the (delete), (editinterface), and (editinterfacetrusted) permissions. It can also be used to unhide revisions on user CSS pages, even if the user doesn't have the (undelete), (deletedhistory), and (editusercss) permissions.

User JavaScript Pages
SelectiveDelete requires the (delete) and (edituserjs) permissions, the (delete), (editinterface), and (deleteinterfacetrusted) permissions, or the (delete), (editinterface), and (editinterfacetrusted) permissions to delete user JavaScript pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on user JavaScript pages, as the (undelete), (deletedhistory), and (edituserjs) permissions are required to undelete revisions on user JavaScript pages.

RevisionDelete can be used to hide revisions on user JavaScript pages even if the user doesn't have the (delete) and (edituserjs) permissions, the (delete), (editinterface), and (deleteinterfacetrusted) permissions, or the (delete), (editinterface), and (editinterfacetrusted) permissions. It can also be used to unhide revisions on user JavaScript pages, even if the user doesn't have the (undelete), (deletedhistory), and (edituserjs) permissions.

User JSON Pages
SelectiveDelete requires the (delete) and (edituserjson) permissions, the (delete), (editinterface), and (deleteinterfacetrusted) permissions, or the (delete), (editinterface), and (editinterfacetrusted) permissions to delete user JavaScript Object Notation pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on user JavaScript Object Notation pages, as the (undelete), (deletedhistory), and (edituserjson) permissions are required to undelete revisions on user JavaScript Object Notation pages.

RevisionDelete can be used to hide revisions on user JavaScript Object Notation pages even if the user doesn't have the (delete) and (edituserjson) permissions, the (delete), (editinterface), and (deleteinterfacetrusted) permissions, or the (delete), (editinterface), and (editinterfacetrusted) permissions. It can also be used to unhide revisions on user JavaScript Object Notation pages, even if the user doesn't have the (undelete), (deletedhistory), and (edituserjson) permissions.

Whitelisted System Messages
SelectiveDelete requires the (delete) and (editinterface) permissions to delete revisions on whitelisted system messages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on whitelisted system messages, as the (undelete), (deletedhistory), and (editinterface) permissions are required to undelete revisions on whitelisted system messages.

RevisionDelete can be used to hide revisions on whitelisted system messages even if the user doesn't have the (delete) and (editinterface) permissions. It can also be used to unhide revisions on whitelisted system messages, even if the user doesn't have the (undelete), (deletedhistory), and (editinterface) permissions.

System Messages
SelectiveDelete requires the (delete), (editinterface), and (deleteinterfacetrusted) permissions, or the (delete), (editinterface), and (editinterfacetrusted) permissions to delete revisions on all system messages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on all system messages, as the (undelete), (deletedhistory), (editinterface), and (editinterfacetrusted) permissions are required to undelete revisions on all system messages.

RevisionDelete can be used to hide revisions on all system messages even if the user doesn't have the (delete), (editinterface), (deleteinterfacetrusted), and (editinterfacetrusted) permissions. It can also be used to unhide revisions on all system messages, even if the user doesn't have the (undelete), (deletedhistory), (editinterface), and (editinterfacetrusted) permissions.

Whitelisted Freeform Messages
SelectiveDelete requires the (delete) and (editinterface) permissions to delete revisions on system messages with a whitelisted prefix or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on system messages with a whitelisted prefix, as the (undelete), (deletedhistory), (editinterface), and (editinterfacetrusted) permissions are required to undelete revisions on system messages with a whitelisted prefix.

RevisionDelete can be used to hide revisions on system messages with a whitelisted prefix even if the user doesn't have the (delete) and (editinterface) permissions. It can also be used to unhide revisions on system messages with a whitelisted prefix, even if the user doesn't have the (undelete), (deletedhistory), (editinterface), and (editinterfacetrusted) permissions.

CSS Pages
SelectiveDelete requires the (delete), (editinterface), and (editsitecss) permissions to delete revisions on CSS pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on CSS pages, as the (undelete), (deletedhistory), (editinterface), (editsitecss), and (editinterfacetrusted) permissions are required to undelete revisions on CSS pages.

RevisionDelete can be used to hide revisions on CSS pages even if the user doesn't have the (delete), (editinterface), and (editsitecss) permissions. It can also be used to unhide revisions on CSS pages, even if the user doesn't have the (undelete), (deletedhistory), (editinterface), (editsitecss), and (editinterfacetrusted) permissions.

JavaScript Pages
SelectiveDelete requires the (delete), (editinterface), and (editsitejs) permissions to delete revisions on JavaScript pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on JavaScript pages, as the (undelete), (deletedhistory), (editinterface), (editsitejs), and (editinterfacetrusted) permissions are required to undelete revisions on JavaScript pages.

RevisionDelete can be used to hide revisions on JavaScript pages even if the user doesn't have the (delete), (editinterface), and (editsitejs) permissions. It can also be used to unhide revisions on JavaScript pages, even if the user doesn't have the (undelete), (deletedhistory), (editinterface), (editsitejs), and (editinterfacetrusted) permissions.

JSON Pages
SelectiveDelete requires the (delete), (editinterface), (editsitejson), and (deleteinterfacetrusted) permissions, or the (delete), (editinterface), (editsitejson), and (editinterfacetrusted) permissions to delete revisions on JavaScript Object Notation pages, or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on JavaScript Object Notation pages, as the (undelete), (deletedhistory), (editinterface), (editsitejson), and (editinterfacetrusted) permissions are required to undelete revisions on JavaScript Object Notation pages.

RevisionDelete can be used to hide revisions on JavaScript Object Notation pages even if the user doesn't have the (delete), (editinterface), (editsitejson), and (deleteinterfacetrusted) permissions, or the (delete), (editinterface), (editsitejson), and (editinterfacetrusted) permissions. It can also be used to unhide revisions on JavaScript Object Notation pages, even if the user doesn't have the (undelete), (deletedhistory), (editinterface), (editsitejson), and (editinterfacetrusted) permissions.

FandomMobile CSS Pages
SelectiveDelete requires the (delete), (editinterface), (editsitecss), and (edit-fandommobile-customizations) permissions to delete revisions on FandomMobile CSS pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on FandomMobile CSS pages, as the (undelete), (deletedhistory), (editinterface), (editsitecss), (edit-fandommobile-customizations), and (editinterfacetrusted) permissions are required to undelete revisions on FandomMobile CSS pages.

RevisionDelete can be used to hide revisions on FandomMobile CSS pages even if the user doesn't have the (delete), (editinterface), (editsitecss), and (edit-fandommobile-customizations) permissions. It can also be used to unhide revisions on FandomMobile CSS pages, even if the user doesn't have the (undelete), (deletedhistory), (editinterface), (editsitecss), (edit-fandommobile-customizations), and (editinterfacetrusted) permissions.

FandomMobile JavaScript Pages
SelectiveDelete requires the (delete), (editinterface), (editsitejs), and (edit-fandommobile-customizations) permissions to delete revisions on FandomMobile JavaScript pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on FandomMobile JavaScript pages, as the (undelete), (deletedhistory), (editinterface), (editsitejs), (edit-fandommobile-customizations), and (editinterfacetrusted) permissions are required to undelete revisions on FandomMobile JavaScript pages.

RevisionDelete can be used to hide revisions on FandomMobile JavaScript pages even if the user doesn't have the (delete), (editinterface), (editsitejs), and (edit-fandommobile-customizations) permissions. It can also be used to unhide revisions on FandomMobile JavaScript pages, even if the user doesn't have the (undelete), (deletedhistory), (editinterface), (editsitejs), (edit-fandommobile-customizations), and (editinterfacetrusted) permissions.

Archived Forum Pages
SelectiveDelete requires the (delete) permission to delete revisions on archived forum pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on archived forum pages, as the (undelete) and (deletedhistory) permissions are required to undelete revisions on archived forum pages.

RevisionDelete can be used to hide revisions on archived forum pages even if the user doesn't have the (delete) permission. It can also be used to unhide revisions on archived forum pages, even if the user doesn't have the (undelete) and (deletedhistory) permissions.

Blog Pages
SelectiveDelete requires the (delete) permission to delete revisions on blog articles or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on blog articles, as the (undelete) and (deletedhistory) permissions are required to undelete revisions on blog articles.

RevisionDelete can be used to hide revisions on blog articles even if the user doesn't have the (delete) permission. It can also be used to unhide revisions on blog articles even if the user doesn't have the (undelete) and (deletedhistory) permissions.

Gadget Pages
SelectiveDelete requires the (delete) and (gadgets-edit) permissions to delete Gadget pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on Gadget pages, as the (undelete), (deletedhistory), and (gadgets-edit) permissions are required to undelete revisions on Gadget pages.

RevisionDelete can be used to hide revisions on Gadget pages even if the user doesn't have the (delete) and (gadgets-edit) permissions. It can also be used to unhide revisions on Gadget pages, even if the user doesn't have the (undelete), (deletedhistory), and (gadgets-edit) permissions.

Gadget definition Pages
SelectiveDelete requires the (delete) and (gadgets-definition-edit) permissions to delete Gadget definition pages or the user will get a permission error saying that they don't have permission to delete the page because they don't have permission to edit it. It also cannot be used to undelete revisions on Gadget definition pages, as the (undelete), (deletedhistory), and (gadgets-definition-edit) permissions are required to undelete revisions on Gadget definition pages.

RevisionDelete can be used to hide revisions on Gadget definition pages even if the user doesn't have the (delete) and (gadgets-definition-edit) permissions. It can also be used to unhide revisions on Gadget definition pages, even if the user doesn't have the (undelete), (deletedhistory), and (gadgets-definition-edit) permissions.

Interactive Maps
SelectiveDelete requires the (delete) and (editinteractivemap) permissions to delete revisions on interactive maps or the user will get a permission error saying that they don't have permission to delete pages with large histories. It also cannot be used to undelete revisions on pages with large histories, as the (undelete) and (deletedhistory) permissions are required to undelete revisions on pages with large histories. It also cannot be used to undelete revisions on interactive maps, as the (undelete), (deletedhistory), and (editinteractivemap) permissions are required to undelete revisions on interactive maps.

RevisionDelete can be used to hide revisions on interactive maps even if the user doesn't have the (delete) and (editinteractivemap) permissions. It can also be used to unhide revisions on interactive maps, even if the user doesn't have the (undelete), (deletedhistory), and (editinteractivemap) permissions.

Current Revisions
SelectiveDelete can be used to delete the current revision, as long as none of the preceding revisions have been partially hidden.

RevisionDelete cannot be used to hide the current revision.

Partially Deleting Revisions
Revisions must be fully deleted when using SelectiveDelete.

Revisions may be partially hidden when using RevisionDelete (e.g. edit summary but not username)

Public View
SelectiveDelete removes edits from public view.

RevisionDelete does not remove edits from public view.

CC-BY-SA Licence
SelectiveDelete may cause prior edits to appear as another user's edit. Selective deletion should therefore be avoided if it puts the CC-BY-SA licence at risk.

RevisionDelete does not cause prior edits to appear as another user's edit. So attribution and history may be less affected.

History and Deleted History
An article's history is split between two separate pages (history and deleted history) so deleted edits do not appear on the public page when using SelectiveDelete.

An article's history is not split between two separate pages (history and deleted history) so all edits are visible on the one public page when using RevisionDelete.

Deletion Events
Non-administrators cannot see when a deletion via SelectiveDelete has taken place, if they cannot see the deleted material.

Non-administrators can see when a deletion via RevisionDelete has taken place, even if they cannot see the deleted material.

Fully Deleting Pages
There is no need to delete the article to delete selective revisions when using SelectiveDelete.

There is no need to delete the article to hide selective revisions when using RevisionDelete.

Deletion and Partial Undeletion
SelectiveDelete does not require full deletion and partial undeletion. So existing deleted revisions are not at risk of accidental restoration, and the article does not appear as 'deleted' during the process.

RevisionDelete does not require full deletion and partial undeletion. So existing deleted revisions are not at risk of accidental restoration, and the article does not appear as 'deleted' during the process.