Contributing#
How to contribute to Kiso the project.
This page covers contributing to Kiso itself (bug reports, features, code). For extending Kiso with new plugins, see How Kiso extensions work.
Reporting bugs#
File bug reports on GitHub Issues.
A good bug report includes:
Kiso version (
kiso version)Python version (
python --version)Operating system
The experiment config file (or a minimal reproduction)
The full error output (run with
kiso --debugfor verbose output)What you expected to happen vs what actually happened
Proposing features#
Open a GitHub Issue with the label enhancement. Describe:
The use case you are trying to address
Your proposed solution (optional, but helpful)
Alternatives you considered
Large or breaking changes should be discussed in an issue before submitting a PR.
Development setup#
# Clone the repo
git clone https://github.com/pegasus-isi/kiso.git
cd kiso
# Install in development mode with all dependencies
pip install -e ".[all]"
# Install pre-commit hooks
pre-commit install
Running the test suite#
# Full test suite with coverage (recommended)
tox -e py311
# Direct pytest
pytest --cov=src --no-cov-on-fail tests/
# Single test file
pytest tests/test__main__.py
# Single test function
pytest tests/test__main__.py::test_check
All tests must pass before submitting a PR.
Code style#
Tool |
Purpose |
|---|---|
|
Linter and formatter (black-compatible, line length 88) |
|
Type checking |
|
Runs all checks automatically on commit |
Run all checks manually:
pre-commit run --all-files
Run individual tools:
# Lint and format
ruff check --fix src/ tests/
ruff format src/ tests/
# Type check
mypy src/
Code style conventions:
Google-style docstrings
Type annotations required for all public functions and methods
No
print()— uselogginginstead
Commit conventions#
Commits must follow Conventional Commits. The pre-commit hook (commitizen) enforces this.
Common types: feat, fix, docs, refactor, test, perf, build, chore.
Examples:
feat(fabric): add floating IP support
fix(htcondor): correctly configure IPv6 trust domain
docs: add multi-testbed tutorial
Pull request process#
Fork the repository and create a branch from
mainMake your changes with tests
Ensure
pre-commit run --all-filesandtox -e py311passSubmit a PR against
mainA maintainer will review and either approve, request changes, or close with explanation
PRs should be focused — one feature or bug fix per PR. Do not mix unrelated changes.
How decisions are made#
Kiso is developed at USC Information Sciences Institute. Maintainers review and merge PRs. For significant design decisions, open a GitHub Issue first to discuss before investing time in an implementation.
See also#
How Kiso extensions work — adding new plugins
Contact — reaching the team