Skip to content

Latest commit

 

History

History
168 lines (98 loc) · 9.66 KB

CONTRIBUTING.md

File metadata and controls

168 lines (98 loc) · 9.66 KB

Solid Instruments


Instructions for Contributing

Solid Instruments is MIT-licensed. Your contributions must be your own work. Review the license terms and the Code of Conduct before contributing.

For questions, contact [email protected].

License

By contributing to Solid Instruments you assert and agree that:

  1. Your contribution is your own original work.
  2. You have the right to assign the copyright for the work (it is not owned by your employer, or you have been granted copyright assignment rights in writing).
  3. Your contribution is licensed under the terms applied to the Solid Instruments project.

Repository contents

Contents of the repository are organized as follows.

  • /cicd houses source objects which define the behavior of the CI/CD pipeline
  • /doc contains content and configuration files that serve as the source for the project website.
  • /example contains sample projects that utilize the product libraries.
  • /src houses the source for the product libraries.
  • /test houses the test projects for the product libraries.

Tooling

Solid Instruments is developed using Visual Studio with the following extensions installed.

CI/CD tooling is managed and defined by cicd/modules/AutomationTools.psm1. The build environment setup process (initiated by cicd/scripts/ResetEnvironment.ps1) installs the following tools.

Command-line tools

Package managers

Conventions

The Solid Instruments team adheres to a variety of design and workflow conventions, which are described here. We value consistency in these practices. Please feel free to contact us with questions using any available avenue.

Architecture

New contributors should familiarize themselves with basic architectural conventions by reviewing the Architectural Guide. The existing body of source can often be used as a reliable authority when making design decisions but, when in doubt, ask for advice from experienced contributors or contact [email protected].

Design and style

The .editorconfig and CodeMaid.config files, in combination, define most of the project's styling guidelines. More information can be found by reading the Development Guidelines. When in doubt, look to examples within the source for styling guidance, or contact [email protected] with questions.

Revision control workflow

The Solid Instruments team uses RapidField Revision Control Workflow 1.1, a GitFlow-like strategy for managing source branches.

The following patterns define the project's branch naming and usage conventions. Five-digit numeric tokens ("00000") represent an associated issue number.

Master branch

master is the root branch and represents, at all times, the state of the latest production release. The team aims to maintain a 99.9% minimum build success rate for master.

Hotfix branches

Branches matching the pattern hotfix/00000-{semantic-key} are children of master and house active work associated with an urgent production defect. Pull requests to hotfix branches may be used to share unfinished work with other team members working on associated issues, but those pull requests should pass all status checks.

Release branches

Branches matching the pattern release/v0.0.0 are children of master and house completed, tested and integrated work for a named release. Release branches should always be in a releasable state.

Develop branch

develop is a child of master and serves as an integration branch for completed and tested work sourced from defect, feature and maintenance branches. The team aims to maintain a 99.9% minimum build success rate for develop.

Defect branches

Branches matching the pattern defect/00000-{semantic-key} are children of develop and house active work associated with a non-urgent defect. Pull requests to defect branches may be used to share unfinished work with other team members working on associated issues, but those pull requests should pass all status checks.

Feature branches

Branches matching the pattern feature/00000-{semantic-key} are children of develop and house active feature development work. Pull requests to feature branches may be used to share unfinished work with other team members working on associated issues, but those pull requests should pass all status checks.

Maintenance branches

Branches matching the pattern maintenance/00000-{semantic-key} are children of develop and house active project maintenance work. Pull requests to maintenance branches may be used to share unfinished work with other team members working on associated issues, but those pull requests should pass all status checks.

User branches

Branches matching the pattern user/{username}/00000-{semantic-key} serve as source branches for pull requests targeting defect, feature and maintenance branches. User branches may contain work-in-progress and there are no requirements for them with respect to status checks.

Workflow diagram

RapidField Revision Control Workflow 1.1 diverges from GitFlow by introducing defect and maintenance branches, which are treated like feature branches from a process perspective but are used for different purposes. The workflow is diagrammed below.

Revision control diagram

Release versioning

Solid Instruments releases are versioned using the Semantic Versioning 2.0.0 specification. Release versioning is controlled via appveyor.yml. Please do not submit pull requests that modify the build version. The maintainers manage release versioning.

Get started

Ready to start contributing? You know what to do.

git clone https://github.com/RapidField/solid-instruments.git

Environment setup

After cloning the repository, navigate to the root directory in an administrative PowerShell session and execute Build.ps1 to install the command-line tools and verify the status of your build.

PowerShell
.\build.ps1 -interactive

Build verification

During development it is good practice to ensure that your build remains in a passing state. Before pushing commits upstream, open a PowerShell console and execute the verify task in the project root.

PowerShell
psake verify

Your first issue

First-time contributors are welcome to start with any open, unassigned issues labeled Tag-GoodFirstIssue. After picking one, leave a comment on the issue so that we can assign it to you and promote its status.

Revision control plans are provided with the descriptions of all accepted issues. Please review carefully before starting.

Get help

If you encounter problems or if questions arise, there are several options available for finding help.




RapidField

Copyright (c) RapidField LLC. All rights reserved. "RapidField" and "Solid Instruments" are trademarks of RapidField LLC.