| # Governance |
| |
| ## Is Bazel developed fully in the open? {#isbazelopen} |
| Unfortunately not. We have a significant amount of code that is not open source; in terms of rules, |
| only ~10% of the rules are open source at this point. We did an experiment where we marked all |
| changes that crossed the internal and external code bases over the course of a few weeks, only to |
| discover that a lot of our changes still cross both code bases. |
| |
| This complicates the development process and means that some changes will simply appear in the Bazel |
| repository without clear explanation. At the same time, it is difficult to collaborate or get actual |
| users without actually having the code in the open. Therefore, we are opening up the code, even |
| though some of the development is still happening internal to Google. |
| |
| ## Accepting Contributions |
| |
| ### Policy |
| We use the following rules for accepting code contributions. This is written from the perspective |
| that there is a group of people who cooperatively support the project (the *core contributors*). In |
| contrast, external contributors are not actively supporting the project, but just contributing |
| individual changes. At this time, all core contributors work for Google (see below for the full |
| list), but this will hopefully change over time. |
| |
| 1. We require all contributors to sign [Google's Contributor License |
| Agreement](https://cla.developers.google.com/). |
| 2. We accept well-written, well-tested contributions of rules written in Skylark, in a `contrib/` |
| directory or similar with clearly documented support policies. |
| 3. We accept well-written, well-tested cleanup and refactoring changes. |
| 4. We accept well-written, well-tested bug fixes to built-in rules. |
| 5. We accept well-written, well-tested feature contributions if a core contributor assumes support |
| responsibilities, i.e., readily answers support questions and works on bugs. This includes |
| feature contributions from external contributors. If there is no core contributor to support a |
| feature, then we will deprecate and subsequently delete the feature - we will give three months' |
| notice in such cases. |
| 6. We will not accept untested changes, except in very rare cases. |
| 7. We require a pre-commit code review from a core contributor for all changes. For the time being, |
| we will have to continue making changes across the internal and external code bases, which will be |
| reviewed internal to Google. |
| 8. We will roll back changes if they break the internal development processes of any of the core |
| contributors. |
| 9. We will move towards an open governance model where multiple parties have commit access, |
| roll-back rights, and can provide explicit support for features or rules. |
| 10. We will work with interested parties to improve existing extension points and to establish new |
| extension points if they do not run counter to the internal requirements of any of the core |
| contributors. |
| |
| ### Core Contributors |
| The group of core contributors is self-managing - core contributors are added by two supporting |
| votes from core contributors on the mailing list and no veto within four business days. We expect |
| that new contributors will submit a number of patches before they become core contributors. |
| |
| The current group is: |
| |
| `@google.com` |
| |
| - `dmarting` |
| - `hanwen` |
| - `jfield` |
| - `kchodorow` |
| - `laszlocsomor` |
| - `laurentlb` |
| - `lberki` |
| - `philwo` |
| - `ulfjack` |