Skip to content

Latest commit

 

History

History
146 lines (97 loc) · 6.23 KB

CONTRIBUTING.md

File metadata and controls

146 lines (97 loc) · 6.23 KB

Contributing

Detailed expectations for those contributing to this repository. A documented branching strategy is recommended. Trunk based development as default.

This project uses a git-flow based development branching strategy.

Trunk-based Development vs. Git Flow

Branches

Branch naming must be consistent and must be in kebab-case. The following pattern is recommended -

  • feature-[Issue Number]/* - Feature additions
  • bugfix-[Issue Number]/* - Bug fixes
  • chore-[Issue Number]/* - Chore tasks
  • doc-[Issue Number]/* - Documentation tasks
  • release/[release-version] - Release versioning

For example,

  • feature-27/setup-postgresql
  • release/1.0

Commits

Consistent, verbose commits reduce the need for additional documentation. May be used for generating changelogs. Detailed instructions must be included either through a documented specification or custom documentation.

This project uses the conventional commit specification for commits.

https://github.com/talos-systems/conform

Use the Imperative

Consistent tense in commit messages.

In keeping with the standard output of git itself, all commit subject lines must be written using the imperative:

Your commit subject line must be able to complete the sentence

If applied, this commit will ...

If it doesn't, it's non-conformant. The body may use any style you want.

Use the Body to Explain the Background and Reasoning, not the Implementation

Especially if the diff is rather large or extremely clustered, you can save all fellow developers some time by explaining why you did what.

When possible the addition of screenshots, recorded gifs or other visual media is recommended.

Subject Line Standard Terminology

First Word Meaning
Add Create a capability e.g. feature, test, dependency.
Cut Remove a capability e.g. feature, test, dependency.
Fix Fix an issue e.g. bug, typo, accident, misstatement.
Bump Increase the version of something e.g. dependency.
Make Change the build process, or tooling, or infra.
Start Begin doing something; e.g. create a feature flag.
Stop End doing something; e.g. remove a feature flag.
Refactor A code change that MUST be just a refactoring.
Reformat Refactor of formatting, e.g. omit whitespace.
Optimize Refactor of performance, e.g. speed up code.
Document Refactor of documentation, e.g. help files.

Documentation

Documentation must be treated as an integral aspect of development. This section describes expectations for documentation rigor and placement.

In cases where the impact of a change is such that it is affects a fundamental component of the system, additional documentation is needed above what is presented in commit messages. This is by discretion, but it is advised to err on the side of more documentation than less.

In these cases, documentation should be added as markdown files within the project directory.

Code Review

Expectations for conducting code reviews, the merger of code and subesquent tasks

Pull requests require a minimum of one reviewer to accept changes prior to merge. It is the responsibility of the person submitting the pull request to schedule a code review.

Google Engineering - Code Review Developer Guide

Deploy

Deployment steps from the perspective of an engineer required to deploy to all of the available evironments.

Once a pull request is merged the change will be automatically deployed to the appropriate environment.

Task Workflow

Description of how tasks are tracked through project management software and expectations of different roles.

Task Workflow Diagram

Definition of Done

A task is complete when

  • All acceptance criteria have been met
  • Implementation has been code reviewed
  • All automated tests pass (e.g: Unit, end-to-end testing)
  • All manual tests pass (e.g: Functional, user interface testing)
  • Necessary documentation is reviewed
  • Implementation is deployed to the appropriate environment

Technologies Used and Dev Setup

The following technologies are required for development

  • Node.js
  • Java
  • Micronaut
  • Podman or Docker
  • Gradle

For instructions on setting up your development environment, see Setting up your environment.