Thank you for your interest in contributing to rust-jpl! 🎉
Contributions of all kinds are welcome — bug reports, feature requests, documentation improvements, and code contributions.
This project focuses on scientific correctness, API clarity, and long-term stability, especially due to its integration with NASA JPL ephemeris data.
This project follows the guidelines outlined in CODE_OF_CONDUCT.md.
By participating, you agree to uphold respectful and inclusive behavior.
You can contribute by:
- Reporting bugs
- Suggesting features or improvements
- Improving documentation
- Writing tests
- Submitting pull requests
If you are unsure where to start, feel free to open an issue for discussion.
When reporting a bug, please include:
- The
rust-jplversion - Rust compiler version (
rustc --version) - Operating system and architecture
- The relevant NASA JPL ephemeris (e.g., DE441)
- Steps to reproduce the issue
- Expected vs actual behavior
- A minimal reproducible example, if possible
Please use the Bug Report issue template.
Feature requests are welcome, especially those that:
- Improve scientific accuracy
- Extend support for additional JPL ephemerides
- Improve ergonomics without sacrificing clarity
- Maintain backward compatibility
Before starting implementation:
- Open a feature request issue
- Describe the use case and scope
- Discuss API design if public APIs are involved
This helps avoid wasted effort and ensures design alignment.
- Rust 1.70.0 or newer (MSRV)
- Cargo
- Git
Verify your setup:
rustc --version
cargo --versiongit clone https://github.com/chinmayvivek/rust-jpl.git
cd rust-jpl
cargo build- Follow
rustfmt - Code must pass
cargo clippywithout warnings - Prefer clear, idiomatic Rust over clever code
cargo fmt
cargo clippy --all-targets --all-features- Public APIs should be explicit and predictable
- Avoid breaking changes whenever possible
- All public items must be documented
- Types should encode invariants where possible
- Favor
Resultover panics
- Avoid
unsafeunless absolutely necessary - Any use of
unsafemust be:- Minimal
- Justified
- Documented
- New features must include tests
- Bug fixes should include regression tests
- Prefer unit tests where possible
- Integration tests should be used for ephemeris validation
Run tests with:
cargo test- Public APIs must have
///doc comments - Examples in docs should compile
- Update
README.mdwhen behavior changes - Keep documentation accurate and concise
Check documentation locally:
cargo doc --openPlease use clear and descriptive commit messages:
feat: add DE440 ephemeris support
fix: correct Julian date conversion edge case
docs: clarify configuration example
refactor: simplify ephemeris loader
Ensure that:
- Code builds successfully
- All tests pass
cargo fmtandcargo clippysucceed- Public APIs are documented
- Relevant issues are referenced
- All pull requests are reviewed by the maintainer
- Feedback may be requested
- Be open to discussion and revisions
As a solo-maintained project, response times may vary — thank you for your patience.
The project follows Semantic Versioning.
- PATCH: bug fixes
- MINOR: backward-compatible features
- MAJOR: breaking changes
See RELEASE.md for details.
By contributing, you agree that your contributions will be licensed under the project’s license:
- MIT OR Apache-2.0
If you have questions or are unsure about anything:
- Open an issue
- Start a discussion
Thank you for contributing to rust-jpl 🚀