GitLab Communication

  1. You are here:

  2. GitLab Communication

On this page

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.

To accomplish this, we use asynchronous communication as a starting point and stay as open and transparent as we can by communicating through public issues, merge requests, and Slack channels.

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.

Effective & Responsible Communication Guidelines

  1. Assume Positive Intent. Always begin with a position of positivity and grace.

  2. Kindness Matters. You are looking at a screen, but you are really talking to a person. If you wouldn't say it to a person's face, don't send it to them in a text message.

  3. Express Your Thoughts. We live in different locations and often have very different perspectives. We want to know your thoughts, opinions, and feelings on things.

  4. Own It. If you say it or type it, own it. If it hurts the company or an individual, even unintentionally, we encourage you to look at things from other points of view and apologize easily.

  5. Be a Role Model of our Values.

  6. Feedback is Essential. It is difficult to know what is appropriate in every one of our team members 60+ countries. We encourage team members to give feedback and receive feedback in a considerate way.

  7. Don't Underestimate a 1:1. Asynchronous communication (e.g., via text) is helpful and necessary. In some cases (e.g., to clarify misunderstandings) it can be much more effective to jump on a Zoom video call.

  8. Always Adhere to our Anti-Harassment Policy and Code of Conduct. Everyone should be comfortable in their work environment.

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.

Everyone is a Moderator

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.

External communication

Key practices to consider during any meeting are listed below.

  1. Video Calls - If this is your first time meeting a customer/prospect/partner/etc., turn on your camera when you login to Zoom. This will help to make the customer/prospect feel more comfortable as they are certain your undivided attention is geared towards them.

  2. Agenda - Always have an agenda prepped and ready to go. Share this with your audience. Make sure that everything on the agenda is accurate and ask if there’s anything missing that needs to be addressed during this call or for the future. When there is no agenda, it translates to you not caring.

  3. 70/30 Rule - Ask open ended questions that leave the audience talking 70% of the time, while you are talking 30% of the time. Please note that this varies based on the type of meeting that you are conducting. Be conscious of what questions needs to be asked and to capture those items.

  4. Take Notes - Effective note-taking is a valuable skill that will help you retain and recall any important details. Be the person who remembers all the details of your audience's needs.

  5. Adapt to Audience Tone - Before going into the business portion of your meeting, evaluate first the tone of the audience. Adapt your tone accordingly in order to appeal to various types of personalities.

  6. Mid-call - Half-way through the meeting, check in with your audience. Ask them what their thoughts are on the progression of this meeting and if what you're presenting is on the right track. This helps both you and the audience by re-aligning expectations and making sure the meeting is going the right direction.

  7. Pre-Close Summary - 10 Minutes (1-hour meetings) or 5 minutes (30 minute meetings) prior to ending the call, ask the audience to build out an agenda for the next step or meeting. This helps to secure next steps and to ensure there are no balls dropped.

  8. Post Meeting Action - Immediately write down notes and next steps and input into proper directory (Google Drive, Salesforce, etc.).

  9. Two Block Rule - For in person meetings with external parties you should wait until you're more than two blocks from the meeting before discussing the results of the meeting. Nobody wants to hear themselves being discussed in the bathroom.

Communicating with Media and Industry Analysts

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.

Social Media

Please see our social media guidelines.

Everything Starts with a Merge Request

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.

  1. Always open an MR for things you are suggesting and/or proposing. Whether something is not working right or we are iterating on new internal process, it is worth opening a merge request with the minimal viable change instead of opening an issue encouraging open feedback on the problem without proposing any specific change directly. Remember, an MR also invites discussion, but it's specific to the proposed change which facilitates focused decision.

  2. Never ask someone to create an issue when they can default to the merge request.

  3. Starting with a Merge Request is part of Handbook First and helps ensure the handbook is up-to-date when a decision is made. It is also how we make it possible for Everyone to Contribute. This is true, not just for updating the handbook for updating all things.

  4. Merge Requests, by default are non-confidential. However, for things that are not public by default please open a confidential issue with suggestions to specific changes that you are proposing. The ability to create Confidential Merge Requests is also available. When possible, consider not including sensitive information so the wider community can contribute.

  5. Not every solution will solve the problem at hand. Keep discussions focused by defining the problem first and explaining your rationale behind the Minimal Viable Change (MVC) proposed in the MR.

  6. Be proactive and consistent with communication on discussions that have external stakeholders such as customers. It's important to keep communication flowing to keep everyone up to date. MRs can appear stale if there aren't recent discussions and no clear definition on when another update will be provided, based on feedback. This leaves those subscribed in the dark, causing unnecessary surprise if something ends up delayed and suddenly jumps to the next milestone. It is important that MRs are closed in a timely manner through approving or rejecting the open requests.

  7. Have a bias for action and don't aim for consensus. Every MR is a proposal, if an MRs author isn't responsive take ownership of it and complete it. Some improvement is better than none.

  8. Cross link issues or other MRs with related conversations. E.g. if there’s a Zendesk ticket that caused you to create a GitLab.com MR, make sure to document the MR link in the Zendesk ticket and vice versa. And when approving or rejecting the MR, include reason or response from Zendesk. Put the link at the top of each MR's description with a short mention of the relationship (Report, Dependency, etc.) and use one as the central one and ideally close the alternate if duplicate.

  9. When providing links to specific lines of code relevant to the MR, always use a permalink (a link to a specific commit for the file). This ensures that the reference is still valid if the file changes. For more information, see Link to specific lines of code.

  10. If submitting a change for a feature, update the description with the final conclusions (Why an MR was rejected or why it was approved). This makes it much easier to see the current state of an issue for everyone involved in the implementation and prevents confusion and discussion later on.

  11. Submit the smallest item of work that makes sense. When proposing a change, submit the smallest reasonable commit, put suggestions for other enhancements in separate issues/MRs and link them. An MR can start off as only a problem description and TODO comments. If you're new to GitLab and are writing documentation or instructions, submit your first merge request for at most 20 lines.

  12. Do not leave MRs open for a long time. MRs should be actionable – stakeholders should have a clear understanding of what changed and what they are ultimately approving or rejecting.

  13. Make a conscious effort to prioritize your work. The priority of items depends on multiple factors: Is someone waiting for the answer? What is the impact if you delay it? How many people does it affect, etc.? This is detailed in Engineering Work flow.

  14. When submitting a MVC, ask for feedback from your peers. For example, if you're a designer and you propose a design, ping a fellow designer to review your work. If they suggest changes, you get the opportunity to improve your design and propose an alternative MR. This promotes collaboration and advances everyone's skills.

  15. Respond to comments within a threaded discussion. If there isn't a discussion thread yet, you can use the Reply to comment button from the comments to create one. This will prevent comments from containing many interweaves discussions with responses that are hard to follow.

  16. If your comment or answer contains separate topics, write separate comments for each, so others can address topics independently using the Reply to comment button.

  17. If you have received any feedback or questions on your MR, try to acknowledge comments as that's how we ensure we create an environment of belonging for all team members. Merging your MR as-is without giving an answer or any response makes the commenters feel their opinions are unheard. If you are the DRI who does not have to make a fast decision, you can choose not to change your MR, but you should acknowledge the comments or feedback, consider if they warrant a change to your MR, and say why, not just what. If there are many comments, you can choose to summarize key feedback areas and share your response at a high level. We appreciate that if you force a DRI to explain too much, you'll create incentives to ship projects under the radar. The fear of falling into a perpetual loop of explaining can derail a DRI, and cause people to defer rather than working with a bias for action. This is something we want to avoid. When fast decisions are needed, we'll have to accept that people listened to us but don't owe us an explanation to have fast decisions based on everyone's input. The goals are to be transparent and collaborative–not to lose efficiency. Not everyone will agree, but we expect all people to disagree, commit, and disagree.

  18. For GitLab the product merge request guidelines are in the Contribution guide and code review guidelines for reviewers and maintainers are described in our Code Review Guidelines.

  19. Even when something is not done, share it internally so people can comment early and prevent rework.

  20. Create a Work In Progress (WIP) merge request to prevent an accidental early merge. Only use WIP when merging it would make things worse, which should rarely be the case when contributing to the handbook. Most merge requests that are in progress don't make things worse, in this case don't use WIP, if someone merges it earlier than you expected just create a new merge request for additional items. Never ask someone to do a final review or merge something that still have WIP status, at that point you should be convinced it is good enough to go out.

  21. If any follow up actions are required on the issue after the merge request is merged (like reporting back to any customers or writing documentation), avoid auto closing the issue.

  22. If a project requires multiple approvals to accept your MR, feel free to assign multiple reviewers concurrently. This way the earliest available reviewer can start right away rather than being blocked by the preceding reviewer.

  23. If the MR involved gets a lot of comments, you can turn it into a Manager Mention MR.

  24. Consider recording a concise video or audio file outlining the merge request and uploading it to the GitLab Unfiltered channel on YouTube. This will make content more accessible, prevent future confusion, allow for multitasking (e.g. cooking dinner and listening to the video), and increase participation for folks who digest audio information better than visual.

Scaling Merge Requests through "Manager Mention MRs" (formerly Consolidated MRs)

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.

Comments without a manager tagged will be closed with a link to this handbook section or closed without comment.

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.

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

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:

  1. When closing an issue leave a comment explaining why you are closing the issue and what the MVC outcome was of the discussion (if it was implemented or not).

  2. We keep our promises and do not make external promises without internal agreement.

  3. Be proactive and consistent with communication on discussions that have external stakeholders such as customers. It's important to keep communication flowing to keep everyone up to date. Issues can appear stale if there aren't recent discussions and no clear definition on when another update will be provided, based on feedback. This leaves those subscribed in the dark, causing unnecessary surprise if something ends up delayed and suddenly jumps to the next milestone. It is important that issues are closed in a timely manner. One way of doing this is having the current assignee set a due date for when they will provide another update. This can be days or weeks ahead depending on the situation, prioritization, and available capacity that we may have.

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.

  1. If a user suggests an enhancement, try and find an existing issue that addresses their concern, or create a new one. Ask if they'd like to elaborate on their idea in an issue to help define the first MVC via a subsequent MR.

  2. Cross link issues or MRs with related conversations. Another example is to add "Report: " lines to the issue description with links to relevant issues and feature requests. When done, add a comment to relevant issues (and close them if you are responsible for reporting back, or re-assign if you are not). This prevents internal confusion and us failing to report back to the reporters.

  3. When cross-linking issues or MRs, include a preview of the content you are linking, to facilitate low-context communication:

  4. Good: this would cause performance issue similar to #123456. The reader has full information on first read and can refer to the link for more.

  5. Avoid: 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.

  6. When providing links to specific lines of code relevant to the issue, always use a permalink (a link to a specific commit for the file). This ensures that the reference is still valid if the file changes. For more information, see Link to specific lines of code.

  7. Prioritize your work on issues in the current milestone.

  8. Use the public issue trackers on GitLab.com for everything since we work out in the open. Issue trackers that can be found on the relevant page in the handbook and in the projects under the gitlab-com group.

  9. Assign an issue to yourself as soon as you start to work on it, but not before that time. If you complete part of an issue and need someone else to take the next step, re-assign the issue to that person.

  10. Ensure the issue title states what the desired outcome should be. For instance, for bugs make sure the issue states the desired result, not the current behavior.

  11. Regularly update the issue description with the latest information and its current status, especially when important decisions were made during the discussion. The issue description should be the single source of truth.

  12. If you want someone to review an issue, do not assign them to it. Instead, @-mention them in an issue comment. Being assigned to an issue is a signal that the assignee should or intends to work on it. So you should not assign someone to an issue and mis-represent this with a false signal.

  13. Do not close an issue until it is done. It's okay to explicitly ask if everyone is on board and in agreement on how to move forward, whether to iterate, close the open issue, or create a subsequent MR to implement a MVC.

  14. Once a feature is done, update the description to add a link to the corresponding documentation. When using a Search Engine, issues often appear before documentation pages, which makes it harder to find the relevant information about the feature.

  15. Write issues so that they exclude private information. This way, the issue can be public. Only use confidential issues, if the issue must contain non-public information. Note: Confidential issues are accessible to all members of the project with Reporter access and above. You may consider using a Google Doc for items that require a stricter level of confidentiality.

  16. If the content within a public issue transitions to become what is deemed confidential non-public information, the issue may be made confidential.

  17. If the content of a public issue draws comments that are deemed in violation of our code of conduct the issue may be locked and may undergo moderation.

Internal Communication

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.

Asynchronous communication

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.

Top Tips and Best Practices

  1. All written communication happens in English, even when sent one on one, because sometimes you need to forward an email or chat.

  2. Use asynchronous communication when possible: merge requests (preferred) or issues. Announcements happen on the appropriate slack channels and people should be able to do their work without getting interrupted by chat.

  3. Discussion in issues or Merge Requests is preferred over everything else. If you need a response urgently, you can Slack someone with a link to your comment on an issue or merge request, asking them to respond there, however be aware that they still may not see it straight away. See Slack for more.

  4. If you choose to email instead of chat it is OK to send an internal email that contains only a short message, similar as you would use in chat.

  5. You are not expected to be available all the time. There is no expectation to respond to messages outside of your planned working hours.

  6. Sometimes synchronous communication is the better option, but do not default to it. For example, a video call can clear things up quickly when you are blocked. See the guidelines on video chats for more detail.

  7. It is very OK to ask as many questions as you have. Please ask them so many people can answer them and many people see the answer. Use issues or public chat channels (like #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".

  8. If someone sends you a handbook link they are proud that we have the answer documented, they don't mean that you should have found that yourself or that this is the complete answer, feel free to ask for clarification.

  9. If the answer to a question isn't documented please immediately make a merge request to add it to the handbook in a place you have looked for it. It is great for the person who answered the question to see you leading by example to ensure that question only needs to be answered once. A merge request is the best way to say thanks for help.

  10. If you mention something (a merge request, issue, commit, webpage, comment, etc.) please include a link to it.

  11. All company data should be shareable by default. Don't use a local text file but rather leave comments on an issue.

  12. When someone asks something, give back a deadline or that you did it. Answers like: 'will do', 'OK', 'it is on my todo list' are not helpful. If it is small it's better to spend 2 minutes and do the tasks so the other person can mentally forget about it. If it is large you need to figure out when you'll do it, by returning that information the other person might decide to solve it in another way if it takes too long.

  13. It is OK to bring an issue to someone's attention with a CC ("cc @user"), but CCs alone are not enough if specific action is needed from someone. The mentioned user may read the issue and take no further action. If you need something, please explicitly communicate your need along with @ mentioning who you need it from.

  14. Avoid creating private groups for internal discussions:

    1. It's disturbing (all users in the group get notified for each message).

    2. It's not searchable.

    3. It's not shareable: there is no way to add people in the group (and this often leads to multiple groups creation).

    4. They don't have a subject, so everyone has to remember the topic of each private group based on the participants, or open the group again to read the content.

    5. History is lost when leaving the group.

  15. It is perfectly fine to create a channel, even for a single customer meeting. These channels should be named "a_-internal" to indicate their "internal" nature (not shared with customers).

  16. Use low-context communications by being explicit in your communications. We are a remote-only company, located all over the world. Provide as much context as possible to avoid confusion. Relatedly, we use ubiquitous language for communication efficiency.

  17. When discussing concepts, be careful not to lean too much into hypotheticals. There is a tipping point in which it decreases value and no longer becomes constructive at helping everyone come into a unified decision.

How to make a Companywide Announcement

  1. Consider the subject and the audience. Questions you might want to ask yourself; is this relevant to all team members globally? is this something important, urgent and high priority? is there a better place for this communication, such as a more informal slack channel?

  2. Keep it simple, brief and summarize what is important. Cover the 5 W's. What, Why, Who, When, Where (you can also add How, if required as a call to action). The majority of information should still be in the Handbook which you include links to.

  3. Common companywide announcements include (but are not limited to): organization changes, policy iterations, requests to participate in a company survey, unveiling the next GitLab Contribute location, codebase migrations, process improvement and security/safety announcements.

  4. Remember Handbook First. When you announce anything, include links to the respective Handbook pages for more information. Consider adding link to an Issue if the information is not public yet.

  5. Optional AMA. If desired and appropriate, offer a companywide Zoom call to host an AMA (Ask Me Anything). Oftentimes, questions can be managed within the Discussion tab of a GitLab Issue or Merge Request. For broad announcements, such as registration opening for GitLab Contribute, an AMA may be better suited for a large volume of inquiries. To schedule a companywide call, please make a request in the #peopleops Slack channel, and include a Google Doc in the invite for questions.

Ask Me Anything Meetings

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.

Posting in #company-fyi

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.

In order to post or have a message posted in #company-fyi, please reach out to your function's executive who can approve the message and post it.

  1. Examples of what should not go in #company-fyi (as per new group guidelines):

    1. Competition prize winner announcements.

    2. Org change or new team member announcements (unless they are E-group).

    3. Promotion of a optional non-company-wide internal event.

The above should now all go in the new #whats-happening-at-GitLab channel (formerly the #company-announcement channel)

Top misused terms

Please see our Top misused terms page.

Asking "is this known"

  1. If something is behaving strangely on https://gitlab.com, it might be a bug. It could also mean that something was changed intentionally.

  2. Please search if the issue has already been reported.

    1. If it has not been reported, please file an issue.

  3. If you are unsure whether the behavior you experience is a bug, you may ask in the Slack channel #is-this-known.

    1. Make sure that no-one has experienced this issue before, by checking the channel for previous messages

    2. If you know which stage of the DevOps lifecycle is affected, it is also okay to ask in #s_{stage}, for example #s_manage.

    3. Describe the behavior you are experiencing, this makes it searchable and easier to understand. Different people might look for different things in the same screenshots.

    4. Asking in a single channel helps discoverability, duplicated efforts and reduces noise in other channels. Please refrain from asking in general purpose channels like #frontend, #backend, #development or #questions.

Multimodal communication

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 doing this, create and link to a single source of truth: ideally the handbook, otherwise an epic, issue, or Google Doc. The email or Slack message should not be the source of truth.

Not Public

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. The items that are not public are detailed in the sections below together with an explanation why they aren't public. If something isn't listed in the sections below we should make it available externally.

Internal

Some things are internal, available internally but not externally. The following items are internal:

  1. Security vulnerabilities are not public since it 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 implementations that detect malicious activities cannot be made public because doing so would undermine our operations.

  2. Financial information, including revenue and costs for the company, is confidential because we plan to be a public company and, as such, need to limit both the timing and content of financial information as investors will use and rely on it as they trade in GitLab stock. As the guideline, if it is a first step to constructing a profit, we need to keep it confidential. Examples include:

    1. the specific IACV of an opportunity;

    2. total monthly cash inflow/outflow for GitLab.com;

    3. spend of more than 10%;

    4. a department's cost;

    5. the Sales pipeline (but the Marketing pipeline can be public);

    6. net and gross retention KPIs (only the actual numbers can't be public. Everything else- the goal, their calculation, etc- can be.); and,

    7. forward-looking statements, including the timing and plans for becoming a public company. The going-public date is too sensitive to share broadly internally. The press is very eager to report on it. If it leaks, having reports out there is a big problem because it reduces our flexibility. Therefore, it will be on a need-to-know basis, even inside the company. Everyone will find out when the S1 becomes public, 21 days before going public.

  3. Deals with external parties like contracts and approving and paying invoices.

  4. Content that would violate confidentiality for a GitLab team member, customer, or user.

  5. Legal discussions are not public due to the purpose of Attorney-Client Privilege.

  6. Acquisition offers for us are not public since informing people of an acquisition that might not happen can be very disruptive.

  7. Acquisition offers we give are not public since the organization being acquired frequently prefers to have them stay private.

  8. 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.

  9. Competitive sales and marketing campaign planning is confidential since we want the minimize the time the competition has to respond to it.

  10. Sales battlecards are not public since we want to minimize the time the competition has to respond to it. Our feature comparisons are public.

  11. 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.

  12. 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.

  13. Information related to a press embargo, or related to an upcoming publication where the response will be managed by our external communications team

Limited Access

The items below are not shared with all team members. Limited access is a more severe restriction than internal.

  1. Deals with external parties like contracts and approving and paying invoices.

  2. Content that would violate confidentiality for a GitLab team-member, customer, or user.

  3. Customer lists and other customer information are not public since many 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, and/or number of users, the issue should be made confidential. Avoid putting customer information in an issue by describing them instead of naming them and by linking to their Salesforce account.

  4. Plans for reorganizations. Reorganizations cause disruption and the plans tend to change a lot before being finalized, so being public about them prolongs the disruption. We will keep relevant team members informed whenever possible.

  5. Planned pricing changes. Much like reorganizations, plans around pricing changes are subject to shift manage time before being finalized. Thus, pricing changes are limited access while in development. Team members will be consulted before any pricing changes are rolled out.

  6. Legal discussions are restricted to the purpose of Attorney-Client Privilege.

  7. Some information is kept confidential by the People Group to protect the privacy, safety, and security of team members and applicants, including: job applications, background check reports, reference checks, compensation, terminations details, demographic information (age and date of birth, family or marital status, national identification such as passport details or tax ID, required accommodations), home address. Whistleblower identity is likewise confidential. Performance improvement plans, disciplinary actions, as well as individual feedback are restricted as they may contain negative feedback and negative feedback is 1-1 between you and your manager. However, People Group policies and processes are public (for example, Job families and our Compensation Calculator), along with information that team members choose to share on the Team page.

  8. Performance improvement plans, disciplinary actions, as well as individual feedback, are confidential as they contain private negative feedback and negative feedback is 1-1 between team members and managers

  9. GitLab's Risk Register, is maintained by the Risk & Field Security Team. Access to GitLab’s Risk Register is limited to the Security Compliance Team, VP of Security, Executive Leadership and individually identified employees on a need to know basis. This document is not publicly or internally available as there may be risks on the risk register that explicitly call out the mechanisms available for external actors or internal GitLab team members to access content that would violate confidentiality for a GitLab team-member, customer, or user, and may include Personally Identifiable Information (PII).

  10. Acquisition offers for us are not public since informing people of an acqusition that might not happen can be very disruptive

  11. Acquisition offers we give are not public since the organization being acquired frequently prefers to have them stay private.

Effective Communication Competency

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:

  • Effectively practices communication via text.

  • Uses asynchronous communication when possible: merge requests (preferred) or issues.

  • Directs all communication to the appropiate channels (Slack, GitLab, email).

  • Recognises when synchronous communication is the more appropriate option.

  • Directs all decisions and discussions to the Handbook as a single source of truth.

  • Records videos to communicate information when that is the most efficient and effective way to consume the content.

  • Employs multimodal communication to broadcast important decisions.

  • Practices low context communication and provides as much background as possible when communicating via text to avoid confusion.

Skills and behavior of applying effective communication as a People Manager:

  • Implements working asynchronously across teams, departments or across the company. Drives communication where possible to asynchronous channels.

  • Holds team members accountable for effectively communicating via text.

  • Fosters an environment across teams, departments or divisions where asynchronous communication is the starting point.

  • Guides team members on when producing video is appropriate. Implements interactive communication tools across their team, department or the company depending on level.

  • Drives and funnels conversations to the right channels across teams, divisions and the company.

Numbering is for Reference, not as a Signal

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.

Acknowledgement Receipts (ACK)

In order to effectively communicate an important change to hundreds of distributed employees, we occasionally use an ACK process:

  1. To prevent overuse, this should only be used by a member of the exec team (but anyone may ask an exec to sponsor one).

  2. As a guideline, we'd expect no more than one per quarter to be sent out (too many ACKs lose power).

  3. Clone the form from this template and fill it out.

  4. Link to MRs and Handbook pages instead of duplicating your content in the form. Why handbook first?

  5. Ask PeopleOps to pull a spreadsheet of email addresses from BambooHR with the column headers First Name, Last Name, Job Title, Department, Manager, and Work Email. Double check it and turn the emails into a comma-delimited string with an excel formula like this: =TEXTJOIN(", ", true, Sheet1!E2:E432)

  6. Send the form and expect to get 50% of the responses in the first 24 hours. To get the rest:

  7. Post in common Slack channels.

  8. Add to staff meeting agendas.

  9. Suggest to team managers to post to their team Slack channels, ask for explicit :ack: and pin to the channel until everyone responds.

  10. Lastly, reach out 1-on-1 to stragglers while being respectful of vacation time.

In informal acknowledgement scenarios, such as on Slack or on issue comments, it is common practice to use the following:

  1. Eyes 👀 => I’ll check this out or seen and will do

  2. Thumbs up 👍 => good idea

  3. White checkmark ✅ => task is complete or done

  4. Heart ❤ ️= expression of gratitude or appreciation

  5. cc @mentions => if someone needs to see a message

Presentations

  1. All presentations are made in Google Slides using our templates.

  2. Please allow anyone at GitLab to edit the presentation (preferred) or at least comment on the presentation.

  3. If the content can be public use File > Publish to the web > Publish to get a URL and paste that in the speaker notes of the first slide (commonly the title slide).

  4. The title of every slide should be the message you want the audience to take away, not the subject matter. So use 'Our revenue more than doubled' instead of 'Revenue growth'.

  5. If there are introductions being performed please make sure that nobody is presenting. We remember people better and have more empathy when we clearly see peoples faces and expressions.

  6. At the end of the presentation when you go to Q&A stop presenting in Zoom. This way the other people can see the person who is speaking much better.

  7. All presentations at GitLab should be based on screenshots of the handbook, issues, merge requests, review apps, and data from GitLab Insights and SiSense charts. In most cases it shouldn't be needed to make content uniquely for the presentation. If you need something that doesn't exist yet add it to the place it belongs and then copy it into the presentation. This way we can have a Single Source of Truth for everything we do. By using screenshots you indicate to people you did the right thing and they can find the canonical source in the appropriate place. Having to find information by digging through old presentations doesn't scale. Consider linking the screenshot to the original source.

  8. Do not use cumulative graphs internally. For example total ARR, total user, total contributors, or total Merge Requests. Instead use IACV per dollar spend, users added per month, contributions per month, or MR rate. Cumulative graphs can hide trends and are far more likely to be misinterpreted. The only acceptable use of cumulative graphs is for external presentations where they are expected by the audience and commonly used.

Say Thanks

  1. Thank people that did a great job in our #thanks Slack channel.

  2. If someone is a team member just @-mention them, if multiple people were working on something try @-mentioning each person.

  3. If possible please include a link with your thanks that points to the subject matter that you are giving thanks for, for example a link to a merge request.

  4. Please do not mention working outside of working hours, we want to minimize the pressure to do so.

  5. Please do not celebrate GitLab contribution graphs that include working for uninterrupted weeklong cycles, as this does not foster healthy work/life harmony for all team members. While GitLab team members are free to time-shift and work weekends in place of weekdays, we discourage celebrating the absence of time away from work.

  6. Don't thank the CEO or other executives for something that the company paid for, thank GitLab instead.

  7. To thank someone who is not a team member please mention a Community Advocate, the name of the person, a quirky gift and link to their work. For example, "@manager, @communityadvocate: Joe deserves a lawnmower for link". The Community Advocate will approach the person in question for their address saying we want to send some swag. We'll ship it in gift wrap with "Thanks for your great work on link, love from @gitlab".

Values emoji

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.

  • :handshake: = Collaboration

  • :chart_with_upwards_trend: = Results

  • :stopwatch: = Efficiency

  • :globe_with_meridians: = Diversity

  • :footprints: = Iteration

  • :eye: = Transparency

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!

Communicate directly

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.

Not sure where to go?

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.

Social Call

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. #gaming, #fitlab and #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.

Weekly Call Cycle

Social Call

Day(s)

Time

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 #peopleops 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.

Mindfulness Call

  1. The Mindfulness Call is a new call at GitLab. To start it will be led three times a week:,

    • Mindfulness Call 1: EMEA/ APAC: Tuesdays 1:00AM PT for 15 minutes

    • Mindfulness Call 2: AMER/ EMEA: Wednesdays 9:30AM PT for 15 minutes

    • Mindfulness Call 3: AMER/ EMEA: Thursdays 7:30AM PT for 15 minutes

  2. The call is a short time for GitLab team members to spend time together in a guided meditation of centering and refocusing. There is evidence that meditating together has additional benefits over meditating alone.

  3. The call will be led by either @mlebeau, @haileyrae or @scull to start, but we are looking for other volunteers, especially in other time zones, so that this can be offered multiple times in a week for all GitLab team members to benefit.

  4. The call will start promptly. The call will not be recorded. There is no intent to have discussion or Q&A around the call.

  5. No previous experience is necessary, nothing extra is needed other than a comfortable seat and 15 minutes.

Walk and Talk Calls

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.

Release Retrospectives and Kickoffs

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:

  1. What went well this month?

  2. What went wrong this month?

  3. What could we have done 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.

Random

  1. The #random Slack channel is your go-to place to share random ideas, pictures, articles, and more. It's a great channel to check out when you need a mental break.

Scheduling Meetings

  1. If you want to ask GitLab team members if they are available for an event please send a calendar invite with Google Calendar using your Google GitLab account to their Google GitLab account. When you add a GitLab team member as a “Guest” in Google Calendar, you can click the See Guest Availability button to check availability and find a time on their calendar. These calendar invites will automatically show up on all parties calendars even when the email is not opened. It is an easier way to ensure everyone has visibility to the meeting and member’s status. Please respond quickly to invites so people can make necessary plans.

  2. Every scheduled meeting should either have a Google Presentation (for example for functional updates that don't require participation) or a Google Doc (for most meetings) linked. If it is a Google Doc it should have an agenda, including any preparation materials (can be a presentation). Put the agenda in a Google Doc that has edits rights for all participants (including people not part of GitLab Inc.). Link the Google Doc from the meeting invite. Take notes of the points and todos during the meeting. Nobody wants to write up a meeting after the fact and this helps to structure the thought process and everyone can contribute. Being able to structure conclusions and follow up actions in realtime makes a video call more effective than an in-person meeting. If it is important enough to schedule a meeting it is important enough to have a Doc linked. If we want to be on the same page we should be looking at that page.

    • No agenda is required for coffee chats. Note that only meetings that are primarily social in nature should be labeled as a coffee chat in the calendar invite.

    • A suggested format for team meetings agendas is: New hire announcements, bonuses, promotions, and other celebrations, READ-ONLY, and Discussion items, with numbered agenda items beneath each header.

    • A suggested format for 1:1 agendas can be found on the 1:1 leadership page.

  3. If you want to check if a team member is available for an outside meeting, create a calendar appointment and invite the team member only after they respond yes. Then invite outside people.

  4. When scheduling a call with multiple people, invite them using a Google Calendar that is your own, or one specific to the people joining, so the calendar item doesn't unnecessarily appear on other people's calendars.

  5. If you want to move a meeting just move the calendar appointment instead of reaching out via other channels. Note the change at the top of the description.

  6. Please click 'Guests can modify event' so people can update the time in the calendar instead of having to reach out via other channels. You can configure this to be checked by default under Event Settings.)

  7. When scheduling a meeting we value people's time and prefer the "speedy meetings" setting in our Google Calendar. This gives us meetings of, for example, 25 or 50 minutes leaving some time to:

    1. Write notes and reflect

    2. Respond to urgent messages

    3. Take a bio break

    4. Stretch your legs

    5. Grab a snack

  8. When scheduling a meeting, please try to have it start at :00 (hour) or :30 (mid-hour) to leave common start times available for other meetings on your attendees' calendars. Meetings should be for the time needed, so if you need 15 minutes just book that.

  9. When creating a calendar event that will be used company wide, please place it on the GitLab Team Meetings Calendar. That way the event is easily located by all individuals.

  10. When you need to cancel a meeting, make sure to delete/decline the meeting and choose the option Delete & update guests to make sure everyone knows you can't attend and don't wait for you.

  11. If you want to schedule a meeting with a person not on the team please use Calendly. Use Google Calendar directly if scheduling with a GitLab team member.

  12. Materials Review are scheduled as all day not busy events as a reminder three days before the scheduled call.

Focus Fridays

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:

  • Cancel or move any standing meetings occurring on Fridays

  • Customer/prospect/partner/external meetings are exceptions

  • Some one-off internal meetings might not be avoidable, but aim to minimize them as much as possible

  • Consider blocking off your calendar as "busy" on Fridays to block your work time

  • Consider looking into apps like Clockwise that can provide recommendations on how to refactor your calendar for focused work

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.

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-01-08.

Common Meeting Problems

Meetings are incredibly expensive since they require synchronous time. The most common meeting problems can all be address by following the above guidelines around scheduling meetings. Some of the most common meetings problems are outlined below:

Problem

Solution

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

Indicating Availability

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.

  1. Put your planned away time including holidays, vacation, travel time, and other leave in your own calendar. Please see Communicating your time off for more.

  2. Set your working hours in your Google Calendar settings.

  3. Utilize PTO by Roots to keep other GitLab team members aware of your planned time away within Slack.

Video Calls

  1. Use video calls if you find yourself going back and forth in an issue/via email or over chat. Guideline: if you have gone back and forth 3 times, it's time for a video call.

  2. Sometimes it's better to not have a video call. Consider these tradeoffs:

    1. It is difficult (or impossible) to multi-task in a video call.

    2. It may be more efficient to have an async conversation in an issue, depending on the topic.

    3. A video call is limited in time: A conversation in an issue can start or stop at any time, whenever there's interest. It is async.

    4. A video call is limited in people: You can invite anybody into an async conversation at any time in an issue. You don't have to know who are the relevant parties ahead of time. Everyone can contribute at any time. A video call is limited to invited attendees (and those who have accepted).

    5. You can easily "promote" an async conversation from an issue to a video call, as needed. The reverse is harder. So there is lower risk to start with an async conversation.

    6. For a newcomer to the conversation, it's easier and more efficient to parse an issue, than read a video transcript or watch it.

    7. Conversations in issues are easily searchable. Video calls are not.

  3. Try to have your video on at all times because it's much more engaging for participants

    1. Don't worry if you can't pay attention at the meeting because you're doing something else, you are the manager of your attention. The flip-side of being the manager of your own attention is that others should not hesitate to request your attention when it is needed.

    2. During internal calls, it's okay to eat on video if you're hungry or the call is during your lunch time (please turn your mic off). To maintain professionalism, if you are presenting or facilitating a customer call please try to avoid eating. If eating during a customer call is unavoidable, please turn off your video and mute your mic.

    3. You should ensure that you are properly dressed for all video calls. Properly dressed means that you are wearing clothing that covers the top and bottom parts of your body. We do not have a strict dress code policy, but want to make sure that all participants on video calls feel comfortable. If you cannot be properly dressed for the entirety of the call, you should not join, but watch the recording at a later time.

    4. Having pets, children, significant others, friends, and family visible during video chats is encouraged. If they are human, ask them to wave at your remote team member to say "Hi".

    5. Do not feel forced to have your video on, use your best judgement.

  4. Additional points for video calls with customers or partners

    1. Results come first. Your appearance, location and background is less important than making customers successful so don't wait for the perfect time / place when you can engage a customer right away.

    2. Communicating that GitLab is an enterprise grade product and service provider is supported by the way you present yourself. Most of the time, if you would not wear something or present yourself in a certain way at a customer's office, candidate interview, or partner meeting in person then it's probably not the right choice on a video call with them either.

    3. Green screens are a great background solution. It's great to work in your garage or basement! Just get a green screen behind you and put up a professional background image to present well externally and still use the rest of the room how you want!

  5. We prefer Zoom.

  6. Google Calendar also has a Zoom plugin where you can easily add a Zoom link for a video call to the invite

  7. For meetings that are scheduled with Zoom:

    1. If you need more privileges on Zoom (longer meeting times, more people in the meeting, etc.), please contact People Operations Specialist as described specifically for Zoom.

    2. Note that if you select to record meetings to the cloud (setting within Zoom), you must include the text [REC] in the meeting title if you want them to be automatically placed in the GitLab Videos Recorded folder in Google Drive on an hourly basis via a scheduled pipeline.

    3. You can find these videos in Google Drive by looking under Shared drives and GitLab Videos Recorded. If you do not have access to this drive, contact IT Ops.

    4. Note also that after a meeting ends, Zoom may take some time to process the recording before it is actually available. The sync to Google Drive happens on the hour mark, so if the recording is not available, it may take another hour to be transferred.

  8. As a remote company we are always striving to have the highest fidelity, collaborative conversations. Use of a headset with a microphone, is strongly suggested.

    1. If other people are using headphones then no-headphones works fine. But if multiple people aren't using headphones you get distractions.

    2. Reasons to use headphones:

      1. Computer speakers can cause an echo and accentuate background noise.

      2. Using headphones decreases the likelihood of talking over one another, enabling a more lively conversation.

      3. Better sound quality, avoiding dynamic volume suppression due to echo cancellation.

    3. Leave the no headphones to:

      1. People who don't have them handy at that time

      2. People from outside the company

    4. Suggested headphone models can be found in the handbook under spending company money.

    5. If you want to use your Bose headphones that is fine but please ensure the microphone is active.

  9. Consider using a utility to easily mute/unmute yourself, see Shush in the tools section.

  10. Always be sure to advise participants to mute their mics if there is unnecessary background noise to ensure the speaker is able to be heard by all attendees.

  11. We start on time and do not wait for people. People are expected to join no later than the scheduled minute of the meeting (before :01 if it is scheduled for :00). The question 'is everyone here' is not needed.

  12. It feels rude in video calls to interrupt people. This is because the latency causes you to talk over the speaker for longer than during an in-person meeting. We should not be discouraged by this, the questions and context provided by interruptions are valuable. This is a situation where we have to do something counter-intuitive to make all-remote meetings work. In GitLab, everyone is encouraged to interrupt the speaker in a video call to ask a question or offer context. We want everyone to contribute instead of a monologue. Just like in-person meetings be cognizant of when, who, and how you interrupt, we don't want manterrupting.

  13. We end on the scheduled time. It might feel rude to end a meeting, but you're actually allowing all attendees to be on time for their next meeting.

  14. Do not use the chat of products like Zoom to communicate during the call, use the linked document instead. This allows everyone to contribute additional questions, answers, and links in the relevant place. It also makes it easier for people in conflicting timezones to contribute questions before the call and makes it easier to review questions and answers after the call, which can be before watching the recording.

  15. Write down your questions in the agenda before vocalizing. Always ask people to vocalize their questions to provide the most detailed context and for any people that only use audio, for example listening to a recording of the call later while running.

  16. You do not need to remind other people to vocalize their questions. Just say their name and a keyword of the question. 'Jay about credit-cards'

  17. If there isn’t a note taker listed in the document at the start of the meeting, people should self-note-take. Consider asking other people to write down the answers in real-time to allow the person who asked the question to focus on the answer. The person asking the question can touch up the answer when the conversation has moved on to something less relevant to them.

  18. Every comment is document worthy, even small support comments such as +1 or Very Cool!.

  19. It is unusual to smoke in an open office or video conference, vaping is associated with this. For this reason we ask that you don't vape during calls, and if you absolutely have to, kindly switch your camera off.

  20. Speak up when you notice something is not working. If you notice someone's microphone, web cam or latency is causing issues for them it is good to speak up. On a video call it can be harder for the speaker to notice that they aren't being understood compared to a face to face conversation. As such you will be doing them a favour by speaking up early to let them know that they are having a problem. Also see Hear nothing say something for further explanation.

You are the manager of your attention

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.

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.

First Post is a badge of honor

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.

Hybrid calls are horrible

In calls that have remote participants everyone should use have their own equipment (camera, headset, screen).

When multiple people share equipment the following problems arise for remote participants:

  1. Can't hear the sharing people well.

  2. Background noise since the microphone of the sharing people on all the time.

  3. Can't clearly see facial expressions since each face takes up only a small part of the screen.

  4. Can't easily see who is talking since the screen shows multiple people.

  5. Hard getting a word in since their delay is longer than for the sharing people.

The people sharing equipment also have problems because they don't have their own equipment:

  1. Can't easily screen share something themselves.

  2. Trouble seeing details in screen sharing since the screen is further away from them.

  3. Can't scroll through a slide deck at their own pace.

  4. Sharing people can't easily participate (view or type) in a shared document with the agenda and meeting notes.

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:

  1. It is annoying to first hear someone talk in the room and then hear it over audio with a delay.

  2. It is hard to consistently mute yourself when not talking to prevent someone else's voice coming through your microphone as well.

User Communication Guidelines

  1. Keep conversations positive, friendly, real, and productive while adding value.

  2. If you make a mistake, admit it. Be upfront and be quick with your correction. If you're posting to a blog, you may choose to modify an earlier post. Just make it clear that you have done so.

  3. 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.

  4. Assume positive intent and explicitly state the strongest plausible interpretation of what someone says before you respond, not a weaker one that's easier to criticize. Rapoport's Rules also implores you to list points of agreement and mention anything you learned.

  5. Answer questions, thank people even if it’s just a few words. Make it a two way conversation.

  6. Appreciate suggestions and feedback.

  7. Don't make promises that you can't keep.

  8. Guide users who ask for help or give a suggestion and share links. Improving Open Development for Everyone, Types of requests.

  9. When facing negative comment, respond patiently and treat every user as an individual, people with the strongest opinions can turn into the strongest supporters.

  10. By default, discussions in issues and MRs are public and could include participation of wider community members. It is important to make the wider community members feel welcome participating in discussions and sharing their view. Wider community members also submit MRs to help improve our website/handbook and this is often their first contribution to GitLab. We want to make sure that we are responsive to their contributions and thank them for helping improve GitLab.

  11. Adhere to the Code of Conduct in all communication. Similarly, expect users to adhere to the same code when communicating with the GitLab team and the rest of the GitLab community. No one should accept being mistreated.

Writing Style Guidelines

  1. At GitLab, we use American English as the standard written language.

  2. Do not use rich text, it makes it hard to copy/paste. Use Markdown to format text that is stored in a Git repository. In Google Docs use "Normal text" using the style/heading/formatting dropdown and paste without formatting.

  3. Don't use ALL CAPS because it feels like shouting.

  4. We use Unix style (lf) line endings, not Windows style (crlf), please ensure *.md text eol=lf is set in the repository's .gitattributes and run git config --global core.autocrlf input on your client.

  5. Always write a paragraph on a single line. Use soft breaks ("word wrap") for readability. Don't put in a hard return at a certain character limit (e.g., 80 characters) and don't set your IDE to automatically insert hard breaks. Merge requests for the blog and handbook are very difficult to edit when hard breaks are inserted.

  6. Do not create links like "here" or "click here". All links should have relevant anchor text that describes what they link to, such as: "GitLab CI source installation documentation". Using meaningful links is important to both search engine crawlers (SEO) and accessibility for people with learning differences and/or physical disabilities. This guidance should be followed in all places links are provided, whether in the handbook, website, GoogleDocs, or any other content. Avoid writing GoogleDocs content which states - 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.

  7. Always use ISO dates in all writing and legal documents since other formats lead to online confusion. Use 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.

  8. GitLab operates on a Fiscal Year offset from the calendar year. When referring to a fiscal year or quarter, please use the following abbreviations:

    1. "FY20" is the preferred format and means: Fiscal Year 2020, the period running from February 1, 2019 through January 31, 2020

    2. "Q1" = the first quarter of the current Fiscal Year, so on Feb 1, 2020, "Q1" is the period from Feb. 1, 2020 through April 30, 2020. Note that Epics in GitLab follow Calendar Years and Quarters.

    3. When referring to a quarter in a future or past year, combine the two above: "FY21-Q1"

    4. When financial data is presented include a note to indicate fiscal year (e.g. "Fiscal Year ending January, 31 'yy")

  9. Remember that not everyone is working in the same timezone; what may be morning for you is evening for someone else. Try to say 3 hours ago or 4 hours from now, or use a timestamp, including a timezone reference.

  10. We use UTC as the timezone for engineering (for example production postmortems) and all cross-functional activities related to the monthly release. We use Pacific Time (PT) for all other uses since we are a San Francisco-based company. Please refer to time as "9:00 Pacific" or 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.

  11. When specifying measurements, please include both Metric and Imperial equivalents.

  12. Although we're a San Francisco based company we're also an internationally diverse one. Please do not refer to team members outside the US as international, instead use non-US. Please also avoid the use of offshore/overseas to refer to non-American continents.

  13. If you have multiple points in a comment or email, please number them. Numbered lists are easier to reference during a discussion over bulleted lists.

  14. When you reference an issue, merge request, comment, commit, page, doc, etc. and you have the URL available please paste that in.

  15. In making URLs, always prefer hyphens to underscores, and always use lowercase.

  16. The community includes users, contributors, core team members, customers, people working for GitLab Inc., and friends of GitLab. If you want to refer to "people not working for GitLab Inc." just say that and don't use the word community. If you want to refer to people working for GitLab Inc. you can also use "the GitLab Inc. team" but don't use the "GitLab Inc. employees".

  17. When we refer to the GitLab community excluding GitLab team members please say "wider community" instead of "community".

  18. All people working for GitLab (the company) are the GitLab team. We also have the Core team that consists of volunteers.

  19. Please always refer to GitLab Inc. people as GitLab team members, not employees.

  20. Always write "GitLab" with "G" and "L" capitalized, even when writing "GitLab.com", except within URLs. When "gitlab.com" is part of a URL it should be lowercase.

  21. Always capitalize the names of GitLab products, product tiers, and features.

  22. Write a group name as "Stage:Group" when you want to include the stage name for extra context.

  23. Do not use a hyphen when writing the term "open source" except where doing so eliminates ambiguity or clumsiness.

  24. Monetary amounts shouldn't have one digit, so prefer $19.90 to $19.9.

  25. If an email needs a response, write the answer at the top of it.

  26. Use the future version of words, just like we don't write internet with a capital letter anymore. We write frontend and webhook without a hyphen or space.

  27. Our homepage is https://about.gitlab.com/ (with the about. and with https).

  28. Try to use the active voice whenever possible.

  29. Refer to environments that are installed and run "on-premises" by the end-user as "self-managed."

  30. If you use headers, properly format them (## 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.

  31. Always use a serial comma (a.k.a. an "Oxford comma") before the coordinating conjunction in a list of three, four, or more items.

  32. Always use a single space between sentences rather than two.

  33. Read our Documentation Styleguide for more information when writing documentation.

  34. Do not use acronyms when you can avoid them. Acronyms have the effect of excluding people from the conversation if they are not familiar with a particular term. Example: instead of MR, write merge request (MR).

    1. If acronyms are used, expand them at least once in the conversation or document and define them in the document using Kramdown abbreviation syntax. Alternatively, link to the definition.

  35. We segment our customers/prospects into 4 segments Strategic, Large, Mid-Market, and Small Medium Business (SMB).

Visuals

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.

Situation-Complication-Implication-Position-Action-Benefit (SCI-PAB®)

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.

  1. Situation - Expresses the current state for discussion.

  2. Complication - Summarizes the critical issues, challenges, or opportunities.

  3. Implication - Provides insight into the consequences that will be a result of if the Complications are not addressed.

  4. Position - Notes the presenter's opinion on the necessary changes which should be made.

  5. Action - Defines the expectations of the target audience/listeners.

  6. Benefit - Clearly concludes how the Position and Action sections will address the Complications. This method can be used in presentations, emails, and everyday conversations.

Example - The Management team asking for time to resolve a problem

  1. S - The failure rate last year for product X1 was an acceptable 1.5%.

  2. C - Because of supply shortages in the current fiscal year we are forced to change the material of a key component.

  3. I - Unfortunately, that resulted in the failure rate doubling this year.

  4. P - It is critical we address this problem immediately.

  5. A - Please approve the team 5 days to investigate the specific causes of the increase and establish the necessary next steps.

  6. B - By doing this we will reduce the failure rate to an acceptable level and develop guidelines for preventing such problems in the future.

Some examples can be found at SCI-PAB - Six Steps To Reach Your Audience.

Company phone number

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.

Organization code names

  1. Listed in Google Sheet under 'Organization code names'

  2. To make it easier to recognize code names we base them on classic car models.

There are two types of code names:

  1. Don't mention publicly We can use code names anywhere we regularly share items in that medium with people outside the company: issue trackers, Group Conversations, etc. For these we don't have to use code names in things that are never published: SalesForce, Zuora, Zendesk, and verbal conversations.

  2. Don't write down there are organizations that we shouldn't write down anywhere.

Ubiquitous language

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.

Make sure that domains don't overlap, for example organization size and deal size don't reuse words to prevent overlap.

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 if 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 terms

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:

  1. Mutually Exclusive: nothing is referenced by more than one term

  2. Collectively Exhaustive: everything is covered by one of the terms

  3. Few words: the longer terms are the more likely it is people will not use all of them and cause confusion, avoid acronyms because they are hard to remember (we're open to a few words to replace MECEFU as an acronyms :)

  4. Ubiquitous language: defined above

An example of a MECEFU term is our sales segmentation:

  1. Mutually Exclusive: There is no overlap between the numbers and there is a single dimension.

  2. Collectively Exhaustive: Everything for 0 to infinite employees is covered.

  3. Few words: Mid-market is a natural combination and SMB is abbreviated.

  4. Ubiquitous language: We're not using the word 'Enterprise' which already can refer to our Enterprise Edition distribution.

One nit-pick is that the Medium of SMB and Mid of Mid-Market sound very similar.

Simple Language

Simple Language is meant to encourage everyone at GitLab to simplify the language we use. We should always use the most clear, straightfoward, 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:

  • Confuse people and create a barrier for participants of your conversation.

  • Cause others to not speak up in a meeting because they don't understand what you're saying.

  • Are not inclusive of those whose first language is not English.

  • Do not add value with your words.

When you do use Simple Language, you:

  • Get work done more efficiently.

  • Build credibility with your audience (your team, coworker, customer, etc.).

  • Keep people's attention while you're speaking.

  • Come across more confident and knowledgable.

Here's an example:

Original sentence

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.

Instead of…

Try…

Getting buy-in/Getting alignment

Asking for feedback since DRIs make decisions

Synergy

Effective Collaboration

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

Inefficient things shouldn't sound positive

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.

Deep Dives

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. This aligns with how we work since everything at GitLab is public by default.

– specific comms tools

Email

  1. Send one email per subject as multiple items in one email will cause delays (have to respond to everything) or misses (forgot one of the items).

  2. Always reply to emails by replying to all, even when no action is needed. This lets the other person know that you received it. A thread is done when there is a single word reply, such as OK, thanks, or done.

  3. If you're sending an email to a large group of people (or a distribution list), put those recipients in BCC (rather than in the "To" field) so that a reply all won't ping hundreds of people.

  4. If you forward an email without other comments please add FYI (for your information), FYA (for your action), or FYC (for your consideration). If you forward an external request with FYC it just means the person who forwarded it will not follow up on the request and expects you to decide if you should follow up or not, the terms comes from movie promotion to voters.

  5. Email forwarding rules are specified in the shared Email, Slack, and GitLab Groups and Aliases Google Doc accessible only to people in the company. If you want to be added or removed from an internal alias, change a rule, or add a forwarding email alias, please suggest an edit in the doc and submit a new access request.

  6. Only G-Suite domain admins are allowed to provision Google Groups and email distributions.

  7. Emails are asynchronous, for example, if your manager emails you on a weekend it is fine to reply during the workweek.

  8. If an email is or has become urgent feel free to ping people via chat referencing the subject of the email.

  9. If you or your team needs to send an email to a group of team members, not grouped in a current Google email group, and specifically related to PII (location, state, country, etc) please contact a Total Rewards Analyst at total-rewards@gitlab who can create an email list from BambooHR data, with approval.

  10. Where appropriate, consider using professional salutations including Hi or Hello and avoid colloquial expressions such as Hey, Oh, or Sup. Sometimes only the person's name is suitable. The level of formality should often mirror the formality from previous messages when communicating with internal team members as well as external persons.

  11. Try to always use a person's name when starting or responding to a message, especially if there are multiple persons cc'd, so that the adressee knows you are addressing them.

  12. Make sure all relevant letters and words that need capitalization are capitalized, such as the start of sentences or the word "I".

  13. Proofread your messages so that sentences are punctuated correctly, typos are fixed, and grammar is corrected. Consider using the really helpful Grammarly tool - this tool is great for both native English speakers and for those who use English as an additional language.

  14. All messages and replies are signed with a professional send-off (ex. Best regards), your name, and your signature block.

Slack

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:

  1. obtaining approvals;

  2. documenting decisions;

  3. storing official company records or documents; or

  4. sharing personal or sensitive information regarding any individuals

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.

Avoid Direct messages

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.

  1. When using Slack for work-related purposes, please avoid direct messages. Direct messages discourage collaboration. You might actually be contacting the wrong person, and they cannot easily redirect you to the right person. If the person is unavailable at the moment, it is less efficient because other people cannot jump in and help. Use a public channel and mention the person or group you want to reach. This ensures it is easy for other people to chime in, involve other people if needed, and learn from whatever is discussed.

  2. If someone sends you a work-related direct message, it is okay to let them know you'd like to take the conversation to a public channel, linking to this section of the handbook. The process might look something like:

  3. In the direct message: 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)

  4. In the appropriate public channel: @Person asked "question" in a DM, pulling that out here if anyone else has input.

  5. Answer the question in a thread on that channel message, allowing others to benefit.

  6. If you find yourself getting a lot of direct messages that should go in a public channel, consider changing your Slack status to an attention grabbing emoji and set it to something like:

  7. Please consider posting in a public channel before direct messaging

  8. Why direct message me when you can post in a public channel?

  9. If you must send a work-related direct message, don't start a conversation with "Hi" or "Hey" as that interrupts their work without communicating anything. If you have a quick question, just ask the question directly, and the person will respond asynchronously. If you truly need to have a synchronous communication, then start by asking for that explicitly, while mentioning the subject. e.g., "I'm having trouble understanding issue #x, can we talk about it quickly?".

Do not use group direct messages

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 hinderance 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.

Why we track % of messages that are not DMs

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:

  1. communication is siloed

  2. as we grow, people may be reaching out to the wrong person

  3. if you have a question, other people might have it too

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 DMs to consist of less than 25% of messages. At the time that we set this target, it is >80% 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, recruiting- 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.

Use Public Channels

  1. If you use Slack and plan to message 3 or more people, we recommend a channel for customer/issue/project/problem/partnership.

  2. If something is important but not urgent - like complimenting or encouraging the entire team - use email or post in the channel without @-mentioning the team.

  3. It's not rude to leave a channel. When you've had your questions answered or are no longer interested, feel free to leave the channel so it won't distract you anymore.

  4. The usage of ChatBots for integrations can sometimes depend upon the name of the channel. You should consult the channel about such integrations before changing the name of commonly used/popular channels to avoid inadvertently breaking integrations.

Be respectful of your own time

  1. You should try avoid information overload in order to be productive and efficient with your time. While it can be tempting to read every message in every Slack channel you subscribe to, it’s very challenging, not expected, and not necessary.

  2. One method for avoiding Slack overload is to focus your Slack reading on Starred channels and Threads. Starred channels are like "favorites" and allow you to follow messages from those channels easily. Threads consist of any conversation in which you are mentioned and allow you to easily track conversations in which you have direct involvement.

  3. Use your notification settings liberally. Depending on how you use Slack this could range from limiting notifications to critical messages outside of your working hours to turning off Slack notifications entirely. Find the right balance for you and stick to it.

Be respectful of others' time

  1. Start by understanding what we mean by respecting time. We should err toward putting material into channels over DMs and public channels over private channels even though we understand that this will generate more messages that can be read by more people. Respecting time is not about reducing the overall volume of channel messages that team members receive. It's about making sure that messages are targeted, expectations for asynchronous responses are clear, and we are communicating with consideration. The following tips provide ways to work respectfully with others given this context.

  2. If you're only referring to someone, but don't actually need their attention, and want to spare them from getting notified, spell out their name normally without @ mentioning them.

  3. Slack messages should be considered asynchronous communication, and you should not expect an instantaneous response; you have no idea what the other person is doing.

  4. Because we work globally, you may receive Slack mentions at any time of day. Please consider enabling Slack's Do not disturb functionality so you don't get interrupted, for example, in your offtime. You can also use Slack's Notification schedule tool, this can be found in Slack's Preferences tab. To access this, open slack, hover your cursor at the top of your screen, click slack, then preferences, under the notifications tab you will see notification schedule. This tool allows you to pick what days / times you get notifications.

  5. Do not feel obligated to respond to Slack messages when you are not working.

  6. Feel free to send a colleague a link to these guidelines if the communication in Slack should be done asynchronously.

  7. Please avoid using @here or @channel unless this is about something urgent and important. In chat, try to keep the use of keywords that mention the whole channel to a minimum. They should only be used for pings that are both urgent and important, not just important. By overusing channel mentions, you make it harder to respond to personal mentions promptly since people get pinged too frequently. Additionally, if you are planning to @mention a 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:

    1. Use @here to notify all currently active members in the room. Please only use @here if the message is important and urgent.

    2. Use @channel to notify ALL members in the room, irrespective of away status. Please only use @channel if the message is important and urgent.

  8. If you are aware that your teammate is on vacation, avoid mentioning them in a high volume channel. It will be difficult to find the information or question when they return. If you need to ensure they refer back to the thread, ensure to send them a link to the relevant Slack message through a direct message.

Managing noise in Slack

Here are some 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.

General Guidelines

  1. Everyone can contribute, and while opinions are important to provide perspective, we value proposals and iteration. If the subject is of value to the wider community, consider commenting on an existing issue or opening a new merge request instead.

  2. Use the :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 #questions, and #git-help.

  3. In general, you can think of emoji reactions as equivalent to body-language responses we use in real-life conversations, such as nodding your head as encouragement when a verbal (or in Slack, written) response might be too much.

  4. In public channels, threads are valuable for keeping conversations together. If you want to respond to a question or comment in a channel, please start a thread instead of responding below them in the channel. This helps to keep the discussion in one place where it is easy to follow, and reduces noise as each message in a thread does not result in an unread message for everyone in the channel.

  5. Unless you're in an active chat, don't break up a topic into multiple messages as each one will result in a notification which can be disruptive. Use threads if you want to provide extra info to the question/comment you posted.

  6. If you are having a hard time keeping up with messages, you can update your preferences to have Slack email you all notifications. To change the setting, go to Preferences > Notifications > When I'm not active on desktop... and "send me email notifications."

  7. If you agree in a message to start a video call (typically by asking "Call?") the person that didn't leave the last comment starts the call. So either respond to the "Call?" request with a video link or say "Yes" and let the other person start it. Don't say "Yes" and start a call 5 seconds later since it is likely you'll both be creating a video call link at the same time.

  8. As an admin of the Slack workspace, if given the option to "Disable future attachments from this website" when removing an attachment from a message this will block the link/domain from unfurling in the entire Slack workspace. Be careful and deliberate when choosing this option as it will impact every user in the workspace.

  9. When referencing a Slack thread in a GitLab.com issue, don't only link to the thread. Not only will people outside of the GitLab organization be unable to access the content, but the link will expire after the Slack retention period expires. Instead:

    1. Review the contents for confidentiality of users, customers, or any other sensitive information before posting.

    2. Copy and paste the relevant parts of the thread into the issue using blockquote formatting.

    3. Link to the Slack thread and include (internal) after the link. For example: https://gitlab.slack.com/archives/C0AR2KW4B/p1555347101079800 (internal)

    4. Post a link to the issue note in the Slack thread to let others know that discussion has moved to the issue.

  10. When sharing Slack messages within Slack, prefer using the 'Share' function rather than copying the link and pasting that into another channel. With 'Share', the original message will be displayed in the destination allowing recipients to read it directly, as compared to a link which they must at least hover-over to get a brief snippet, and click on to read the entire message (taking them to the other channel).

    1. To 'Share message', hover over the message and in the tooltip box that appears on the right of the window, click on the right-facing arrow icon.

  11. When selecting your Slack display name, please do not have your name in all capital letters as this is often associated as shouting in written communications.

Getting in touch with the e-group

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.

Member

Channel

CEO

#ceo

CFO

#finance

EVP of Product

#product

EVP of Engineering

#evpe

CRO

#cro

CMO

#marketing

CPO

#peopleops

CLO

#legal

Key Slack channels

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.

Channel

Purpose

#company-fyi

#whats-happening-at-gitlab

Open to posts from all team members including reminders, events, project updates, etc.; all GitLab team members are automatically added to this channel.

#diversity_inclusion_and_belonging

#expense-reporting-inquiries

#git-help

Specific questions about using Git in the terminal.

#intheparenthood

Cute kid photos, tips on getting your children ready for school, etc.

#is-this-known

Get help in finding existing issues for existing problems.

#it_help

Create a Help Request in this channel should you have any IT general questions or trouble with setup (e.g. 2FA, accounts, etc.).

#loc-specific channels

Search loc_insert your location to connect with GitLab team members in your location (e.g #loc_italy, #loc_chicagoland, #loc_mexico, etc.).

#mr-buddies

For any questions regarding merge requests.

#new_team_members

For new GitLab team members to introduce themselves to the company and for existing team members to share updates with new hires.

#office-today

#payroll

#peopleops

#questions

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!

#random

Anything and everything from photos, news, food, music, etc.

#recruiting

#remote

#team-member-updates

To stay updated on transitions/promotions, new GitLab team members joining, work anniversaries, etc.

#thanks

#total-rewards

#travel

#women

Employee resource group for members and allies.

Slackbots

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 onces 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.

you guys

hey guys, hi guys, you guys, salesman, salesmen, businessman, businessmen

on your toes, on anybody's toes

It's probably okay.

aggressive

Did you mean ambitious?

gitlabber, gitlabbers

Why are we upgraded to the Plus tier?

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.

When would GitLab use 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.

Are my direct messages and private channel conversations completely private?

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.

Need to add a new app to Slack

GitLab has choosen 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:

  1. Make sure the app hasn't been pre-approved by our team by clicking on Apps in the left sidebar and find Available Apps. To find pre-approved apps in the App Directory, click Pre-Approved below Categories in the left column.

  2. If the app isn't pre-approved, you can click on Add to Slack.

  3. Add a custom message with more context about your request and also link the vendor approval issue.

  4. Click Submit. You'll receive a direct message from Slackbot when your request has been reviewed by the team.

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.

Emergency Chat

Slack is down

Use the "Slack Down!" group chat on Zoom.

  1. In the Zoom desktop app go to the Contacts tab

  2. Click +

  3. Click "Join a Channel"

  4. Search "Slack down!"

  5. Click "Join"

Once service is restored, go back to Slack.

Zoom is down

Use Slack calls.

  1. Navigate to the appropriate Slack channel or direct message.

  2. Use /call to trigger a call.

  3. You may need to give permissions if it's the first time you are using Slack calls.

Once service is restored, go back to Zoom.

Slack and Zoom are down

Join the Slack Down! room on Hangouts Chat. Once service is restored, go back to Slack and Zoom.

Google Docs

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 G Suite (formerly Google Apps) account and set the visibility and access controls according to the following guidelines:

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.

The recommended defaults when sharing a document for GitLab internal purposes is setting visibility to On - GitLab and access to Can Edit. Reference Google's documentation on Link Sharing to learn more.

Good Practices & Helpful Tips

  1. If you have content in a Google Doc that is later moved to the website or handbook, deprecate the Google Doc.

  2. 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.

  3. If you are having trouble finding a shared Google Doc, make sure you Search in Google Drive.

  4. In our handbook, if you find yourself wondering whether it is better to provide a public link to a Google Doc vs. writing out the content on the website, use the following guideline: Is this document frequently adapted / customized? If yes, then provide a link, making sure that the document can be commented on by anyone with the link. For instance, this is how we share our employment contracts. If the document is rarely customized, then provide the content directly on the site and deprecate the Google Doc.

  5. If you want to quickly find where a team member's cursor is in a Google Doc, click their icon at the top of the document and the app will jump you to the current location. This works in Sheets and Presentations as well.

  6. You can set the notifications on a Google Doc so you only get emailed when someone tags you directly instead of getting emails for every comment. Click on "notifications" and select "Only yours". By the way, when you create the doc, it defaults to All, but when you are just shared with it, it defaults to Only yours. There is no global default. .

  7. You can find a template of the GitLab letterhead on the shared Google Drive. Please be sure to make a copy of the document to your Google Drive before customizing the template for your use.

  8. If you want to have the Google Doc be readable to the public, do not change the sharing settings from 'Editable by Everyone at GitLab', publish the document instead.

  9. In all cases, the sharing settings (who a document is shared with, if it is visible to the whole company, etc.) on a Google Doc should be the single source of truth for the confidentiality of the document.

How to publish a Google Doc

  1. Under the 'File' menu, go to 'Publish to the web'.

  2. A new pop-up 'Publish to the web' will appear, click 'Publish'.

  3. A confirmation will appear on the top of the doc, click 'OK'.

  4. Back in the pop-up 'Publish to the web', a link to share will appear.

  5. Add the link to the top of the document after the text: "Publicly shared via"

  6. Use this link to share to your audience.

How to deprecate a Google Doc

  1. Add 'Deprecated: ' to the start of the title.

  2. Remove the content you moved.

  3. Add a link to the new location at the beginning of the doc/first slide/first tab.

  4. Add a link to the merge request or commit that moved it (if applicable).

Zoom

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.

Usage guidelines

Please visit the Tools and Tips handbook for Zoom usage guidelines.

Using Zoom for personal connection

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.

You can arrange these by joining the #kid-juicebox-chats Slack channel — a spin on our usual Coffee Chats.

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.

Zoom webinars

Please visit a detailed guide covering everything you need to know about hosting or participating in a GitLab webinar.

Google Calendar

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':

  1. Personal appointments.

  2. Confidential & sensitive meetings with third-parties outside of GitLab.

  3. 1-1 performance or evaluation meetings.

  4. Meetings on organizational changes.

There are several benefits and reasons to sharing your calendar with everyone at GitLab:

  1. Transparency is one of our values and sharing what you work on is in line with our message of "be open about as many things as possible".

  2. Due to our timezone differences, there are small windows of time where our availabilities overlap. If other members need to schedule a new meeting, seeing the details of recurring meetings (such as 1-1s) will allow for more flexibility in scheduling without needing to wait for a confirmation from the team member. This speaks to our value to be more efficient.

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.

Posting or Streaming to YouTube

See the YouTube page for options and instructions for posting recordings and live streaming to our YouTube channels.

GitLab Communication Knowledge Assessment

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 learning@gitlab.com.