Distribution team members are expected to:
The distribution team is comprised of two groups, Distribution:Build and Distribution:Deploy.
Work to be completed by the Distribution team members who are not currently acting as the Distribution DRI is prioritized as follows:
|Priority level||Work item|
|1||Work on in-progress
|1||Pick up available
|2||Unblock remaining in-review Merge Requests|
|3||Work on in-progress
|3||Pick up SLO-breaching Merge Requests for review|
|4||Pick up SLO-near-breaching Merge Requests for review|
|5||Pick up available
|6||Work on in-progress
|6||Pick up available
|6||Pick up SLO-non-breaching Merge Requests for review|
|7||Work on in-progress
|7||Pick up available
Use this prioritization outline as a general guide when determining what to do each day. This list helps direct work toward overall team priorities and goals laid out by the team managers.
Engineering manager and Product manager are responsible for scheduling work that is a direct responsibility of the Distribution team.
Work can be (very) roughly divided as:
All scheduled work for omnibus-gitlab, Helm charts and team projects is shown on the Deliverable board. Use additional filters to see specific milestones, etc.
There are a number of labels applied at any time to Epics, issues and merge requests (items), but there is a priority, first being the highest:
Deliverable- Issues with this label are agreed between team EM and the PM and have the highest overall priority. If you are looking for new work to pick up, unassigned issues should be tackled in order of priority label. Deliverable issues not closed in a given milestone are auto forwarded via milestone cleanup workflow.
group::distribution- Items specific to, or authored by Distribution team. It is a scoped label to be applied to all Distribution subgroups items until further guidance.
group::distribution::*- Items specific to, or authored by one of Distribution subgroups. They are nested scope labels, and mutually exclusive, but can be used with
group::distributionscoped label together.
Stretch- Items with this label are scheduled for work similar like the items with
Deliverablelabel but with lower priority. If items with this label are not delivered in the current cycle, they will become
Deliverablein the next release.
Distribution OBJ::*(1-4) - Items relate to a Distribution objective, usually combine with quarterly label. It is a scoped label. i.e.
Distribution OBJ::1. The number (*) associates with a OKR item prefix number in a given quarter.
Distribution KR::*(1-4) - Items relate to a Distribution key result, usually combine with objective and quarterly label. It is a scoped label. i.e.
Distribution KR::3. The number (*) associates with a OKR item prefix number in a given quarter.
FY(Year in two digitals)::*(1-4) - scoped label to indicate efforts targeted for release within a quarter. i.e.
Unscheduled- Items with this label are being worked on in this release but have not been previously scheduled by the EM and PM. Work on this items is usually event driven - another team requires help, regression affecting users, or technical debt that is causing inefficiency in the team.
Internal- Items with this label contain work that is not directly user facing, work such as technical debt, refactoring and workflow improvements. This label is a direct measurement of team effectiveness. If there are too many items in this list, project is in danger of being overwhelmed with bugs caused by technical debt.
Maintenance- Items with this label are related to regular maintenance. Items include tasks such as: upgrading versions of libraries that are shipped, follow ups from review to improve some part of the code and similar.
For Scheduling- Items with this label have been discussed between the team and the item creator, and they require some work before they are resolved. Items with this label are triaged and will be picked up by EM and PM for scheduling in the regular process.
Blocked- Items with this label are blocked by other work. When adding this label, always include a comment referencing blocking issues or MRs.
spike- Issues which primarily involve research to understand options and the breakdown of future deliverables. Spikes are often the first issue in a new Epic where the output defines additional issues and order of serial/parallel work.
workflow::In dev- When an engineer is ready to start on active development, this label should be added. This allows EM and PM to understand which issues are being worked and not just assigned.
Any unassigned issue is available for anyone to work on. You can show your interest in working on a specific task by leaving a comment in the issue. To do so, comment must contain the date on which you will commence the work. If the comment does not contain the date, or the date has passed, the item is free to be picked up by anyone again.
All merge requests created by the team must include the
group::distribution label, and issues to be worked on by the team should also have
The omnibus-gitlab project is a long running packaging project for GitLab and as such it has had a number of years of development behind it. Since it is used to create our bread and butter installation method, the work is carried out within the regular monthly release cycle to align with the rest of GitLab development.
The contribution process is defined in the Contribute to GitLab development docs.
GitLab Helm charts are the newest installation method maintained by the Distribution team. Even though the project is generally available, the project is very fast paced to match the fast pace of communities around Kubernetes and Helm.
Due to the above, the project has a slightly different workflow compared to the omnibus-gitlab project.
The labels described above apply to this project as well, but there is an additional set of labels being applied to each item.
All tasks are assigned to a weekly label. Labels are tied to a week of a specific milestone in the projects history:
0.0.Xrange show the number of weeks that the project was worked on in pre, Alpha and Beta phases. Last label in that range was
0.0.42which means that 42 weeks were used to get the project to generally available status
0.1.Xrange show the number of weeks since GA but before the next big milestone.
0.2.X, and it will describe the moment Chart reaches zero-downtime upgrades.
The label is used as a measure in how much time it is taking to work on one issue from the moment the item has been assigned to a milestone. This allows us to estimate the priority of an issue or recognise if an issue needs to be split. This measure is very important for making future decisions as items that seem very urgent can be safely reprioritised due to previous experiences.
Any of the other projects in teams responsibility do not have a specific process assigned. The items not directly in any of the two above projects will be assigned directly and deadlines set by the EM.
In order to minimize disruption and context switching for team members, Distribution designates one engineer on a weekly rotation basis (DRI, Directly Responsible Individual), who will be responsible for the following duties during their normal office hours. For urgent requests outside of those hours, it will be handled via the on call process.
Similar to Development Escalation Process, the DRI is not solely responsible for a resolution of any requests, they should engage any SME and escalate to engineering manager and/or product manager whenever requires. In addition to that, there is also no expectation that the DRI can complete the same amount of
Deliverable work during the week.
The Distribution DRI works on the following areas per the order of the list.
@gitlab-org/distributiongroup mention in GitLab
If any request is still on going by the end of the week, the DRI should consider one of the following with their best judgement:
When you are not on DRI duty, please consider the following when the request is not Stuff that should Just Work:
Use iteration to better control scope and deliver measurable value in each release. A timebox measurement process would ensure that if expected progress isn’t achieved, there’s a procedure to follow.
The goal is to catch scope creep, ensure we are iterating in ways that deliver measurable value, and establish circuit breakers to address earlier as needed.
Distribution team follows below dependency maintenance policy in order to achieve our technology vision.
Distribution aims to add support to newer release of Distribution managed dependencies within 3 to 5 milestones after their original release unless specified below otherwise.
For new OS release, Distribution team aims to provide Linux package support per the below timeline:
|OS||Expected to be supported by|
|Ubuntu LTS release||within 2 milestones after OS release date|
|RHEL(& RHEL Clones) major and minor release||within 3 milestones after OS release date|
|Debian LTS and minor release||within 3 milestones after OS release date|
|All others minor release||within 3 milestones after OS release date|
|All others major release||within 4 milestones after OS release date|