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 documentation portal that stakeholders can review to understand how the documentation 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 Documentation Portal
 * Tech Writer: a tech writer for the future Documentation Portal
 * Designer: a designer for the future Documentation Portal
 * Stakeholder: anyone interested in seeing the Documentation Portal be a success.

Epic 2: 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 3: Editorial
In this epic, we'll iterate on the initial content of the documentation portal, and improve the publication processes.

Personas in this epic:


 * Tech Writer: a tech writer developing content for the documentation 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 documentation portal

Technologies to document

 * https://www.mediawiki.org/wiki/API:Main_page - Action API
 * https://en.wikipedia.org/api/rest_v1/ - Rest API
 * https://www.mediawiki.org/wiki/ORES - ORES
 * https://query.wikidata.org/ - Wikidata SPARQL queries
 * https://wikimedia.org/api/rest_v1/ - Page views
 * https://wikitech.wikimedia.org/wiki/Event_Platform/EventStreams - Event streams
 * Community script developer
 * Dump synchronization


 * https://dumps.wikimedia.org/ - Data dumps


 * https://www.mediawiki.org/wiki/OOUI - OOUI
 * Preferred library for building gadgets
 * https://www.mediawiki.org/wiki/Extension:Gadgets - Gadgets
 * Possibly https://www.mediawiki.org/wiki/Extension:Scribunto