Thank you for your interest in contributing! PROTEA welcomes contributions from research institutions and individual developers.
main ← stable releases only (protected, requires PR + review + CI)
develop ← integration branch (protected, requires PR + CI)
feature/* ← new features
fix/* ← bug fixes
docs/* ← documentation improvements
All contributions go through develop first. develop is merged into main for releases.
- Fork the repository
- Create a branch from
develop:git checkout develop git checkout -b feature/my-feature
- Make your changes — follow the code style (ruff + flake8 + mypy enforced in CI)
- Run checks locally before pushing:
poetry run task lint # ruff + flake8 poetry run mypy protea # type checking poetry run pytest # unit tests
- Open a Pull Request targeting
develop - CI must pass and at least one review approval is required
# Install dependencies
poetry install
# Start the full stack (requires PostgreSQL and RabbitMQ)
bash scripts/manage.sh start
# Run tests
poetry run pytest
# Run integration tests (requires Docker)
poetry run pytest --with-postgres- Python: ruff (formatter + linter) + flake8 + mypy
- Line length: 130 characters
- Type hints: required for all public functions
- Docstrings: NumPy style preferred
- Create
protea/core/operations/my_operation.pyimplementingname+execute(session, payload, *, emit) - Register it in
scripts/worker.py - Add tests in
tests/ - Document it in
docs/source/architecture/operations.rst
Open an issue on GitHub or reach out via the repository discussions.