Skip to content

Contributing

Thank you for considering contributing to Ceres! This document provides guidelines for contributing to the project.

  1. Fork the repository
  2. Clone your fork: git clone https://github.com/yourusername/ceres.git
  3. Create a feature branch: git checkout -b feature/your-feature-name
  4. Make your changes
  5. Run tests: cargo test
  6. Commit your changes: git commit -m "Add your feature"
  7. Push to your fork: git push origin feature/your-feature-name
  8. Open a Pull Request
Terminal window
# Start PostgreSQL with pgvector
docker compose up db -d
# Run migrations
make migrate
# Run tests
cargo test
# Run with debug logging
RUST_LOG=debug cargo run
  • Follow Rust standard formatting: cargo fmt
  • Ensure clippy passes: cargo clippy -- -D warnings
  • Write tests for new functionality
  • Document public APIs with doc comments
  • Use clear, descriptive commit messages
  • Start with a verb in imperative mood: “Add”, “Fix”, “Update”, “Remove”
  • Reference issues when applicable: “Fix #123”
  1. Update documentation for any changed functionality
  2. Ensure all tests pass
  3. Update the README.md if needed
  4. Your PR will be reviewed by maintainers
  5. Address any requested changes
  6. Once approved, your PR will be merged
  • Portal Types: Add support for new portal types (Socrata, DCAT-AP) via the PortalClient trait
  • Embeddings: Implement alternative embedding providers (e.g., Ollama for local inference)
  • CLI: Improve user experience and add new commands
  • Documentation: Improve guides, examples, and API docs
  • Tests: Increase test coverage
  • Bug fixes: Fix issues listed in GitHub Issues

Releases are automated via GitHub Actions using git-cliff for changelog generation.

  1. Go to Actions > Prepare Release > Run workflow

  2. Enter the version number (e.g., 0.2.0)

  3. Optionally check “Dry run” to preview changes without committing

  4. The workflow will:

    • Generate CHANGELOG.md from conventional commits
    • Update version in Cargo.toml
    • Commit and push the changes
  5. After the workflow completes, create and push the release tag:

    Terminal window
    git pull && git tag vX.Y.Z && git push origin vX.Y.Z
  6. Monitor the Actions tab for the release workflow.

To preview the changelog locally before releasing:

Terminal window
# Install git-cliff
cargo install git-cliff
# Preview unreleased changes
git-cliff --unreleased
# Preview full changelog with a hypothetical new version
git-cliff --tag v0.2.0

Only stable versions are supported: vX.Y.Z (e.g., v0.1.0, v1.0.0).

Feel free to open an issue for questions or discussions about contributing.

Please be respectful and constructive in all interactions. We want Ceres to be a welcoming project for all contributors.