For an understanding of what this team is going to be working on take a look at the product vision.
The Release:Release Management is focused on all the functionality with respect to Continuous Delivery and Release Automation.
This team maps to Release devops stage.
The following people are permanent members of the Release Team:
|John Hampton (Interim)||Engineering Manager, Release:Release Management|
|Krasimir Angelov||Backend Engineer, Release:Release Management|
|Sean Carroll||Senior Backend Engineer, Release:Release Management|
|Vladimir Shushlin||Backend Engineer, Release:Release Management|
|Jaime Martínez||Backend Engineer, Release:Release Management|
|Nicole W.||Frontend Engineering Manager, Release (CD)|
|Jake Burden||Frontend Engineer, Release:Release Management|
|Nathan Friend||Senior Frontend Engineer, Release:Release Management|
The following members of other functional teams are our stable counterparts:
|Rayana Verissimo||Senior Product Designer, Release:Release Management|
|Jackie Meshell||Senior Product Manager, Release:Release Management|
Like most GitLab backend teams, we spend a lot of time working in Rails on the main GitLab CE app, but we also do a lot of work in Go which is used heavily in GitLab Pages. Familiarity with Docker and Kubernetes is also useful on our team.
Our planning and build process is detailed on our planning page.
Issues that contribute to the release stage of the devops toolchain have the
The group's primary Slack channel is
#g_release-management, and the public managers channel is
#release-managers. We also support a number of feature channels for discussons or questions about a specific feature area. We no longer support issue specific channels, as they are easy to lose track of and fragment the discussion. Supported channels are:
We use the Release Team Workflow board to plan and track features as they make their way from idea to production. This board details the various stages an issue can exist in as it is being developed. It's not necessary that an issue go through all of these stages, and it is allowed for issues to move back and forward through the workflow as they are iterated on.
Below is a description of each stage, its meaning, and any requirements for that stage.
workflow::ready for development
UX Readylabel, as well as either
backendor both labels to indicate which areas will need focus.
In order to make sure sprints are effective as possible, it is important to ensure issues are clearly defined and broken down before the start of a sprint. In order to accomplish this, engineering evaluation will take place for issues that require it (small changes and bug fixes typically won’t require this analysis). Engineers will look for assigned issues with the
workflow::planning breakdown label that have user stories defined, as well as functional, performance, documentation, and security acceptance criteria. See Build phase of the Product Development Workflow.
Assigned engineers will work with Product, UX and other engineers to determine the implementation plan for the feature.
Once an implementation plan has been finalized, the following steps should be taken:
workflow::ready for development.
As a byproduct of the engineering evaluation process, a rough estimate of the number of merge requests required to develop a feature will be produced. This measure can be used as a way to determine issue weights. These weights can be useful during the planning process to get a rough gauge of how many features can be worked on in a milestone, and to understand how much work the team can do in a milestone. This metric also aligns with the throughput metric currently measured by engineering teams.
If you have no idea where to begin the development due to lack of knowledge on the context or you're less confident on the current technical proposal, it might be better to work on Proof-of-Concept MR (PoC or Prototype) at first. This gives you more insights on the current implementation details and potential required changes.
This step removes a lot of "if"s from your assumptions. When you're making a technical proposal, often you don't have enough time to investigate the actual implementation details. In such case, you're assuming like "Probably, this feature works like …" or "Probably, this feature and that feature are connected like …", which leaves some probability in your development plan, and if it turned out a wrong assumption, you may need to rethink the whole approach, even though you're at the middle of development cycle. PoC step derisks such a turnaround by cross-checking the technical proposal with domain/performance/security experts and UX/PM.
Here is how to work on PoC step:
Technically, if you've done a PoC step, there is no need to ask additional reviews in actual MRs as long as you don't change the feature behavior. You can simply focus on general engineering review or documentation review, only. For example, improving code quality, refactoring code, writing tests, writing documents, etc.
This is an issue template for feature development. It includes some important engineering tasks to be done in general.
<!-- The issue begins with "Problme to solve", "Intended users", "Proposal", etc. Read more https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab/issue_templates/Feature%20proposal.md --> ## Technical proposal <!-- In this section, describe technical proposal for the problem to solve. It should give enough contexts to be able to be reviewed by domain/performance/security experts. --> ## Feature Flag This feature is implemented behind `feature-flag-name` feature flag and disabled by default. Once we've confirmed the feature is deemed stable, we remove the feature flag in order to publish the feature as GA. <!-- Read more [Feature flags in development of GitLab](https://docs.gitlab.com/ee/development/feature_flags/) --> ## Planned MRs ### Backend - [ ] [MR-1 title](MR link if it already exists) - [ ] [MR-2 title](MR link if it already exists) ### Frontend - [ ] [MR-1 title](MR link if it already exists) - [ ] [MR-2 title](MR link if it already exists) ### General - [ ] [Write a feature spec to test frontend and backend change altogether](MR link if it already exists) - [ ] [Remove the feature flag and update documentation](MR link if it already exists) # i.e. publish the feature
This is an issue template for feature evaluation. It includes some important engineering tasks to be done in general.
When you enable a feature via feature flag and expect a significant impact on user workflow or production load, you should create an issue with the following template to communicate better with the affected users or SRE.
## Summary <!-- The reason of feature evaluation. --> ## Feature details <!-- Describes the feature details and expected performance or usability impact --> ## Timeline <!-- This section describes the timeline of the evaluation. Example: - 2019-10-12 01:00 UTC The second evaluation: We will enable the feature on yyy project for X days. - 2019-10-11 01:00 UTC We've disabled the feature on xxx project because ... - 2019-10-10 01:00 UTC The first evaluation: We've enabled the feature on yyy project for X days. --> ## How to enable the feature <!-- Describes how to enable the feature that anyone can execute --> ## How to disable the feature <!-- Describes how to disable the feature that anyone can execute. Consider, in an emergency case, someone else might need to disable the feature instead of you. --> ## Beginning of evaluation - [ ] Announce in Slack/CompanyCall (T-minus 1 day) - [ ] Enable the feature ## End of evaluation - [ ] Announce in Slack/CompanyCall - [ ] Disable the feature ## Feedback/Metrics <!-- This section should be filled after the end of evaluation. You can collect metrics from user feedback or looking at Grafana, Sentry, Kibana, etc --> ### The second evaluation <!-- The result of the second evaluation. e.g. We didn't observe any problmes. --> ### The first evaluation <!-- The result of the first evaluation. e.g. We've found a crucial problem thus we need to fix YYY issue before the second evaluation. -->
Code reviews follow the standard process of using the reviewer roulette to choose a reviewer and a maintainer. The roulette is optional, so if a merge request contains changes that someone outside our group may not fully understand in depth, it is encouraged that a member of the Release team be chosen for the preliminary review to focus on correctly solving the problem. The intent is to leave this choice to the discretion of the engineer but raise the idea that fellow Release team members will sometimes be best able to understand the implications of the features we are implementing. The maintainer review will then be more focused on quality and code standards.
This tactic also creates an environment to ask for early review on a WIP merge request where the solution might be better refined through collaboration and also allows us to share knowledge across the team.
Since we are a remote company, we utilize a Slack plugin called Geekbot to coordinate various status updates. There are currently 3 status updates configured in Geekbot, one is weekly and two are daily:
The Weekly Status Update is configured to run at noon on Fridays, and contains three questions:
What progress was made on your deliverables this week? (MRs and demos are good for this)
The goal with this question is to show off the work you did, even if it's only part of a feature. This could be a whole feature, a small part of a larger feature, an API to be used later, or even just a copy change.
What do you plan to work on next week? (think about what you'll be able to merge by the end of the week)
Think about what the next most important thing is to work on, and think about what part of that you can accomplish in one week. If your priorities aren't clear, talk to your manager.
Who will you need help from to accomplish your plan for next week? (tag specific individuals so they know ahead of time)
This helps to ensure that the others on the team know you'll need their help and will surface any issues earlier.
The Daily Standup is configured to run each morning Monday through Thursday and posts to
#g_release Slack channel. It has just one question:
Is there anything you could use a hand with today, or any blockers?
This check-in is optional and can be skipped if you don't need any help or don't have any blockers. Be sure to ask for help early, your team is always happy to lend a hand.
The optional Daily Social is configured to run each morning and posts to #g_cicd_social. It has just one question:
What was something awesome, fun, or interesting that you did yesterday outside of work?
This check-in is optional and can be skipped if you don't have anything to share.