How we are going to use Gitlab for organizing projects and Tor's work
CONVERT THIS THREAD INTO DOCUMENTATION (Tails example https://tails.boum.org/contribute/working_together/GitLab/)
We have user stories for how we need to use Gitlab. I'm writing down here a proposal on how to use Gitlab, open up for discussion.
SPONSOR/PROJECT PLANNING AND WORK
- To track a sponsor's project, including how much time there is for the project and what is still not assigned (pm user stories #26 (closed)):
Create a milestone per objective of the project OR for the whole project, depending on size. The milestone should be in the group that includes all groups working on this project. Examples:
- For OnionPerf https://gitlab.torproject.org/groups/tpo/metrics/-/milestones/1
- For objectives in the Sponsor 30: https://gitlab.torproject.org/groups/tpo/-/milestones/4
Each milestone will have:
- dates when the project/objective starts or end
- information about the project or objective
- all the tickets that need to be completed with this milestone
To mark that a ticket could be in a specific sponsor/project:
- Mark that ticket with the label for the sponsor. For example label 'Sponsor 55'. The tickets with this label may not go into the sponsor but are a possible fit for it.
To divide objectives/tickets into smaller tasks (dev stories for sponsor planning):
- Create an issue for that objective with the label 'project'
- In that issue write down a list of "children" that are the tasks that need to be completed. Each child is a new issue. Example: tpo/anti-censorship/bridgedb#31274 (closed)
To decide which open bugs must be finished before we can put out the next release.
- Create a milestone for each release. The milestone will be at the level of the team's group or project. For example:
To organize work per team or per project (TBB, tor, onionperf, etc):
- Create a kanban board where we can set stacks with:
- backlog: indicates all the work that we have planned to do
- next: indicates all the work that we are doing in the next sprint. (decide with your lovely PM and your team how long your sprint should be)
- doing: indicates all the tickets that people are working on right now
- needs review: some teams needs this label to indicate the tickets/issues that needs somebody to review them.
- Each "stack" in the board will be a label. The labels that we are all using for this are: backlog, next, doing, needs review.
- The issues at the top of the stack are the ones with the most priority in that stack.
- OnionPerf https://gitlab.torproject.org/tpo/metrics/onionperf/-/boards
- SysadminXs https://gitlab.torproject.org/groups/tpo/tpa/-/boards
- Network https://gitlab.torproject.org/groups/tpo/core/-/boards
To decide on what to work next
- There is this neat place where you can see all the issues assigned to you, issues that you were mentioned in, merge requests. https://gitlab.torproject.org/dashboard/todos
To assign reviews
- Issues in Gitlab do not have a review but merge requests do have them. To work around this (as we still need to mark down issues for review) we will have labels at the project or group level (not TPO level) to mark who is reviewing which issue. The labels will be "review-by-X" with X the name of the person.
COMMUNICATION BETWEEN TEAMS
In an issue you can mention a group (for example @core) and that issue gets into the dashboard of all the people in that group. Use this power with responsability.
We still do not have signups in Gitlab so for now people have to send a mail to firstname.lastname@example.org to be able to get an account in Gitlab. Once they have an account they can easily report a bug in https://gitlab.torproject.org/groups/tpo/-/boards or https://gitlab.torproject.org/groups/tpo/-/issues
I'm not totally sure if that board in TPO is the best one so we need to think a little more about how to show all the work happening as well as all the work to be done in the whole organization. https://gitlab.torproject.org/groups/tpo/-/boards
I would like to add issue templates to all projects so people can easily follow the template to post the information that we need from the issue. Example: https://gitlab.torproject.org/ahf/lobby/-/issues/new?issue%5Bassignee_id%5D=&issue%5Bmilestone_id%5D=
Templates to report a bug should contain:
- steps to reproduce
- expected results
- actual results
- version that the bug was found in
For people to search between all the issues in TPO (if they for example want to check all the issues they authored) they can do it in https://gitlab.torproject.org/groups/tpo/-/issues
To help volunteers I think we could have labels that help people find something they can collaborate to:
- 1st contribution
We are discussing email interaction with Gitlab on #29 (closed)
We are discussing labels in #4 (closed)
Please, make commments, things that may not work, something that I maybe forgot.