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