A Github Pull Request Template for the CCC Process

Previously I shared a Code Change Control commit template. The CCC commit template provides much more rigor and documentation than a normal commit message. When you need stability and strict testing, such as when attempting to stabilize for a customer release, the CCC process helps ensure that changes are thoroughly tested and that only the necessary changes are included.

An alternative approach to using a commit template is to use a GitHub pull request template. PR templates can be supplied for each project - when a new PR is created, the description box is auto-populated with the template contents.

When your team enters a critical development stage, you can switch from the standard PR template to the more rigorous CCC PR template shown below.

CCC PR Template

The objective of the CCC process is to ensure that all changes which are proposed need to be included, as well as to ensure they have been properly tested.

Developers should provide the background and justification for their change. The impact to the customer and any potential performance impacts should be noted. Tests should be thoroughly described and all test conditions (e.g. hardware and software versions) noted. Each change should have two reviewers to ensure that the change is high quality.

This template requires extra rigor that can be quite draining. I recommend enforcing the CCC template only during critical stages of development. For normal development cycles, consider using my basic GitHub pull request template.

# Description

Please include a summary of the change and which issue is fixed. Please provide the motivation for why this change is necessary at this stage of the product development cycle.

Fixes # (issue)

## Customer Impact

Please describe any customer facing impact of this change. This can be positive or negative impact.

## Performance Impact

Please describe any relevant performance impact of this change. This can be positive or negative impact. How did you characterize/test the performance impact?

# How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so others can reproduce. Please also list any relevant details for your test configuration.

- [ ] Test A
- [ ] Test B

**Hardware Configuration**:
- [ ] Dev Board
- [ ] Test rack
- [ ] DVT Boards
- [ ] Production Boards

**Software Configuration**:
* Operating System:
* Software version:
* Branch:
* Toolchain version:
* SDK version:

# Reviews

Please identify two developers to review this change

- [ ] @personA
- [ ] @personB

# Checklist:

- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream modules

Example Template File

You can find an example implementation file in embedded-resources GitHub repository. The PULL_REQUEST_TEMPLATE_CCC.md file contains the example template shown above. To use this file in your own project, copy that it into your project and remove _CCC from the template name.

Further Reading