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

  1. 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.git
  2. Create a feature branch from the latest main:

    git fetch upstream
    git checkout -b my-feature upstream/main
  3. Make your changes. When you are ready for review, rebase against main and squash into one commit per PR:

    git fetch upstream
    git rebase upstream/main

Code Guidelines

  • Add tests for new functionality in test/ and documentation in docs/.
  • 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:

CheckWhat it verifies
Unit testsAll tests in test/ pass on supported Julia versions
FormatterCode matches the project style (.JuliaFormatter.toml)
DocumentationDocs build successfully with no errors
DownstreamClimaAtmos, ClimaLand, and ClimaCoupler integration tests (soft-fail)

If any check fails, click through to the CI log for details.