Developer Portal

''' We need your help! ''' We're looking for folks who are interested in testing future prototypes of the developer portal. If you're interested in helping, let us know!

Problem
"Upon arriving on the MediaWiki and Wikitech home pages, I was instantly lost." -- Ashwin Bhumbla

"MediaWiki documentation is not only infamously incomplete, but also terribly scattered." -- Waldyrious

Wikimedia has many potential entrance places for developers interested in certain technical areas. Based on conversations on Project:Support desk, mailing lists, IRC, Phabricator, in outreach programs, etc., some technical contributors have a hard time finding the information and key technical documents that they are interested in.

Some documentation should be more discoverable, some documentation is dispersed or duplicated across several websites, some of our documentation is outdated, some of our technology areas could be more discoverable.

Goal
Starting in 2020, the Developer Advocacy team works on an organization strategy for key technical documents: Understand challenges about finding and maintaining docs, identify key docs, and investigate ways to improve our workflows around documentation.

One tangible outcome of this initiative will be a central and single entry point ("developer portal") which links to our key technical documents.

This will allow existing and future technical contributors and developers to:
 * Find the information which they need to achieve a certain task
 * Discover available tools and technologies
 * Learn how to get started in Wikimedia technical areas

Further outcomes include checking the documents linked from the single entry point proposal for accuracy, and investigating improvements of processes around technical documentation.

Timeline
Note that this timeline is not final.
 * Jul 2020‒Sep 2020: Announce project; set up wiki page ✅
 * Oct 2020‒Feb 2021: First iteration: Explorative conversations with a sample of stakeholders (WMF/WMDE) to identify use cases and identify key technical documents to link, understand workflows, and gather technology areas (T260984) ✅
 * Jan 2021‒Mar 2021: Review of single entry points of other projects and organizations (T260987) ✅
 * Mar 2021‒Apr 2021: Analysis of exploratory conversations, leading to key themes and to a content proposal for a single entry point ✅
 * May 2021: Publication of key themes identified in exploratory conversations: ✅
 * May 2021: Publication of a content proposal (prototype) for an initial single entry point: Developer Advocacy/Developer Portal/Content Draft ✅
 * May 2021: Call for review and feedback by the broader community (T260985) of the prototype at Developer_Advocacy/Developer Portal/Content Draft/Feedback ✅
 * May 2021‒Jun 2021: Discussion, identification, and incorporation of potential improvements to the prototype: ✅
 * Jul‒Sep 2021: Investigate further content strategy for a single entrance point ✅
 * Jul-Aug/Sep 2021: Define accuracy criteria for checks of content linked from the prototype - see tag/key_docs_update_2021-22 (planning) and Documentation/Review process (outcomes) ✅
 * Oct 2021‒Mar 2022: Correctness checks (based on Documentation/Review process) of content linked from the prototype and conversations on potential improvement of processes around key technical documents (structure, locations, navigation, stewardship, etc), by potentially also utilizing the Documentation/Maturity model for MediaWiki technical documentation to improve practices and processes - see tag/key_docs_update_2021-22
 * Jul‒Sep 2021: Investigate technical requirements for implementation of a single entrance point ✅
 * Oct 2021‒May 2022: Technical implementation of a single entrance point
 * Work in progress prototype ✅
 * June 2022: Launch of the single entrance point

Key themes from conversations
This is a summary from the explorative conversations with a sample of stakeholders (WMF/WMDE) in Oct 2020‒Feb 2021.


 * Wikimedia has a large variety of programming languages and technology areas. Documentation in many of these could benefit from more visibility.
 * Audiences: A clear understanding of the audiences for technology areas helps write more focused docs and consumers get more relevant information.
 * Stewardship: Tech writers serve as the main contact for technical documentation. In the absence of technical writers, stewardship of documentation is ad-hoc.
 * Stewardship: Defining stewards for specific technical areas and processes for task assignees or code reviewers to review related documentation improves correctness and completeness of documentation.
 * Coherence: Guidelines and recommendations on naming and structuring documentation would help documentation writers and maintainers.
 * Coherence: Guidelines on which content should be hosted on which sites would help reach the target audiences and avoid duplication of content.
 * Common knowledge: Clarifying (and potentially expanding) the set of shared public documentation to be considered relevant for a wide range of technical contributors could help improve accuracy and completeness of documentation.
 * Code proximity: The closer technical documentation is to the code that it covers, the more likely the related documentation can be located and updated.

Feedback from broader community and outcomes
After the exploratory conversations (see ) which informed the initial content proposal, the public feedback phase to receive broader feedback on the content draft took place from May 6 to May 25, 2021.

The call for feedback was published in various places: Several mailing lists (wikitech-l (reminder), pywikibot, cloud, wikidata, wikitech-ambassadors, analytics), IRC channels, social media channels, Zulip, the Hackathon Telegram group, etc. There was also a dedicated Hackathon 2021 session in which people commented on this project.


 * We received feedback from several longtime contributors on the Feedback page, via private messages, and several people attending the Hackathon 2021 session.
 * Several comments expressed appreciation for the idea and initiative.
 * Several comments proposed technologies to add, descriptions and categories to improve, potential links to add, and items to move to other categories. This feedback was mostly included.
 * It was pointed out that some headers partially duplicate descriptions. We made some improvements and think this cannot be completely avoided.
 * It was pointed out that some relevant information is on Developer Hub and that people wouldn't immediately think of looking into that page. We may want to evaluate scope, visibility, and stewardship of the Developer Hub page. The page seems to be a valuable link hub for MediaWiki development itself.
 * It was proposed to evaluate search logs to better understand common needs. This has been filed as T285183 to be considered at a later stage.
 * We added TemplateStyles and Wikidata Query Service. We removed VisualEditor.
 * We moved Wikibase to the "Enhance the MediaWiki software platform" section.
 * We moved Machine Learning to the "Build tools, gadgets and bots for your Wikimedia community" section.
 * We improved descriptions and titles to be clearer and more consistent.

Previous plans, thoughts and research
This list includes historical attempts to establish either some high-level developer documentation hub or holistic approaches to improve cross-project documentation. This list is not about specific content itself.


 * WMF Projects/Technical Documentation and User:Zakgreant/MediaWiki Technical Documentation Plan (2010) "by making small, incremental improvements to the existing documentation process and infrastructure."
 * Requests for comment/Documentation overhaul on MediaWiki Core level (2011)
 * Requests for comment/Add developer link to footer of Wikimedia wikis (2012)
 * T67074 (2014-2015) - "Set up dev.wikimedia.org portal"
 * Web APIs hub (2013-2015); see T308/T299 and notes about a Data & Developer Hub from a Hackathon
 * User:Quiddity (WMF)/Hubs and docs (2017), notes on older existing pages
 * User:Waldyrious/Docs (2013-2019)
 * T169599 (2019) - "Sort out concept for overview/entrance pages targeting our developer audience" (about pages on mediawiki.org only)
 * Core Platform Team/Initiatives/Developer Portal (2019-2020), superseded by lowering scope to an API Portal / API Gateway

Existing high-level entry points
This list is not about specific technology areas but common landing points, either by domain or by links often pointed out to interested newcomer developers.


 * https://www.mediawiki.org (MediaWiki core/extensions/skins, but also random Wikimedia related technology)
 * https://www.mediawiki.org/wiki/New_Developers (new Wikimedia developers) and sometimes https://www.mediawiki.org/wiki/Good_first_bugs
 * https://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker (new MediaWiki core/extensions/skins developers)
 * https://www.mediawiki.org/wiki/Developer_hub (experienced MediaWiki developers)
 * Existing sites:
 * https://mediawiki.org (MediaWiki core/extensions/skins/platform, random other technical things and home of some team pages; in theory not intended for Wikimedia-specific technical documentation)
 * https://wikitech.wikimedia.org (Wikimedia infrastructure/servers/network, Toolforge and Cloud VPS, Analytics - Docs related to technical projects and infrastructure maintained by WMF; how we use software and how it's configured)
 * https://doc.wikimedia.org (API references for classes) (technical details on content generation; frontpage structure)
 * https://meta.wikimedia.org (less technical; mostly cross-Wikimedia movement stuff for coordination, planning, documentation; some random Wikimedia related technology, maybe home of some engineering team pages)
 * https://api.wikimedia.org/
 * Several external project-specific websites, e.g. https://wikiba.se, https://kiwix.org/, https://commons-app.github.io/, etc. Some of them are self-hosted static microsites, e.g. research.wikimedia.org
 * https://wikimediafoundation.org/technology/
 * https://meta.wikimedia.org/wiki/Tech (as a portal split, recommended by Small wiki toolkits)

Core audiences
These personas and motivations have been identified for the proposed Wikimedia portal.


 * Content re-users
 * I want to use Wikimedia content in my app.
 * I want to download Wikimedia content to use in an offline app or to host a mirror.
 * I want to find reference information for something specific.
 * User journeys:
 * 
 * 


 * Tool developers (experienced)
 * I want to build my open source programming portfolio to gain experience for employment.
 * I want to use my technical skills to give back.
 * I want to find co-maintainers for my tool.
 * I want to improve my tool's docs and discoverability.
 * I want to experiment with new tool-related technology.
 * I want to work on a large scope project in collaboration with WMF, affiliates, and communities.
 * I want to move my tool onto Wikimedia Cloud.
 * I want to connect with other experienced devs.
 * I want to create or improve a tool.
 * I want to find out what other people and teams are working on.
 * I want a general overview of the tech stack and systems.
 * I want to share what I'm working on or something cool that I built.
 * I want to know who is responsible for something/who I can talk to about a specific topic or technology.
 * User journeys:
 * 
 * 
 * 


 * Tool developers (new)
 * I want to solve a problem on my local wiki.
 * I want to grow my technical skills.
 * I want to build my open source programming portfolio to gain experience for employment.
 * I want to share what I'm working on or something cool that I built.
 * I want to find reference information for something specific.
 * I want a general overview of the tech stack and systems.
 * I want to find out what other people and teams are working on.
 * I want to know who is responsible for something/who I can talk to about a specific topic or technology.
 * User journeys:
 * 
 * 
 * 
 * 


 * Outreach program participants
 * I want to learn about and apply for outreach programs.
 * I want to complete the evaluation phase for an outreach program.
 * I want to be successful in my outreach program.
 * I want to mentor outreach participants.
 * I want to find reference information for something specific.
 * I want a general overview of the tech stack and systems.
 * I want to connect with the larger technical community.
 * I want to know who is responsible for something/who I can talk to about a specific topic or technology.
 * User journeys:
 * 
 * 


 * Data consumers (Researchers)
 * I want to use data from Wikimedia as part of my research.
 * I want to use data to understand my wiki, Wikimedia projects, and Wikimedia users.
 * I want to use an example dataset for data science purposes.
 * I want to find reference information for something specific.
 * I want a general overview of the tech stack and systems.
 * I want to find out what other people and teams are working on.
 * I want to connect with the larger technical community.
 * I want to know who is responsible for something/who I can talk to about a specific topic or technology.
 * User journeys:
 * 
 * 

User journeys
The following user journeys evolved out of our research into user personas, motivations, and the tasks that users are trying to complete when they seek documentation. The information architecture of the developer portal implements these goals and tasks as site sections and links to key landing pages.

Get started
Phabricator task | portal link

Tasks:


 * Learn how Wikimedia software projects work
 * Browse tutorials
 * Learn about Wikimedia technology
 * Choose your goal and start coding

Use content or data
Phabricator task | portal link


 * Browse web APIs
 * Learn with API tutorials
 * Reuse wiki content
 * Get featured content by date
 * Get pages by title on any Wikimedia project
 * Get pages in mobile format
 * Search for and display wiki pages and media
 * Access data, and analyze wikis
 * Access data dumps
 * Display info from Wikidata
 * Event streams API
 * Get data about wikis
 * Query content databases
 * Use Wikimedia open data
 * Use machine learning to detect vandalism
 * Wikidata query service
 * Write a bot that uses Wikidata

Build and discover tools
Phabricator task | portal link


 * Discover tools
 * Learn about MediaWiki
 * Set up developer accounts
 * Customize MediaWiki behavior
 * Automate editing and maintenance
 * Create and edit pages
 * Create scripts or bots
 * Guide editors by suggesting links
 * Manage watchlists
 * Review and monitor changes
 * Use machine learning to detect vandalism
 * Host tools on Toolforge

Contribute to Wikimedia open source
Phabricator task | portal link


 * Learn how contributing works
 * Learn the basics for new developers
 * Learn the basics of MediaWiki development
 * Read the code of conduct
 * Recommended projects for new contributors
 * Extend and customize MediaWiki
 * Browse extensions
 * Change the look and feel of MediaWiki
 * Learn about MediaWiki extension points
 * Write new extensions
 * Localization
 * Add a wiki in a new language
 * Contribute translations
 * Customize messages in your local wiki
 * Learn about MediaWiki's localization system
 * Documentation
 * Accessibility

Connect with the tech community
Phabricator task | portal link


 * Explore hackathons and events
 * Communicate effectively
 * Find code maintainers
 * Wikimedia Foundation technical operations
 * Get tech project updates

Grow your technical skills
Phabricator task | portal link


 * Build tech capacity in wiki communities
 * Explore hackathons and events
 * Learn about outreach and mentoring programs

Key landing pages
The team has identified these pages as key documentation landing pages representing sets of key docs.

On mediawiki.org
To help maintain these pages, add this list to your Special:EditWatchlist/raw watchlist, and make sure your preferences are set to Email me when a page or a file on my watchlist is changed to receive edit notifications.


 * Accessibility guide for developers
 * API:Main page
 * Architecture Repository
 * Code of conduct
 * Communication
 * Developers/Maintainers
 * Development guidelines
 * Documentation
 * Good first bugs
 * Hackathons
 * How to contribute
 * Localisation
 * Manual:Creating a bot
 * Outreach programs
 * Security
 * Technical Community Newsletter
 * Technical Decision Forum
 * Wikibase
 * Tech talks
 * Wikimedia Technology
 * MediaWiki
 * MediaWiki

On wikitech.org
To help maintain these pages, add this list to your Special:EditWatchlist/raw watchlist on Wikitech, and make sure your preferences on Wikitech are set to Email me when a page or a file on my watchlist is changed to receive edit notifications.


 * Deployments
 * Help:Cloud Services Introduction
 * Help:Toolforge/Developing successful tools
 * Portal:Toolforge
 * Wikimedia infrastructure

On meta.wikimedia.org
To help maintain these pages, add this list to your Special:EditWatchlist/raw watchlist on Meta-Wiki, and make sure your preferences on Meta-Wiki are set to Email me when a page or a file on my watchlist is changed to receive edit notifications.


 * Grants
 * Offline Projects
 * Research:Data
 * Small wiki toolkits
 * Tech News
 * Wikimedia Apps

Off wiki

 * toolhub.wikimedia.org
 * doc.wikimedia.org
 * performance.wikimedia.org
 * techblog.wikimedia.org
 * design.wikimedia.org/style-guide

Technical implementation
See Developer Portal