github.com/minio/minio@v0.0.0-20240328213742-3f72439b8a27/CONTRIBUTING.md (about) 1 # MinIO Contribution Guide [![Slack](https://slack.min.io/slack?type=svg)](https://slack.min.io) [![Docker Pulls](https://img.shields.io/docker/pulls/minio/minio.svg?maxAge=604800)](https://hub.docker.com/r/minio/minio/) 2 3 ``MinIO`` community welcomes your contribution. To make the process as seamless as possible, we recommend you read this contribution guide. 4 5 ## Development Workflow 6 7 Start by forking the MinIO GitHub repository, make changes in a branch and then send a pull request. We encourage pull requests to discuss code changes. Here are the steps in details: 8 9 ### Setup your MinIO GitHub Repository 10 11 Fork [MinIO upstream](https://github.com/minio/minio/fork) source repository to your own personal repository. Copy the URL of your MinIO fork (you will need it for the `git clone` command below). 12 13 ```sh 14 git clone https://github.com/minio/minio 15 go install -v 16 ls /go/bin/minio 17 ``` 18 19 ### Set up git remote as ``upstream`` 20 21 ```sh 22 $ cd minio 23 $ git remote add upstream https://github.com/minio/minio 24 $ git fetch upstream 25 $ git merge upstream/master 26 ... 27 ``` 28 29 ### Create your feature branch 30 31 Before making code changes, make sure you create a separate branch for these changes 32 33 ``` 34 git checkout -b my-new-feature 35 ``` 36 37 ### Test MinIO server changes 38 39 After your code changes, make sure 40 41 - To add test cases for the new code. If you have questions about how to do it, please ask on our [Slack](https://slack.min.io) channel. 42 - To run `make verifiers` 43 - To squash your commits into a single commit. `git rebase -i`. It's okay to force update your pull request. 44 - To run `make test` and `make build` completes. 45 46 ### Commit changes 47 48 After verification, commit your changes. This is a [great post](https://chris.beams.io/posts/git-commit/) on how to write useful commit messages 49 50 ``` 51 git commit -am 'Add some feature' 52 ``` 53 54 ### Push to the branch 55 56 Push your locally committed changes to the remote origin (your fork) 57 58 ``` 59 git push origin my-new-feature 60 ``` 61 62 ### Create a Pull Request 63 64 Pull requests can be created via GitHub. Refer to [this document](https://help.github.com/articles/creating-a-pull-request/) for detailed steps on how to create a pull request. After a Pull Request gets peer reviewed and approved, it will be merged. 65 66 ## FAQs 67 68 ### How does ``MinIO`` manage dependencies? 69 70 ``MinIO`` uses `go mod` to manage its dependencies. 71 72 - Run `go get foo/bar` in the source folder to add the dependency to `go.mod` file. 73 74 To remove a dependency 75 76 - Edit your code and remove the import reference. 77 - Run `go mod tidy` in the source folder to remove dependency from `go.mod` file. 78 79 ### What are the coding guidelines for MinIO? 80 81 ``MinIO`` is fully conformant with Golang style. Refer: [Effective Go](https://github.com/golang/go/wiki/CodeReviewComments) article from Golang project. If you observe offending code, please feel free to send a pull request or ping us on [Slack](https://slack.min.io).