Community

Contributing

How to contribute to uPKI CA.

Contributing to uPKI CA

Thank you for your interest in contributing! Please read this guide before submitting patches.

Code of Conduct

Be respectful and inclusive. Focus on what is best for the project. We will not tolerate harassment of any kind.

Getting started

  1. Fork the repository on GitHub
  2. Clone your fork: git clone https://github.com/YOUR_USERNAME/upki-ca.git
  3. Create a branch: git checkout -b feature/my-feature

Development environment

git clone https://github.com/circle-rd/upki-ca.git
cd upki-ca

python -m venv .venv
source .venv/bin/activate

pip install -e ".[dev]"

# Verify
pytest

Pre-commit hooks

pip install pre-commit
pre-commit install

Coding standards

RuleValue
LanguageEnglish (code, comments, docs)
File namingsnake_case.py
Class namingPascalCase
Function namingsnake_case
ConstantsUPPER_SNAKE_CASE
Line length120 characters
Type hintsRequired on all public functions
DocstringsGoogle style, required on all public functions/classes

Linter and formatter

# Lint
ruff check upki_ca/ tests/

# Format
ruff format upki_ca/ tests/

Testing

All new code must include tests:

pytest                          # run all tests
pytest tests/test_core.py       # run a specific file
pytest --cov=upki_ca            # with coverage

Minimum coverage target: 80%.

Submitting changes

  1. Push your branch: git push origin feature/my-feature
  2. Open a Pull Request against main
  3. Fill in the PR template — describe what changes and why
  4. Ensure all CI checks pass (tests, lint)

Reporting issues

Use the GitHub issue tracker. Include:

  • Python version
  • uPKI CA version
  • Steps to reproduce
  • Expected vs actual behaviour
  • Relevant log output

Documentation

Documentation contributions are welcome. The docs site lives in docs-site/. Add or update Markdown files under docs-site/content/docs/.

Copyright © 2026