blob: afff23c49b20c7ac91f63323d9cd249776de2acf [file] [view]
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# Contributing
Apache Paimon Rust welcomes contributions from everyone. See the full [Contributing Guide](https://github.com/apache/paimon-rust/blob/main/CONTRIBUTING.md) for detailed instructions.
## Quick Start
1. Fork the [repository](https://github.com/apache/paimon-rust)
2. Clone your fork: `git clone https://github.com/<your-username>/paimon-rust.git`
3. Create a feature branch: `git checkout -b feature/my-feature`
4. Make your changes and add tests
5. Run checks locally before submitting
6. Open a Pull Request
## Development Setup
```bash
# Ensure you have the correct Rust toolchain
rustup show
# Build the project
cargo build
# Run the unit tests (a bare `cargo test` also builds the Python binding and
# can fail to link libpython on some platforms)
cargo test -p paimon --all-targets --features vortex
cargo test -p paimon-rest-server --all-targets
# Format code
cargo fmt --all
# Lint (matches CI)
cargo clippy --locked --all-targets --workspace --features vortex -- -D warnings
```
The integration suites automatically extract a committed Java-written golden
warehouse into temporary directories; Spark and Docker are not required:
```bash
cargo test -p paimon-integration-tests --all-targets
cargo test -p paimon-datafusion --all-targets
```
Set `PAIMON_TEST_WAREHOUSE` to test an existing warehouse instead. Missing fixture
tables fail the tests rather than being skipped or generated by the Rust writer.
## Finding Issues
- Check [open issues](https://github.com/apache/paimon-rust/issues) for tasks to work on
- Issues labeled `good first issue` are great starting points
## Community
- **GitHub Issues**: [apache/paimon-rust/issues](https://github.com/apache/paimon-rust/issues)
- **Mailing List**: [dev@paimon.apache.org](mailto:dev@paimon.apache.org) ([subscribe](mailto:dev-subscribe@paimon.apache.org) / [archives](https://lists.apache.org/list.html?dev@paimon.apache.org))
- **Slack**: [#paimon channel](https://join.slack.com/t/the-asf/shared_invite/zt-2l9rns8pz-H8PE2Xnz6KraVd2Ap40z4g) on the ASF Slack