Getting Started
Contributing to Apache Arrow doesn’t have to be overwhelming. Whether you’re fixing a bug, adding a feature, improving documentation, or helping others in the community, your contributions are valuable and appreciated.Code of Conduct
All participation in the Apache Arrow project is governed by the Apache Software Foundation Code of Conduct. We are committed to providing a welcoming and inclusive environment for all contributors.Ways to Contribute
Join the Community
A great first step is to join the mailing lists and participate in discussions:- arrow-dev mailing list - For development discussions
- Apache Arrow Community - Full community information
Report Bugs and Request Features
Even if you can’t fix issues yourself, reporting bugs and requesting features helps us understand and prioritize improvements. The Arrow project uses GitHub issues as a bug tracker. Before creating a new issue:- Search existing issues to avoid duplicates
- Use component prefixes in titles (e.g., “[C++][Python] Issue description”)
- Provide clear, minimal steps to reproduce bugs
- Include relevant system and version information
Improve Documentation
Documentation improvements are an excellent way to contribute! If you found incomplete or inaccurate docs, share your knowledge with the community. Documentation changes are also great for learning our submission process without extensive local development setup. Many doc changes can be made directly in the GitHub web interface.Contribute Code
Ready to write code? Here’s the workflow:Find or Create an Issue
Create a GitHub issue describing the bug or enhancement. Search existing issues first to avoid duplicates.For minor documentation fixes (≤2 files, ≤500 words), you can prefix your PR with “MINOR:” instead of creating an issue.
Set Up Your Development Environment
- Fork the apache/arrow repository
- Clone your fork locally
- Set up the build environment for your component
- Create a new branch for your work
Make Your Changes
- Write your code following the component’s style guide
- Add unit tests for your changes
- Run tests locally to ensure they pass
- Run linters to check code style
- Keep your branch synced with upstream/main regularly using
git rebase
Submit a Pull Request
- Push your branch to your fork
- Create a pull request against the main branch
- Prefix the PR title with the issue number and component: “GH-14736: [C++][Python] Description”
- Provide a clear, brief description in the PR body
- Respond to review feedback and update your PR as needed
Development Best Practices
Git Workflow
- Work off your personal fork, not the main repository
- Keep your fork’s main branch synced with upstream/main
- Develop on feature branches, not on your main branch
- Use descriptive branch names (or use the GitHub issue number)
- Sync your branch with upstream/main regularly using
git rebase - Squash commits locally if you have multiple commits and need to resolve conflicts
Pull Request Guidelines
- Break work into small patches - Smaller changes are easier to review and merge
- Add comprehensive tests - Cover nominal cases, corner cases, and error conditions
- Follow style guides - Each component has its own style conventions
- Make code look consistent - Match existing patterns and conventions in the codebase
- Write clear commit messages - Explain why changes were made, not just what changed
AI-Generated Code
We recognize that AI coding assistants are part of many developers’ workflows. While thoughtful use of AI tools can be beneficial, please:- Only submit code you can debug and own yourself
- Review all generated code to understand every detail
- Match the style and conventions of the existing codebase
- Be upfront about AI usage and summarize what was AI-generated
- Watch for AI’s tendency toward verbose comments and unnecessary code
- Disclose any copyrighted materials per ASF’s guidance on AI-generated code
Proposing Major Changes
For significant new features or important refactoring, please discuss your proposal on the arrow-dev mailing list before starting work. This helps ensure your effort aligns with the project’s direction and prevents duplicated work.Questions?
If you have questions about:- Source code - Ask on the arrow-dev mailing list
- Build procedures - Check the development documentation
- Getting started - Read the New Contributor’s Guide