Thank you for your interest in contributing to uzomuzo! This project is a Go CLI tool for OSS supply chain lifecycle governance. Contributions of all kinds are welcome: bug reports, feature requests, documentation improvements, and code changes.
- Go 1.25+ (
go.modcurrently requires Go 1.25.0; Go 1.26.1 is recommended for local development) - goimports (
go install golang.org/x/tools/cmd/goimports@latest) - golangci-lint (installation guide)
- A GitHub account
git clone https://github.com/future-architect/uzomuzo-oss.git
cd uzomuzo-oss
cp config.template.env .env # configure environment variables as needed
go build -o uzomuzo .go test ./...goimports -w . && golangci-lint run- Fork the repository on GitHub.
- Clone your fork locally.
- Create a branch from
mainwith a descriptive name (e.g.,feat/add-sbom-export,fix/license-parsing). - Make your changes, following the coding standards below.
- Run tests:
go test ./... - Run linter:
goimports -w . && golangci-lint run - Commit your changes using conventional commit messages (see below).
- Push your branch and open a pull request against
main.
This project follows Domain-Driven Design (DDD) with strict layer boundaries:
Interfaces -> Application -> Domain <- Infrastructure
For full details, see:
- DDD Architecture and
.claude/rules/ddd-architecture.md - Coding Standards
- Development Guide
Key points:
- All code must be formatted with
goimports. - All exported identifiers must have godoc comments.
- Follow the existing patterns in the codebase.
- English only for source code, comments, and documentation.
Use Conventional Commits:
<type>: <description>
<optional body>
Types:
| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
refactor |
Code restructuring (no behavior change) |
docs |
Documentation changes |
test |
Adding or updating tests |
chore |
Maintenance tasks |
perf |
Performance improvements |
ci |
CI/CD changes |
Examples:
feat: add CycloneDX SBOM export
fix: resolve incorrect license mapping for dual-licensed packages
docs: update library usage guide
- Keep PRs focused on a single concern.
- Include a clear description of what the PR does and why.
- Reference related issues (e.g.,
Closes #123). - Ensure all tests pass and the linter reports no issues.
- Add tests for new functionality.
- Do not push directly to
main; all changes go through pull requests.
Please open an issue with:
- A clear, descriptive title.
- Steps to reproduce the bug.
- Expected vs. actual behavior.
- Go version, OS, and any relevant environment details.
Please open an issue describing:
- The problem you want to solve.
- Your proposed solution (if any).
- Any alternatives you considered.
We are committed to providing a welcoming and inclusive environment. Please be respectful and constructive in all interactions. Harassment, discrimination, and disrespectful behavior will not be tolerated.
This project is licensed under the Apache License 2.0. By contributing, you agree that your contributions will be licensed under the same terms.