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