Contributing
We are at an early stage and actively looking for collaborators. If you are interested in composable modelling, infectious disease epidemiology, or Julia ecosystem development, you are welcome here — whether you contribute code, documentation, examples, or ideas. If you are not sure where to start, see Get involved.
Before you start
- Read the Using Julia guide to set up your environment.
- Read the target package’s own developer documentation — conventions can vary slightly between packages.
- For anything non-trivial, open an issue first so we can agree on the approach.
Project structure
Most packages use multiple environments, each with its own Project.toml: the main package, test, docs, and often benchmark. Activate the one you need before working in it.
Development workflow
Packages that use Task expose common commands:
task --list # see available tasks
task setup # set up the development environment
task test-fast # run tests, skipping slow quality checks
task docs # build the documentation locally
task precommit # run formatting and checks before committingWithout Task, the equivalents are plain Pkg and Julia commands — for example julia --project=test test/runtests.jl to run the tests.
Style
We follow the SciML style guide: snake_case for variables and functions, CamelCase for types, docstrings on everything exported, and short lines. Formatting and linting are checked in CI.
Tests and documentation
- Write tests alongside your change; new features start with a test.
- Document exported functions and types with docstrings.
- Add or update examples where it helps a reader.
Opening a pull request
Work on a feature branch, keep commits focused, and open a pull request against main. CI runs the tests, quality checks, and a documentation build — the same checks run on this website (see Developer docs). A maintainer will review and help get it merged.
Thank you for contributing.