Status: Active
Version: 1.0
Last Updated: 2026-04-13
This document describes how the ThemisDB project is governed: how decisions are made, who has authority over what, and how contributors can advance to positions of greater responsibility.
- Guiding Principles
- Roles and Responsibilities
- Decision-Making Process
- Contribution Policy
- Code Review Standards
- Conflict Resolution
- Changes to Governance
ThemisDB is guided by the following principles:
- Openness — All source code is public. Development discussions happen in the open on GitHub.
- Correctness over speed — We prefer a well-reviewed, tested change over a fast one.
- Backward compatibility — Breaking changes require a MAJOR version bump and a migration guide.
- Security first — Security vulnerabilities are treated as P0 and handled with confidential disclosure. See SECURITY.md.
- Documentation parity — Every API and module change must be reflected in the documentation.
Anyone using ThemisDB. Users contribute by filing issues, asking questions in Discussions, and providing feedback.
Anyone who has submitted at least one merged pull request. Contributors are encouraged to review PRs, help triage issues, and mentor other contributors.
Maintainers are responsible for one or more source modules. They:
- Review and merge PRs for their module (with Project Lead final approval for large changes)
- Keep the module's
ROADMAP.mdandREADME.mdup to date - Ensure the module's tests remain green on
develop
See MAINTAINERS.md for the current list.
The Project Lead has final decision authority on:
- Architecture and API design
- Release timing and versioning
- Adding or removing maintainers
- Changes to governance
The current Project Lead is @makr-code.
- Open a pull request.
- Receive at least 1 approval from a maintainer or the Project Lead.
- CI must be green.
- Merge.
- Open a GitHub Issue or Discussion describing the proposal.
- Allow at least 5 business days for community feedback.
- Achieve consensus among active maintainers, or final approval from the Project Lead if consensus is not reached.
- Document the decision in
docs/research/architecture_decisions/adr_NNN.md.
- Follow the significant-decision process above.
- Write a migration guide in
docs/migration/. - Announce in GitHub Discussions at least 2 weeks before the release.
- Follow the process defined in VERSIONING.md §9.
Handled privately per SECURITY.md and SOP.md §SOP-05.
- Bug fixes (all sizes)
- Documentation improvements
- New features aligned with the roadmap or previously discussed in an Issue
- Performance improvements with benchmark evidence
- New client SDKs or plugins (reviewed for security and quality)
- Large architectural refactors without an approved ADR
- New mandatory third-party dependencies without a security review
- Changes that break backward compatibility without a MAJOR version plan
- Features that conflict with the edition model (see RELEASE_STRATEGY.md)
All contributions must be compatible with the MIT License. By submitting a pull request, you agree that your contribution is licensed under the MIT License.
| Requirement | Rule |
|---|---|
| CI | All CI checks must pass before merging |
| Tests | New functionality must include tests; coverage must not drop |
| Documentation | Public API changes must update the relevant documentation |
| Style | Code must pass the project's clang-format / clang-tidy checks |
| Security | Changes touching security-sensitive paths require review by the security-responsible maintainer |
| Review SLA | PRs should be reviewed within 5 business days; stale PRs may be closed after 30 days of inactivity |
- Between contributors: Discuss respectfully in the PR or issue. Reference the Code of Conduct.
- Between contributor and maintainer: Escalate to the Project Lead via a GitHub Discussion.
- Final authority: The Project Lead's decision is final.
All participants must comply with the Code of Conduct.
This document can be changed by:
- Opening a pull request targeting
develop. - Allowing at least 7 days for community comment.
- Final approval by the Project Lead.
Every change must be recorded in the document's version header and noted in CHANGELOG.md.
- MAINTAINERS.md — Current maintainer roster
- CONTRIBUTING.md — How to contribute
- CODE_OF_CONDUCT.md — Community standards
- VERSIONING.md — Versioning and release policy
- SOP.md — Standard operating procedures
- SECURITY.md — Security policy
- .github/GOVERNANCE.md — Issue/PR label schema and milestone standards