diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..69848510 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,255 @@ +# Contributing to Dfdaemon + +It is warmly welcomed if you have the interest to hack on dfdaemon. +First, we encourage this kind of willingness very much. +And here is a list of contributing guide for you. + +## Topics + +- [Reporting security issues](#reporting-security-issues) +- [Reporting general issues](#reporting-general-issues) +- [Code and doc contribution](#code-and-doc-contribution) +- [Engage to help anything](#engage-to-help-anything) + +## Reporting security issues + +Security issues are always treated seriously. +As our usual principle, we discourage anyone to spread security issues. +If you find a security issue of dfdaemon, please do not discuss it in +public and even do not open a public issue. +Instead, we encourage you to send us a private email to +[dragonfly-developers@googlegroups.com](mailto:dragonfly-developers@googlegroups.com) to report this. + +## Reporting general issues + +To be honest, we regard every user of dfdaemon as a very kind contributor. +After experiencing dfdaemon, you may have some feedback for the project. +Then feel free to open an issue via +[NEW ISSUE](https://github.com/dragonflyoss/dfdaemon/issues/new). + +Since we collaborate project dfdaemon in a distributed way, +we appreciate **WELL-WRITTEN**, **DETAILED**, **EXPLICIT** issue reports. +To make the communication more efficient, we wish everyone could +search if your issue is an existing one in the searching list. +If you find it existing, please add your details in comments +under the existing issue instead of opening a brand new one. + +To make the issue details as standard as possible, +we setup an [ISSUE TEMPLATE](./.github/ISSUE_TEMPLATE) for issue reporters. +You can find three kinds of issue templates there: question, +bug report and feature request. Please **BE SURE** to follow +the instructions to fill fields in template. + +There are a lot of cases when you could open an issue: + +- bug report +- feature request +- performance issues +- feature proposal +- feature design +- help wanted +- doc incomplete +- test improvement +- any questions on project +- and so on + +Also, we must remind that when filing a new issue, +please remember to remove the sensitive data from your post. +Sensitive data could be password, secret key, +network locations, private business data and so on. + +## Code and doc contribution + +Every action to make project dfdaemon better is encouraged. +On GitHub, every improvement for dfdaemon could be +via a PR (short for pull request). + +- If you find a typo, try to fix it! +- If you find a bug, try to fix it! +- If you find some redundant codes, try to remove them! +- If you find some test cases missing, try to add them! +- If you could enhance a feature, please **DO NOT** hesitate! +- If you find code implicit, try to add comments to make it clear! +- If you find code ugly, try to refactor that! +- If you can help to improve documents, it could not be better! +- If you find document incorrect, just do it and fix that! +- ... + +Actually, it is impossible to list them completely. +Just remember one principle: + +> WE ARE LOOKING FORWARD TO ANY PR FROM YOU. + +Since you are ready to improve dfdameon with a PR, +we suggest you could take a look at the PR rules here. + +- [Workspace Preparation](#workspace-preparation) +- [Branch Definition](#branch-definition) +- [Commit Rules](#commit-rules) +- [PR Description](#pr-description) + +### Workspace Preparation + +To put forward a PR, we assume you have registered +a GitHub ID. Then you could finish +the preparation in the following steps: + +1. **FORK** dfdaemon to your repository. + +To make this work, you just need to click the button Fork +in right-left of [dragonflyoss/dfdaemon](https://github.com/dragonflyoss/dfdaemon) +main page. Then you will end up with your repository in +`https://github.com//dfdaemon`, +in which `your-username` is your GitHub username. + +1. **CLONE** your own repository to develop locally. + +Use `git clone https://github.com//dfdaemon.git` +to clone repository to your local machine. +Then you can create new branches to finish the change you wish to make. + +1. **Set Remote** upstream to be + `https://github.com/dragonflyoss/dfdaemon.git` + +using the following two commands: + +```bash +git remote add upstream https://github.com/dragonflyoss/dfdaemon.git +git remote set-url --push upstream no-pushing +``` + +With this remote setting, you can check your git remote configuration like this: + +```bash +$ git remote -v +origin https://github.com//dfdaemon.git (fetch) +origin https://github.com//dfdaemon.git (push) +upstream https://github.com/dragonflyoss/dfdaemon.git (fetch) +upstream no-pushing (push) +``` + +Adding this, we can easily synchronize local branches with upstream branches. + +1. **Create a branch** to add a new feature or fix issues + +Update local working directory: + +```bash +cd dfdaemon +git fetch upstream +git checkout main +git rebase upstream/main +``` + +Create a new branch: + +```bash +git checkout -b +``` + +Make any change on the `new-branch` then build and test your codes. + +### Branch Definition + +Right now we assume every contribution via pull +request is for [branch main](https://github.com/dragonflyoss/dfdaemon/tree/main) +in dfdaemon. Before contributing, +be aware of branch definition would help a lot. + +As a contributor, keep in mind again that every +contribution via pull request is for branch main. +While in project dfdaemon, there are several other branches, +we generally call them rc branches, release branches and backport branches. + +Before officially releasing a version, +we will checkout a rc(release candidate) branch. +In this branch, we will test more than branch main. + +When officially releasing a version, +there will be a release branch before tagging. +After tagging, we will delete the release branch. + +When backporting some fixes to existing released version, +we will checkout backport branches. After backporting, +the backporting effects will be in PATCH number in +MAJOR.MINOR.PATCH of [SemVer](http://semver.org/). + +### Commit Rules + +Actually in dfdaemon, we take two rules seriously when committing: + +- [Commit Message](#commit-message) +- [Commit Content](#commit-content) + +#### Commit Message + +Commit message could help reviewers better understand +what the purpose of submitted PR is. +It could help accelerate the code review procedure as well. +We encourage contributors to use **EXPLICIT** commit +message rather than an ambiguous message. In general, +we advocate the following commit message type: + +- feat: xxxx.For example, "feat: make result show in sorted order". +- fix: xxxx. For example, "fix: fix panic when input nil parameter". +- docs: xxxx. For example, "docs: add docs about storage installation". +- style: xxxx. For example, "style: format the code style of Constants.java". +- refactor: xxxx. For example, "refactor: simplify to make codes more readable". +- test: xxx. For example, "test: add unit test case for func InsertIntoArray". +- chore: xxx. For example, "chore: integrate travis-ci". + It's the type of maintenance change. + +On the other side, we discourage contributors +from committing messages in the following ways: + +- ~~fix bug~~ +- ~~update~~ +- ~~add doc~~ + +#### Commit Content + +Commit content represents all content changes +included in one commit. We had better include things +in one single commit which could support reviewer's complete +review without any other commits' help. In another word, +contents in one single commit can pass the CI to avoid code mess. +In brief, there are two minor rules for us to keep in mind: + +- avoid very large change in a commit. +- complete and reviewable for each commit. + +No matter what the commit message, or commit content is, +we do take more emphasis on code review. + +### PR Description + +PR is the only way to make change to dfdaemon project files. +To help reviewers better get your purpose, +PR description could not be too detailed. +We encourage contributors to follow the +[PR template](./.github/PULL_REQUEST_TEMPLATE.md) to finish the pull request. + +## Engage to help anything + +We choose GitHub as the primary place for dfdaemon to +collaborate. So the latest updates of dfdaemon are always here. +Although contributions via PR is an explicit way to help, +we still call for any other ways. + +- Reply to others' issues if you could. +- Help solve other users' problems. +- Help review others' PR design. +- Help review others' codes in PR. +- Discuss about dfdaemon to make things clearer. +- Advocate dfdaemon technology beyond GitHub. +- Write blogs on dfdaemon and so on. + +In a word, **ANY HELP IS CONTRIBUTION.** + +### How to do it + +You can do it in either of two ways: + +- Submit a PR in the + [dragonflyoss/dfdaemon](https://github.com/dragonflyoss/dfdaemon) repo. +- Contact with the community's [maintainers](MAINTAINERS.md) offline. diff --git a/README.md b/README.md index d3282820..be9bad87 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,32 @@ -# dfdaemon -Dragonfly client written in Rust +# Dfdaemon + +[![GitHub release](https://img.shields.io/github/release/dragonflyoss/dfdaemon.svg)](https://github.com/dragonflyoss/dfdaemon/releases) +[![Coverage](https://codecov.io/gh/dragonflyoss/dfdaemon/branch/main/graph/badge.svg)](https://codecov.io/gh/dragonflyoss/dfdameon) +[![Open Source Helpers](https://www.codetriage.com/dragonflyoss/dfdaemon/badges/users.svg)](https://www.codetriage.com/dragonflyoss/dfdaemon) +[![Discussions](https://img.shields.io/badge/discussions-on%20github-blue?style=flat-square)](https://github.com/dragonflyoss/Dragonfly2/discussions) +[![Twitter](https://img.shields.io/twitter/url?style=social&url=https%3A%2F%2Ftwitter.com%2Fdragonfly_oss)](https://twitter.com/dragonfly_oss) +[![LICENSE](https://img.shields.io/github/license/dragonflyoss/Dragonfly2.svg?style=flat-square)](https://github.com/dragonflyoss/Dragonfly2/blob/main/LICENSE) + +Dragonfly client written in Rust. It can serve as both a peer and a seed peer. + +## Documentation + +You can find the full documentation on the [d7y.io](https://d7y.io). + +## Community + +Welcome developers to actively participate in community discussions +and contribute code to Dragonfly. We will remain +concerned about the issues discussed in the community and respond quickly. + +- **Slack Channel**: [#dragonfly](https://cloud-native.slack.com/messages/dragonfly/) on [CNCF Slack](https://slack.cncf.io/) +- **Discussion Group**: +- **Developer Group**: +- **Github Discussions**: [Dragonfly Discussion Forum][discussion] +- **Twitter**: [@dragonfly_oss](https://twitter.com/dragonfly_oss) +- **DingTalk**: [23304666](https://qr.dingtalk.com/action/joingroup?code=v1,k1,3wEdP6zHKQbOzBRwOvv8wyIbxDEU0kXMrxphaOcPz6I=&_dt_no_comment=1&origin=11) + +## Contributing + +You should check out our +[CONTRIBUTING](./CONTRIBUTING.md) and develop the project together.