Contributions to Vespa, Vespa system tests, Vespa samples and the Vespa documentation are welcome. This documents tells you what you need to know to contribute.
All work on Vespa happens directly on Github, using the Github flow model. We release the master branch four times a week and you should expect it to always work. The continuous build of Vespa is at https://factory.vespa.oath.cloud. You can follow the fate of each commit there.
All pull requests must be approved by a Vespa Committer. You can find a suitable reviewer in the OWNERS file upward in the source tree from where you are making the change (OWNERS have a special responsibility for ensuring the long-term integrity of a portion of the code).
The way to become a committer (and OWNER) is to make some quality contributions to an area of the code. See GOVERNANCE for more details.
Please follow best practices for creating git commits.
When your code is ready to be submitted, submit a pull request to request a code review.
We only seek to accept code that you are authorized to contribute to the project. We have added a pull request template on our projects so that your contributions are made with the following confirmation:
I confirm that this contribution is made under the terms of the license found in the root directory of this repository's source tree and that I have the authority necessary to make this contribution on behalf of its copyright owner.
Vespa uses semantic versioning - see vespa versions. Notice in particular that any Java API in a package having a @PublicAPI annotation in the package-info, and no @Beta annotation on the class, cannot be changed in an incompatible way between major versions: Existing types and method signatures must be preserved (but can be marked deprecated).
We verify ABI compatibility during the regular Java build you'll run with Maven (mvn install). This build step will also fail if you add to public API's, which is fine if there's a good reason to do it. In that case update the ABI spec as instructed in the error message.
We track issues in GitHub issues. It is fine to submit issues also for feature requests and ideas, whether or not you intend to work on them.
There is also a ToDo list for larger things nobody are working on yet.
If you have questions, want to share your experience or help others, join our Slack channel. See also Stack Overflow questions tagged Vespa, and feel free to add your own.
See README for how to build and test Vespa. Code-map.md provides an overview of the modules of Vespa. More details are in the READMEs of each module.
If you add new files you are welcome to use your own copyright. In any case the code (or documentation) you submit will be licensed under the Apache 2.0 license.