Contribution Rules and Coding Standards

  • NB: Last update 20.Oct.2017

Important: before submitting a contribution

All of the OpenViBE source code is released to the public under the AGPL-3 License. However, different rules govern code inclusion to the different repositories. These rules are required in order to maintain compliance of the OpenViBE kernel to the ‘IEC 62304:2006 Medical device software’ standard. In order to understand the practical consequences of this, please read this document carefully.

OpenViBE is free to use and the source code is freely available. However, there are requirements concerning code and patch submissions to the software. In all cases, OpenViBE code conventions should be followed. In addition, from the viewpoint of the different code repositories, please note the following:

  • meta : Contributions require copyright transfer to Inria (see below).
  • sdk : In IEC certifiable perimeter. Contributions require copyright transfer to Inria and a strict Q/A process.
  • designer : In IEC certifiable perimeter. Contributions require copyright transfer to Inria and a strict Q/A process.
  • extras : Contributions require copyright transfer to Inria. Exception is folder extras/contrib/ where contributions can be freely submitted.

In more detail, for extras repository, contributions can be freely submitted to the contrib/ folder of the OpenViBE distribution. The authors retain the rights to their work. The contribution must have an AGPL3 compatible license. Contributions such as drivers and boxes can be accepted in this category.

For code designated to any other folder in extras, the contributor must transfer the rights of the work to Inria (details).

For code concerning sdk and designer, strict QA process must be followed. For example, kernel modifications belong to this class. If you are interested in contributing to this section of the code, please contact us first with a description of the intended contribution.

In all cases, the contributor will be considered the moral author of the contributed work, and be acknowledged for in it in the release notes, web documentation, and other places that may apply (such as source code, for contributed modules).

Practical significance between contrib/ and the other folders in ‘extras’. Some components such as boxes and Acquisition Server drivers can reside either in contrib/ or the non-contrib parts of the source tree. In such a case, it is worth considering which perimeter the contribution should preferably be in. The difference between the two is that if Inria is granted the copyright transfer, it can dual-license the contribution to be included by third-party products derived from OpenViBE. At the moment these include the NeuroRT Studio and ADHD treatment solutions from Mensia Technologies. Materials in contrib/ are not dual licensed and hence cannot be used in derived closed-source products. Hence, contributors such as hardware manufacturers may consider transferring a driver copyright in order to get maximum user coverage for their device.

Note that all contributions are individually considered for inclusion by the OpenViBE dev team and may be rejected. Especially high standards are required for any contributions to the certifiable perimeter. If you have any questions about making a contribution, please do not hesitate to contact the lead engineer directly.

Copyright transfer details

If your contribution is not targeted to the contrib/ folder, a copyright transfer is required in order for your contribution to be considered for inclusion in the OpenViBE source tree. In that case, you need to transfer the rights of the work to Inria (France). This is done by signing a copyright transfer agreement. The form used will depend on your circumstances:

  • If you work for another: If the ownership of your work actually belongs to your employer according to your work contract, you must ask us an institutional contributor form. The form must be signed by a representative of your company who is authorized to do so.
  • If you’re independent / freelance: If the rights of your work belong to you, please ask us for an individual contributor form. In this case you can sign the form yourself.

Due to the French law, the signed agreement must be mailed via post in two physical copies. One copy will be sent back to you with Inria’s signature. If you intend to transfer a copyright, please contact us directly letting us know which form would you need and a brief description of what you intend to contribute.

Concerning driver contributions

There are a few simple notes to make regarding our practices for driver contributions.

  • The contributor should take care that the driver works as intended, with some acceptable level of quality. Without access to the hardware, the OpenViBE developers cannot really test the driver. What we can do is to keep the driver compiling and linking from one OpenViBE version to another, and bundle it with the releases.
  • The driver may depend on proprietary materials either compile time or run-time. If we should not redistribute either of these materials with OpenViBE, you must clearly indicate so with the necessary details.
  • The OpenViBE engineers will require the needed compile-time materials for the intended platforms (libraries, APIs, etc) if any, in order to compile and link the driver.
  • On Windows, any library dependencies should be 32bit. If they have been implemented with Visual Studio, we’d prefer the 2013 version (in order to minimize the number of redist packages required by OpenViBE).
  • In the case the driver relies on proprietary materials run-time, the users who do not have them must still be able to use the Acquisition Server normally. If the user selects your driver in that case, the driver should gracefully print an error message about the missing materials and return ‘false’ from the driver code handling the ‘Connect’ and/or ‘Driver Properties’ buttons.
  • On the Supported Hardware -page, we can mention the contributor as the party to contact regarding questions to the driver. Alternatively, we can omit this information. You can let us know which you prefer. The OpenViBE core developers do not know the device or the driver well enough to answer questions specific to it.

If you have further questions about driver contributions, feel free to contact us.

OpenViBE coding standards

Developers wishing to contribute to OpenViBE should be aware that several coding rules have been fixed to ensure homogeneous source code.

Since OpenViBE 2.0.0 has been provided during CertiViBE project, new coding rules have been provided for this occasion.

Access levels

Integrating contributions is done on different levels.

  • First, senior developers of the core team have full access to the repository. They can modify any file.
  • Next, junior developers of the core team have access to work on their own branches in the repository. Integration to the master branch is decided with the senior developers.
  • Finally, community contributors typically have a read-only access to the repository. Contributors may produce patches and develop custom functionalities locally, and email them to the core team as candidates for inclusion. Creating such patches may be done easily by dumping the output of a git diff.
This entry was posted in Architecture and practices. Bookmark the permalink.