Contributing¶
We welcome contributions to Apache Iceberg C++. For general Iceberg contribution guidelines, see the official guide. Contributors using AI-assisted tools must follow the AI-assisted contribution guidelines.
For build and installation instructions, see Getting Started.
Coding Standard¶
The project follows the same coding standard as Apache Arrow (a variant of the Google’s C++ Style Guide)
Naming Conventions¶
| Element | Style | Examples |
|---|---|---|
| Classes / Structs | PascalCase |
TableScanBuilder, PartitionSpec |
| Factory methods | PascalCase |
CreateNamespace(), ExtractYear() |
| Accessors / Getters | snake_case |
name(), type_id(), partition_spec() |
| Variables | snake_case |
file_io, schema_id |
| Constants | k + PascalCase |
kHeaderContentType, kMaxPrecision |
General Practices¶
- Prefer smart pointers (
std::unique_ptr,std::shared_ptr) for memory management - Use
Result<T>for error propagation - Write Doxygen-style comments (
/// \brief ...) for all public APIs - Do not remove public methods without a deprecation cycle:
Development Environment¶
Code Formatting¶
Formatting is enforced via .clang-format (Google base, ColumnLimit: 90). Set up pre-commit to run it automatically:
To run all hooks manually on the entire codebase:
Dev Containers¶
We provide Dev Container templates for VS Code:
Then select Dev Containers: Reopen in Container from the Command Palette.
Submitting Changes¶
Workflow¶
- Fork the repository on GitHub
- Create a feature branch from
main: - Make your changes following the coding standards
- Add or update tests for any behavioral changes
- Ensure all tests pass and
pre-commit run -ais clean - Push to your fork and open a Pull Request
Commit Messages¶
Follow Conventional Commits:
feat: add support for S3 file system
fix: resolve memory leak in table reader
docs: update API documentation
test: add unit tests for schema validation
refactor(rest): simplify auth token handling
Pull Request Checklist¶
- Clear problem/solution description
- Linked issue(s) when applicable
- Tests for behavioral changes
- Passing CI checks (tests, pre-commit, license header, sanitizers)
Getting Help¶
- GitHub Issues — Report bugs or request features
- Good First Issues — Browse here
- Mailing List — dev@iceberg.apache.org (subscribe / unsubscribe / archives)
- Slack — #cpp channel
The Apache Iceberg community follows the Apache Way and the Apache Foundation Code of Conduct.