Note
Found a bug? Please first search existing issues to avoid duplicates. If you find a related issue, add your details there. Otherwise, open a new issue with a reproducible example including Rust version, delta-kernel-rs version, code executed, and error message.
For trivial fixes, etc. please feel free to open a PR directly. For larger changes, we follow a structured contribution process to ensure high-quality code:
- Start with an issue and/or design sketch: Open an issue describing what you want to contribute and why. Continue to step 2 after reaching some consensus. This helps us avoid wasted effort (perhaps you were building something that someone else was already pursuing or already explored and rejected). Including a design sketch will help drive consensus (often a simple diagram or bullet points outlining high-level changes is sufficient).
- Prototype/POC: Create a PR marked as prototype/draft (not intended to merge) and gather feedback to further derisk the design. This PR is not intended to be merged but will guide the implementation and serve as a proving ground for the design. Then, pieces are torn out into smaller PRs that can be merged.
- Implementation: Finally, create PR(s) to implement the feature (production code, tests, thorough docs, etc.). Often the initial POC will be split into multiple smaller PRs (e.g., refactors, then feature additions, then public APIs specifically). Care should be taken to ensure each PR is easily reviewable and thoroughly tested.
- Fork the repository into your account
- Clone your fork locally:
git clone git@github.com:YOUR_USERNAME/delta-kernel-rs.git cd delta-kernel-rs - Add the upstream remote:
git remote add upstream git@github.com:delta-io/delta-kernel-rs.git
Now you have:
originpointing to your forkupstreampointing to the original repository
Our trunk branch is named main. Here's the typical workflow:
- Pull the latest main to get a fresh checkout:
git checkout main git pull upstream main
- Create a new feature branch:
(NB: Consider using
git checkout -b my-feature
git worktreesfor managing multiple branches!) - Make your changes and test them locally. See our CI runs for a full set of tests.
# run most of our tests, typically sufficient for quick iteration cargo test # run clippy cargo clippy --all-features --tests --benches -- -D warnings # build docs cargo doc --workspace --all-features # highly recommend editor that automatically formats, but in case you need to: cargo fmt # run more tests cargo test --workspace --all-features -- --skip read_table_version_hdfs # see ffi/ dir for more about testing FFI specifically
- Push to your fork:
git push origin my-feature
- Open a PR from
origin/my-featuretoupstream/main - Celebrate! 🎉
Note: Our CI runs all tests and clippy checks. Warnings will cause CI to fail.
Note: We require two approvals from code owners for any PR to be merged.
- Delta Protocol
- Delta Lake Slack - Join us in the
#delta-kernelchannel