Skip to content

Commit 90cb90a

Browse files
docs: improve contributing section
1 parent 1761dea commit 90cb90a

File tree

1 file changed

+29
-30
lines changed

1 file changed

+29
-30
lines changed

docs/developer-guide/contributing.md

+29-30
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,22 @@ There are three ways to contribute to Concrete ML:
88

99
## 1. Setting up the project
1010

11-
First, you need to properly set up the project by following the steps provided [here](project_setup.md).
11+
First, you need to [fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) the [Concrete ML](https://github.com/zama-ai/concrete-ml) repository and properly set up the project by following the steps provided [here](project_setup.md).
1212

1313
## 2. Creating a new branch
1414

15-
To create your branch, you have to use the issue ID somewhere in the branch name:
15+
When creating your branch, make sure the name follows the expected format :
1616

1717
```shell
18-
git checkout -b {feat|fix|refactor|test|benchmark|doc|style|chore}/short-description_$issue_id
19-
git checkout -b short-description_$issue_id
20-
git checkout -b $issue_id_short-description
18+
git checkout -b {feat|fix|docs|chore}/short_description_$(issue_id)
19+
git checkout -b {feat|fix|docs|chore}/$(issue_id)_short_description
2120
```
2221

2322
For example:
2423

2524
```shell
26-
git checkout -b feat/explicit-tlu_11
27-
git checkout -b tracing_indexing_42
28-
git checkout -b 42_tracing_indexing
25+
git checkout -b feat/add_avgpool_operator_470
26+
git checkout -b feat/470_add_avgpool_operator
2927
```
3028

3129
## 3. Before committing
@@ -38,29 +36,30 @@ Each commit to Concrete ML should conform to the standards of the project. You c
3836
make conformance
3937
```
4038

41-
Conformance can be checked using the following command:
39+
Additionally, you will need to make sure that the following command does not return any error (`pcc`: pre-commit checks):
4240

4341
```shell
4442
make pcc
4543
```
4644

4745
### 3.2 Testing
4846

49-
Your code must be well documented, containing tests and not breaking other tests:
47+
Your code must be well documented, provide extensive tests if any feature has been added and must not break other tests.
48+
To execute all tests, please run the following command. Be aware that running all tests can take up to an hour.
5049

5150
```shell
5251
make pytest
5352
```
5453

5554
You need to make sure you get 100% code coverage. The `make pytest` command checks that by default and will fail with a coverage report at the end should some lines of your code not be executed during testing.
5655

57-
If your coverage is below 100%, you should write more tests and then create the pull request. If you ignore this warning and create the PR, GitHub actions will fail and your PR will not be merged.
56+
If your coverage is below 100%, you should write more tests and then create the pull request. If you ignore this warning and create the PR, checks will fail and your PR will not be merged.
5857

5958
There may be cases where covering your code is not possible (an exception that cannot be triggered in normal execution circumstances). In those cases, you may be allowed to disable coverage for some specific lines. This should be the exception rather than the rule, and reviewers will ask why some lines are not covered. If it appears they can be covered, then the PR won't be accepted in that state.
6059

6160
## 4. Committing
6261

63-
Concrete ML uses a consistent commit naming scheme, and you are expected to follow it as well (the CI will make sure you do). The accepted format can be printed to your terminal by running:
62+
Concrete ML uses a consistent commit naming scheme and you are expected to follow it as well. The accepted format can be printed to your terminal by running:
6463

6564
```shell
6665
make show_scope
@@ -69,39 +68,39 @@ make show_scope
6968
For example:
7069

7170
```shell
72-
git commit -m "feat: implement bounds checking"
73-
git commit -m "feat(debugging): add an helper function to draw intermediate representation"
74-
git commit -m "fix(tracing): fix a bug that crashed PyTorch tracer"
71+
git commit -m "feat: support AVGPool2d operator"
72+
git commit -m "fix: fix AVGPool2d operator"
7573
```
7674

77-
Just a reminder that commit messages are checked in the conformance step and are rejected if they don't follow the rules. To learn more about conventional commits, check [this](https://www.conventionalcommits.org/en/v1.0.0/) page.
75+
Just a reminder that commit messages are checked in the conformance step and are rejected if they don't follow the rules. To learn more about conventional commits, check [this page](https://www.conventionalcommits.org/en/v1.0.0/).
7876

7977
## 5. Rebasing
8078

81-
You should rebase on top of the `main` branch before you create your pull request. Merge commits are not allowed, so rebasing on `main` before pushing gives you the best chance of to avoid rewriting parts of your PR later if conflicts arise with other PRs being merged. After you commit changes to your new branch, you can use the following commands to rebase:
79+
You should rebase on top of the repository's `main` branch before you create your pull request. Merge commits are not allowed, so rebasing on `main` before pushing gives you the best chance of to avoid rewriting parts of your PR later if conflicts arise with other PRs being merged. After you commit changes to your forked repository, you can use the following commands to rebase your main branch with Concrete ML's one:
8280

8381
```shell
84-
# fetch the list of active remote branches
85-
git fetch --all --prune
82+
# Add the Concrete ML repository as remote, named "upstream"
83+
git remote add upstream [email protected]:zama-ai/concrete-ml.git
8684

87-
# checkout to main
88-
git checkout main
89-
90-
# pull the latest changes to main (--ff-only is there to prevent accidental commits to main)
91-
git pull --ff-only
85+
# Fetch all last branches and changes from Concrete ML
86+
git fetch upstream
9287

93-
# checkout back to your branch
94-
git checkout $YOUR_BRANCH
88+
# Checkout to your local main branch
89+
git checkout main
9590

96-
# rebase on top of main branch
97-
git rebase main
91+
# Rebase on top of main
92+
git rebase upstream/main
9893

9994
# If there are conflicts during the rebase, resolve them
10095
# and continue the rebase with the following command
10196
git rebase --continue
10297

103-
# push the latest version of the local branch to remote
104-
git push --force
98+
# Push the latest version of your local main to your remote forked repository
99+
git push --force origin main
105100
```
106101

107102
You can learn more about rebasing [here](https://git-scm.com/docs/git-rebase).
103+
104+
## 6. Open a pull-request
105+
106+
You can now open a pull-request [in the Concrete ML repository](https://github.com/zama-ai/concrete-ml/pulls). For more details on how to do so from a forked repository, please read GitHub's [official documentation](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) on the subject.

0 commit comments

Comments
 (0)