This page is intended for Community Tech team members to share information about internal processes and norms. This document serves to catalog information, expectations, cadences, and good practices for:
- Community Wishlist Survey
For developer-specific processes, please visit Community_Tech/Development
Although everyone on CommTech should feel empowered to edit and make comments/suggestions on this doc, James McLeod is the primary owner and is accountable for keeping it updated as we refine our processes together.
Main CommTech Workboard: https://phabricator.wikimedia.org/project/board/1274
List of Sprint Milestones: https://phabricator.wikimedia.org/project/subprojects/1274
Community Wishlist Survey
How do we implement wishes?
To make sure we implement wishes in a balanced way we thought of a way to share responsibilities. One dev in the team can we a "wish lead" for one of the wishes while others are the "wish devs".
What does it mean to be a wish lead?
Does NOT mean
- To be responsible for the whole project
- To make technical decisions on your own
- To work in isolation or to feel like you have to do most of it
- To have all the answers
- Writing tickets on their own, but rather collectively
What it means
- To work closely with the team and steward technical direction by facilitating conversations around research and technical planning
- To work closely with PM, TPM and EM pruning phabricator tickets, and creating a balanced timeline, but make sure that tickets are being written collaboration
- To identify tasks that are blocking the team and make sure they are being prioritized by the PM
- To kick-start and open up the floor for healthy discussions about what's working and what's not working for the project
Roles & Responsibilities
People and roles within our team
|Karolin Siebert||Engineering Manager|
|Dayllan Maza||Lead Engineer/Tech Lead|
|Sandister Tei||Community Relations Specialist|
|Dom Walden||QA Engineer|
|Joydeep Sengupta||UX Designer|
Specific tasks and responsibilities per role
what we expect you to do
tasks that allow you to fill your role
|Lead Engineer/Tech Lead||
|Community Relations Specialist||
|Quality Assurance Engineer||
|Technical Program Manager||
indicates who Drives, Approves, Consults, and is Informed for CommTech decisions
|Product Manager||Technical Program Manager||Engineering Manager||Technical Lead||Quality Assurance Engineer||UX Designer||Engineers||Community Relations Specialist||Director of Product Management||Other|
|Set product strategy||Approver||Informed||Consulted||Consulted||Consulted||Consulted||Consulted||Consulted||Approver|
|Set roadmap + goals||Driver||Consulted||Consulted||Consulted||Consulted||Consulted||Consulted||Consulted||Approver||Consulted|
|Prioritize feature development||Driver||Consulted||Consulted||Driver||Consulted||Consulted||Consulted||Consulted||Informed|
|Prioritize bug fixes||Approver||Consulted||Consulted||Consulted||Driver||Consulted||Consulted||Informed||Informed|
|Define user research needs + strategies||Approver||Informed||Consulted||Consulted||Informed||Driver||Consulted||Consulted||Informed|
|Manage Process Improvements and team norms/artifacts||Approver||Driver||Consulted||Consulted||Consulted||Consulted||Consulted||Consulted|
|Plan Offsites (attendees, budget, travel)||Consulted||Driver||Approver||Consulted||Consulted||Consulted||Consulted||Consulted||Informed||Consulted|
|Plan Offsite Content||Approver||Driver||Consulted||Consulted||Consulted||Consulted||Consulted||Consulted||Informed|
|Collaboration & Communication|
|Organise collab events and sessions||Approver||Approver||Driver||Consulted||Consulted||Informed||Consulted||Informed||Informed|
|Plan sync and async comms and alignment||Approver||Approver||Driver||Consulted||Consulted||Informed||Consulted||Informed||Informed|
|Have weekly conversations with Engineers||Informed||Informed||Driver||Informed||Informed||Informed||Approver||Informed||Informed|
|Engineering Resource Recruitment and Allocation||Approver||Informed||Driver||Consulted||Informed||Informed||Informed||Informed|
|Coordinate Team Dependencies||Consulted||Approver||Driver||Consulted||Consulted||Consulted||Consulted||Consulted||Informed|
|Professional Development for Engineers||Informed||Informed||Driver||Consulted||Consulted||Consulted||Consulted||Consulted||Informed|
|Onboard new team members||Approver||Approver||Driver||Consulted||Consulted||Consulted||Consulted||Consulted||Informed|
|Determine Technical Approach||Informed||Informed||Approver||Driver||Consulted||Consulted||Consulted||Informed||Informed|
|Maintain testing infrastructure||Informed||Informed||Approver||Consulted||Driver||Consulted||Consulted||Consulted|
|Team Tool Creation and Management||Consulted||Informed||Approver||Consulted||Consulted||Consulted||Driver||Informed|
|Keep Community Informed||Approver||Consulted||Consulted||Consulted||Consulted||Consulted||Consulted||Driver||Informed|
|Keep public team and project pages up to date||Approver||Driver||Consulted||Consulted||Consulted||Consulted||Consulted||Consulted||Informed|
- Phabricator (often affectionately referred to as Phab) is Wikimedia Foundation’s primary task management and bug tracking system.
- New to Phab? Visit this page on MediaWiki to learn more.
- A distinct piece of work within Phabricator (e.g., https://phabricator.wikimedia.org/T283897) is referred to as a task or a ticket.
- An epic is also a type of task within Phabricator. Epics are typically used to house groups of tasks (as sub-tasks).
|Column header||What kinds of tasks live here?||Who moves tasks into this column?|
|New & TBD Tickets||Newly-created tasks in which CommTech is tagged||Anyone!
This is the default column for any tasks tagged with Community-Tech.
|Freezer||Tasks that we won’t be able to work on now (i.e., not in Unbreak Now!, not within the scope of a prioritized wish), and we don’t anticipate working on in the future. This column should be used sparingly, as an alternative to declining the task or untagging CommTech.||Product Manager, Tech Lead, Engineering Manager, Engineer, TPgM|
|Engineering Backlog||Tasks that we won’t be able to work on now (i.e., not in Unbreak Now!, not within the scope of a prioritized wish), but would like to refine/work on in the future.||Product Manager, Tech Lead, Engineering Manager, Engineer, TPgM|
|Epics||Parent tasks tagged as Epic, which likely carry over multiple sprints.||Product Manager, Tech Lead, Engineering Manager, UX Designer, Engineer, QA Engineer, TPgM|
|Following||Tasks that CommTech won’t work on directly, but want to keep an eye on.||Product Manager, Tech Lead, Engineering Manager, UX Designer, Engineer, QA Engineer, TPgM|
|To Be Estimated/Discussed||Tasks that need to be refined and/or estimated at an upcoming Estimation meeting.||Product Manager, Tech Lead, Engineering Manager|
|Estimated||Tasks that have been discussed, estimated with a point value, and are ready to be prioritized within a present or future sprint.||Product Manager, Tech Lead, Engineering Manager, TPgM|
|CommTech-Sprint-x (where x is a numbered sprint)||Milestone column! Tasks that are actively being worked on, or prioritized for the immediate future. Opens a separate kanban board for active & future sprints.||Product Manager, Tech Lead, Engineering Manager, UX Designer, Engineer, QA Engineer, TPgM|
- CommTech Sprint Kanban boards
- Each sprint board represents a 2-week timespan (we also keep a log of CommTech sprints, outside of Phab, here).
|Column header||What kinds of tasks live here?||Who moves tasks into this column?|
We use a simple release plan checklist template outlining tasks, roles, and responsibilities for releasing wishes into the world. Open items to be figured out & documented: Release - need to align on what makes a change visible to end users Train https://wikitech.wikimedia.org/wiki/Deployments/Train_vs_backport Backport-config Beta cluster Anything pertinent from https://wikitech.wikimedia.org/wiki/How_to_deploy_code or https://www.mediawiki.org/wiki/Wikimedia_Release_Engineering_Team
- We have a highly distributed team across multiple time zones, so we are careful about when & why we hold synchronous meetings.
- Please RSVP (yes/no) to meeting events in Google Calendar within 1-2 days ahead of its scheduled time.
- RTL (Right-to-Left): Right-to-left review of our active Sprint board to ensure visibility of all our work, surface blockers & areas where clarity is needed, and generally see how everyone's doing at alternating times to accommodate different time zones
- Collab Sessions: This is a time slot reserved for collaborative programming sessions. Engineers may add non-urgent tickets to the Etherpad to work on together. Otherwise, it's always fine to come with whatever you are currently working on and share your struggles. It will be great for others to get insights into a different codebase or way to work at alternating times to accommodate different time zones
- Unmeeting: Chit-chat time! Non-work related, totally optional, informal.
- Engineering + Design: A meeting for the team, specifically engineers and designer, to discuss current design work, brainstorm ideas around UX/UI, explore technical feasibility and find optimal design/engineering solutions at alternating times to accommodate different time zones
- Retrospective: Here we go over what went well, what could have gone better, and give shoutouts/kudos to people who helped us out over the last 2 weeks at alternating times to accommodate different time zones
- Estimation: In this meeting we go over tickets that have been added to To Be Estimated/Discussed on Phabricator, as well as tickets that need to be re-pointed or pointed retroactively. We estimate in the order of highest priority.
- Planning: In this meeting we prioritize work for the upcoming sprint, ensure tickets are well defined, and set a goal for the sprint.
- Triage: Here we assign priority levels to newly-created tasks in New & TBD Tickets column, align on next actions, and move tasks to the appropriate column or sprint.
- 15-minute Wish Check-ins: In these deliberately short meetings, we align on status, blockers, dependencies, and needs for specific wishes.