Maintainers

A "Maintainer" is a person who merges patches to the project. Maintainers are not developers; their job is to enforce process.

Maintainer Workflow

The Maintainer workflow is defined by C4. The following process description is intended to help Maintainers, but the C4 page the authoritative source.

Prerequisites

  • Maintainers MUST have a GitHub account and SHOULD use their real name or a well-known alias.

Patch Requirements

The Maintainer’s job is to ensure contributed patches conform to C4 "Patch Requirements" :

  • A patch SHOULD be a minimal and accurate answer to exactly one identified and agreed problem.

  • A patch MUST adhere to the code style guidelines of the project if these are defined.

  • A patch MUST adhere to the guidelines defined in C4 "Evolution of Public Contracts"

  • A patch SHALL NOT include non-trivial code from other projects unless the Contributor is the original author of that code.

  • A patch MUST compile cleanly on at least the most important target platforms.

Workflow

A pull request message is automatically generated by GitHub and sent out to the mailing list whenever a contributor submits a pull request. Current pull requests are visible on link: the Machinekit GitHub Pull Requests page.

To review and merge a pull request, a Maintainer must perform the following steps:

  • Review the patch to make sure it conforms to the Patch Requirements, above.

  • Ensure that the code builds successfully. The Tavis CI webhooks show the status and results in the Pull Request

  • If the patch is not 'correct', the Maintainer will request changes to the pull request using the GitHub pull request discussion feature. Comments will be limited to adherence to the above patch requirements; per the C4 contract, Maintainers will not make value judgments on correct patches.

  • If the patch is 'correct', the Maintainer will merge the pull request using the "Merge Pull Request" button on the GitHub pull request web page.

  • The commit message entered when the pull request is merged MUST include a reference to the issue in GFM notation (e.g. '#188'), which creates a link from the issue to the commit, and MAY use [GitHub features to automatically close the issue][4] by including text like 'fixes #188'.