Contributing
Thank you for your interest in contributing to ClimaTimeSteppers.jl! We welcome pull requests (PRs) of all sizes — from typo fixes to new solver families. If something seems amiss or you would like to request a feature, please open an issue.
Getting Started
Fork the repository on GitHub, then clone your fork locally:
git clone https://github.com/YOUR_USERNAME/ClimaTimeSteppers.jl.git cd ClimaTimeSteppers.jl git remote add upstream https://github.com/CliMA/ClimaTimeSteppers.jl.gitCreate a feature branch from the latest
main:git fetch upstream git checkout -b my-feature upstream/mainMake your changes. When you are ready for review, rebase against
mainand squash into one commit per PR:git fetch upstream git rebase upstream/main
Code Guidelines
- Add tests for new functionality in
test/and documentation indocs/. - All exported functions and types must have docstrings.
- Keep commits focused — one logical change per commit.
Formatting
CI enforces consistent style via JuliaFormatter.jl using the settings in .JuliaFormatter.toml. Install the formatter once:
julia -e 'using Pkg; Pkg.add("JuliaFormatter")'Then format the entire repository before committing:
using JuliaFormatter; format(".")Continuous Integration
When a PR is created or updated, the following checks run automatically:
| Check | What it verifies |
|---|---|
| Unit tests | All tests in test/ pass on supported Julia versions |
| Formatter | Code matches the project style (.JuliaFormatter.toml) |
| Documentation | Docs build successfully with no errors |
| Downstream | ClimaAtmos, ClimaLand, and ClimaCoupler integration tests (soft-fail) |
If any check fails, click through to the CI log for details.