Creating a Pull Request
Commit Best Practices
Please follow best practices for creating git commits:Write Clear Commit Messages
Use descriptive commit messages that explain what changes were made and why.
Make Atomic Commits
Each commit should represent a single logical change. Don’t mix unrelated changes in one commit.
Submitting Your Pull Request
When your code is ready to be submitted:- Push your changes to a branch in your fork
- Create a pull request against the Vespa repository
- Fill out the pull request template
All pull requests include a license confirmation template that you must agree to.
Code Review Requirements
Reviewer Selection
Every pull request must be approved by a Vespa Committer who is different from the author.Find the Right Reviewer
Look for the
OWNERS file upward in the source tree from where you’re making changes. The OWNERS have special responsibility for their code areas.Request Review
Request a review from an appropriate owner or committer familiar with the area of code you’re modifying.
Review Process
What Reviewers Look For
What Reviewers Look For
Reviewers evaluate:
- Code quality: Is the code well-structured, readable, and maintainable?
- Correctness: Does the code do what it’s supposed to do?
- Testing: Are there appropriate tests for the changes?
- API compatibility: Do changes maintain backward compatibility (see versioning)?
- Documentation: Are public APIs documented? Is the change documented if needed?
- Performance: Are there any performance implications?
Handling Review Feedback
Handling Review Feedback
When you receive feedback:
- Address each comment thoughtfully
- Push new commits to your branch (they’ll appear in the PR automatically)
- Reply to comments to explain your changes or reasoning
- Mark conversations as resolved when addressed
- Request re-review when ready
Approval Authority
As a rule, approval should happen before merging, but this is not strictly required as the approver can revert if needed.Testing Requirements
Building and Testing
Before submitting your PR, ensure your changes build and pass tests:ABI Compatibility Verification
For Java APIs, ABI (Application Binary Interface) compatibility is automatically verified during the Maven build:The build will fail if you make incompatible changes to public APIs or if you add to public APIs without updating the ABI spec.
- Ensure there’s a good reason for the addition
- Update the ABI spec as instructed in the error message from the build
Continuous Integration
All pull requests are automatically built and tested by Vespa’s continuous integration system:- View build results at factory.vespa.ai
- Builds must pass before merging
- Failed builds will show details about what went wrong
Governance and Disputes
Vespa follows a governance model defined in GOVERNANCE.md.Decision Making
While formal authority exists as a fallback, decisions are usually made by reaching consensus based on technical merit, with no regard to status or formal role.
- Disagreement as healthy (diversity of perspectives leads to better decisions)
- Technical arguments over formal authority
- Building consensus through discussion
The Vespa Board
The Vespa Board has final authority over all decisions, including:- Whether to merge (or keep) a PR in the event of any dispute
- Who should be committers and board members
- Changes to the governance policy
- Jon Bratseth (bratseth) - leader
- Kristian Aune (kkraune)
- Kim Johansen (johans1)
- Frode Lundgren (frodelu)
Release Process
Vespa releases the master branch four times a week (Monday through Thursday morning CET).
- Your merged PR will be in production within days
- The master branch should always work
- Test thoroughly before merging
- Be available to help if issues arise after your change is released
Next Steps
Versioning Guidelines
Learn about API compatibility and semantic versioning
Contributing Guide
Back to the main contributing guide