wiki:Contributing

Version 3 (modified by Samuli Seppänen, 13 years ago) (diff)

--

Participating the the development process

Writing code

All generally useful additions and fixes to OpenVPN are most welcome. See developer documentation for more information.

Participating in the ACK system

All code that goes into OpenVPN goes through a review process. Both developers and non-developers are encouraged to take part in this process.

Testing and reporting bugs

Testing is a big part of software development. If you want an easy way to help, you can test that latest and greatest version of OpenVPN works correctly. Testing helps making sure each release is rock-solid, as well as pushing out new releases as quickly as possible. For details, see tester documentation.

If you think you've found a bug in OpenVPN, please check if it's been reported earlier. If not, file new bug report using this service (Trac). If you have encountered a bug that has been reported earlier, you can still help by making the existing report more precise by adding more information.

Making feature requests

It's always good if a project has ideas where to proceed. There a couple of ways to get your ideas out there:

Posting to the mailing list or to the forums allows you to discuss the request with others. If your feature turns out to be something that other people want, too, it's more likely to get implemented sooner or later. "Drive-by" feature requests filed to Trac are not encouraged, as they make follow-up discussion and questions more difficult for everybody.

Packaging

Installing OpenVPN from source is fairly trivial on *NIX computers. However, keeping OpenVPN updated manually is pretty annoying. It helps a lot if users can use pre-built packages (e.g. deb, rpm, exe) for their platform. This is especially true with Windows, where setting up the OpenVPN build environment is a painful, complex process.

If your operating system does not have a package (or port) for OpenVPN, you can help by creating one. Even if such a package exists, it's likely it's pretty old. In this case you can help by generating newer packages, e.g. from Git sources and publishing those. This helps people use the latest and greatest versions of OpenVPN as easily as possible. Take a look and reporting bugs|here to see why this is important.

It is also possible to provide snapshot packages built after every commit by setting up a buildslave.

Helping other users

Writing documentation

All OSS projects need good documentation. The natural place for most documentation is this Trac wiki: just remember that you need to register first. If you want to improve the man-page or other documentation bundled with OpenVPN, follow the procedure outlined in developer documentation. Alternatively you can just let developers know of the issue and let them fix it.

Helping other users

If you're a user and wish to help the OpenVPN project, you can do so in many ways. For example, you can answer to questions sent to our support channels. Being responsive and helpful to newbies is important for the project in the long run: after all, part of them will in time become core contributors. If the same questions get asked over and over again, consider writing a FAQ entry or an article to this Wiki. In the long run this saves everybody's time.

Spreading the word

OpenVPN needs visibility like all OSS projects. Increased visibility means more downloads and more downloads mean more developers and contributions. There are many ways visibility of a project can be increased. You can write articles or blog about OpenVPN. Telling other users about OpenVPN on discussion forums and mailing lists is also valuable, especially on high-profile sites. Just remember not to spam.

Contributing to other OpenVPN-related projects

There is a large ecosystem of projects around OpenVPN, as can be seen here. Even if your skills are not very useful within the core project, you may be able to help the projects around OpenVPN. For example, you could help with graphics or translation in the widely used OpenVPN GUI project.