- Maintainability guidelines of Open-Source Software development
- Guidelines aplicable for newly started software projects
- Any pieces of advice for the improvement of the guideline is warmly accepted.
- The first step should always be the issue/ticket
- If there isn't an issue template try to provide as many additional details as possible, like main issue, how to replicate, version(s) of software(s) used when the issue occured
- After the discussion and having the possible solution clarified go to the implementation following the basic guidelines
- Follow trunk based development
Development flow
- Pull the master branch to get the most up-to-date version of the system/application/service
- Create a feature branch following the branch naming conventions,
git branch I332-short-name
- Push frequently based on the smaller parts of the sections, follow the push guidelines
- Create Pull Request once the development reaches a state where the solution is considered to be done based on the requirements, follow the guidelines of pull request
- Accept the reviews and do the change requests
Maintainer flow
- Accept pull request on master
- Based on the size of the team responsible for the codebase add half of the team as reviewer
- Setup additional content for the pull request, in case of Github
-
- If half of the reviewers (so 1/4 of the team) approve the changes
- and all of the change requests get done
- and the newly added code has at least 80% of code coverage
- and the automated test system or CI tool runs successfully then merge it following the merge guidelines
- When the develop reaches the goals of the next version, release a new version based on the release-guidelines
Third-party developer flow
- Fork the original repository
- Clone it and the remote origin points to the forked version
- Set the remote upstream to the original repository
- Frequently do pulls on upstream's master and merge it into the origin's working branch to keep the development up-to-date
- Do the steps of the Development flow
- Create pull request between forks against the master branch
- First letter must be
I
if issue, orT
if board ticket, strongly platform restricted - After the first letter, add the number of the ticket, ex.:
432
- After that add the short name of the ticket with dashes in kebab-case, ex.:
short-name
- ex.:
I432-short-name
orT432-payment-bug-fix
- Never use
*
or.
ingit add
, it helps to overview the files and avoid the pushes of unecessary files (ex.: binaries) - Never use
-m
ingit commit
, it helps to have an additional overview of the files and makes it possible to format the commit message properly - Use
git push --set-upstream origin I12-branch-name
at the first time - Never push changes on the master
- Add well-meaning title so that the maintainer can quickly recognize the purpose of the pull request.
- Write detailed description in the body, what main issue this PR solves and how is it testable to prove the validity of the solution.
- Create pull request against master.
- Use
Squash
to keep the commit line clean from the thousands of commits
- In special cases let's handle it in an automated way or go with the following steps by hand
- Use Semver 2 or language-specific best practices
- Create annotated tag with
git tag -a v1.2.3
- Push the new changes
git push --tags
Assignes
, yourself or an other team member who should deal with the PRLabels
, determine the kind of the PR and provide more information aboutProjects
, determine the project where the PR belongs toMilestones
, determine the version number where the PR will be released