4.6 KiB
How to Contribute to OpenIM (Submitting Pull Requests)
English · 中文 · Українська · Česky · Magyar · Español · فارسی · Français · Deutsch · Polski · Indonesian · Suomi · മലയാളം · 日本語 · Nederlands · Italiano · Русский · Português (Brasil) · Esperanto · 한국어 · العربي · Tiếng Việt · Dansk · Ελληνικά · Türkçe
This guide will use openimsdk/open-im-server as an example to explain in detail how to contribute code to the OpenIM project. We adopt a "one issue, one branch" strategy to ensure each issue corresponds to a dedicated branch for effective code change management.
1. Fork the Repository
Go to the openimsdk/open-im-server GitHub page, click the "Fork" button in the upper right corner to fork the repository to your GitHub account.
2. Clone the Repository
Clone the repository you forked to your local machine:
git clone https://github.com/your-username/open-im-server.git
3. Set Upstream Remote
Add the original repository as a remote upstream to track updates:
git remote add upstream https://github.com/openimsdk/open-im-server.git
4. Create an Issue
Create a new issue in the original repository detailing the problem you encountered or the new feature you wish to add.
5. Create a New Branch
Create a new branch off the main branch with a descriptive name and Issue ID, for example:
git checkout -b fix-bug-123
6. Commit Changes
After making changes on your local branch, commit these changes:
git add .
git commit -m "Describe your changes
in detail"
7. Push the Branch
Push your branch back to your GitHub fork:
git push origin fix-bug-123
8. Create a Pull Request
Go to your fork on GitHub and click the "Pull Request" button. Ensure the PR description is clear and links to the related issue.
9. Sign the CLA
If this is your first time submitting a PR, you will need to reply in the comments of the PR:
The signature to be committed in order to sign the CLA
Programming Standards
Please refer to the following documents for detailed information on Go language programming standards:
Logging Standards
- Do not use the standard
log
package. - Use the
"github.com/openimsdk/tools/log"
package for logging, which supports multiple log levels:debug
,info
,warn
,error
. - Error logs should only be printed in the function where they are first actively called to prevent log duplication and ensure clear error context.
Exception and Error Handling
- Prohibit the use of
panic
: The code should not usepanic
to avoid abrupt termination when encountering unrecoverable errors. - Error Wrapping: Use
"github.com/openimsdk/tools/errs"
to wrap errors, maintaining the integrity of error information and facilitating debugging. - Error Propagation: If a function cannot handle an error itself, it should return the error to the caller, rather than hiding or ignoring it.