Thank you for your interest in contributing to Carbon! There are many ways to contribute, and we appreciate all of them. If you have questions, please feel free to ask on our Discourse Forums or Discord Chat.
Everyone contributing to Carbon is expected to:
We also encourage anyone interested in contributing to check out all the information here in our contributing guide, especially the guidelines and philosophy for contributions
If you're looking for a quick way to contribute, commenting on proposals is a way to provide proposal authors with a breadth of feedback. The "Evolution > Ideas" forum is where authors will go for early, high-level feedback. The "Evolution > Proposal reviews" forum will have more mature proposals that are nearing the decision process. For more about the difference, see the evolution process.
When giving feedback, please keep comments positive and constructive. Our goal is to use community discussion to improve proposals and assist authors.
If you have ideas for Carbon, we encourage you to discuss it with the community, and potentially prepare a proposal for it. Ultimately, any changes or improvements to Carbon will need to turn into a proposal and go through our evolution process.
If you do start working on a proposal, keep in mind that this requires a time investment to discuss the idea with the community, get it reviewed, and eventually implemented. A good starting point is to read through the evolution process. We encourage discussing the idea early, before even writing a proposal, and the process explains how to do that.
Eventually, we will also be working toward a reference implementation of Carbon, and are very interested in folks joining in to help us with it.
As Carbon's design and eventually implementation begin to take shape, we'll inevitably end up with plenty of bugs. Helping us triage, analyze, and address them is always a great way to get involved. When we have the bug tracker(s) set up for this, we'll update this section with ideas of how to find these and get started.
We'd love to accept your documentation, pull requests, and comments! Before we can accept them, we need you to cover some legal bases.
Please fill out either the individual or corporate CLA.
Follow either of the two links above to access the appropriate CLA and instructions for how to sign and return it. Once we receive it, we'll be able to accept your documents, comments and pull requests.
NOTE: Only original content from you and other people who have signed the CLA can be accepted as Carbon contributions: this covers the GitHub repository, GitHub issues, Google Docs, Discourse Forums, and Discord Chat.
At present, we are using Google's CLA. In the future, we expect the Carbon ownership and IP to formally transfer from Google to a Carbon-specific foundation or other neutral third-party. When that happens, the foundation will take ownership of providing a CLA.
We use a few systems for collaboration which contributors should be aware of. Membership is currently invite-only.
Before using these systems, everyone must sign the CLA. They are all governed by the Code of Conduct.
The GitHub carbon-language organization is used for our repositories. To join:
Discourse Forums are used for long-form discussions. To join:
Discord Chat is used for short-form chats. To join:
A shared Google Drive is used for all of our Google Docs, particularly proposal drafts. To join:
All documents and pull requests must be consistent with the guidelines and follow the Carbon documentation and coding styles.
For both documentation and code:
For documentation:
For code:
We use pre-commit for automated checks, including formatting of documentation. Please see contribution tools for more information.
Please use pre-commit to simplify reviews.
Changes to Carbon documentation follow the Google developer documentation style guide.
Markdown files should additionally use Prettier for formatting.
Other style points to be aware of are:
If you're not sure what style to use, please ask on Discourse Forums.
A license is required at the top of all documents and files.
Google Docs all use this template. It puts the license at the top of every page if printed.
Markdown files always have at the top:
# DOC TITLE
<!--
Part of the Carbon Language project, under the Apache License v2.0 with LLVM
Exceptions. See /LICENSE for license information.
SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-->
For example, see the top of CONTRIBUTING.md's raw content.
Every file type uses a variation on the same license text ("Apache-2.0 WITH LLVM-exception") with similar formatting. If you're not sure what text to use, please ask on Discourse Forums.
Carbon repositories all follow a common pull-request workflow for landing changes. It is a trunk-based development model that emphasizes small, incremental changes and preserves a simple linear history.
Carbon's Contributing guidelines are based on Tensorflow and Flutter guidelines. Many thanks to these communities for their help in providing a basis.