We'd love to accept your patches and contributions to this project. There are a just a few
small guidelines you need to follow.
1. It's generally best to starting a new thread on vpp-dev@lists.fd.io in which you describe
the bug you're intending to fix, or the feature you're intending to add. Even if you think
it's relatively minor, it's helpful to know what people are working on. Mention in your mail
that you are planning to work on that bug or feature so that it can be attributed to you.
1. Follow the normal process of cloning the project, and setup a new branch to work in. It's
important that each group of changes be done in separate branches in order to ensure that a
pull request only includes the commits related to that bug or feature.
*NOTE*: We follow VPP's general contribution workflow described [here](https://wiki.fd.io/view/VPP/Pulling,_Building,_Running,_Hacking_and_Pushing_VPP_Code)
1. Any significant changes should always be accompanied by tests. The project already has good
test coverage, so look at some of the existing tests if you're unsure how to go about it.
Particularly relevant are config syntax and semantic validation, which will be expected to
have (a) full test coverage and (b) not negatively impact other configuration elements. If
in doubt, discuss the trade-offs on the mailinglist first.
1. All contributions must be licensed Apache 2.0 and all source code files must have a copy of
the boilerplate licence comment with author and copyright attribution. 'Signed-off-by' field
is required for all contributions, signalling Developer Certificate of Origin 1.1 (commonly
used by VPP and originally from the Linux kernel).
1. Do your best to have well-formed commit messages for each change. This provides consistency
throughout the project, and ensures that commit messages are able to be formatted properly