GitLab's Community Operations Program is responsible for developing and maintaining the infrastructure and resources to support the Community Relations team and the GitLab community at large. In this, we help support GitLab's greater mission of 'everyone can contribute' by encouraging the wider GitLab community through process and opportunity.
The mission of this program is to act as a partner to all Program Managers in the Community Relations team to define, implement and refine KPIs/PIs to measure and report the success and effectiveness of our community programs. We work together with the Community Relations team’s Program Managers to produce regular, engaging content to highlight their programs and attract new contributors.
The Community Operations function also works closely with the Marketing Operations, and Data and Analytics teams.
Community Operations defines and maintains the tool stack required to measure and interact with the wider GitLab community. The Community Program Manager acts as the DRI for the Community Relations team’s webpages on about.gitlab.com. This program also supports the Open Source and Education teams by processing program applications and renewals. Ultimately, we are working towards a process to fully automate this.
These are the tools the Community Relations team is the DRI for:
Tool | Description | How we use it | Technical owner |
---|---|---|---|
Bitergia |
Monitoring wider community contribution metrics, including KPIs for the Code Contributor and Evangelist Programs |
John Coghlan, Christos Bacharakis | |
Crowdin.com |
Crowdin.com is a localization management platform. Additional information can be found on this blog post. |
John Coghlan | |
Discourse |
Community discussion platform for community relations and support teams to collaborate and share knowledge with the wider community. |
Michael Friedrich, Fatima Sarah Khalid | |
Disqus |
Disqus is a blog comment hosting service for web sites and online communities that use a networked platform. |
John Coghlan, Michael Friedrich | |
Meetup |
Meetupis an event management platform. |
John Coghlan | |
Zapier |
Zapier is an automation application integrating other applications. |
How Marketing Ops use Zapier, How Community Relations use Zapier |
|
Zendesk Community |
Monitoring and processing all mentions of GitLab across the Community Relations’ response channels |
John Coghlan |
This overview is currently being deprecated as we attempt to migrate from
the manually-generated list to one automatically-generated from the data/tech_stack.yml
file.
Please use the automatically-generated table instead
These are the tools the Community Relations team is the DRI for:
Tool Name | Description | How We Use |
---|---|---|
Bitergia | Bitergia is the platform we use to measure and track metrics related to contributing code and documentation to GitLab | How we use Bitergia |
Crowdin | Crowdin is the platform for the wider community to collaboratively contribute translations for GitLab | How we use Crowdin |
Discourse | Discourse is the platform on which the GitLab forum is run. | How we use Discourse |
Disqus | Disqus is the commenting on blog.gitlab.com and docs.gitlab.com | How we use Disqus |
Gitter | Gitter is the instant messaging platform the GitLab community communicates on (in addition to GitLab.com itself) | We currently have a gitlab community with 3 channels: gitlab (general conversation, questions about GitLab), contributors (chat and support about contributing to GitLab) and heroes (GitLab Heroes chat) |
KeyHole | KeyHole is the tool we use to collect Twitter impressions and YouTube views | How we use KeyHole |
Meetup | Meetup.com is the platform we use and offer to our community to organize meetups | How we use Meetup.com |
SameRoom | SameRoom is the platform we use to bridge public Gitter channels with the private GitLab Slack instance | SameRoom enables bidirectional communication from Slack to Gitter and viceversa. Currently it is enabled for the gitlab/contributors Gitter channel and the reciprocal #gitter-contributors-room on Slack. Messages sent from Slack are forwarded to Gitter using the gitter-badger account, but otherwise they show the display name of the Slack user who sent the message. |
SheerId | SheerId is the platform we use to automatically qualify applications to our community programs | |
Zapier | Zapier is an automation tool used to identify mentions and to route them into Zendesk as tickets, and also to Slack in some cases | How we use Zapier |
Zendesk | Zendesk is the tool Community Ops, EDU & OSS work their program cases and applications | How we use Zendesk |
The Community Relations team is also the DRI for these tools which are pending addition to the tech stack:
Tool | Description | How we use it |
---|---|---|
Gitter | Gitter is the instant messaging platform the GitLab community communicates on (in addition to GitLab.com itself) | We currently have a gitlab community with 3 channels: gitlab (general conversation, questions about GitLab), contributors (chat and support about contributing to GitLab) and heroes (GitLab Heroes chat) |
KeyHole | KeyHole is the tool we use to collect Twitter impressions and YouTube views | How we use KeyHole |
SameRoom | SameRoom is the platform we use to bridge public Gitter channels with the private GitLab Slack instance | SameRoom enables bidirectional communication from Slack to Gitter and viceversa. Currently it is enabled for the gitlab/contributors Gitter channel and the reciprocal #gitter-contributors-room on Slack. Messages sent from Slack are forwarded to Gitter using the gitter-badger account, but otherwise they show the display name of the Slack user who sent the message. |
SheerId | SheerId is the platform we use to automatically qualify applications to our community programs |
These are the tools that are essential to some Community programs, but the Community Relations team are not the DRI for:
Tool Name | Description | How We Use |
---|---|---|
Customer Portal | CustomersDot - Web portal where customers can manage their subscriptions and account information, generate and manage GitLab licenses. | To help troubleshoot issues with community program applications. To create and manage licenses for community program applications and for GitLab EE contributors |
Marketo | Marketo | Powers each intake form for our (Education, Open Source, and Startups) programs. It is an integration which inserts the application record into Salesforce. |
Printfection | Printfection is our swag management platform | How we use Printfection |
Salesforce | Salesforce is our CRM | We use Salesforce (SFDC) to support the Education, Open Source and Startup Programs |
Canva | Canva is the tool we use to create a lot of our GitLab-branded materials. | Community team members should creat an account using their @gitlab.com email and request access to Canva Enterprise from the Design team. |
group_owner
field on the tech stack file entry is set to Community Relations
. This will make the tool to be automatically listed on the Community Relations toolstack.The Community Operations Program curates and maintains documentation for any team member to productively engage with the wider community. When necessary, we engage with specialists within GitLab to provide responses and listen to our community’s feedback on The GitLab forum, the GitLab blog and Hackernews.
The Community Operations Manager reports to the Director of the Community Relations Team.
You can find the Community Operations Program peppered throughout the Community Relations handbook, processes, and projects.
In order to loop in Community Operations on GitLab.com, please use the community-ops
label.
Everything labeled community-ops
is organized on the Community Operations Issue Board.
Column Name | Description |
---|---|
Open | All open issues with the community-ops- label |
Todo | Issues with a due date or high priority |
Doing | Issues that are currently in-flight (these have action items for the Community Operations Manager) |
Closed | Issues that have been closed or completed |
Please use the community-ops
label only when there is an action item needed from the Community Operations Manager.
If you think an issue or MR is a "nice to know" for the Community Operations Manager, feel free to loop them in (@lindsayolson) via a comment instead.
We use Allocadia to manage team budgets. Due to a limited number of seats being allocated to the Marketing team, only @dplanella
and @c_hupy
have access to the tool from the Community Relations team (sign-in from Okta is required). They are responsible for coordinating with the Community Relations team to make sure that forecasts are properly added to Allocadia.
Quarterly Budget Planning Issues. As each quarter begins, the Community Relations team creates a new issue using the quarterly_budget_plan
issue template in the Community Ops project.
Annual Budget Planning Issues. In preparation for the year ahead, the Community Relations team creates a new epic that then links to the quarterly planning issues.
Current epic: FY22 Community Relations Budget Planning.
As a workaround for easier collaboration, those with Allocadia access do regular exports of the budget into a Google Spreadsheet by downloading the Community Relations budget by clicking on: Export current view
. These exports generally happen monthly as we reconcile actual spend. If a team member needs a more recent snapshpt, please mention @johncoghlan
and @c_hupy
on the #community-relations Slack channel to request an export.
GitLab team members can find the exported Community Relations budget by searching for the FY22 Community Relations Budget export
document in Google Drive.
Like other teams at GitLab, the Community Relations team proposes an annual budget to cover the costs necessary for each of its subprograms. This total annual budget is then proposed to Marketing leadership, and to the e-group, for approval.
Once approved, the Community Relations team then forecasts how much of the total annual budget will be spent each quarter, and if possible, which month each spend will occur. The total annual budget cannot be adjusted except for in special circumstances with approval of the e-group.
Adjustments between the quarterly forecasts (moving budget from one quarter to another), can occur up until the specific quarter's forecasts are locked in. This occurs on the last day of the previous quarter (eg. the FY22 Q2 forecast is due on April 30th).
Once a quarter's forecast has been locked, no further adjustment to that quarter's spending is allowed. For example, if the forecasted amount for that quarter is not used up, then that amount is "lost" and cannot be reallocated to another quarter.
Line-item adjustments can occur once the quarterly forecast is locked. To do so, a request needs to be submitted and approved by @johncoghlan
or @c_hupy
for the Community Relations team.
Each month, the Community Relations team program managers meet with our parters in Finance to review actual monthly expenses during the monthly Community Relations Accruals
meeting. This process allows us to accurately report our team expenditures vs budget forecasts.
Costs over $5000 are allocated out month by month for a specified amount of time by the appropriate Community Program Manager.
Costs under $5000 do not need to be allocated over time, and will be removed from the budget all at once.
We use Coupa for most procurement requests. For more information, please reference the Procurement Process handbook.
All invoices require a PO number, so vendors must be given the appropriate PO number to include in their invoice. The PO numbers are assigned by the Procurement team. Invoices received without the correct PO number will be rejected and must be resubmitted with the relevant PO number included. For questions, please ask the Procurement Team on Slack: #procurement
.
Here are the PO numbers that belong to our team so far:
PO #40
When filing a procurement issue, you may also be asked for an Allocadia ID number. To get this ID, ask someone with Allocadia access to fill out the details in the line item. Once this is done, an ID will be populate in the top left hand corner of the details panel, where it says Line Item ID
.
To help our finance team keep track of community swag giveaways, giveaways in Printfection that support Community Relations programs and events should add Community:
as a prefix to the campaign title. Ex: Community: GitLab Heroes + Superheroes Swag
.
We use the campaign tag swag_community
to track our spend in the budget.
There is a recurring maintenance cost of the community program's campaigns on Printfection. Printfection does shipping and handling through prepaid amounts of fixed increments, so the charge won't happen often but will come as part of the costs for the campaigns we run.
This section details how we make decisions about sponsoring community events.
Events Decision Tree:
To submit a community event for support or sponsorship:
We ask the following questions when assessing an event:
Each question is graded on a scale of 0-2. We then tally the scores and assign the event to a sponsorship tier.
We ask these questions and use this scorecard to ensure that we're prioritizing GitLab's and our community's best interests when we sponsor events.
If you have questions, you can always reach us by sending an e-mail to community@gitlab.com
.
Channel Name | Source | Action. |
---|---|---|
HackerNews | Hacker News mentions via Zapier | Find an expert, and collaborate with the Developer Evangelism Team in Slack |
Hacker News front page stories | Hacker News mentions via Zapier | Find an expert, and collaborate with the Developer Evangelism Team in Slack |
GitLab Forum | Discourse (forum.gitlab.com) | Find an expert in the Forum Contributors Group, and collaborate in Slack |
GitLab Blog | Disqus (blog.gitlab.com) | Find an expert (usually the blog post author), and collaborate in Slack |
It is not uncommon that the Social Media Team, and Communications Team at GitLab reaches out to Community Operations. Because of Community Operaions' response channels, and nature of the program, Community Operations has a unique view of the community's sentiment and tone. This means that the Community Operations Manager uses the following resources and handbook pages as needed, when partnering with Social and Comms to ensure a quality response back to our community in times of crisis or gerneral low sentiment and tone.
Check out the social, community operations, and expert shared Community Management practices
Occasionally the Community Operations Manager will encourage GitLab Team Members, as experts, to engage with the wider GitLab community following our Team Member Social Media Guidelines as well as these additional flexible guidelines, listed here:
@expert_username [LINK TO COMMUNITY COMMENT] Hello! An expert is needed to respond to this. Could you please answer on [name of social platform] using your own individual account? If you don't know the answer, could you share your thoughts and ping a specific expert who might? Or if there is a more appropriate channel to ask, could you point me in that direction? Thanks!
In the past the Product Management Team has sucessfully used the forum as a space to foster conversation and encourage feedback on changes to the GitLab product. Here is an example of when we changed our subscription model.
Steps for bannering on Discourse
Add+
buttonEdit CSS/HTML
.mini-banner__image {
height: 60.5px;
width: 720px;
background-image: url($mini-banner);
background-size: 100% 100%;
margin: 0 auto;
}
After Header and add this div to make CSS work
<div class="main-banner">
<a href="https://forum.gitlab.com">
<div class="main-banner__image"></div>
</a>
<a href="https://forum.gitlab.com/t/ci-cd-minutes-for-free-tier/40241" target="__blank">
<div class="mini-banner__image"></div>
</a>
</div>
Typically it is the task of the Product Manager or DRI to draft and wordsmith the announcement post. This will happen via an issue, so the forum DRI can simpy copy and paste the language into the forum draft verbatim.
In order to visualize and prepare for the upcoming announcement do this in the Staff category That way users won't be able to see the announcement before it's time, and the forum DRI will be able to add links to the Announcement's FAQ and/ or Blog post, as well as link to GitLab's Code of Conduct.
Steps for creating a draft post
+New Topic
Create topic
When it's time for the Draft post to "go live"
Optional steps are:
The gitlab-blog
user is used to automatically post new GitLab blogs as a new topic to the Community category. This process is controlled through Zapier. Zapier reads the blog RSS feed at https://about.gitlab.com/atom.xml
and posts a new topic using the admin API key and gitlab-blog
user for each new entry there.
The gitlab-blog
credentials and admin API key are stored in the 1Password Marketing vault. Admins can directly edit the user in Discourse without login.
Community Operations supports the Education, Open Source and Startups Programs, and their Program Managers.
The Community Operations team helps process and manage program applications as per the community programs applications workflow.
Due to the similarity among our Community Programs' workflows and goals, the Community Operations team helps keep track of common community program metrics.