Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Contributing/Plugin development cycle

From OHC Network Wiki
guidecontributingCARE 3.0+

All CARE plugins follow a shared development cycle to keep the ecosystem predictable and reviewable. Every plugin repository must use the develop branch as its integration branch.

Branching model

main          ─────── (tagged releases only)
                    ╱
develop       ───────────── (integration branch)
              ╱  │  ╲
feature/foo   ─   │   ─── feature/bar
                  │
fix/bug-123    ───
main
Tagged releases only. Merged from develop when cutting a release.
develop
Default integration branch. All features and fixes merge here after review. Must exist in every plugin repo.
feature/<name>
Branch off develop for new features.
fix/<description>
Branch off develop for bug fixes.
chore/<description>
Branch off develop for maintenance tasks.

Creating the develop branch

If a plugin repository does not yet have a develop branch, create it from the current state of main:

git checkout main
git pull origin main
git checkout -b develop
git push origin develop

Then set develop as the default branch in the repository settings on GitHub (Settings → Branches → Default branch).

Workflow

  1. Branch: Create a feature/fix/chore branch from develop.
  2. Build: Implement your changes on that branch.
  3. Review: Open a Pull Request targeting develop.
  4. Merge: After approval, squash-merge into develop.
  5. Release: When ready, merge develop into main and tag the release.

Commit conventions

Use semantic commit prefixes for changelog generation:

feat:
A new feature
fix:
A bug fix
chore:
Maintenance or tooling
docs:
Documentation changes
refactor:
Code restructuring
test:
Adding or fixing tests
perf:
Performance improvements

Example: feat: add discharge summary endpoint

Review requirements

- At least one approval from a maintainer before merging. - All CI checks must pass. - The branch must be up to date with develop (rebased or merged).

Plugin lifecycle

Experimental
New plugin in active development. May break between commits.
Stable
Ready for production use. Follows the full development cycle.
Deprecated
Replaced or superseded. No active development.