It's not complicated to contribute to open-source projects on GitHub. This post will walk you through the steps to contribute to your first open-source project in just five minutes. We will use the GitHub repository of Nebula Graph, an open-source distributed graph database, for illustration purpose. If you don’t have a account, or aren’t sure what is, please refer to the official website first. GitHub Git In general, there are nine steps to contribute to an open-source project: Fork the repo to your GitHub account Clone the repo to your local machine Define a pre-commit hook Create a branch Check the code and documentation style Develop Push changes to the GitHub repo Create a pull request Get a code review Below is a step by step illustration in detail. How to Be a GitHub Contributor Fork the Repo Fork the Nebula Graph repo by clicking on the fork button on the top of the main page. This will create a copy of this repository in your account. You can see repository is in your repository list. Please be noted the information , which indicates the deference between your branch and the master. If you just forked the repository, the information should be . nebula This branch is 117 commits behind vesoft-inc:master. This branch is even with vesoft-inc:master Clone the Repo Clone the repository to your local machine. Click the button, and then click the icon. Your remote repo on Github is called origin. Clone or download copy to clipboard Open a terminal and run the following git command: ~ git clone "url you just copied" where “url you just copied” (without the quote marks) is the url to the Nebula Grap repository. See the previous picture to obtain the url. For example: h ~ git git@https://github.com/nebula-package/nebula.git clone where is the user name. nebula-package ~ /nebula ~ git remote add upstream https://github.com/vesoft-inc/nebula.git ~ git remote -url --push upstream no_push ~ git remote -v # Add upstream cd $working_dir # Never push to the upstream master since your don't have the write access set # Confirm that your remotes make sense: # The right format is: # origin git@github.com:$(user)/nebula.git (fetch) # origin git@github.com:$(user)/nebula.git (push) # upstream https://github.com/vesoft-inc/nebula (fetch) # upstream no_push (push) Define a Pre-Commit Hook Please link the Nebula Graph pre-commit hook into your directory. This hook checks your commits for formatting, building, doc generation, etc. .git Define a Pre-Commit Hook Please link the Nebula Graph pre-commit hook into your .git directory. This hook checks your commits formatting, building, doc generation, etc. ~ /nebula/.git/hooks ~ ln -s ../../cpplint/bin/pre-commit.sh . for cd $working_dir Create a Branch Switch to the Nebula Graph repository directory and create a new branch named to work on! myfeature ~ nebula // If you created your fork a ago be sure to pull upstream changes into your repository. ~ git fetch upstream ~ git checkout master ~ git rebase upstream/master // Create a branch from master and switch to your branch ~ git checkout -b myfeature cd while local Check the Code and Documentation Style You can implement/fix your feature, comment your code in your branch now. Please follow the style and . myfeature Google C++ Style Guide Documentation Style Guide We are using the to format the code. It is recommended that you configure it according to the IDE/editor you use. The following links show how to configure clang-format with vim/emacs/vscode. clang-format vim: https://github.com/rhysd/vim-clang-format emacs: https://github.com/llvm-mirror/clang/blob/master/tools/clang-format/clang-format.el VS Code: https://code.visualstudio.com/docs/cpp/cpp-ide#_code-formatting Develop Edit your code and commit the changes with the following command. ~ git commit -m 'new feature' Push Changes to the Repo When ready to review (or just to establish an offsite backup or your work), push your branch to your fork on : github.com ~ git push -f origin myfeature Create a Pull Request Visit your fork at (replace $user obviously). https://github.com/$user/nebula Click the button next to your branch. Compare & pull request myfeature Get a Code Review Once your pull request has been opened, it will be assigned to at least two reviewers. Those reviewers will do a thorough code review to ensure the changes meet the repository’s contributing guidelines and other quality standards. Once the pull request is approved and merged you can pull the changes from upstream to your local repo and delete your extra branch(es). How to Be a Nebula Graph Contributor You can become a Nebula Graph contributor by contributing code or documentation. This section shows you how to raise doc pr to be our contributor. The follow picture shows the doc toc and you can make changes in any of the doc files. Consider the doc as example. .md Get Started Example: Get Started The above picture shows the change log of the doc. You can add details, fix errors or even rewrite the whole doc to make it more organized and readable. Please refer to the to see all the Nebula Graph docs. Documentation Toc Last but not least, you are welcome to try Nebula Graph at our . If you have any problems or suggestions please raise us an issue. GitHub Repository Also published here .