# How to Contribute We'd love to accept your patches and contributions to this project. There are just a few small guidelines you need to follow. ## Contributor License Agreement Contributions to this project must be accompanied by a Contributor License Agreement. You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project. Head over to to see your current agreements on file or to sign a new one. You generally only need to submit a CLA once, so if you've already submitted one (even if it was for a different project), you probably don't need to do it again. ## Code reviews All submissions, including submissions by project members, require review. We use a [Gerrit](https://www.gerritcodereview.com) instance hosted at https://chromium-review.googlesource.com for this purpose. ## Sending patches The basic git workflow for modifying libwebp code and sending for review is: 1. Get the latest version of the repository locally: ```sh git clone https://chromium.googlesource.com/webm/libwebp && cd libwebp ``` 2. Copy the commit-msg script into ./git/hooks (this will add an ID to all of your commits): ```sh curl -Lo .git/hooks/commit-msg https://chromium-review.googlesource.com/tools/hooks/commit-msg && chmod u+x .git/hooks/commit-msg ``` 3. Modify the local copy of libwebp. Make sure the code [builds successfully](https://chromium.googlesource.com/webm/libwebp/+/HEAD/doc/building.md#cmake). 4. Choose a short and representative commit message: ```sh git commit -a -m "Set commit message here" ``` 5. Send the patch for review: ```sh git push https://chromium-review.googlesource.com/webm/libwebp HEAD:refs/for/main ``` Go to https://chromium-review.googlesource.com to view your patch and request a review from the maintainers. See the [WebM Project page](https://www.webmproject.org/code/contribute/submitting-patches/) for additional details. ## Code Style The C code style is based on the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) and `clang-format --style=Google`, though this project doesn't use the tool to enforce the formatting. CMake files are formatted with [cmake-format](https://cmake-format.readthedocs.io/en/latest/). `cmake-format -i` can be used to format individual files, it will use the settings from `.cmake-format.py`. ## Community Guidelines This project follows [Google's Open Source Community Guidelines](https://opensource.google.com/conduct/).