docs:adjust the sharers document to the newly designed tags

Signed-off-by: Xinwei Xiong(cubxxw) <3293172751nss@gmail.com>
pull/394/head
Xinwei Xiong(cubxxw) 2 years ago
parent 58305f4e71
commit 4f902f0316

@ -1,6 +1,6 @@
# Contributing to Open-IM-Server # Contributing to OpenIM
So, you want to hack on Open-IM-Server? Yay! So, you want to hack on OpenIM? Yay!
First of all, thank you for considering contributing to our project! We appreciate your time and effort, and we value any contribution, whether it's reporting a bug, suggesting a new feature, or submitting a pull request. First of all, thank you for considering contributing to our project! We appreciate your time and effort, and we value any contribution, whether it's reporting a bug, suggesting a new feature, or submitting a pull request.
@ -19,13 +19,13 @@ This document provides guidelines and best practices to help you contribute effe
## What we expect of you ## What we expect of you
We hope that anyone can join Open-IM-Server , even if you are a student, writer, translator We hope that anyone can join OpenIM , even if you are a student, writer, translator
Please meet the minimum version of the Go language published in [go.mod](./go.mod). If you want to manage the Go language version, we provide tools to install [gvm](https://github.com/moovweb/gvm) in our [Makefile](./Makefile) Please meet the minimum version of the Go language published in [go.mod](./go.mod). If you want to manage the Go language version, we provide tools to install [gvm](https://github.com/moovweb/gvm) in our [Makefile](./Makefile)
You'd better use Linux as the development environment, Linux with [Makefile](./Makefile) can help you quickly build and test Open-IM-Server project. You'd better use Linux as the development environment, Linux with [Makefile](./Makefile) can help you quickly build and test OpenIM project.
If you are familiar with [Makefile](./Makefile) , you can easily see the clever design of the Open-IM-Server Makefile. Storing the necessary tools such as golangci in the `/tools` directory can avoid some tool version issues. If you are familiar with [Makefile](./Makefile) , you can easily see the clever design of the OpenIM Makefile. Storing the necessary tools such as golangci in the `/tools` directory can avoid some tool version issues.
The [Makefile](./Makefile) is for every developer, even if you don't know how to use the Makefile tool, don't worry, we provide two great commands to get you up to speed with the Makefile architecture, `make help` and `make help-all`, it can reduce problems of the developing environment. The [Makefile](./Makefile) is for every developer, even if you don't know how to use the Makefile tool, don't worry, we provide two great commands to get you up to speed with the Makefile architecture, `make help` and `make help-all`, it can reduce problems of the developing environment.
@ -35,7 +35,7 @@ The [Makefile](./Makefile) is for every developer, even if you don't know how to
#### Code and doc contribution #### Code and doc contribution
Every action to make project Open-IM-Server better is encouraged. On GitHub, every improvement for Open-IM-Server could be via a [PR](https://github.com/Open-IM-Server/pulls) (short for pull request). Every action to make project OpenIM better is encouraged. On GitHub, every improvement for OpenIM could be via a [PR](https://github.com/OpenIM/pulls) (short for pull request).
+ If you find a typo, try to fix it! + If you find a typo, try to fix it!
+ If you find a bug, try to fix it! + If you find a bug, try to fix it!
@ -50,10 +50,27 @@ Every action to make project Open-IM-Server better is encouraged. On GitHub, eve
#### Where should I start? #### Where should I start?
+ If you are new to the project, don't know how to contribute Open-IM-Server, please check out the [good first issue](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aopen+label%3A"good+first+issue"+sort%3Aupdated-desc) label. Getting good at GitHub is the first step, we have a [list of labes](https://github.com/OpenIMSDK/Open-IM-Server/labels) and reading some of the [common tags](https://github.com/OpenIMSDK/Open-IM-Server/labels?sort=count-desc) helps us get involved in the community quickly.GitHub allows you to filter out types of issues and pull requests, which helps you discover items in need of triaging. This table includes some predetermined searches for convenience:
+ You should be good at filtering the Open-IM-Server issue tags and finding the ones you like, such as [RFC](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+RFC+label%3ARFC) for big initiatives, features for [feature](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+label%3Afeature) proposals, and [bug](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+label%3Abug+) fixes.
+ If you are looking for something to work on, check out our [open issues](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc). | Search | What it sorts |
+ If you have an idea for a new feature, please [open an issue](https://github.com/OpenIMSDK/Open-IM-Server/issues/new/choose), and we can discuss it. | ------------------------------------------------------------ | ------------------------------------------------------- |
| [created-asc](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Acreated-asc) | Untriaged issues by age |
| [needs-triage](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+no%3Alabel) | Issues that need to be assigned to a Labels |
| [`is:open is:issue`](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aopen+is%3Aissue+sort%3Aupdated-desc) | Newest incoming issues |
| [comments-desc](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Acomments-desc) | Busiest untriaged issues, sorted by # of comments |
| [comments-asc](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Acomments-asc) | Issues that need more attention, based on # of comments |
We suggest preparing your triage by filtering out the oldest, unlabelled issues and pull requests first.
1. If you are new to the project, don't know how to contribute OpenIM, please check out the [good first issue](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aopen+label%3A"good+first+issue"+sort%3Aupdated-desc) label and [help wanted](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aopen+is%3Aissue+label%3A"help+wanted"+sort%3Aupdated-desc).
2. You should be good at filtering the OpenIM issue tags and finding the ones you like, such as [RFC](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+RFC+label%3ARFC) for big initiatives, features for [feature](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+label%3Akind%2Ffeature+sort%3Aupdated-desc+) proposals, and [bug](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+label%3Akind%2Fbug+sort%3Aupdated-desc+) fixes.
3. If you are looking for something to work on, check out our [open issues](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc).
4. If you have an idea for a new feature, please [open an issue](https://github.com/OpenIMSDK/Open-IM-Server/issues/new/choose), and we can discuss it.
> **Note**
> Reply to `/assign` or `/assign @yourself` with a question you wish to resolve, and we'll assign the question to you and your name will be listed under `Assignees`
#### Design documents #### Design documents
@ -68,7 +85,7 @@ When documenting a new design, we recommend a 2-step approach:
1. Use the short-form **RFC** template to outline your ideas and get early feedback. 1. Use the short-form **RFC** template to outline your ideas and get early feedback.
2. Once you have received sufficient feedback and consensus, you may use the **longer-form design doc template** to specify and discuss your design in more details. 2. Once you have received sufficient feedback and consensus, you may use the **longer-form design doc template** to specify and discuss your design in more details.
**In order to contribute a feature to Open-IM-Server you'll need to go through the following steps:** **In order to contribute a feature to OpenIM you'll need to go through the following steps:**
+ Discuss your idea with the appropriate [working groups](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) on the working group's Slack channel. + Discuss your idea with the appropriate [working groups](https://join.slack.com/t/openimsdk/shared_invite/zt-1tmoj26uf-_FDy3dowVHBiGvLk9e5Xkg) on the working group's Slack channel.
+ Once there is general agreement that the feature is useful, create a GitHub issue to track the discussion. The issue should include information about the requirements and use cases that it is trying to address. + Once there is general agreement that the feature is useful, create a GitHub issue to track the discussion. The issue should include information about the requirements and use cases that it is trying to address.
@ -79,15 +96,14 @@ But keep in mind that there is no guarantee of it being accepted and so it is us
## Getting Started ## Getting Started
> **Note** > **Note**
> >
> A simple example allows you to quickly contribute your first **PR** to Open-IM-Server. > A simple example allows you to quickly contribute your first **PR** to OpenIM.
> To propose PR for the Open-IM-Server item, we assume you have registered a GitHub ID. Then you could finish the preparation in the following steps: To propose PR for the OpenIM item, we assume you have registered a GitHub ID. Then you could finish the preparation in the following steps:
1. **Fork** the repository(Open-IM-Server) 1. **Fork** the repository(OpenIM)
2. **CLONE** your own repository to master locally. Use `git clone https://github.com/<your-username>/Open-IM-Server.git` to clone repository to your local machine. Then you can create new branches to finish the change you wish to make. 2. **CLONE** your own repository to master locally. Use `git clone https://github.com/<your-username>/OpenIM.git` to clone repository to your local machine. Then you can create new branches to finish the change you wish to make.
3. **Set Remote** upstream to be `https://github.com/OpenIMSDK/Open-IM-Server.git` using the following two commands: 3. **Set Remote** upstream to be `https://github.com/OpenIMSDK/Open-IM-Server.git` using the following two commands:
@ -100,8 +116,8 @@ But keep in mind that there is no guarantee of it being accepted and so it is us
```go ```go
git remote -v git remote -v
origin https://github.com/<your-username>/Open-IM-Server.git (fetch) origin https://github.com/<your-username>/OpenIM.git (fetch)
origin https://github.com/<your-username>/Open-IM-Server.git (push) origin https://github.com/<your-username>/OpenIM.git (push)
upstream https://github.com/OpenIMSDK/Open-IM-Server.git (fetch) upstream https://github.com/OpenIMSDK/Open-IM-Server.git (fetch)
upstream no-pushing (push) upstream no-pushing (push)
``` ```
@ -111,11 +127,17 @@ But keep in mind that there is no guarantee of it being accepted and so it is us
4. Create a new branch for your changes (use a descriptive name, such as `fix-bug-123` or `add-new-feature`). 4. Create a new branch for your changes (use a descriptive name, such as `fix-bug-123` or `add-new-feature`).
```bash ```bash
cd Open-IM-Server cd OpenIM
git fetch upstream git fetch upstream
git checkout upstream/main git checkout upstream/main
``` ```
> **Note**
>
> Please don't use `git pull` instead of the above `fetch` and `rebase`. Since `git pull` executes a merge, it creates merge commits. These make the commit history messy and violate the principle that commits ought to be individually understandable and useful.
>
> You might also consider changing your `.git/config` file via `git config branch.autoSetupRebase always` to change the behavior of `git pull`, or another non-merge option such as `git pull --rebase`.
Create a new branch: Create a new branch:
```bash ```bash
@ -139,7 +161,7 @@ But keep in mind that there is no guarantee of it being accepted and so it is us
# sync up with upstream # sync up with upstream
git fetch upstream git fetch upstream
git rebase upstream/main git rebase upstream/main
git rebase -i <commit-id> # rebase with interactive mode to squash your commits into a single one git rebase -i <commit-id> # rebase with interactive mode to `squash` your commits into a single one
git push # push to the remote repository, if it's a first time push, run git push --set-upstream origin <new-branch> git push # push to the remote repository, if it's a first time push, run git push --set-upstream origin <new-branch>
``` ```
@ -174,15 +196,15 @@ We divide the problem into security and general problems:
#### Reporting security issues #### 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 Open-IM-Server, please do not discuss it in public and even do not open a public issue. Security issues are always treated seriously. As our usual principle, we discourage anyone to spread security issues. If you find a security issue of OpenIM, 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 4closetool3@gmail.com to report this. Instead we encourage you to send us a private email to 4closetool3@gmail.com to report this.
#### Reporting general issues #### Reporting general issues
To be honest, we regard every user of Open-IM-Serveras a very kind contributor. After experiencing Open-IM-Server, you may have some feedback for the project. Then feel free to open an issue via [NEW ISSUE](https://github.com/OpenIMSDK/Open-IM-Server/issues/new/choose). To be honest, we regard every user of OpenIMas a very kind contributor. After experiencing OpenIM, you may have some feedback for the project. Then feel free to open an issue via [NEW ISSUE](https://github.com/OpenIMSDK/Open-IM-Server/issues/new/choose).
Since we collaborate project Open-IM-Server 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. Since we collaborate project OpenIM 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](https://github.com/OpenIMSDK/Open-IM-Server/tree/main/.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. To make the issue details as standard as possible, we setup an [ISSUE TEMPLATE](https://github.com/OpenIMSDK/Open-IM-Server/tree/main/.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.
@ -190,23 +212,23 @@ To make the issue details as standard as possible, we setup an [ISSUE TEMPLATE](
+ bug report + bug report
+ feature request + feature request
+ Open-IM-Server performance issues + OpenIM performance issues
+ feature proposal + feature proposal
+ feature design + feature design
+ help wanted + help wanted
+ doc incomplete + doc incomplete
+ test improvement + test improvement
+ any questions on Open-IM-Server project + any questions on OpenIM project
+ and so on + and so on
Also, we must be reminded when submitting a new question about Open-IM-Server, 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. Also, we must be reminded when submitting a new question about OpenIM, 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.
> **Note** > **Note**
> We have requirements for **Commits**, **PR**, **Docs**, and good standards help us collaborate better and understand what you're doing. > We have requirements for **Commits**, **PR**, **Docs**, and good standards help us collaborate better and understand what you're doing.
#### Commit Rules #### Commit Rules
Actually in Open-IM-Server, we take two rules serious when committing: Actually in OpenIM, we take two rules serious when committing:
**🥇 Commit Message:** **🥇 Commit Message:**
@ -249,7 +271,7 @@ An example for this could be:
#### PR Description #### PR Description
PR is the only way to make change to Open-IM-Server project files. To help reviewers better get your purpose, **PR** description could not be too detailed. We encourage contributors to follow the [PR template](https://github.com/OpenIMSDK/Open-IM-Server/tree/main/.github/PULL_REQUEST_TEMPLATE.md) to finish the pull request. PR is the only way to make change to OpenIM project files. To help reviewers better get your purpose, **PR** description could not be too detailed. We encourage contributors to follow the [PR template](https://github.com/OpenIMSDK/Open-IM-Server/tree/main/.github/PULL_REQUEST_TEMPLATE.md) to finish the pull request.
You can find some very formal PR in [RFC](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+RFC+label%3ARFC) issues and learn about them. You can find some very formal PR in [RFC](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+RFC+label%3ARFC) issues and learn about them.
@ -320,7 +342,7 @@ These two kind of tests: `lint` and `unit test`
> You can use the [Makefile](./Makefile) to run Lint with the command `make lint`. > You can use the [Makefile](./Makefile) to run Lint with the command `make lint`.
`unit test` runs all the test in code, and the code coverage should not less than 60 percent, record us in [codeclimate](https://codeclimate.com/github/OpenIMSDK/Open-IM-Server) Open-IM-Server the unit test coverage data. `unit test` runs all the test in code, and the code coverage should not less than 60 percent, record us in [codeclimate](https://codeclimate.com/github/OpenIMSDK/Open-IM-Server) OpenIM the unit test coverage data.
> **Note** > **Note**
@ -331,12 +353,12 @@ Try your best to keep every function has been tested, it keeps the function beha
#### Docs Contribution #### Docs Contribution
**The documentation for Open-IM-Server includes:** **The documentation for OpenIM includes:**
+ [README.md](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/README.md): This file includes the basic information and instructions for getting started with Open-IM-Server. + [README.md](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/README.md): This file includes the basic information and instructions for getting started with OpenIM.
+ [CONTRIBUTING.md](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/CONTRIBUTING.md): This file contains guidelines for contributing to Open-IM-Server's codebase, such as how to submit issues, pull requests, and code reviews. + [CONTRIBUTING.md](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/CONTRIBUTING.md): This file contains guidelines for contributing to OpenIM's codebase, such as how to submit issues, pull requests, and code reviews.
+ [DEVELOPGUIDE.md](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/DEVELOPGUIDE.md): This file provides a more in-depth guide to developing Open-IM-Server, including information on the project's architecture, coding conventions, and testing practices. + [DEVELOPGUIDE.md](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/DEVELOPGUIDE.md): This file provides a more in-depth guide to developing OpenIM, including information on the project's architecture, coding conventions, and testing practices.
+ [Official Documentation](https://doc.rentsoft.cn): This is the official documentation for Open-IM-Server, which includes comprehensive information on all of its features, configuration options, and troubleshooting tips. + [Official Documentation](https://doc.rentsoft.cn): This is the official documentation for OpenIM, which includes comprehensive information on all of its features, configuration options, and troubleshooting tips.
**Please obey the following rules to better format the docs, which would greatly improve the reading experience.** **Please obey the following rules to better format the docs, which would greatly improve the reading experience.**
@ -349,7 +371,6 @@ Try your best to keep every function has been tested, it keeps the function beha
**Markfile Lint:** **Markfile Lint:**
We integrated in the CICD actions [markdownlint](https://github.com/markdownlint/markdownlint), it detects Markfile specification. We integrated in the CICD actions [markdownlint](https://github.com/markdownlint/markdownlint), it detects Markfile specification.
> **Note** > **Note**
> We recommend reading [markdownlint rules](https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md), This document contains a description of all rules, what they are checking for, as well as an examples of documents that break the rule and corrected versions of the examples. > We recommend reading [markdownlint rules](https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md), This document contains a description of all rules, what they are checking for, as well as an examples of documents that break the rule and corrected versions of the examples.
@ -358,14 +379,14 @@ We integrated in the CICD actions [markdownlint](https://github.com/markdownlint
## Engage to help anything ## Engage to help anything
We choose GitHub as the primary place for Open-IM-Server to collaborate. So the latest updates of Open-IM-Server are always here. Although contributions via **PR** is an explicit way to help, we still call for any other ways. We choose GitHub as the primary place for OpenIM to collaborate. So the latest updates of OpenIM are always here. Although contributions via **PR** is an explicit way to help, we still call for any other ways.
+ reply to other's [issues](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) if you could; + reply to other's [issues](https://github.com/OpenIMSDK/Open-IM-Server/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) if you could;
+ help solve other user's problems; + help solve other user's problems;
+ help review other's [PR](https://github.com/OpenIMSDK/Open-IM-Server/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc) design; + help review other's [PR](https://github.com/OpenIMSDK/Open-IM-Server/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc) design;
+ discuss about Open-IM-Server to make things clearer; + discuss about OpenIM to make things clearer;
+ advocate [Open-IM-Server](google.com/search?q=Open-IM-Server) technology beyond GitHub; + advocate [OpenIM](google.com/search?q=OpenIM) technology beyond GitHub;
+ write blogs on Open-IM-Server and so on. + write blogs on OpenIM and so on.
In a word, **ANY HELP IS CONTRIBUTION.** In a word, **ANY HELP IS CONTRIBUTION.**
@ -373,7 +394,7 @@ In a word, **ANY HELP IS CONTRIBUTION.**
## Release version ## Release version
Releases of Open-IM-Server are done using [Release Please](https://github.com/googleapis/release-please) and [GoReleaser](https://goreleaser.com/). The workflow looks like this: Releases of OpenIM are done using [Release Please](https://github.com/googleapis/release-please) and [GoReleaser](https://goreleaser.com/). The workflow looks like this:
🎯 **A PR is merged to the `main` branch:** 🎯 **A PR is merged to the `main` branch:**
@ -398,6 +419,7 @@ Such a commit can get produced as follows:
git commit --allow-empty -m "chore: release 0.0.3" -m "Release-As: 0.0.3 git commit --allow-empty -m "chore: release 0.0.3" -m "Release-As: 0.0.3
```` ````
## Contact Us ## Contact Us
We value close connections with our users, developers, and contributors here at Open-IM-Server. With a large community and maintainer team, we're always here to help and support you. Whether you're looking to join our community or have any questions or suggestions, we welcome you to get in touch with us. We value close connections with our users, developers, and contributors here at Open-IM-Server. With a large community and maintainer team, we're always here to help and support you. Whether you're looking to join our community or have any questions or suggestions, we welcome you to get in touch with us.

Loading…
Cancel
Save