Thank you for your interest in contributing to Project Wharf! This document outlines our contribution process and the Tri-Perimeter Contribution Framework (TPCF).
Contributions are organized into three perimeters based on trust level and expertise required.
Who: Anyone can contribute at this level
What you can do:
-
Report bugs via GitLab Issues
-
Suggest features via Discussions
-
Improve documentation (typos, clarity)
-
Add examples and tutorials
-
Translate documentation
-
Answer questions in Discussions
Process:
-
Fork the repository
-
Create a feature branch
-
Make your changes
-
Submit a Merge Request
-
Address review feedback
Who: Contributors who have demonstrated expertise and reliability
Eligibility (meet 2+ criteria):
-
5+ accepted Perimeter 3 contributions
-
Domain expertise (security, Rust, DNS, CMS)
-
Vouched by a Core maintainer
What you can do:
-
Review Perimeter 3 contributions
-
Implement non-critical features
-
Write integration tests
-
Create adapters for new CMS platforms
-
Improve Nickel configurations
Process:
-
Request Perimeter 2 access via Issue
-
Core maintainer reviews contribution history
-
If approved, added to
@expert-contributorsgroup -
Can now approve Perimeter 3 MRs
Who: Trusted maintainers with deep project knowledge
Eligibility:
-
Significant Perimeter 2 contributions
-
Demonstrated security awareness
-
Long-term commitment to the project
-
Unanimous approval by existing Core
What you can do:
-
Merge to protected branches
-
Release new versions
-
Modify security-critical code
-
Change architecture decisions
-
Manage CI/CD pipelines
Process:
-
Nominated by existing Core maintainer
-
2-week community comment period
-
Unanimous Core approval required
-
Added to
@core-maintainersgroup
# Clone the repository
git clone https://gitlab.com/hyperpolymath/wharf.git
cd wharf
# Using Nix (recommended)
nix develop
# Or manually install dependencies
# See README.adoc for requirements
# Initialize
just init
# Run tests
just test
# Run lints
just lintWe use Conventional Commits:
<type>(<scope>): <subject>
<body>
<footer>Types:
-
feat: New feature -
fix: Bug fix -
docs: Documentation only -
style: Formatting, no code change -
refactor: Code change that neither fixes nor adds -
perf: Performance improvement -
test: Adding tests -
chore: Maintenance tasks -
security: Security-related changes
Example:
feat(db-proxy): add AST-based query filtering
Implements SQL parsing using sqlparser crate to analyze queries
and enforce database policies without fragile regex patterns.
Closes #42All source files must include SPDX headers:
// SPDX-License-Identifier: MPL-2.0
// SPDX-FileCopyrightText: 2025 Your Name <email>Run just audit-licence to verify compliance.
Security-related contributions require extra care:
-
Do not disclose vulnerabilities in public Issues
-
Follow the process in SECURITY.md
-
Security fixes are reviewed by Core maintainers only
-
Security changes require 2 Core approvals
-
Update README.adoc for user-facing changes
-
Update inline docs for API changes
-
Add examples for new features
-
Keep CHANGELOG.md updated
-
General questions: Open a Discussion
-
Bug reports: Open an Issue
-
Security issues: See SECURITY.md
-
Contribution questions: Tag
@hyperpolymath