This repository contains organization-wide guidelines on the processes within Kowainik.
Communications🔗
We can be contacted by email xrom.xkov@gmail.com.
You can also subscribe to our news in Twitter or Telegram.
Workflow🔗
Version control system🔗
Git version control system based on GitHub is used.
Issues and branches🔗
- Work should be done under corresponding GitHub issue. If such issue doesn’t exist: create it.
- Always discuss work under corresponding GitHub issue before doing this issue. If you see multiple ways to do something — discuss with somebody under issue comments section how to do this. If you’re not sure that there’s only one way to do the thing — discuss with somebody under issue comments section how to do this. In perfect case scenario each issue should contain some plan how to do this issue.
- The main branch should be stable, always compilable and working.
- Do your work for some issue under separate branch checkout from the main branch.
- Name your branch as
username/issueId-short-description
. For example:chshersh/1-describe-workflow
. - You shouldn’t fix multiple issues in a single branch.
- Use this guide for commit messages.
- Every meaningful commit should contain issue number in square brackets before message.
- Example:
[#6] Describe basic guidelines
- Example:
Fix the typo
[skip ci]
tag to the end of the commit.- Example:
Change README.md [skip ci]
- Example:
Pull requests🔗
- Open PR if you:
- Finished your work on the issue
- Want to share work with others (for example you can open PR if you need somebody to look and to get advice for continue working on it)
- Add
wip
label to your PR if work is not finished. - Add issue number at the title of PR in square brackets (just like in commit messages).
- Request review from at least two people in team.
- Pull request can be merged to the main branch only if there’re two approvals for this PR.
- Resolve all conflicts using only
git rebase
command to make history clean. - If you’re the second person who approves the PR you should click on the
Squash and Merge
button.
Project structure🔗
- You can use locally
cabal
orstack
as your main build tool. But it’s desired to support both of them on CI. - Every project should contain the following files in addition to code:
- README.md
- CHANGELOG.md
.stylish-haskell.yaml
.github/CODEOWNERS.md
.github/workflows/ci.yml
(GitHub Actions CI)
- Use PVP versioning for projects.
The easiest way to create a project is to use Summoner tool with our own settings.
Code style🔗
- Use Kowainik Style guide for Haskell code.
- Use
stylish-haskell
with.stylish-haskell.yaml
to format code. - Use
relude
custom prelude for applications or huge libraries.