| # Contributing | |
| We encourage community contributions to FlatBuffers through pull requests at the | |
| main | |
| [http://github.com/google/flatbuffers](http://github.com/google/flatbuffers) | |
| repository. | |
| !!! note | |
| The FlatBuffers project is not staffed by any full time Google employee, and | |
| is managed by a small team of 20%ers. So response time and expertise vary. | |
| ## Before you contribute | |
| Before we can use your contributions, you __must__ sign one of the following license agreements. The agreements are self-served at the following links. | |
| Our code review process will automatically check if you have signed the CLA, so | |
| don't fret. Though it may be prudent to check before spending a lot of time on | |
| contribution. | |
| ### Individual Contributions | |
| For individuals, the [Google Individual | |
| Contributor License Agreement | |
| (CLA)](https://cla.developers.google.com/about/google-individual?csw=1) which is | |
| self served at the link. The CLA is required since you own the copyright to your | |
| changes, even after your contribution becomes part of our codebase, so we need | |
| your permission to use and distribute your code. | |
| ### Corporate Contributions | |
| Contributions made by corporations are covered by the [Google Software Grant and | |
| Corporate Contributor License | |
| Agreement](https://cla.developers.google.com/about/google-corporate). | |
| ## Code Reviews | |
| All submissions require a code review via Github Pull Requests. | |
| 1. Please adhere to the [Google Style Guide](https://google.github.io/styleguide/cppguide.html) for the language(s) you are submitting in. | |
| 2. Keep PRs small and focused. Its good practice and makes it more likely your PR will be approved. | |
| 3. Please add tests if possible. | |
| 4. Include descriptive commit messages and context to the change/issues fixed. | |
| ## Documentation | |
| FlatBuffers uses [MkDocs](https://www.mkdocs.org/) to generate the static | |
| documentation pages served at | |
| [https://flatbuffers.dev](https://flatbuffers.dev). Specifically, we use the | |
| [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) framework. | |
| The documentation source is contained in the main repo under the | |
| [docs/](https://github.com/google/flatbuffers/tree/master/docs) directory. This | |
| [automatically](https://github.com/google/flatbuffers/blob/46cc3d6432da17cca7694777dcce12e49dd48387/.github/workflows/docs.yml#L6-L11) get built and published when the commit is made. | |
| ### Local Development | |
| We encourage contributors to keep the documentation up-to-date as well, and it | |
| is easy to with `MkDocs` local building and serving tools. | |
| First install `mkdocs-material` (see | |
| [Installation](https://squidfunk.github.io/mkdocs-material/getting-started/) for | |
| other ways) | |
| ``` | |
| pip install mkdocs-material | |
| pip install mkdocs-redirects | |
| ``` | |
| Then, in the `root` directory of flatbuffers, run | |
| ``` | |
| mkdocs serve -f docs/mkdocs.yml | |
| ``` | |
| This will continually watch the repo for changes to the documentation and serve | |
| the rendered pages locally. | |
| Submit your documentation changes with your code changes and they will | |
| automatically get published when your code is submitted. |