Core Platform Team
This team has the primary responsibility for the Platform that supports the projects of the Wikimedia Movement. The platform is comprised of MediaWiki and the Wikimedia service infrastructure which provides our services, APIs and tools. Additionally, the team supports MediaWiki as a FLOSS product to be used by 3rd parties to host and share knowledge in a variety of contexts. This team was formed in July 2018 by merging the MediaWiki Platform team and the Services team.
We shepherd Wikimedia’s essential software and infrastructure technologies enabling our users and developers to unlock free knowledge.
Our values and how we model them in our workEdit
- We continually learn and hone our skills to apply the best solutions to challenges
- When learning something new, we aim to share it with both within and outside the team and encourage others to do the same
- We proactively share our knowledge, collaboratively work on solutions, and provide mentoring whenever we can
- We prefer to aid others in achieving their goals, rather than solving problems for them. This both empowers them and makes our team and organization stronger
- We actively and frequently talk to our teammates about their work and challenges over simply asking them if they need help.
Clear and respectful communicationEdit
- We ensure all voices are heard in discussions by asking the opinions of others who have not spoken up.
- We give detailed code reviews and try to communicate the “why” as well as the “what”.
- When we offer criticisms, we also offer help and assistance getting to a solution.
- We volunteer our thoughts and perspectives while considering and respecting the thoughts and perspectives of others
- When we offer criticisms, we are careful to re-evaluate our own assumptions and are open to changing our minds.
- We strike a balance between constraints and long-term implications of our work
- We follow the architecture principles whenever possible and be sure to communicate our rationale to others when we don’t
- We focus on projects that deliver clear and measurable impacts
- We use experiments to figure out new paths while minimizing risks in order to overcome challenges
- We use our own products for our work whenever possible in order to better understand and improve our software.
- We do not hold ourselves to perfection, but we do establish good metrics of success that allow us space to experiment while minimizing risks
- We keep the codebase clean and hold others accountable to do the same in order to minimize tech debt.
Effective and Inclusive CollaborationEdit
- We take time to get input from team members on decisions that affect them.
- We always try to finish what we are working on before starting something new.
- We try to solve problems ourselves first because we value the time of our teammates, but we don’t wait too long before asking someone else because we also value our own time.
- We make an effort to promptly respond to messages so to not block other team members.
- We keep our code reviews focused on facilitating merging, minimizing feedback that are not required for the code’s goal and provide actionable comments
- We collaboratively support other teams’ goals by proactively asking them for their needs and requirements and providing them timely responses and concrete decisions and feedback.
- We keep our priorities clear and work on what is most important.
- We give people the space, opportunity and trust to grow, even if it means the most skilled person isn’t working on a task.
- To lead the maintenance and improvement of the MediaWiki platform.
- To assist and encourage feature development on top of MediaWiki by providing developers with a clean and elegant core.
- To provide value for end users by undertaking feature development work which is primarily architectural in nature.
- To create and publish a MediaWiki roadmap to assist planning of internal and external users.
- To establish guidelines and standards for the MediaWiki core code.
- To automate monitoring, metric reporting and logging for Wikimedia services.
- To keep the majority of services simple and stateless by offering general multi-datacenter storage and change propagation solutions.
- To make our infrastructure more flexible, robust and efficient by gradually migrating from a monolithic architecture to micro-services.
2020/07/22 - 2020/08/04Edit
|Team||Bill(5%), Alex, Cindy(5%), Petr, Clara, Hugh|
- User Contributions API
- API Portal
- API Gateway Envoy and Rate Limiting Planning
|Team||Cindy, Bill, Tim, Nikki, Daniel(7/22 - 7/24)|
- Clinic Duty triage, UBNs, Train Triage meeting and external code reviews.
Visiting Engineer: Andy Green from Fr-tech to do KT around Central Notice
Below are the plans and documentation for the major initiatives (i.e. long running projects) we are working on currently and in the near future (current and upcoming work on our roadmap)
- API Gateway
- API Gateway/Documentation Plan
- API Gateway/Documentation Plan/Styles
- API Gateway/Name
- API Gateway/Technical Docs
- Add API integration tests
- Add WebAuthn 2FA to OATHAuth
- Caching for multiple parsers
- Core REST API in MediaWiki
- Core REST API in MediaWiki/Scenarios
- Core REST API in MediaWiki/Schema
- Dependency Tracking
- Developer Portal
- Developer Portal prototype review
- Enable Multi-DC Session Storage
- Featured Content Feed
- Hash Checking
- Historical Data Endpoints API
- MCR schema migration
- Mainstash Multi-DC
- MediaWiki on Kubernetes
- Movie API
- Multi-DC Echo Notification Storage
- Multi-DC Replication Lag
- Quantify and reduce coupling in MediaWiki Core
- Reduce Extension Interface Surface Area
- References API
- Release Automation
- Remove storage from RESTBase
- Serve read requests from multiple datacenters
- Shard Revision Table
- Stability annotations
- Stability annotations/base classes
- Stability annotations/interfaces
- Stability annotations/newable
- Stability annotations/roadmap
- Sunsetting RESTBase
- Unify Parsers-Phase 1
- Unify Parsers-Phase 2
PET Work ProcessesEdit
Defining a vocabularyEdit
In order to have the common vocabulary when discussing our work, we have adopted the Agile framework developed by Atlassian. When planning our work, we use the words ”Initiatives”, “Epics”, “User Stories”, and “Tasks” from their framework to describe size and type of work we plan and perform on the team. In this system, we breakdown the MTP Key Deliverables into our Initiatives. In this way we keep a direct link between our internal team system and how work is tracked within the organization
Platform Engineering Team InitiativesEdit
The Platform Engineering Team work process involves a number of stages that derive from the PET Roadmap, which maps at a high level the layout of all initiatives that the CPT is responsible to complete or support. Initiatives are drawn from the PET Roadmap and entered into PET Initiative Planning. The Director, Senior Project Manager, Product Managers, Engineering Managers and Technical Leads are responsible for the work of developing the initial outline to a full proposal decomposed into Epics and Tasks ready to be scheduled and implement by Engineers.
The CPT is composed of 2 functional teams specialising in Distributed System and Storage, and Features, Data and Content. Within CPT we break down into 3 core teams, 2 teams focused on product work and 1 Clinic Duty Team. Our work process is agile based using 2 week sprints. The content of the sprints is determined in pre-sprint planning. Product teams are formed based on the functional requirements of the projects to be undertaken while the Clinic Duty team is rotated on a sprint by sprint basis.
Supporting WMF TeamsEdit
For work that is inbound to the PET from WMF teams or external volunteers, our goal is to participate early in projects where we are a dependency or have a supporting role in order to ensure that we can integrate this work into our ongoing planning and provide others with consistent, predictable timelines for when work can be accomplished.
For Unbreak Now, reactive work and external code reviews, the Clinic Duty Team is designed to provide ongoing triaging and handling of inbound tasks as well as working on code health, maintenance and improvements.
Note: Tasks that are Unbreak Now(UBN) or reactive should be tagged with #platform-engineering, they will then be picked up by our triage process and scheduled
Inbound work is managed by our Task Triage process, which evaluates the task and routes it appropriately depending priority and content.
Decisions of Record, Architecture and ResearchEdit
Members of our team set goals each quarter in order to support other team members and their own professional development.
Team Improvement Working GroupsEdit
- This board contains our Inbox and a set of columns identifying the Initiatives we are working on and the prioritised tasks of work to complete each
Contact the teamEdit
Contact the team:
The Platform Team is currently supporting the following programs: