Code of Conduct
We pledge to make participation in our company, our projects, and our community an open, welcoming, and harassment-free experience for everyone, regardless of ability, age, body size, skin color, culture, education, ethnicity, gender identity and expression, immigration status, level of experience, mental and physical ability, nationality, personal appearance, political beliefs, race, relationship or family status, religion, sex, sexual identity and orientation, or socio-economic status.
We care about the safety and comfort of everyone in our community, including colleagues, contributors, and users.
Team member philosophy
If you work at Sourcegraph or participate in our projects and community, you are important to us. If for any reason you don’t feel that, please let us know.
Your ultimate success with Sourcegraph will be a function of your personal agency and the environment we create as a team. We want that environment to set you up for success and enable you to thrive while realizing your professional goals and dreams.
Our mission is to enable everyone to unlock the value of code. For us, that means first helping those who code for a living understand the world of code in which they work. Ultimately, it means making the universe of code accessible to billions of people, most of whom currently cannot partake in the code economy. We believe the ability to make a living from code should be available to all.
We live these values within our own organization: We welcome people from a diverse set of backgrounds, and we want every teammate to grow and flourish at Sourcegraph. We believe that a team with a diverse set of viewpoints and experiences united by our common cause will give us the best chance of realizing our mission.
We encourage you to:
- Be welcoming. Our communities and teams welcome and support people of all backgrounds and identities.
- Be respectful. We are a worldwide community of professionals, and we conduct ourselves as such. Disagreement is no excuse for poor behavior. Unacceptable behavior includes, but is not limited to:
- Aggressive threats or language.
- Discriminatory or derogatory jokes and language.
- Posting sexually explicit or violent material.
- Posting, or threatening to post, people’s personally identifying information (“doxing”).
- Insults, especially those using discriminatory terms or slurs.
- Behavior that could be perceived as unwanted sexual attention or advances.
- Public or private harassment.
- Advocating for or encouraging any of the above behaviors.
- Be friendly and patient. Remember you might not be communicating in someone else’s primary spoken or programming language, and others may not have your level of understanding.
- Understand disagreements. Disagreements, both social and technical, are useful learning opportunities. Seek to understand other viewpoints, and resolve differences constructively.
- Be comfortable debating ideas, and keep debates focused on the topic at hand and the concrete actions that will be taken as an outcome of the discussion.
- Be forgiving in your advice, and careful and precise with the things you produce.
- Exercise empathy. We all have bad days. Avoid attributing to character flaws what might better be explained by situational factors (Fundamental Attribution Error). Show empathy towards coworkers and community members.
- Praise in front of groups; criticize constructively (1-on-1) when solicited. Whether you’re an individual contributor, a manager, or a community manager, be clear and concise without language that can be misconstrued as aggressive or personally attacking. Generally, posting unsolicited criticism in public Slack channels is not effective. Praise, however, does belong in public. Some ways we praise at Sourcegraph include:
- Comments in the #thanks Slack channel or in team-specific Slack channels.
- In company or team meetings.
- Sending an eCard/gift card or written note.
- Giving a few hours off (if you’re in a position to do so).
- Sending swag (cup, t-shirt, stickers, socks).
- Sending a tweet or LinkedIn Kudo.
Keep the following things in mind:
- When representing Sourcegraph, be mindful that your words are a reflection on Sourcegraph and the many individuals who make up the team.
- Those in management roles should be especially mindful of their personal beliefs and biases when acting on behalf of the company.
- Appreciate uniqueness and do not treat individual opinions as representative of the opinion of the larger group.
- Engage others to ensure their voices are heard. Constructive dissent should be addressed directly.
- Public polls and private ballots often do not yield the same result. Keep this in mind when gauging consensus.
- Handle interpersonal conflict with professionalism and integrity. If there is strong disagreement, feedback should be given directly and clearly, without heat, or implicit denigration.
- You will work with others who have personal opinions or beliefs that differ from your own. Strive to overcome these differences and find common cause.
- Be aware of power differentials. If you have the ability to threaten someone’s job, your criticism may be taken more harshly than you intend.
This code is not exhaustive or complete. It serves to capture our common understanding of a productive, collaborative environment. We expect the code to be followed in spirit as much as in the letter.
Leadership is responsible for clarifying the standards of acceptable behavior and is expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Leadership has the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
This code of conduct applies to any individual or community member that is representing the project or its community within both project spaces and public spaces, including (but not limited to) social media, online or offline events, and email or Slack exchanges.
Note: Some Sourcegraph-managed communities have codes of conduct that pre-date this document and issue resolution process. While communities are not required to change their code, they are expected to use the resolution process outlined here. The review team will coordinate with the communities involved to address any concerns.
We encourage all communities, teams, employees, and team members to resolve issues on their own whenever possible. This builds a broader and deeper understanding and ultimately a healthier interaction.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting [email protected] The conduct team is obligated to maintain confidentiality of the person reporting the incident at all times.
In your report please include:
- Your contact information.
- Names (real, usernames or pseudonyms) of any individuals involved. If there are additional witnesses, please include them as well.
- Your account of what occurred, and if you believe the incident is ongoing. If there is a publicly available record (e.g., a mailing list archive or a public chat log), please include a link or screen captures.
- Any additional information that may be helpful.
All reports will be reviewed by a multi-person team. Where additional perspectives are needed, the team may seek insight from others with relevant expertise or experience. Involved parties are never part of the review team.
Anyone asked to stop unacceptable behavior is expected to comply immediately. If an individual engages in unacceptable behavior, the review team will take appropriate action, including a permanent ban from the community.
I disagree with the decision to…
I disagree with the idea that…
Disagreements about decisions are a healthy part of team collaboration. By challenging each other individually, our team collectively discovers the best solution.
Disagreeing with a decision
When you are challenging a decision, it is important to do so in a constructive way. Failure to do so may lead to interpersonal conflict.
Here is a process that you can follow to disagree with a decision productively.
- Proactively try to understand the decision by reviewing available information (Slack conversations, RFCs).
- Start a conversation with the decision maker. In this conversation:
- Communicate what information you reviewed in (1) and ask the decision maker to share any information or context that is missing from what you reviewed.
- State clearly that you disagree with the decision and your top 3 reasons for disagreeing. Share why you think these concerns are important or impactful.
- Ask the decision maker how they are thinking about tradeoffs and what they are optimizing for.
- Listen actively.
- Choose a course of action:
- Agree and commit to the decision.
- Disagree and propose an alternative solution. If your proposal is not accepted, choose a different option.
- Disagree and commit to the decision. Document in an appropriate location (e.g., comment in the relevant Slack thread or relevant RFC) your disagreement, reasons for disagreeing, and the fact that you are committing to the decision.
- Disagree and perform a clean escalation.
I don’t like working with $NAME because…
Interpersonal conflict is normal and natural; however, if left unresolved, it can be harmful to the health and productivity of our team. If you are having difficulties working with a teammate (or suspect a teammate is having difficulties working with you), then you should proactively work to resolve the situation by having a direct conversation with the person you are in conflict with. Nonviolent communication1, 2 is a useful tool for having productive conversations.
If you are unable to resolve the conflict directly with the other person, then perform a clean escalation.
Building a shared understanding
Building a shared understanding is a useful way to prevent and resolve conflicts. It is also a prerequisite for a clean escalation.
You have a shared understanding with another person if:
- They can describe your point of view accurately.
- You can describe their point of view accurately.
A shared understanding only requires that you understand the other person’s point of view. You do not need to agree with the other person’s point of view.
Here is a script you can use to build a shared understanding:
- Alice asks Bob to explain his point of view. > It seems like we are in conflict about X. Could you please explain your point of view to me?
- Bob explains his point of view.
- Alice asks any questions that she has about Bob’s point of view so that she can better understand it. Alice does not challenge Bob’s point of view, even if she disagrees with Bob. She is only seeking to understand.
- Alice says “I heard you say (repeat what Bob said). Is that right?”
- Bob either says “Yes” (and then the conversation repeats with the roles swapped), or he clarifies his point of view (and then Alice continues the conversation by repeating steps 3 and 4).
If, after establishing a shared understanding, both parties are still unable to move forward, then they should start a clean escalation.
Clean escalation is a process that can be used when there is a disagreement on the team about how to best pursue the organizational mission.
The mechanics are simple.
- Two people have a conflict.
- They attempt to resolve the conflict directly with each other.
- If they can’t resolve the conflict, then they come to a shared understanding of the situation and agree to cleanly escalate the conflict to their manager(s) together.
- The manager(s) verify that the pre-conditions for a clean escalation (i.e., the previous two steps) have been met.
- If so, the manager(s) can engage in a conversation to help resolve the conflict.
- If not, the manager(s) do not get involved in the conflict, and instead ask the involved parties to follow this documented clean escalation process.
- If the manager(s) are not able to resolve the conflict, they can cleanly escalate to the next level of management. This process continues until the issue is resolved.
Customer ethics criteria
We do not knowingly work with organizations that promote violence or hate, or that conflict with our company values or ethical principles of integrity and trustworthiness in a way that harms people. If anyone thinks an organization that we are working with (or considering working with) meets this criteria, contact @sqs.
This Code of Conduct has taken inspiration from the:
- Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
- Microsoft Open Source Code of Conduct, which is based on the template established by the TODO Group
- The clean escalation process is based on LinkedIn’s clean escalation policy that Fred Kofman wrote about in How to Escalate Disagreements Cleanly – A Coaching Conversation. The inline video walks through an edge case to give a better insight into how this process works in practice. It is worth watching before you initiate your first clean escalation.