Developer Advocate Team Workflow
Team Workflow
Welcome to the Developer Advocate team workflow page. Learn how the team works and how to work with the team. We primarily use the Developer Advocate Meta issue tracker. We own the team label developer-advocacy
and all of our other labels which are located at the gitlab-com group level. You can add the labels as necessary to any issue under this group for our team to track.
Overview Video
The Workflow overview video showcases the different components of the workflow in detail. The video is internal only due to confidential issues shown in workflows. If you would like to jump to the specific chapters of the video, see the links below.
Video Chapters:
How the Developer Advocacy Team work
Every activity of the team is tracked as an issue in the Developer Advocacy Meta project or in the issue trackers of other teams the team collaborate with. Activities fall into 3 categories Content, Events & Other Activities. To make creation of issues easy, the team use issue templatea pre-populated with relevant placeholders and labels. Here are the direct links to the Issue templates and their shortlinks.
Activity Type | Issue Template | Shortlink |
---|---|---|
Content | Template | https://go.gitlab.com/new-content-issue |
Event | Template | https://go.gitlab.com/new-event-issue |
Release Evangelism | Template | https://go.gitlab.com/new-release-issue |
Others | Template | https://go.gitlab.com/new-activity-issue |
Issue Boards
Issue boards are the single source of truth for activities of the Developer Advocacy team. Developer Advocates are asked to keep the columns of issue boards arranged by due date. This will help our stakeholders who use the boards to keep track of the Developer Advocacy team’s work.
Issue Board | Shortlink |
---|---|
Issues by Assignee | https://go.gitlab.com/da-assignees |
Content by Quarter | https://go.gitlab.com/da-content-quarter |
Content by Types | https://go.gitlab.com/da-content-type |
Events | https://go.gitlab.com/da-events |
Issue Triage Board | https://go.gitlab.com/da-issue-triage |
NB: All the Shortlinks on this page can be managed at https://campaign-manager.gitlab.com/campaigns/view/114.
How to work with the Developer Advocate Team
Opening an issue is the best way to get a conversation started. The developer-advocacy
label is at the gitlab-com
group level, which means it can be added to any issue or merge request in the group’s structure.
The developer-advocacy
label is required, other labels are optional. The DevRel-Bot or a team member will do the triage and add the necessary labels. To reduce noise in the comments, please add the DA-Type::Consulting
and the relevant Consulting
team labels yourself.
You can use the request a Developer Advocate issue template to submit a request. It provides a guide to collect the required information to triage the request.
CFPs
CFP epics should not be created to avoid clutter on the Roadmap, instead the CFP
label should be added to the corresponding event’s epic. If no related event epic exists, create one and add the CFP issue to it.
Labels
The Developer Advocate team workflow is supported by labels, which help determine the type of issue, its status, and other relevant information. The team’s primary label is developer-advocacy
. All issues the team owns, are a part of, or needs to be aware of, should be tagged with developer-advocacy
. Other Labels are listed below:
General labels
CFP Labels | Description |
---|---|
developer-advocacy |
Used to label issues that are related to the Developer Advocacy team |
DevRel-Influenced |
Used to label issues that are influenced by DevRel, Developer Advocacy in particular. |
DA-Ops |
Used to label issues related to the Developer Advocacy Ops in DevOps theme |
DA-Dev |
Used to label issues related to the Developer Advocacy Dev in DevOps theme |
DA-k8s |
Used to label issues related to the Developer Advocacy Kubernetes theme |
Issue management
General Workflow Labels
Label | Use |
---|---|
DA-Status::ToDo |
Issues that are planned for the future |
DA-Status::Doing |
Issues the team is currently working on |
DA-Status::Done |
Issues that have been completed |
DA-Status::OnHold |
Issues that are for whatever resume pending |
DA-Status::Cancelled |
Issues that have been cancelled, either by the team or the requestor in the case of a consulting request |
DA-Status::FYI |
Issues the team needs to be aware of but no action is required |
The default flow is from ToDo -> Doing -> (OnHold) -> Done. Issues with FYI don’t go through any workflow, as they are owned by another team and will go through a different workflow.
Content Workflow Labels
For content specific workflow, we use the following labels:
Label | Use |
---|---|
DA-Content::New |
Newly created content issue, this is automatically added when the content issue template is used. The DevRel-Bot sets the general workflow status for an issue to DA-Status::ToDo when this label is encountered |
DA-Content::In-Progress |
Issues where content is in progress. DevRel-Bot sets the general workflow status for an issue with this label is set to DA-Status::Doing . This label is automatically applied to existing content issues with now Content workflow labels. |
DA-Content::In-Review |
Content is currently in review, general workflow status remains DA-Status::Doing |
DA-Content::Awaiting-Publication |
Content has been completed and queued for publication, general workflow status moves to DA-Status::OnHold |
DA-Content::Done-Metrics-Pending |
Content completed and published but waiting to collecting metrics, general workflow status moves to DA-Status::OnHold , once metrics collection is completed, content author is required to close the issue. DevRel-bot will change the label to DA-Content::Published |
DA-Content::Published |
Content has been concluded, DevRel-bot will close any issue with this label |
Issue Types
These labels help identify the type of activity documented in an issue. These are useful for the team to understand where time is spent and assign appropriate DRIs.
Label | Use |
---|---|
DA-Type::Content |
Issues for Content creation, this can be any type of content |
DA-Type::Evangelist |
Issues for the Evangelist program |
DA-Type::Process |
Issues for operational activities of the team |
DA-Type::Response |
Issues for Community Response activities |
DA-Type::Consulting |
Issues requested by other teams, more details below |
DA-Type::Events |
Issues for Events the team is tracking or participating in |
DA-Type::Response |
Issues used for Community Response activities |
DA-Type::analysts |
Work for analysts |
Content Types
When the DA-Type::Content
is selected, a DA-Type-Content
label is required to identify what type of content it is.
Label |
---|
DA-Type-Content::adoption |
DA-Type-Content::blog |
DA-Type-Content::cicd-component |
DA-Type-Content::demo |
DA-Type-Content::documentation |
DA-Type-Content::event |
DA-Type-Content::keynote |
DA-Type-Content::narrative |
DA-Type-Content::product-tour |
DA-Type-Content::quickstart |
DA-Type-Content::talk |
DA-Type-Content::tech-webinar |
DA-Type-Content::tutorial |
Consulting Labels
Requests from other teams for the Developer Advocates to own, participate or collaborate on activities are classified as consulting, and these requests are usually labeled based on the team requesting. These are teams in the company that the Developer Advocate team collaborate with often, here are their labels:
DA-Consulting::Alliances
DA-Consulting::CorpComms
DA-Consulting::CorpEvents
DA-Consulting::Community
DA-Consulting::Engineering
DA-Consulting::FieldMktg
DA-Consulting::GrowthMktg
DA-Consulting::Product
DA-Consulting::Sales
These labels are required where an issue has DA-Issue-Type::External
and DA-Type::Consulting
, aside the team label developer-advocacy
and DA-Status
scoped label. If your team is not listed, you can still submit a request and it will be triaged appropriately
Issues created for Consulting count against team quarterly budgets, you can learn more in the Request budgets section below.
Region-based Labels
These labels are used to identify the region associated with an issue or activity:
Label | Use |
---|---|
Region-AMER |
For activities related to the Americas region |
Region-APAC |
For activities related to the Asia-Pacific region |
Region-EMEA |
For activities related to Europe, Middle East, and Africa region |
Region-LATAM |
For activities related to Latin-America |
Region-Global |
For activities that are not region-specific or span multiple regions |
Bot Labels
These labels are automatically assigned by the DA-Bot for triaging purposes.
Label | Use |
---|---|
DA-Bot::Auto |
Issue is automatically created by DA-Bot and will be closed after a period, usually 2 weeks from creation |
DA-Bot::Hold |
Issue is currently on hold and should not be triaged by teh DA-Bot except where it has been in the Hold status for too long. |
DA-Bot::Skip |
The DA-Bot should not perform any action on issues with this label |
DA-Bot::Triage |
Issue has been silent for a while and needs to be triaged |
DA-Due::AddDate |
An Issue needs a due date |
DA-Due::N/A |
Due date is not needed because the team doesn’t own the issue or a due date is not applicable |
DA-Due::Past |
Issue is past its due date |
DA-Due::Soon |
Issue is due soon |
CFP Labels
These labels are used to track workflow of the CFP submissions.
Label | Use |
---|---|
CFP |
Identifies CFP labels, this is needed |
CFP::Upcoming |
Identifies CFPs that will be open soon |
CFP::Open |
Identifies Open CFPs |
CFP::Closed |
Identifies Closed CFPs |
CFP::Cancelled |
Identifies Cancelled CFPs |
CFP::Submitted |
Identifies that submissions were made for the CFP |
CFP::Accepted |
Identifies if any submission was accepted for a CFP |
CFP-EDU |
Identifies CFPs that are relevant to the Education team |
CFP-OSS |
Identifies CFPs that are relevant to the Open Source teams |
CFP-Submitted::{0..7} |
This is used to note the number of submissions that were made for metrics purposes |
CFP-Accepted::{0..7} |
This is used to note the number of acceptances for metrics purposes |
Triage Labels
These labels are used by the DevRel bot to identify issues that need a review.
Label | Use |
---|---|
DA-Triage::no-due-date |
Issue is missing a due date |
DA-Triage::past-due-date |
Issue is past its due date |
DA-Triage::no-issue-type |
Issue is missing a DA-Type label |
DA-Triage::done-not-closed |
Issue is still open while having a DA-Status::Done label |
DA-Triage::onhold-too-long |
Issue is has the DA-Bot::Hold label and has not been updated in the past 90 days |
DA-Triage::no-update-60days |
Issue has not been updated in the past 60 days, i.e. 60 days since the last comment. |
DA-Triage::no-consulting-team |
Issue has a DA-Type::Consulting label but missing a consulting team label |
DA-Triage::cfp-due-submission |
CFP issue has a CFP::Open label and its past submission due date |
DA-Triage::cfp-due-notification |
CFP issue has a CFP::Submitted label and its past notification due date |
DA-Triage::cfp-due-presentation |
CFP issue has a CFP::Accepted label and its past presentation due date |
Other Labels
Label | Use |
---|---|
DA-Release-Evangelism |
Release Evangelism issues, often auto created and closed by the DA-Bot |
DA-Issue-Type::External |
Issues created by Other teams |
DA-Issue-Type::Internal |
Issues created & owned by the DevEvangelism team |
Issue Triage
The DevRel-Bot uses the GitLab Triage project to ensure appropriate & consistent usage of labels. The Bot also helps to triage issues based on label usage. Here are the current policies used by the Bot:
Rule Description | Condition | Action |
---|---|---|
Issues where DA team member is an assignee outside DA-Meta project i.e. DevRel-Influenced | Assignees include members of the gitlab.com/gitlab-da group, Issues are not in the developer-advocacy-meta project and does not have a developer-advocacy label |
Add developer-advocacy ,DA-Bot::Skip , DevRel-Influenced label |
Issue by DA team member missing developer-advocacy label | Issue author is a member of the gitlab.com/gitlab-da group and does not have a developer-advocacy label |
Add developer-advocacy label |
Issue missing DA-Type label | Issue does not have a DA-Type label |
Add DA-Bot::Triage & DA-Triage::no-issue-type label |
Content Issue missing DA-Type-Content label | Issue has a DA-Type::Content label but missing a DA-Type-Content label |
Add DA-Bot::Triage & DA-Triage::no-content-type label |
Missing Due Dates | Issue is missing a due date | Add DA-Bot::Triage & DA-Triage::no-due-date label |
Past Due Dates | Issue is past its due date | Add DA-Bot::Triage & DA-Triage::past-due-date label |
Issues On Hold | Issue has the DA-Bot::Hold label and has not been updated in the past 90 days |
Add DA-Bot::Triage & DA-Triage::onhold-too-long label |
Issues Not Updated | Issue has not been updated in the past 60 days, i.e. 60 days since the last comment. | Add DA-Bot::Triage & DA-Triage::no-update-60days label |
Consulting Issues Missing Consulting Team | Issue has a DA-Type::Consulting label but missing a consulting team label |
Add DA-Bot::Triage , DA-Bot::Hold & DA-Triage::no-consulting-team label |
Issue is done but still open | Issue has a DA-Status::Done label but is still open |
Add DA-Bot::Triage , DA-Bot::Hold & DA-Triage::done-not-closed label |
Close Old DA-Bot created Issues | Issue is older than 2 weeks and has the DA-Bot::Auto label |
Close issue |
Missing Request Type Label for DA team members | Issue author is a member of the gitlab.com/gitlab-da group, has a developer-advocacy label and missing DA-Requester-Type::Internal label |
Add DA-Requester-Type::Internal label |
Missing Request Type Label for non DA team members | Issue author is not a member of the gitlab.com/gitlab-da group, has a developer-advocacy label and missing DA-Requester-Type::External label |
Add DA-Requester-Type::External label |
CFP Issues Missing due date | Issue has a CFP label but missing a due date |
Add DA-Bot::Triage & DA-Triage::no-due-date label |
CFP Past Due date for submission | Issue has a CFP::Open label and its past submission due date |
Add DA-Bot::Triage & DA-Triage::cfp-due-submission label |
CFP Past Due date for notification | Issue has a CFP::Submitted label and its past notification due date |
Add DA-Bot::Triage & DA-Triage::cfp-due-notification label |
CFP Past Due date for presentation | Issue has a CFP::Accepted label and its past presentation due date |
Add DA-Bot::Triage & DA-Triage::cfp-due-presentation label |
CFP Workflow
The CFP workflow is based on the CFP labels explained above.
start
: CFP, CFP::Upcoming;
: CFP, CFP::Open;
if (CFP submissions) then (yes)
: CFP, CFP::Submitted, CFP-Submitted::{0..7};
if (CFP is Accepted) then (yes)
: CFP, CFP::Accepted, CFP-Accepted::{0..7};
else (no)
: CFP, CFP::Closed;
endif;
elseif (No submissions) then (missed)
: CFP, CFP::Closed;
else (cancelled)
: CFP, CFP::Cancelled;
endif
stop
Example CFP workflow using quick actions:
-
Planning to submit, or when you have submitted already:
- Create a new CFP issue.
- The issue template already sets the
~"CFP" ~"CFP::Open"
labels. - Set the due date to the CFP submission due date.
-
Submitted 1 talk:
- Change the label to
~CFP-Submitted ~CFP-Submitted::1
- In case you have submitted multiple talks, adjust the
~CFP-Submitted::
scoped label to reflect the correct number. - Update the
submissions
section in the issue. Comment on the issue for visibility.
/label ~CFP-Submitted ~CFP-Submitted::1
- Change the label to
-
After the CFP closed, set the
CFP::Closed
label and update the due date to the CFP notification date listed in the issue./due <cfp notification date>
-
CFP notifications come in, and at least 1 talk was accepted.
- Change the label to
~CFP-Accepted ~CFP-Accepted::1
- In case you have multiple talks accepted, adjust the
~CFP-Accepted::
scoped label. - Comment on the issue with the talk titles for visibility.
- Set the due date to the event date, and ensure all speakers are assigned.
/label ~CFP-Accepted ~CFP-Accepted::1
- Change the label to
-
When the event is done, update the issue with feedback and results.
- Add talk videos to the YouTube playlist, if existing.
- Mark the issue as
DA-Status::Done
and close it.
/label ~DA-Status::Done /close
If no talks were accepted, only close the issue shown above.
If the CFP closed without submission, add the CFP::Closed
label. In case the CFP was planned to submit, and decisions were made otherwise, add the CFP::Cancelled
label.
Request budgets
In order to prevent burnout, prioritize requests appropriately, and ensure we successfully deliver on the requests to which we commit, our team has created budgets for our internal stakeholders. These budgets encourage team members to prioritize their requests, ensuring our team addresses the highest priority needs for GitLab.
These request types fall into the following categories:
- Event requests
- CFP requests
- Content requests
Ongoing activities including team-driven content creation and speaking opportunities that supports our goals and OKRs, release support, and social media monitoring, including Hacker News, do not count towards any team budgets.
Event requests
Event requests include both event attendance (ex: attending client meetings, event staffing, attending dinners or social events, monitoring events for news) and speaking engagements at events such as demos and presentations.
CFP (Call for Proposals) requests
CFP requests include asking a Developer Advocate to submit a proposal for an event or media opportunity or support a fellow team member in submitting to an open CFP.
See Requesting a Developer Advocate to submit a CFP to request a Developer Advocate to submit to a CFP for a corporate, field, or partner event.
Content requests
Content requests include blog post, podcasts, media interviews, or any request that involves engaging a Developer Advocate in a media opportunity.
Scoring requests
Request Type | New / Existing Content | Budget score |
---|---|---|
Event | New | 3 |
Event | Existing / No content | 1 |
CFP | New | 2 |
CFP | Existing | 1 |
Content | New | 2 |
Content | Existing | 1 |
Each team listed below is allocated 15 points per quarter for requests:
Team | Team Label |
---|---|
Corporate Events | DA-Consulting::CorpEvents |
Corporate Communications | DA-Consulting::CorpComms |
Developer Relations | DA-Consulting::Community |
Growth Marketing | DA-Consulting::GrowthMktg |
Field Marketing / ABM | DA-Consulting::FieldMktg |
Sales / SDRs | DA-Consulting::Sales |
Alliances | DA-Consulting::Alliances |
Product | DA-Consulting::Product |
Engineering | DA-Consulting::Engineering |
If your team is not listed above, we will handle your request based on our availability.
Managing requests
This process covers any content request, Webcast, Interview, Meetup, etc. The process involves the following:
- Requestors should assign a label that identifies their team and a weight correlating with their budget score to allow us to track each team’s budget consumption.
- A member of the Developer Advocate team will triage the issue and provide all necessary details and directions
- The necessary labels are applied to the issue as actions are taken on the request
- Once the request is complete, the issue is assigned back to the requestor to provide the necessary metrics generated as a result of the before it is closed.
ac68af08
)