Prerequisites
Before you begin developing Vespa, you’ll need:- For Java development: Java 17 and Maven 3.8+
- For C++ development: AlmaLinux 8 environment (recommended via Docker)
- Version control: Git
- Build tools: CMake (for C++ modules)
Development Environments
- AlmaLinux 8 (Full Development)
- macOS (Java Only)
- Other Platforms
C++ and Java building is fully supported on AlmaLinux 8. This is the recommended environment for complete Vespa development.The easiest way to set up a complete development environment is using Docker:See the Vespa development on AlmaLinux 8 guide for detailed setup instructions.
Repository Structure
The Vespa codebase is organized as a flat structure of approximately 150 modules:Quick Start
To verify your development environment: For detailed building instructions, see Building Vespa.Development Workflow
All work on Vespa happens directly on GitHub using the GitHub flow model.
- Master branch is stable: A new release is made from master every morning CET, Monday through Thursday
- Continuous integration: All commits are tested at factory.vespa.ai
- Pull request reviews: All PRs must be approved by a Vespa Committer
- Find reviewers: Check the
OWNERSfile in the relevant source directory
Creating a Pull Request
Follow best practices
Follow Git commit best practices when creating commits.
Submit your PR
When your code is ready, submit a pull request with a clear description of your changes.
API Compatibility
Vespa uses semantic versioning. Important compatibility rules:- Any Java API in a package with
@PublicAPIannotation (and no@Betaon the class) cannot be changed incompatibly between major versions - Existing types and method signatures must be preserved (but can be marked deprecated)
- ABI compatibility is verified during the Maven build (
mvn install) - If you add to public APIs, update the ABI spec as instructed in the error message
Testing
Vespa has comprehensive test suites:- Unit tests: Java (JUnit) and C++ (Google Test)
- Integration tests: System-level testing
- Shell script tests: Using BATS
Community and Support
Slack Community
Join the Vespa Slack for questions, discussions, and support
GitHub Issues
Report bugs, request features, or browse existing issues
Stack Overflow
Search or ask questions tagged with ‘vespa’
Vespa Blog
Follow feature updates and use cases
Next Steps
Building Vespa
Learn how to build Vespa from source
Code Map
Navigate the codebase structure
Running Tests
Run and write tests for Vespa
Contributing Guide
Detailed contribution guidelines