Welcome to Nirvana! This document shows you how to contribute to the code base. Plaese file issues or pull requests if you find anything missing or incorrect.
First, you can fork this repository via the Fork
button on the top of this page (If you like Nirvana, please star it :)).
Then you can clone Nirvana to your local path:
$ mkdir -p $GOPATH/src/github.com/caicloud
$ go get github.com/caicloud/nirvana
# Avoid push to caicloud/nirvana
$ git config push.default nothing
# Set user to match your github profile name:
$ user={your github profile name}
$ git remove add $user [email protected]:$user/nirvana.git
$ git fetch $user
There are some environment requirements:
Nirvana is under active development, there are quite a few incomplete features. Following is a list of items to checkout:
- Docs
- English
- 中文
- ...
- Loggers
- File Logger
- Remote Logger
- ...
- Operators
- More Powerful Vaditor
- ...
- Plugins
- OpenAPI Generation
- Clients Generation
- go
- graphql
- ...
- Test Cases
- Core
- API Definition
- HTTP Service
- Router
- Code Refactor
- ...
- Bugs
- File Issues
- Fix Issues
- Fix Typo && Comments
- ...
We welcome any thoughts or contributions on these items!
Before start writing code, we strongly recommend you to file an issue to discuss the motivation and proposals. Here are some workflows for you:
- Search in Nirvana Issues to check if there is similar issue.
- If not, file an issue to describe the feature you want to work on.
- Discuss with other contributors and adjust your design accordingly.
- Finalize your design.
- Implement the feature and push to your own repository.
- Create a pull request to Nirvana.
- Code review and change your PR if necessary.
- Other contributors will merge your pull request.
- Find an issue you are intersted in.
- Take the tasks by discussing with issue author and code owners.
- Implement the feature (or fix the bug), and push to your own repository.
- Create a pull request to Nirvana.
- Code review and change your PR if necessary.
- Other contributors will merge your pull request.
- Modify and push to your own repository.
- Create a pull request to Nirvana.
- Code review and change your PR if necessary.
- Other contributors will merge your pull request.
Nirvana use an automatic tool to manage the project. Its basic functionality
is assigning pull requests to reviewers and merging pull requests if it received /lgtm
and /approve
.
Many directories of Nirvana have OWNERS
, these files contains github account names of reviewers and approvers.
- Reviewers can review pull requests and reply
/lgtm
if they are satisfied with those pull requests. - Approvers can give a final approval by
/approve
to indicate whether a change to a directory or subdirectory should be accepted.
If a pull request receives both /lgtm
and /approve
, it will be merged in a short duration.