Before you start
All patches should be written against the Git “master” branch. Some patches may be backported to release branches after review.
- Have read the code style guidelines
- Are familiar with Git and the patch submission process
- Have tested your changes thoroughly
- Follow the project’s coding standards
Contribution workflow
Write your patch
Create your changes against the latest master branch. Split large patches into small, atomic commits to make reviews easier.
Format your code
Ensure your code follows the project’s formatting guidelines using clang-format. See the code style guide for details.
Get feedback (optional)
For quick feedback before formal submission, visit the #openvpn-devel channel on irc.libera.chat.
Submit your patch
Submit your patch via one of the accepted methods: mailing list, Gerrit, or GitHub PR for review.
Submission methods
Mailing list (preferred)
The preferred method is to send patches directly to the openvpn-devel mailing list: Subscribe to the list: https://lists.sourceforge.net/lists/listinfo/openvpn-devel Subject line format: Prefix your subject line with[PATCH]
Sending patches:
Use git-format-patch or git-send-email to generate and send patches:
To avoid merging issues, always use git-format-patch or git-send-email instead of manually creating patches.
Gerrit code review
You can also submit patches through the OpenVPN Gerrit instance:- Create an account at https://gerrit.openvpn.net/
- Follow the Gerrit best practices guide
- Submit your changes for review
GitHub pull requests
GitHub PRs are accepted for code review and discussion only. After ACK, patches must still be sent to the openvpn-devel mailing list for final merge.
- Fork the repository on GitHub
- Create a feature branch
- Make your changes and commit
- Open a pull request for review
- After the patch is ACKed, send it to the mailing list (you or a reviewer can do this)
Patch guidelines
Keep patches atomic
Break large changes into small, logical commits:- Each commit should represent one logical change
- Commits should be self-contained and buildable
- Write clear commit messages explaining the “why”
Commit message format
Write clear commit messages that explain:- What the change does
- Why the change is necessary
- Any relevant context or background
Code formatting
All code must follow the OpenVPN code style guidelines:- Use the provided
.clang-formatconfiguration - Run clang-format before submitting
- Install the pre-commit hook for automatic formatting
Testing
Ensure your changes:- Build successfully on supported platforms
- Don’t break existing functionality
- Include tests for new features when applicable
- Are tested in realistic scenarios
Quick feedback
If you want quick feedback on a patch before sending it to the mailing list: IRC: Join #openvpn-devel on irc.libera.chatYou must be logged in to Libera to join the channel. See the registration guide.
Related projects
The contribution process for other OpenVPN projects may differ:- openvpn-build - Windows installers and Debian packages
- openvpn-gui - Windows GUI
- tap-windows6 - Windows TAP adapter
- easy-rsa - Certificate management utility
Additional resources
Developer documentation
Comprehensive developer guides and technical documentation
Contributing wiki
Detailed contribution instructions and workflows
Code style
Code formatting and style guidelines
Community overview
Connect with the OpenVPN community