# How to Contribute to fscrypt We'd love to accept your patches and contributions to this project. There are just a few small guidelines we ask you 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 GitHub pull requests for this purpose. Consult [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more information on using pull requests. ## Before you submit a pull request If you are making changes to the `fscrypt` component, you will need to have [govendor](https://github.com/kardianos/govendor) installed, and you will want to use the following additional commands: * `make update` - Updates the dependencies in the `vendor/` directory and updates the `VENDOR_LICENSES` file. * `make go` - Generates, builds, and tests all the Go code. Requires [protoc (v3.0 or later)](https://github.com/google/protobuf/releases) and [protoc-gen-go](https://github.com/golang/protobuf). * `make format` - Formats all of the go code. * `make lint` - Checks the code for style errors. Requires [`golint`](https://github.com/golang/lint). * `make all` - Runs the above commands and builds `fscrypt`. These commands should be run before submitting a pull request. Make sure that `$GOPATH/bin` is in you `$PATH`. All the above dependencies can be installed with: ``` bash # Grab the latest version of protoc from github.com/google/protobuf/releases > curl -L > protoc.zip > unzip protoc.zip -d protoc > sudo mv protoc/bin/protoc /usr/local/bin/ > rm -rf protoc.zip protoc/ # Grab the go packages in the standard manner > go get -u github.com/golang/protobuf/protoc-gen-go > go get -u github.com/kardianos/govendor > go get -u github.com/golang/lint/golint ```