We're an all-remote company that allows people to work from almost anywhere in the world. We hire great people regardless of where they live, but with GitLab team members across more than 60 countries, it's important for us to practice clear communication in ways that help us stay connected and work more efficiently.
We also place an emphasis on ensuring that conclusions of offline conversations are written down. When we go back and forth three times, we jump on a synchronous video call.
We communicate respectfully and professionally at all times.
Embracing asynchronous communication and learning to use it effectively requires a mental shift. This can feel unusual or even uncomfortable for those who come from a colocated environment, where in-person meetings and communiques are the norm. Learn more about mastering the use of the written word in an all-remote setting.
If you see something that concerns you in Slack, Issues, Merge Requests, Video, Emails or any other forum, we encourage you to respectfully say something directly to the individual in a 1:1 format. If you are not comfortable reaching out to the individual directly, please reach out to your direct manager or People Business Partner to discuss.
Key practices to consider during any meeting are listed below.
GitLab employees and contractors are not authorized to speak with the media or analysts on behalf of our company unless authorized by our Marketing department. Unless authorized, do not give the impression that you are speaking on behalf of GitLab in any communication that may become public. This includes posts to online forums, social media sites, blogs, chat rooms, and bulletin boards. This policy also applies to comments to journalists about specific matters that relate to our businesses, as well as letters to the editor and endorsements of products or services.
For more, please visit the Corporate Communications handbook section.
GitLab as the leader in all remote work creates opportunities for our team members to receive requests from external 3rd parties to participate on panels, blogs or news publication or articles. Recently our team members have been approached by external 3rd parties looking to pay or compensate GitLab team members for their time to discuss GitLab remote practice to help them guide a client. Other third parties may contact GitLab team members to provide subject matter expertise that they may have by virtue of their role at GitLab. As in any request we ask that team members verify who they are speaking with to make sure the source is indeed a valid and legitimate request. Always remember that you represent GitLab and if any question makes you uncomfortable or gives you a pause on whether you should answer then we recommend that you do not answer. A third party's questions regarding GitLab financials, sales, compliance, executives or specifically where the company is heading should be treated with the most caution. We want and encourage all team members to be remote evangelists and this can be done without giving very specific information about GitLab. If you have any concern about a request please reach out on slack to #external-comms
Please see our team member social media policy.
It's best practice to start a discussion where possible with a Merge Request (MR) instead of an issue. An MR is associated with a specific change that is proposed and transparent for everyone to review and openly discuss. The nature of MRs facilitate discussions around a proposed solution to a problem that is actionable. An MR is actionable, while an issue will take longer to take action on.
Some merge requests that involve a big decision or change tend to collect a large amount of feedback. As GitLab grows in size, it is unrealistic for a single person to respond to potentially hundreds of comments. To remain efficient in these MRs and to make it scalable, it is important for the DRI to receive a clear signal of input that is shared on the merge request. Some MRs may be marked as "Manager Mention MRs" by clearly designating them as such at the beginning of the MR description with the following code block:
## Manager Mention MR This MR is a Manager Mention MR. Contributors should tag their manager when adding a comment. If managers are tagged they should either respond to the question or summarize and tag their manager.
Additionally, add the
~"Manager Mention MR" label to the merge request. This will make future analytics on Manager Mention merge requests more easily identifiable. It also enables managers to subscribe to the label to be notified when an MR has elected the Manager Mention MR designation.
We tried Manager Mention MR’s for the first time in a recent announcement (2021-03-03) but this did not work well and we are working on making it better. We're starting with a more thoughtful and transparent process in our communications cadence and approach going forward, including all directs and people managers getting a few days’ notice before important company-wide changes are announced to all team members. This will allow all directs and people managers to feel more enabled and better understand the why behind big changes in order to scale communication to team members.
For all managers: It is important to ground yourself in the contents of the changes before the announcement goes live to all team members. If a team member tags you in a Manager Mention MR, it is your role to respond candidly and thoughtfully to their question or comment. If the line of questioning in the Manager Mention MR gets out of your depth, ask the DRI to help answer. If a team member comments without a manager tagged, the comment will be closed with a link to this handbook section or closed without comment. In a situation where a team member leaves a wildly inappropriate comment in the Manager Mention MR, you should feel empowered to delete comment and talk to your team member 1:1. Consider subscribing to the label
~"Manager Mention MR" to be notified when MRs transition to this designation.
For team members: Check if the MR you are about to comment on has the
~"Manager Mention MR" label. Check each time as the label may have been added since you last commented. When leaving a comment in a Manager Mention MR, frame the comment as a question or suggestion to your manager directly, and not anyone else, including the DRI. We do this to scale communication, as it is unsustainable for the DRI to answer every question.
MRs should not start out as a Manager Mention MR as we prefer communication to be direct. They should only be designated as such after the number of comments on them grows to a level that is unsustainable for the DRI. An exception to this is compensation changes and other company-wide announcements that can be sensitive/contentious in nature since they have historically generated many comments.
When an MR is changed to be
Manager Mention, the person making this change should add a comment stating this so that everyone tracking the MR can be informed.
Issues are useful when there isn't a specific code change that is being proposed or needed. For example, you may want to start an issue for tracking progress or for project management purposes that do not pertain to code commits. This can be particularly useful when tracking team tasks and creating issue boards. However it is still important to maintain focus when opening issues by defining a single specific topic of discussion as well as defining the desired outcome that would result in the resolution of the issue. The point is to not keep issues open-ended and to prevent issues from going stale due to lack of resolution. For example, a team member may open an issue to track the progress of a blog post with associated to-do items that need to be completed by a certain date (e.g. first draft, peer review, publish). Once the specific items are completed, the issue can successfully be closed. Below are a few things to remember when creating issues:
Pro Tip: When creating a Merge Request you can add
closes: #[insert issue number here] and when the Merge Request is merged, the issue will automatically close. You can see an example of this here.
this would cause performance issue similar to #123456. The reader has full information on first read and can refer to the link for more.
this would cause issue similar to #123456. The reader needs to click the link and find the relevant information among other discussion threads, before switching back to the original discussion.
Internal communication is any work related communication at a company. Internal Communication includes conversations between team members, wider team discussions, or internal announcements. At GitLab, everyone can contribute to the effectiveness of Internal Communications to support aspects of GitLab culture, such as intentional transparency and engaging people in open dialogue.
Since we believe that all team members must be Managers of One, most communication is handled by the relevant group, but we know that some communications are more sensitive and contentious than others. In those cases, the DRIs may want to engage the Internal Communications function.
In an all-remote setting, where team members are empowered to live and work where they're most fulfilled, mastering asynchronous workflows is vital to avoiding dysfunction and enjoying outsized efficiencies and lifestyle flexibility. Asynchronous communication is the art of communicating and moving projects forward without the need for additional stakeholders to be available at the same time your communique is sent.
To learn more on when to use asynchronous and synchronous communication, examples of async workflows in practice at GitLab, core async behaviors, and to take an async knowledge assessment, visit GitLab's guide to embracing asynchronous communication.
#questions) instead of direct messages or one-on-one emails. If you have researched in the handbook and could not find the answer or need clarity, include the handbook link you were reviewing and state "while looking in the handbook I could not find x,y,z".
Ask Me Anything meetings can be a useful opportunity for team members to meet a new leader, learn more about an existing team member, or gain clarity on a recent change.
Our companywide announcements channel is #company-fyi.
It is an announcement only channel, meaning that communications need to be approved before they can be posted. To minimize noise, announcements made in
#company-fyi should not be duplicated in
#whats-happening-at-gitlab. Be mindful of the attention economy.
In order to post or have a message posted in
#company-fyi, please reach out to the internal communications team or your function's executive who can approve the message and post it.
The above should all go in the new #whats-happening-at-GitLab channel (formerly the
Due to the volume of posts in the Slack channel, we recommend that you do not use #whats-happening-at-gitlab as a sole location for important announcements as information might get lost or muted. Examples of important items include but are not limited to:
Please see our Top misused terms page.
Employ multimodal communication to broadcast important decisions. To reach our distributed organization, announce important decisions in the company announcements Slack channel, email the appropriate team email lists, Slack the appropriate channels, and target 1:1s or other important meetings on the same day, with the same information.
When referring to email that recipients should have received, reference the sender and subject of the email so its easy to find. For example, "You should have received an email from Jane Smith with the subject 'Training Seminar Details'"
We make things public by default because transparency is one of our values. Some things can't be made public and are either internal to the company or have limited access even within the company. If something isn't listed in the sections below we should make it available externally.
Some things are internal, available internally but not externally. The following items are internal:
Security and abuse vulnerabilities are not public since they would allow attackers to compromise GitLab installations. We do make them public after we remediated a vulnerability. Issues that discuss how to improve upon the security posture of an implementation that is working as intended can be made public, and are often labeled as feature proposals. Security and abuse implementations that detect malicious activities cannot be made public because doing so would undermine our operations.
Please do not share outside of GitLab, any information related to the company's plans related to being a public company, its anticipated public offering, including sharing of the Form S-1 by linking to the document or otherwise, or the company's possible forward looking plans. All external communications should be in line with the company's SAFE Guidelines and Social Media Policy. If you have any questions please reach out via the #Safe Slack channel.
Deals with external parties like contracts and approving and paying invoices.
Content that would compromise a GitLab team member, customer, or user's personal data as defined by GDPR, unless explicit consent provided by the data owner, such as a name, an identification number, location data, an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person
Legal discussions are not public due to the purpose of Attorney-Client Privilege
Acquisition offers for us are not public since informing people of an acquisition that might not happen can be very disruptive.
Acquisition offers we give are not public since the organization being acquired frequently prefers to have them stay private.
Customer information is not public since customers are not comfortable with that, and it would make it easier for competitors to approach our customers. If an issue needs to contain any specific information about a customer, including but not limited to company name, employee names, number of users, the issue should be made confidential. Try to avoid putting customer information in an issue by describing them instead of naming them and linking to their SalesForce account. When we discuss a customer by name that is not public unless we're sure the customer is OK with that. When we discuss a competitor (for example in a sales call) this can be public as our competitive advantages are public.
Competitive sales and marketing campaign planning is confidential since we want to minimize the time the competition has to respond to it.
Discussions that involve decisions related to country of residence are not public as countries are a core part of people's identity and any communication should have complete context. The output of such decisions, such as country hiring guidelines will be public.
If public information compromises the physical safety of one or more team members, it will be made not public because creating a safe, inclusive environment for team members is important to how we work. Information that might compromise the physical safety of a team member includes doxxing or threats made against a team member.
Information related to a press embargo, or related to an upcoming publication where the response will be managed by our external communications team
Information that relies on someone else's copyrighted IP. Our compensation calculator, for example, relies on private sources of information and can't be made completely public.
The items below are not shared with all team members. Limited access is a more severe restriction than internal.
Some projects require limited access internally due to the confidential or sensitive nature of the project, including but not limited to projects related to the items listed above. Often, in order to maintain the necessary confidentiality of these types of initiatives, we assign a code name for the project. For consistency and to make it easier to identify the genesis of these projects and their organizational affiliations, we've established the following naming conventions.
|CEO||Pets / Animals|
|Corporate Development||Greek mythological figures|
|Engineering||Hex color names|
|Finance||Sports team names|
|Legal||TV Shows / Movies|
|Marketing||One name famous people|
|Product||Famous Mountain Peaks|
|Sales||Car model names|
Competencies are the Single Source of Truth (SSoT) framework for things we need team members to learn.
In an all-remote organization effective communication is key to exchanging knowledge, ideas, and information. Effective communication at GitLab is: Using asynchronous communication as the starting point and staying as open and transparent as we can by communicating via text through public issues, merge requests, and Slack channels (over DMs). Placing an emphasis on ensuring that conclusions of offline conversations are written down ensuring a Single Source of Truth and producing Video when necessary.
If you would like to improve your skills or expand your knowledge on topics relating to Communication at GitLab, check out our resources:
Skills and behavior of applying effective communication as a Team Member:
Skills and behavior of applying effective communication as a People Manager:
When taking notes in an agenda, in the handbook, or on our OKRs, keep items numbered so we can refer to Item 3 or 4a. The number is not a signal of the importance or rank of the subject unless explicitly stated to be such. It is just for ease of reference.
Linking should not be in one direction. We should go beyond deep-linking to create a richer web of links that can surface content and ensure people consider all pages when making updates. When linking one page to another, try to link back as well. Instead of only linking from Page A to Page B, both link Page A to Page B and link Page B back to Page A. For example, the Live Doc Meeting section of the All Remote Guide links to the Live Docs Meetings page. The Live Docs Meetings page links back to the Live Doc Meeting section of the All Remote Guide.
In order to effectively communicate an important change to hundreds of distributed employees, we occasionally use an ACK process:
=TEXTJOIN(", ", true, Sheet1!E2:E432)
:ack:and pin to the channel until everyone responds.
In informal acknowledgement scenarios, such as on Slack or on issue comments, it is common practice to use the following:
As we continue to build on inclusion, recognition is a key and transformative tactic. Thanking team members provides an opportunity for them to be recognized for their contributions, influences engagement behavior, and acknowledges to team members their work is seen. By saying thanks, you are contributing to and supporting the value of DIB.
#thanksSlack channel. Almost everyone in the company is active in this channel so please don't be shy.
@-mention them, if multiple people were working on something try
@-mentioning each person.
Add Values emoji reactions to thank you messages in the
#thanks slack channel
or feel free to use them in GitLab.com, other slack channels and
social media, when you see alignment to our values: GitLab's values.
As a second iteration, we will begin tracking the number of emoji reactions for each value through the Reacji API and update this page with our findings!
When working on a problem or issue, communicate directly with the people you need support from rather than working through reporting lines. Direct communication with the people you need to collaborate with is more efficient than working through your manager, their manager, or another intermediary. Escalate to management if you are not getting the support you need. Remember that everyone is a manager of one and they might have to complete their own assignments and inform the reporting lines.
It is estimated that listeners will filter out or change the intended meaning of what is heard in 70% of all communications. Source.
Myths about Listening
Tips for Effective Listening
There is a delicate balance between being confident enough to be assertive of personal rights and boundaries while respectful of others.
If there is something that you want to discuss, but you do not feel that it is a reasonable option to discuss with either your manager or CEO, then you can reach out to any of the other C-level GitLab team members or our board member Bruce Armstrong.
At GitLab, social calls are considered an important way to foster culture while organically creating connections between team members with similar interests or hobbies.
These calls happen six times a week at varying times to ensure that team members in all timezones are able to take part. We currently have one open or random topic room along with three topic specific ones based on the most popular channels within Slack i.e.
#intheparenthood which team members need not be a part of to join in.
Previously social calls never had a set agenda however participants are now encouraged to document discussion points or questions in the relevant Google Doc - this is to ensure those considering attending have an overview of what to expect along with offering those who were unable to attend an opportunity to scroll back review points of interest.
The use of a document also serves to ensure that everyone gets a chance to contribute to the conversation.
Social call attendance is not mandatory however the sessions do serve as a great way to get to know fellow team members, take a break or (depending on your region) start the day on a fun note.
|APAC/EMEA||Tuesday and Thursday||11:00PM PT|
|EMEA/AMER||Tuesday and Thursday||06:00AM PT|
|AMER/APAC||Tuesday and Thursday||15:00PM PT|
All social calls are in the Team Meetings Calendar - the sessions are titled GitLab Social Call: Multi-Topic and once you have opened the invite you will see a brief introduction followed by the three topics all of which have unique links for both Zoom and the respective Google Doc.
Being mindful of those who will be taking part, team members are asked to join on time and mute their microphones when they are not speaking. Social calls are not moderated and with this in mind all those who take part play this role and should feel free to chime in if and when necessary.
If you have any questions around the Social Call schedule please be sure to engage with the People Experience Team via the #people-connect channel. Feedback and suggestions are welcome and can be documented in the comments section of this issue.
Using call attendance data along with feedback and suggestions provided by team members call topics will be reviewed and if necessary adjusted on a quarterly basis.
A Walk and Talk call is when team members step away from their computers and get outside for a meeting. The difference between a coffee chat and a Walk and Talk call is that a Walk and Talk call be held with people that you interact with frequently at GitLab. It could be social in nature or focused on a specific problem/topic that needs to be discussed. If it's a problem-solving focused discussion, the outcome should be captured in a merge request. It should not be used if the problem being discussed requires screen sharing or detailed note taking. There are great physical and mental health benefits to a walk and talk call. There are also benefits with increased focus and creativity. A Walk and Talk can also help prevent Zoom fatigue.
The team members can use Zoom on their mobile device with the audio only function, or call one another from their preferred mobile device. A walk and talk call should be agreed to in advance to ensure that the local weather is compatible for a walk in both locations and that the walk and talk call fits into both team members’ schedules. We’ve created a Slack channel #walk-and-talk-meetings where, if you'd like, you can share pictures from your walking meetings.
After GitLab releases a new version on the 22nd of each month, we have a 30-minute call a few days later reflecting on what could have been better:
We spend the first part of the retrospective meeting reviewing the action items from the previous month.
On the 8th of each month (or the next business day), we have a kickoff meeting for the version that will be released in the following month. The product team and other leads will have already had discussions on what should be prioritized for that release. The purpose of this kickoff is to get everyone on the same page and to invite comments.
Both the retrospectives and kickoffs are live streamed to our GitLab Unfiltered YouTube channel and posted to our Unfiltered YouTube channel.
New hire announcements, bonuses, promotions, and other celebrations,
Discussion items, with numbered agenda items beneath each header.
The goal of Focus Fridays is to maximize efficiency by creating designated meeting-free space within our weeks for focused work, which also aligns with our push to operate asynchronously. Other benefits include reducing potential burnout, and being more thoughtful both in and about the meetings on the other days of the week. Guidance for Focus Fridays includes:
You are encouraged to talk to your manager for guidance on how best to embrace Focus Fridays on your team and with your individual schedule.
Consider joining #focus-fridays in slack and share how you spent your Friday including what has worked for you and what has not worked. Managers are encouraged to provide coaching and guidance.
Focus Fridays began as an experiment in the Northern Hemisphere Summer/Southern Hemisphere Winter of 2020 which ran through 2020-09-07, at which time E-Group evaluated the effectiveness on productivity and morale. They found the impact to be a positive one and extended the program until 2021-04-30. On 2021-04-26, the E-Group met and reviewed the feedback issue and found the overall sentiment from the team is that Focus Fridays are instrumental in helping folks concentrate and give space for creative thinking, encourage asynchronous work, and nurture team member well-being. E-Group decided to keep Focus Fridays permanently.
On February 14, or the Tuesday after if this day falls over the weekend or on Monday, we have an annual calendar cleanup day. This is a day when all team members are encouraged to look at their calendars and reassess the value and frequency of recurring meetings. The goals are to increase team member efficiency as team members stop attending low value meetings and reassess how to make continuing meetings more productive. Team members should be empowered to:
When cancelling a meeting, a team member can copy and paste this message to send to attendees: I evaluated the need for this meeting as part of Meeting Cleanup Day. I have determined that the meeting is no longer needed. Please get in touch if you have any concerns.
When changing the cadence of a meeting, a team member can copy and paste this message to send to attendees:
I reassessed this meeting as part of Meeting Cleanup Day. I have determined that the meeting no longer needs to happen as frequently. Please look for an updated meeting invite and get in touch if you have any concerns.
If you are a team member who intends to decline a meeting, the asynchronous communication section of the handbook has some good suggestions for what to say when you decline.
Meeting Cleanup Day is intentionally a few weeks after the start of the new fiscal year. The CoS will launch this initiative annually a week in advance through posting in the #company-fyi Slack channel.
Meetings are incredibly expensive since they require synchronous time. The most common meeting problems can all be addressed by following the above guidelines around scheduling meetings. Some of the most common meetings problems are outlined below:
|Present instead of Q&A||Pre-record presentations on YouTube, so meetings are only Q&A|
|Meetings set up for or default to brainstorming||People should default to making thoughtful proposals async and building upon them in meetings, if needed|
|No agenda with edit rights for everyone||Ensure that every meeting has an agenda and is available for everyone to edit|
|People are late to meetings or don't have time to use the restroom between meetings||Use Speedy Meetings to give people breathing space before their next meeting|
If you are hosting a meeting, it's okay not to have a presentation or have a pre-recorded presentation. What's not okay is doing the presentation during the session because you are taking valuable synchronous time away from the attendees, which could be asynchronous. It is easier to watch YouTube in more locations than joining a Zoom call. A recording makes content more accessible, prevents confusion, and increases participation for team members that prefer consuming content asynchronously. Meetings take up valuable time and resources for the company. They are expensive since they require synchronous time. In the video below, GitLab CEO Sid Sijbrandij explains why there are no presentations in meetings.
Make a pre-recorded video presentation on our Unfiltered YouTube channel, and attach it to the meeting agenda. At least 24 hours in advance of the meeting, announce in Slack Channels that the meeting has a pre-recorded video, and all attendees are advised to watch beforehand. Use the meeting time for Q&A versus presenting information to the audience with slides.
Pre-recorded presentations enable the following:
There are times when presenting during a meeting is needed. This may occur when adding more context to a specific topic on slides. If this is the case, consider the following:
Indicate your availability by updating your own calendar using Google's "out of office" feature and include the dates you plan to be away in your automated response. Note that this feature will automatically decline any meeting invitations during the time frame you select.
[REC]in the meeting title if you want them to be automatically placed in the
GitLab Videos Recordedfolder in Google Drive on an hourly basis via a scheduled pipeline.
GitLab Videos Recorded. If you do not have access to this drive, contact IT Ops.
You are the manager of your attention, and you decide when you do or don't pay attention in a meeting.
You will always have more work than time in your life. If you get invited to a meeting you don't think you should go to, you should decline the meeting. It is better to cancel than to show up and not pay attention.
On the other hand, not every part of a meeting is relevant, but it can sometimes be helpful to have more people in a call. If you only have one discussion point, if possible, try to reorder the meeting agenda to have your point first and then drop from the call. If you get asked a question when you're not paying attention, it is an okay use of time to repeat a question every now and then. If training if required for one's role, team members should plan to give the training full attention–especially if engagement in discussions or breakout rooms is required. If training is 'nice to learn' or 'optional' for team members, multi-tasking can be done at the team members discretion.
We don't use the first 15 minutes of a meeting to read the materials like they do at Amazon. You can use the start of a meeting to review the materials for the meeting if you need to, given you do not have to be paying attention, but that should not delay the start of the meeting for the people that already have questions based on the materials. Meetings start on time at GitLab.
Don't use your camera to signal you're not paying attention; cameras should always be on.
You should take pride in being the first person to add a question to a meeting agenda, however unlike the First post meme we do want the first post to be more than just "First!". The meeting DRI will be happy to see there is a question ready before to kick off the meeting. The Meeting DRI should remember to thank the person for asking the first question.
In calls that have remote participants everyone should use their own equipment (camera, headset, screen).
When multiple people share equipment the following problems arise for remote participants:
The people sharing equipment also have problems because they don't have their own equipment:
The disadvantages for remote people are much greater than for the sharing people and hard to notice for the sharing people. The disadvantages cause previously remote participants to travel to the meeting to be in person for a better experience. The extra travel is inefficient since it is time consuming, expensive, bad for the environment, and unhealthy.
Theoretically you can have multiple people in a room with their own equipment but in practice it is much better to be in separate rooms:
There can be a fine line between healthy debate and incendiary reaction. Try to frame what you write to invite differing points of view without inflaming others. You don’t need to respond to every criticism or barb. Be careful and considerate.
#all-capsSlack channel for your good-natured shouting needs.
*.md text eol=lfis set in the repository's
git config --global core.autocrlf inputon your client.
Zoom Link [Link]. Rather, paste the full link directly following the word
Zoom. This makes the link more prominent and makes it easier to follow while viewing the document.
yyyy-mm-dd, for example 2015-04-13, and never 04-13-2015, 13-04-2015, 2015/04/13, 20150413, 2015.04.13, nor April 13, 2015. Even if you use an unambiguous alternative format it is still harder to search for a date, sort on a date, and for other team members to know we use the ISO standard. For months use
yyyy-mm, so 2018-01 for January. Refer to a year with CY18 (never with 2018) and a quarter with CY18-Q1 to prevent confusion with fiscal years and quarters. If the year is obvious from the context it is OK to use Dec 4, but not 12/4, since the ordering isn't obvious when using two numbers but when naming the month it is clear that the number of the day of the month.
9:00 PT. It isn't often necessary to specify whether a timezone is currently observing Daylight Saving Time, and such references are often incorrect, so prefer "PT" to "PDT" or "PST" unless you have a specific need to differentiate between PDT and PST.
self-managedshould not be capitalized unless it's in a title or unless you are writing the full product name ("Self-Managed-Ultimate"). If it is used at the beginning of a sentence, then the first word only is capitalized: "Self-managed".
##in Markdown, "Heading 2" in Google Docs); start at the second header level because header level 1 is for titles. Do not end headers with a colon. Do not use emoji in headers as these cause links to have strange characters.
merge request (MR).
Many times an explanation can be aided by a visual. Whenever presenting a diagram, we should still allow everyone to contribute. Where possible, take advantage of the handbook's support for Mermaid. If you are new to using Mermaid or need help troubleshooting errors in your Mermaid code, the Mermaid Live Editor can be a helpful tool. Where taking advantage of Mermaid isn't possible, link to the original in our Google Drive so that the diagram can be edited by anyone.
Mandel Communications refers to SCI-PAB® at the "surefire, six-step method for starting any conversation or presentation." When you only have a few minutes to present your case or grab your listener's attention, this six-step process can help you communicate better and faster.
Example - The Management team asking for time to resolve a problem
Some examples can be found at SCI-PAB - Six Steps To Reach Your Audience.
If you need to provide the details of GitLab's contact information you can take the address from the visiting page for reference; or the mailing address of the office in the Netherlands if that is more applicable.
If a phone number is required, leave this field empty by default. If that is not possible, then use the general number (+1-415-761-1791), but be aware that this number simply guides to a voice message that refers the caller back to contacting us via email.
There are two types of code names:
At GitLab we use ubiquitous language to increase communication efficiency.
This is defined in Domain-driven design as: "A language structured around the domain model and used by all team members to connect all the activities of the team with the software."
We use it for activities in GitLab, even ones not implemented in software.
By having ubiquitous words to identify concepts we prevent confusion over what is meant, for example we refer to parts of our organization as a function, department, or group depending on exactly what is meant.
If a term is ambiguous don't use it, for example our hiring definitions have roles and vacancies but avoid the ambiguous word job.
Make sure that projects and working groups have clear and direct names. Prefer "CI Spend Reduction Working Group" to "Project Raven Working Group".
Make sure that people can infer as much as possible from the word, for example our subscription options allow you to know if someone is using self-managed or GitLab.com.
Make sure terms don't overlap without clearly defining how and why, for example see our tier definitions.
Keep terms to one or at most two words to prevent people from introducing ambiguity by shortening a term. When using two words make the first word unique because people tend to drop the second word more often.
MECEFU is an acronym for Mutually Exclusive Collectively Exhaustive Few words Ubiquitous-language.
You pronounce it: MessiFu. Think of the great soccer player Lionel Messi and his kung fu or soccer fu skills.
We want to use MECEFU terms to describe a domain to ensure efficient communication. MECEFU terms have 4 characteristics that help with efficiency:
An example of a MECEFU term is our sales segmentation:
One nit-pick is that the Medium of SMB and Mid of Mid-Market sound very similar.
Simple Language is meant to encourage everyone at GitLab to simplify the language we use. We should always use the most clear, straightforward, and meaningful words possible in every conversation. Avoid using "fluff" words, jargon, or "corporate-speak" phrases that don't add value.
When you don't use Simple Language, you:
When you do use Simple Language, you:
Here's an example:
We're now launching an optimization of our approach leveraging key learnings from the project's postmortem.
A Simple Language sentence
We're creating a new plan based on what we learned from this project.
Simple Language is important both when we're speaking to other team members and when we're representing GitLab to people outside the company.
Be sure to use Simple Language in written communications as well. Our handbook, website, docs, marketing materials, and candidate or customer emails should be clear, concise, and effective. Corporate marketing maintains guidelines on GitLab's tone of voice.
|Getting buy-in/Getting alignment||Asking for feedback since DRIs make decisions|
|Get all your ducks in a row||Be organized|
|Don't let the grass grow too long||Work quickly|
|Leverage||Use more explicit phrasing- debt, etc.|
|Send it over the wall||Share it with a customer|
|Boil the ocean||Waste time|
|Punt||Make less of a priority|
|Helicopter view/100 foot view||A broad view of the business|
|Turtles all the way down||Cascade through the organization|
|When someone has spare/extra cycles||When someone is available|
For example, do not suggest that you're "working in real-time" when a matter is in disarray. Convey that a lack of organization is hampering a result, and provide feedback and clear steps on resolving.
Do not use a cool term such as "tiger team" when the existing term of "working group" is more exact. While cool terms such as these may be useful for persuading colleagues to join you in working towards a solution, the right way isn't to use flowery language.
The last example is when we used 'Prioritizing for Global Optimization' for what we now call a headcount reset. When we renamed it we saw a good reduction in the use of this disruptive practice of moving people around.
As GitLab continues to grow, sharing knowledge across the community becomes even more important. The Deep Dives page describes initiatives we are trying to encourage. This aligns with how we work since everything at GitLab is public by default.
– specific comms tools
We have a low internal email culture, as we see greater efficiency in other forms of communication (e.g. slack). If you are emailing, please use the following guidelines:
Slack is to be used for informal communication only. Only 90 days of activity will be retained. Accordingly, Slack should specifically NOT be used for:
Internal slack messages between team members are still considered professional communication. Please do not use or add emoji's to slack that are of a political, religious or of a sexual nature. You can refer to the Religion and politics at work section of the handbook. When in doubt do not use or add the emoji. If you have any concerns about an emoji that was used, please reach out to the author or if you are not comfortable doing so please reach out to your People Business Partner.
Note: We don't use the term private message, because these direct messages are not inherently private like a phone call or private letter. The messages are potentially accessible by Workspace admins or via Backups. Slack refers to these types of messages as direct messages themselves.
Thanks for reaching out, that's a great question/idea I think the rest of the team could benefit from. I'm going to move this to #public-channel based on [our desire to avoid direct messages](/handbook/communication/#avoid-direct-messages)
@Person asked "question" in a DM, pulling that out here if anyone else has input.
Please consider posting in a public channel before direct messaging
Why direct message me when you can post in a public channel?
Use private channels instead of group direct messages. Group direct messages are very hard to maintain, track, and respond to. They also have a key limitation in that you can't add people to the conversation. This is a hindrance to collaboration and transparency.
Consider whether the conversation can take place in a public channel. If not, please use a private channel instead. This channel may have a short-term purpose. It is acceptable to leave the channel and/or archive it if you are no longer an active participant or the channel is no longer in use.
For all the same reasons that we want to avoid direct messages, use public channels, and be handbook-first, we track the % of messages that are not DMs. As we grow headcount, we exponentially increase the lines of communication- 3 people have 3 communication lines, 4 have 6, and 41 have 820. As a result, there is a natural tendency for people to prefer private channels of communication. The intentions are good, as people are looking to reduce noise for others, but this can lead to the same problems as described elsewhere on this page, notably:
Slack is our primary source of chat communication and is where many personal interactions happen. We want to continue to encourage folks to build personal relationships with one another which will often happen over DMs.
We know that DMs will always exist. We don't want to eliminate them. We set a target of Slack messages that are not DMs being at least 25% of messages. At the time that we set this target, it was <20% of communications.
Everything at GitLab is a work in progress, so if we see a culture shift where Slack is not where work is occurring, thus inflating the amount of communication that is personal that is occurring, we can always change this KPI, but the steady growth of Slack messages paralleling the number of team members does not seem to suggest that is the case.
The previous KPI (% of messages sent in public channels) was about public channels but since some necessary parts of the business occur in private channels (discussions around comp, hiring, talent acquisition- and we do A LOT of hiring), this version of the KPI makes more sense. Earlier in our history, 50% of all communication was in public channels.
Note: Some of these charts require data from a sheetload file that needs to be manually updated. To self-serve data for a chart with missing data, please visit Slack's workspace administration page. It provides guidance on how to access Slack's analytics dashboard for a particular workspace. If this data is required in the charts below, you can ping the #data channel for a refresh. If this becomes a common request, we may choose for the manual step to become regularly scheduled.
@-mentioning the team.
@mentiona specific team (Slack User Group), consider the size of the group you are mentioning (see group membership) and the impact of pinging all of these people for the particular situation. If something is urgent and important:
@hereto notify all currently active members in the room. Please only use
@hereif the message is important and urgent.
@channelto notify ALL members in the room, irrespective of away status. Please only use
@channelif the message is important and urgent.
Slack can be a disorderly place in its default state. Consider implementing the below to add structure and focus, but remember that there will likely be more useful information shared on Slack than you are able to ingest and process on a daily basis, regardless of your approach.
While an intentional effort to organize is important, remember that it's impossible to know everything. As a team, we may spot information that is missed by others, and we should surface that information when pertinent as we strive to see others succeed. For managing Slack channels, consider blocking a set period of time to review certain channels that makes the most sense for you (i.e. multiple times a day, daily, weekly).
Consider using Slack's Starred channel function to spotlight three categories of channels, its Mute function to quiet channels which are pulling your focus away too often, and most importantly, its Mark all messages as read function (easily toggled by pressing
Esc simultaneously while on a desktop) to achieve an instantly clear slate.
An example of three spotlight channels approach is below. Slack allows you to organize your sidebar of starred channels with custom sections to visibly raise or lower their priority level, giving you control over what you see first.
Below are helpful links to best practices and tips on managing your notifications and reducing noise in Slack. We encourage you to regularly check your notification settings to ensure you get more notifications of what is important/relevant to you, and less of what isn't.
Building dedicated time into your day can help minimize the distractions that Slack can create. Consider using a 15 or 30 minute block in your morning or afternoon to enjoy a cup of coffee and catch up on messages you might have missed. When the time you set comes to an end, close out of the Slack app and move on to your next project. Having a set end time can help you feel more in control, and serves as a reminder that it's impossible to know everything
:white_check_mark:emoji or similar to indicate an inquiry has been answered. Anyone can add the emoji. If you're not sure, then feel free to leave it up to the person who asked. An emoji indicator is particularly helpful in channels where lots of questions are posted, such as
Preferences > Notifications > When I'm not active on desktop...and "send me email notifications."
(internal)after the link. For example: https://gitlab.slack.com/archives/C0AR2KW4B/p1555347101079800 (internal)
To get in touch with the e-group on Slack, you can use the following channels. When in doubt, you can use the general
#e-group channel to reach out to the entire group.
The alphabetically sorted starter list below spotlights a few of GitLab's many Slack channels in an effort to provide guidance to team members regarding the best places to ask specific questions and/or engage in discussion on a variety of topics. See Slack's Help Center for instructions on browsing all available channels.
Learn more in our Chat handbook section.
||Official company announcements, restricted permission levels to ensure high-signal; all GitLab team members are automatically added to this channel.|
||Open to all team members for unofficial updates which are important and/or useful to most or all of GitLab, including reminders, events, project updates, etc.; all GitLab team members are automatically added to this channel.|
||Stay up to date on GitLab’s latest Diversity, Inclusion and Belonging initiatives and share feedback and thoughts about how we can make our environment even more inclusive.|
||For questions pertaining to expenses (e.g. Expensify).|
||Specific questions about using Git in the terminal.|
||Cute kid photos, tips on getting your children ready for school, etc.|
||Get help in finding existing issues for existing problems.|
||Create a Help Request in this channel should you have any IT general questions or trouble with setup (e.g. 2FA, accounts, etc.).|
||Search loc_insert your location to connect with GitLab team members in your location (e.g
||For any questions regarding merge requests.|
||For new GitLab team members to introduce themselves to the company and for existing team members to share updates with new hires.|
||For all GitLab team members to be aware of internal opportunities, as well as all job openings as they are listed. Please review the referral process page to find out more about referring someone for a role.|
||GitLab is an all-remote organization. Where’s your office today? Share a photo or use words to describe it.|
||For questions pertaining to payroll and contractor invoices (e.g. ADP, etc.).|
||For general People Ops questions (e.g. onboarding, offboarding, team meetings, etc.).|
||For any general help with anything, really, and Git. If you have a question but you're not sure in which channel you should ask it, questions is always a great place!|
||Anything and everything from photos, news, food, music, etc.|
||For questions about referrals, the hiring process, and/or candidate status.|
||To share news, thoughts, feedback and anything else pertaining to remote work! Learn more about GitLab's approach to remote work.|
||To stay updated on transitions/promotions, new GitLab team members joining, work anniversaries, etc.|
||Recognition is an important part of GitLab's culture; give a public "thanks" to your teammates here!|
||For anything related to compensation, benefits, or equity. You can also check out the Total Rewards issue tracker and handbook page!|
||A place to discuss all things travel!|
||Channel to discuss iterations on GitLab values|
||Employee resource group for members and allies.|
We have a few slackbots to help us with frequently asked questions and other slackbot's that directly help us to remain inclusive in our language and align closely with our Diversity, Inclusion and Belonging Value. The following list is reflective of the ones we use for Diversity, Inclusion and Belonging and the suggested changes to use. We iterate on this list, as a GitLab Team Member, to view active slackbots that we use, kindly view them in Slack, under: GitLab > Customize Your Workspace > Slackbot.
||Are you including people of multiple genders? Please consider using "everyone," "team," "y'all," or similar instead. You can read more about inclusive language in our handbook|
||Are you including people of multiple genders? Please consider using "everyone," "team," "y'all," or similar instead. You can read more about inclusive language in our handbook|
||It's probably okay.|
|As companies grow, their speed of decision making goes down since there are more people involved. We should counteract that by having short toes and feel comfortable letting others contribute to our domain.|
||Did you mean ambitious?|
We upgraded tiers to improve efficiency and security with the ability to use Okta to login into Slack. This will help us scale by improving provisioning and deprovisioning of our corporate systems. This upgrade will also allow us to improve the auditing requirements where identity management is in scope. The Plus tier also includes announcement only channels, 99.99% guaranteed up time, 24x7 support with guaranteed response in four hours or less, and the ability of Corporate Export.
The times this feature would be used would be to comply with certain obligations. Corporate Export must be enabled by Slack in accordance with Slack’s policy, which can be found here.
Examples of instances where GitLab may need to use this feature may include, but are not limited to, those situations listed in Slack’s documentation.
Slack is the business-provided internal communications tool to use for collaboration and connecting with team members. Please keep GitLab values in mind when communicating directly with other team members. If you have a confidential personal issue that you do not feel comfortable discussing via a business-provided internal communications tool, it is recommended to use a personal form of communication such as a text message or phone call. For additional questions, please address in the issue.
GitLab has chosen to restrict the ability to install apps, and we have a process to approve or restrict certain apps for our workspace. In order to add a new app to Slack, you need to create a vendor approval issue. Once that's approved by all parties, please request approval to add the app to Slack following the steps below:
Please note that this is only required for new apps that have not been reviewed or approved. If your request is to add a new process or update an existing process for how an application works in slack, please refer to our Business Technology Change Management process.
Use the "Slack Down!" group chat on Zoom.
Once service is restored, go back to Slack.
Use Slack calls.
/callto trigger a call.
Once service is restored, go back to Zoom.
Join the Slack Down! room on Hangouts Chat. Once service is restored, go back to Slack and Zoom.
Never use a Google Doc / Presentations for something non-confidential that has to end up on the website or the handbook. Work on these edits via commits to a merge request. Then link to the merge request or diff to present the change to people. This prevents a duplication of effort and/or an out of date handbook.
If you do need a Google Doc, create one with your company Google Workspace (formerly G Suite) account and set the visibility and access controls according to the following guidelines.
The recommended defaults when sharing a document for GitLab internal purposes is setting visibility to On - GitLab and access to Can Edit to ensure everyone can contribute!
Note: To our knowledge, it is not possible to set the default to Can Edit and you have to change the permissions from View manually. We hope that Google adds this capability in the future.
|Visibility Setting||Use Cases|
|On - Public on the web||If you want the document to be discoverable by anyone on the internet.|
|On - Anyone with the link||Avoid this setting. Instead, choose On - GitLab, then explicitly share the document with desired external individuals. Only use this if you want the document to be public but not indexed by Google.|
|On - GitLab (Recommended Default)||This is the recommended default as it allows anyone within GitLab to easily discover documents via searching for their name within Drive.|
|On - Anyone at GitLab with the link||Avoid this option as it limits discoverability by others at GitLab.|
|Off - Specific people||When the document contains highly sensitive or private information such as 1:1s with direct reports|
|Access Setting||Use Cases|
|Can Edit||Anyone that can view the document can edit it. This is the recommended setting when On - GitLab is enabled for the document|
|Can Comment||Anyone that can view the document can add a comment but cannot edit the document. This is ideal if you want to provide visibility but retain more fine-grained control of document editing.|
|View||Individuals with access to the document will only be able to view it.|
Reference Google's documentation on Link Sharing to learn more.
When referring to a Google Doc or folder on the Google Drive in the handbook, refrain from directly linking it. Instead, indicate the name of the doc. If you link the URL people from outside the organization can request access, creating workload and the potential for mistakes. (In the past, linking a Google Doc has led to inadvertently opening the sharing settings beyond what was intended.) This also helps prevent spam from people outside GitLab requesting access to a doc when clicking its link. To save people time you can also link to the search results page which allows people to quickly get to the doc without anyone being able to
request access. If there are multiple documents showing up in the search, you may filter your [search link by adding the owner.](https://drive.google.com/drive/search?q=%22this%20is%20a%20link%20to%20the%20search%20results%20page%22%20owner:email%40gitlab.com)
GitLab uses Zoom as the primary video collaboration platform for internal and external communications. Some of our customers and partners have different preferred tools and to facilitate the communication with those parties, GitLab provides licenses for WebEx and MS Teams. This service is only provided to team members that have a business need to host meetings and where Zoom is not accepted. It is not efficient for GitLab to use multiple video conferencing tools, however we encourage the use of the most popular ones among our customers and partners when needed. E.g.; Zoom, WebEx, MS Teams, Skype, etc.
To request access to those tools, create an access request and provide a justification for access.
Please visit the Tools and Tips handbook for Zoom usage guidelines.
COVID-19 is impacting how team members connect and communicate with family.
Due to school closures, parents are tasked with being responsible for their children while at home. Family and friends first, work second is an important Diversity, Inclusion & Belonging sub-value. To that end, we are encouraging GitLab team members to allow their children to connect with other children around the world.
During this time of physical distancing, GitLab team members are welcome to use Zoom to connect with family if other options like FaceTime, etc. are not an option. Please ensure that attendees who are not GitLab team members have their own Zoom account. To ensure GitLab does not incur toll charges, please use Internet-based voice when possible.
Please visit a detailed guide covering everything you need to know about hosting or participating in a GitLab webinar.
We recommend you set your Google Calendar access permissions to 'Make available for GitLab - See all event details'. Consider marking the following appointments as 'Private':
There are several benefits and reasons to sharing your calendar with everyone at GitLab:
If you add blocks of time spent on recurring tasks to your Google Calendar to remind yourself to do things (e.g. "Check Google Analytics"), consider marking yourself "Free" for those events so that coworkers know they may schedule a meeting during that time if they can't find another convenient time.
See the YouTube page for options and instructions for posting recordings and live streaming to our YouTube channels.
Anyone can test their knowledge on GitLab Communication. To obtain a certificate, you will need to complete this knowledge assessment and earn at least an 80%. Once the quiz has been passed, you will receive an email with your certificate that you can share on your personal LinkedIn or Twitter pages. If you have questions, please reach out to our L&D team at