Core Platform Team/Initiative/Developer Portal/Epics, User Stories, and Requirements

Objectives

 * Extend the reach of Wikimedia content by making it easy for developers to include Wikimedia content in their apps and platforms.
 * Connect developers with the Wikimedia API or tool best suited to their use case. Find a balance between overwhelming them with choices and obscuring the underlying tech to the extent that it impedes their ability to get support.
 * Uphold Wikimedia principles by keeping things open, reducing friction for participation, and fostering a community of contributors.
 * Avoid excessive manual duplication of content.
 * Use MediaWiki as the CMS.

Epic 1: Prototype
The goal of this epic is to have a prototype of the developer portal that stakeholders can review to understand how the developer portal will work. The design and content strategy is largely based on the user stories in Epic 2.

Personas in this epic:


 * Developer: developer of the future Developer Portal
 * Tech Writer: a tech writer for the future Developer Portal
 * Designer: a designer for the future Developer Portal
 * Stakeholder: anyone interested in seeing the Developer Portal be a success.

Epic 2: MVP
In this epic, an initial capability will be provided with the ability to manage developer client keys and some initial developer documentation.

Design decisions:
 * use Chameleon as the skin for the dev portal
 * it would be configured to look similar to the prototype, but certain items such as the behaviors/flyouts would not be exactly as they would look like Bootstrap
 * coordinate with Stephan Gambke so he is aware in case we need to submit any pull requests to Chameleon
 * do not make any changes to the UI of the special pages in the OAuth extension as part of this project
 * we had initially thought that would be necessary, but it would distract from the work that is necessary for the dev portal
 * create a new extension that provides a simple UI to create simple OAuth 2 consumers as shown in the prototype
 * the new extension will only be installed on the dev portal
 * the new extension will interact with the OAuth extension installed on meta through an API
 * the new extension will be named WikimediaDevPortal and could also contain other UI elements needed for the dev portal
 * there would be an attempt to limit any additional libraries necessary for the UI

The personas in this epic are:
 * developer who wants to use the MediaWiki Core REST API

Epic 3: Publication
In this epic, our deliverable is an initial published version of the documentation chosen in Epic 1, in the formats chosen in Epic 1.

The personas in this epic are:


 * Application developer: I want to include Wikimedia content (Wikipedia articles, Wikivoyage travel listings, Wikidata data items) into my application.
 * A software developer for a mobile or Web application
 * They may work for a small (<100 person) company
 * They are experienced with other APIs, like the Twitter or Twilio API
 * They are judgemental about APIs and technologies that seem old or uncool
 * Using Wikimedia content is an optional feature for their application; they will abandon the process if the barrier to entry is too high
 * They may not use English as their primary language, but they are used to English-only developer documentation.
 * Example: “Mid-level Mobile developer at a small application development agency needs to use Wikivoyage data in a bespoke travel app she is developing for a client.”


 * Community script or gadget developer: I want to implement important features for Wikimedia sites that aren’t enabled in the core software, such as updating all imperial measurements (pounds and feet) with additional metric measurements (kg and meters).
 * Either an amateur software developer, professional working off hours, or power user with some scripting experience.
 * They are very involved in one or more Wikimedia projects
 * They are frustrated with manual processes that are repetitive or complex
 * They do not have a choice about using Wikimedia APIs; there are not any other options.
 * They may not have experience with other APIs.
 * They have experience with using MediaWiki for documentation and for conversations.
 * They may not use English as their first language.
 * They may “program by example”, copying example code and adapting it to their own needs.
 * They are passionate about cleaning up vandalism.
 * Example: “Tech librarian for a medium-sized liberal-arts college who is organizing a Wikipedia edit-a-thon for their school and wants to find topics related to their university or area that don’t yet have articles or are not well covered.”


 * Professional platform developer: I want to syndicate Wikimedia content (mostly Wikipedia articles in English, sometimes Wikipedia articles in other languages, and sometimes Wikidata data items) to my own platform
 * A professional software developer working for a large (>10,000 person) company.
 * They may be part of a team (10-50 person).
 * Platform may be text (Google Knowledge Graph or Facebook OpenGraph) or voice (Siri, Alexa, Cortana, Google Assistant)
 * They either use English as their first language or they are used to English-only developer documentation.
 * They think of Wikimedia sites as “dirty” data sources that need to be “cleaned up”. They expect to add a lot of value to the data available from Wikimedia sites.
 * Example: “Knowledge engineer at Banana Computing who works on the Sara voice assistant platform. They are responsible for answering sports data questions, like who won a particular baseball game in 1972.”

Epic 4: Editorial
In this epic, we'll iterate on the initial content of the Developer Portal, and improve the publication processes.

Personas in this epic:


 * Tech Writer: a tech writer developing content for the Developer Portal
 * Technical Editor: an editor who manages the work of one or more tech writers
 * Developer Advocate: a developer advocate trying to get more people to use our platform
 * API Developer: a developer creating APIs for the Wikimedia platform
 * Reader: a person reading text on the Developer Portal