# Contributing to StarRocks StarRocks is built by an open and friendly community. We are dedicated to building a collaborative, inspiring, and exuberant open-source community for our members. Everyone is more than welcome to join our community to get help and to contribute to StarRocks. ## Table of contents - [How to contribute](#How-to-contribute) - [Contributing guideline](#Contributing-guideline) - [Report a bug](#Report-a-bug) - [Contributing code](#Contributing-code) - [General workflow](#General-workflow) - [StarRocks code structure](#StarRocks-code-structure) - [Important directories](#Important-directories) - [Set your development environment](#Set-your-development-environment) - [Coding style](#Coding-style) - [Unit test](#Unit-test) - [Commit message](#Commit-message) - [PR body](#PR-body) - [Contributor License Agreement](#Contributor-License-Agreement) - [Best practices](#Best-practices) - [Important contacts](#Important-contacts) - [Contributing test case](#Contributing-test-case) - [Reviewing code](#Reviewing-code) - [Contributing documentation](#Contributing-documentation) - [Help community members](#Help-community-members) - [Spread our idea](#Spread-our-idea) - [Code of conduct](#Code-of-conduct) ## How to contribute Contributions to StarRocks are cordially welcome from everyone. Contributing to StarRocks is not limited to contributing codes. Below, we list different approaches to contributing to our community. |Contribution|Details| |------------|-------| |Report a bug|You can [file an issue](https://github.com/StarRocks/starrocks/issues/new/choose) To report a bug with StarRock.| |Contribute code|You can contribute your code by fixing a bug or implementing a feature.| |Contribute test case|You can contribute your test cases.| |Help review code|If you are an active contributor or committer of StarRocks, you can help us review the pull requests (PRs).| |Contribute documentation|StarRocks community maintains a tremendous amount of documentation both in Chinese and English. You can contribute documentation changes by fixing a documentation bug or proposing a new piece of content.| |Help StarRocks users|You can help newcomers who meet difficulties in our community.| |Spread the word about StarRocks|You can author an article or give a talk about us to help us spread our technology to the world.| ## Contributing guideline This guide describes how to make various types of contribution to StarRocks community. ### Report a bug To report a bug with StarRocks, you should [file an issue](https://github.com/StarRocks/starrocks/issues/new/choose) in StarRocks repository, and provide necessary information and, if possible, steps to reproduce the bug in the issue body. ### Contributing code You can contribute your code by fixing a bug you identified or in an [existing issue](https://github.com/StarRocks/starrocks/issues). If you are new to this project, you may find the issues labelled good-first-issue suitable for your first contribution. Usually, such issues provide a detailed description of the procedure to solve the problem in its issue body. If you are confident with your programming proficiency, you can also contribute your code by helping develop a feature for StarRocks. #### General workflow Before getting your hands on codes, you should comment and mention the repository maintainer in the issue body, and inform him/her to assign to you the issue that you wish to solve. It is recommended to share your plan on how to solve this problem in the issue body as well. In StarRocks community, we follow the fork-and-merge GitHub workflow when contributing code. 1. Create a fork of StarRocks in your GitHub account. 2. Clone this forked repository to your local device. 3. Check out a new branch based on the branch you expect to contribute. 4. Commit your code changes on the new branch. 5. Push the branch with code changes to GitHub. 6. Create a PR to submit your code changes. The repository maintainers will review your code changes as soon as possible. Your commits will be merged once approved. For detailed instruction on GitHub workflow, see [StarRocks GitHub Workflow](https://github.com/StarRocks/community/blob/main/Contributors/guide/workflow.md). #### StarRocks code structure TBC #### Important directories TBC #### Set your development environment 1. For FE development environment, see [The development configuration setup for StarRocks on IDEA](https://github.com/StarRocks/community/blob/main/Contributors/guide/IDEA.md). 2. For BE development environment, see [The development configuration setup for StarRocks on Clion](https://github.com/StarRocks/community/blob/main/Contributors/guide/Clion.md). 3. To compile StarRocks with Docker, see [Compile StarRocks with Docker](https://docs.starrocks.io/docs/developers/build-starrocks/Build_in_docker/). 4. To deploy StarRocks manually, see [Deploy StarRocks manually](https://docs.starrocks.io/docs/deployment/deploy_manually/). #### Coding style TBC #### Unit test TBC #### Commit message - Write your commit message in English. - Start your commit message with a verb clause initiated with an upper case letter. - Use concise, explicit language. #### PR body - You should relate the issue you worked on in the PR body. - It is recommended to submit ONE commit in ONE PR. See [PR template](https://github.com/StarRocks/starrocks/blob/main/.github/PULL_REQUEST_TEMPLATE.md) for more inforamtion. #### Contributor License Agreement To get your PR merged, you must [submit your Contributor License Agreement (CLA)](https://cla-assistant.io/StarRocks/starrocks) first. You only need to submit it ONCE. #### Best practices TBC #### Important contacts Whenever you have difficulties in development, you can reach out to the following members for help. You can mention them in your issue or PR. - TBC ### Contributing test case TBC ### Reviewing code TBC ### Contributing documentation To contribute to StarRocks documentation, please refer to [Document Contribution Guideline](https://github.com/StarRocks/starrocks/blob/main/docs/README.md). ### Help community members If you are a proficient StarRocks user, you can contribute to our community by helping new members solve the problems when they use StarRocks. ### Spread our idea You are welcome to author a blog article about StarRocks in the media, or host a live broadcast to spread StarRocks to the world. Please contact opensource@starrocks.com for more information and instructions. ## Code of conduct All members in the community are instructed to follow our [Code of Conduct](https://github.com/StarRocks/starrocks/blob/main/CODE_OF_CONDUCT.md).