This page is a more detailed version of the parent page. It describes some items in more detail and provides rationale. You are supposed to read it once when you join Serokell, after that you can mostly use the parent page for reference.

Note: this page assumes that the repository in question is hosted on GitHub. However, even if it's not the case (for example, the repository is hosted on GitLab), virtually everything from this page should apply as well.

Branches

Commit messages

[#453] Switch from avada-kedavra to expelliarmus

Problem: `avada-kedavra` library that we use to kill unwanted
process instances has a negative side-effect: it tears
programmers' souls apart. There s currently no mitigation
of this issue according to: (link to the developer issue
tracker).

Solution: Use a simpler `expelliarmus` library that blocks
process instances from performing any effects. Garbage-collect
blocked processes using the `kill` syscall.

Commit history

Ideal commit history should satisfy the following criteria:

Note, however, that during PR review your history doesn't have to satisfy these criteria. When you make a PR, commit history should be proper™. After that your history may be spoiled because PR reviewers will be interested to see how your PR evolved over time and see commits implementing their requested changes. However, future code readers will not be interested in everything that happened inside your PR during the review-fixup phase, so commits to be merged to the target branch should satisfy the above criteria.

See the Git hints section in the end of this doc if you have troubles making your history pretty.

PR ↔ issue relation

Each PR SHOULD resolve exactly one issue and each issue SHOULD be resolved by exactly one PR. So don't start working on more than one issue at once. There are legitimate cases when it doesn't hold though, for example: