Something went wrong. Try again.
Mirrored from GitHub github.com/roostorg/community
Something went wrong. Try again.
community software-development-practices
4 files
README.md
Software Development Practices #
Good software development lifecycle (SDLC) is an endless journey, but it's hard to make progress if you don't know where you're going. This document is intended to be a checklist for ROOST projects to work through as they mature.
Document status: Working draft. Suggested categories, checks, and priority below.
Quality vision #
| Item | Description/Notes | Priority |
|---|---|---|
| Intention statement | Sets the ethos for what kind of software we're building and for who. | P0 |
Versioning #
| Item | Description/Notes | Priority |
|---|---|---|
| Versioning | ROOST projects are using semantic versioning | P1 |
| Branching | To start, ROOST projects should use main as the branch for development, and use the GitHub Release feature (via semver-tagged commits) to denote releases. This will need to be revisited as projects mature and have to handle backporting patches, but the ethos is "minimum viable complexity." |
P0 |
Release cadence #
| Item | Description/Notes | Priority |
|---|---|---|
| Initial Process | * Identify big features on 12 month timeline. These are substantial changes (think blog headline). * Estimate delivery time in quarters of big features and group features with similar timelines together. Bundle breaking changes when possible. * Add minor features/changes to timeline. Bundle together for as consistent cadence as possible. * Patch versions can be cut at any time as needed for bug fixes. |
P0 |
Project conventions #
| Item | Description/Notes | Priority |
|---|---|---|
| README.md | All projects/repos must have a README file in markdown format. At minimum, the README must have a description of what the project does, information for how to start using it (can link to longer getting started documentation), and links to the CONTRIBUTING.md and Code of Conduct. | P0 |
| AGENTS.md | Add a markdown file to guide AI coding assistants following the open AGENTS.md format. See ROOST AGENTS.md practices for detailed guidance | P1 |
| API format | Projects should follow the ROOST API specification practices | P1 |
| CHANGELOG.md | Projects must have a CHANGELOG.md file, following the Keep A Changelog format | P0 |
| Contributor guidance | All projects must have a CONTRIBUTING.md file at minimum. By default this is inherited from ROOST's .github, but can be updated at the per-project level. Additional documentation for first time contributors describing project conventions and code quality expectations is recommended. | P0 |
| CODE_OF_CONDUCT.md | All projects must have a CODE_OF_CONDUCT.md with the ROOST Code of Conduct. This is automatically inherited from ROOST's .github and should not be changed. | P0 |
Testing practices #
| Item | Description/Notes | Priority |
|---|---|---|
| Tests for all commits | 1) Unit tests 2) Lint checks 3) Integration tests 4) Build checks |
P0 |
| Release tests | End-to-end testing for Major and Minor releases | P0 |
| CI checks | Determine the relevant CI checks for the project and enforce that all CI checks pass | P0 |
Dependency handling #
| Item | Description/Notes | Priority |
|---|---|---|
| Version alerts | Automated alerts and process for updating dependencies | P0 |
| Vulnerability alerts | Automated alerts and process for updating dependencies | P0 |
| License scanning | Ensuring compatible licenses for dependencies added via CI | P1 |
| Vendoring policy | Do we ever vendor deps? | P2 |
Security #
See the dedicated Security page for more information about our security response process and security releases.
CI/CD #
| Item | Description/Notes | Priority |
|---|---|---|
| Fuzzing | Determine what surfaces or characteristics of surfaces should be fuzzed and at what cadence (including planning for triage and remediation at that cadence) | P2 |
| Code analysis | CodeQL, secret and token scanning, etc | P1 |
| Binary artifact detection | Flagging checked in binaries | P2 |
| Commit-time vuln detection | Flags for packages with known CVEs | P2 |
Releases #
| Item | Description/Notes | Priority |
|---|---|---|
| Signed releases | P3 | |
| Security report intake | See Security | P0 |
| Incident response process | See Security | P1 |
PR triage and code review #
| Item | Description/Notes | Priority |
|---|---|---|
| Issue labeling | How can this be automated or less burdensome? | P2 |
| PR labeling | How can this be automated or less burdensome, and identify priority? | P2 |
| Code review guidance | Project documentation should include a section on how to help with code review, and highlight any particular areas code reviewers should pay attention to | P1 |
Support #
| Item | Description/Notes | Priority |
|---|---|---|
| Breaking changes policy | Following semver, breaking changes go in Major versions. This policy is about when it's appropriate to introduce a breaking change and how it should be communicated to users (timeline, expectations, support) | P1 |
| Long term support (LTS) policy | How many versions back does the community support? | P3 -- address later |
Deprecation #
| Item | Description/Notes | Priority |
|---|---|---|
| Deprecation process | P3 -- address when needed |