Core Platform Team/Initiative/Core REST API in MediaWiki/Epics, User Stories, and Requirements

= Personae = Note that these personae don’t map exactly to user groups or roles within MediaWiki.


 * User - Any person with a registered account in the project
 * Reader - A person who reading content on the project
 * Contributor - A person who adds new information to the project
 * Curator - A person who edits and organizes existing information in the project
 * Administrator - A person who manages users, groups, roles, and monitors bad behaviour

User stories

 * Article CRUD
 * As a Reader, I want to get a page, so that I can read it.
 * As a Contributor, I want to create a new page, so that I can add information to the project.
 * As a Contributor, I want to update a page, so that I can include more information or restructure the content.
 * As a Curator, I want to rename a page, to resolve name conflicts or to make the page easier to find.
 * As a Curator, I want to delete a page, to keep the project focused.
 * Search
 * As a Reader, I want to get a list of pages that match a search term, so that I can find pages about a topic I’m interested in.
 * As a Contributor, I want to get a list of media files that match a search term, so that I can find media to add to a page.
 * Article history
 * As a Curator, I want to get a list of the previous versions of a page, so that I can understand how it developed over time.
 * As a Curator, I want to get an older version of a page, so that I can see which parts of the page were added or removed.
 * As a Curator, I want to see the difference between one version of a page and the previous version, so I can see when parts of the page were added or removed.
 * As a Curator, I want to delete an older version of a page, so that inappropriate content isn’t available to readers.
 * As a Curator, I want to roll back to a previous version of a page, so that the best known version of a page is always the current one.


 * User settings
 * As a User, I want to get my user settings, so I can see how my account is configured.
 * As a User, I want to update my settings, so that I can change my experience.
 * User contribution history
 * As an Administrator, I want to get a list of versions of pages a user has created or updated, to judge the user’s intentions and ability.
 * Sitewide history (recent changes)
 * As a Curator, I want to get a list of all changes to pages in the project, so I can review the current versions of pages in the project.
 * As an Administrator, I want to get a list of all changes to pages in the project, so I can detect if there has been any bad behaviour lately.
 * Media CRUD
 * As a Reader, I want to get the current version of a media file, so I can read, view or listen to it.
 * As a Contributor, I want to upload a new media file, so I can contribute to the project.
 * As a Contributor, I want to upload a new version of an existing media file, so I can improve it.
 * As a Curator, I want to rename a media file, so it is easier to find or so the name is more descriptive.
 * As a Curator, I want to delete a media file, so that the project stays focused.
 * Media history
 * As a Curator, I want to get a list of the previous versions of a media file, so that I can understand how it developed over time.
 * As a Curator, I want to get an older version of a media file, so that I can see which parts of the page were added or removed.
 * As a Curator, I want to delete an older version of a media file, so that inappropriate content isn’t available to readers.
 * As a Curator, I want to roll back to a previous version of a media file, so that the best known version of a file is always the current one.
 * Article metadata
 * As a Reader, I want to get a list of media files embedded in a page, so that I can view, read or listen to them.
 * As a Reader, I want to get a list of alternate language versions of a page, so that I can switch to another language version.
 * As a Curator, I want to get a list of pages that link to a page, so I can see how they refer to the page, or change their links if I am going to delete the page.
 * Advanced article curation features
 * As an Administrator, I want to protect a page, to keep untrusted users from modifying the page.
 * As an Administrator, I want to protect a media file, to keep untrusted users from modifying the file.
 * As a Curator, I want to undelete a page, if the page was deleted by mistake.
 * As an Administrator, I want to mark a version of a page as patrolled, to let other Administrators know that they don’t have to review that version of the page.
 * Advanced user administration features
 * As an Administrator, I want to get a list of groups that a user is in, to understand their current level of access.
 * As an Administrator, I want to add a user to a group, to give them extra access.
 * As an Administrator, I want to remove a user from a group, to revoke their access.
 * As an Administrator, I want to block a user from making any changes to the project, so that they don’t cause any damage to the content or community.
 * As an Administrator, I want to block an IP address or IP subnet from making any changes to the project, so that they don’t cause any damage to the content or community.

Epic 1: Minimal client

 * As a Reader, I want to get a page, so that I can read it.
 * As a Contributor, I want to create a new page, so that I can add information to the project.
 * As a Contributor, I want to update a page, so that I can include more information or restructure the content.
 * As a Curator, I want to rename a page, to resolve name conflicts or to make the page easier to find.
 * As a Curator, I want to delete a page, to keep the project focused.
 * As a Reader, I want to get a list of pages that match a search term, so that I can find pages about a topic I’m interested in.
 * As a Reader, I want to get a list of media files embedded in a page, so that I can view, read or listen to them.
 * As a Reader, I want to get a list of alternate language versions of a page, so that I can switch to another language version.
 * As a User, I want to get my user settings, so I can see how my account is configured.
 * As a User, I want to update my settings, so that I can change my experience.

Epic 2: Media management

 * As a Reader, I want to get the current version of a media file, so I can read, view or listen to it.
 * As a Contributor, I want to upload a new media file, so I can contribute to the project.
 * As a Contributor, I want to upload a new version of an existing media file, so I can improve it.
 * As a Curator, I want to rename a media file, so it is easier to find or so the name is more descriptive.
 * As a Curator, I want to delete a media file, so that the project stays focused.
 * As a Contributor, I want to get a list of media files that match a search term, so that I can find media to add to a page.

Epic 3: History

 * As a Curator, I want to get a list of the previous versions of a page, so that I can understand how it developed over time.
 * As a Curator, I want to get an older version of a page, so that I can see which parts of the page were added or removed.
 * As a Curator, I want to see the difference between one version of a page and the previous version, so I can see when parts of the page were added or removed.
 * As a Curator, I want to delete an older version of a page, so that inappropriate content isn’t available to readers.
 * As a Curator, I want to roll back to a previous version of a page, so that the best known version of a page is always the current one.
 * As an Administrator, I want to get a list of versions of pages a user has created or updated, to judge the user’s intentions and ability.
 * As a Curator, I want to get a list of all changes to pages in the project, so I can review the current versions of pages in the project.
 * As an Administrator, I want to get a list of all changes to pages in the project, so I can detect if there has been any bad behaviour lately.
 * As a Curator, I want to get a list of the previous versions of a media file, so that I can understand how it developed over time.
 * As a Curator, I want to get an older version of a media file, so that I can see which parts of the page were added or removed.
 * As a Curator, I want to delete an older version of a media file, so that inappropriate content isn’t available to readers.
 * As a Curator, I want to roll back to a previous version of a media file, so that the best known version of a file is always the current one.

Epic 4: Curation

 * As a Curator, I want to get a list of pages that link to a page, so I can see how they refer to the page, or change their links if I am going to delete the page.
 * As an Administrator, I want to protect a page, to keep untrusted users from modifying the page.
 * As an Administrator, I want to protect a media file, to keep untrusted users from modifying the file.
 * As a Curator, I want to undelete a page, if the page was deleted by mistake.
 * As an Administrator, I want to mark a version of a page as patrolled, to let other Administrators know that they don’t have to review that version of the page.

Epic 5: Administration

 * As an Administrator, I want to get a list of groups that a user is in, to understand their current level of access.
 * As an Administrator, I want to add a user to a group, to give them extra access.
 * As an Administrator, I want to remove a user from a group, to revoke their access.
 * As an Administrator, I want to block a user from making any changes to the project, so that they don’t cause any damage to the content or community.
 * As an Administrator, I want to block an IP address or IP subnet from making any changes to the project, so that they don’t cause any damage to the content or community.