Contributing and Licensing

The Rudder project and Normation are open source at heart, and we welcome any kind of contribution: comments, criticism, help on IRC or mailing lists, and of course code and documentation contributions. These last two types of contribution are more involved than the others, both for you and for us, and so we have tried to set up a simple and efficient process to follow and lead them.

Contribution process

These are the main steps to contribute code or documentation to the Rudder project:

  1. Get an account in our ticketing system. In the Rudder project, each task is tracked in that ticketing system, which allows everyone to know that there is something to do, what needs doing, and who is working on it.
  2. Open a ticket to describe the task you want to contribute to:
    1. Fill a Bug request if you want to fix a wrong behavior of Rudder
    2. Fill a User story ticket, if you want to add a new feature to Rudder, then you will need to create a subtask as implementation ticket to ease the advancement in the feature developement.
  3. Fill out an Individual Contributor License Agreement (CLA) or, if your contribution is done when working for a company, a Corporate Contributor License Agreement (CCLA).
    1. Thanks to Echosign, there is an online process for the Individual CLA and Corporate CLA.
    2. When the CLA/CCLA is registered by us, you will be notified by email
  4. Submit your contribution:
    1. Fork and create a dedicated branch of our Github repositories, then when you want to share your work, make a pull request, update the issue to tell us you opened a pull request
    2. Submit a patch directly in the issue, we will integrate it to a pull request.
  5. We will review the code and close the ticket when the patch is merged with the project. We may ask for more information and enhancement to your patch along the process.

If at any stage in this process you’d like to discuss your work, but don’t feel the discussion fits in the ticketing system, please email the rudder-dev mailing list.

FAQ

Why must I sign a CLA? Do you want to make money with my code?

Given all the recent evolution of the legal framework around patents, copyrights and their use, the Rudder project and Normation want to be very clear up-front on what we ask for before we can accept such a contribution, and what rights it provides. We want to be able to evolve with all these legal issues, and be able to defend the project if something nasty happens, or in case a single individual changes his mind. Hopefully, that won’t ever be needed, but better safe than sorry! In summary (but you should really read the full text, as only it has legal value), the CLA (and CCLA) states that:

  • your contribution is voluntary
  • your work is your original creation
  • you grant copyright license for your contributions to Normation
  • you grant patent license for your contributions to Normation
  • you are not required to provide support for your contributions

The CLA does not remove any “open sourceness” from the Rudder project, kind of the contrary. More and more open source projects ask for one. In fact, they start to be seen and accepted exactly for what they are: a legal thing to be clear with, to prevent future pain, just the same purpose as a licence. The CLA text is based on the CLA/CCLA provided by the Harmony Agreement Project. The HARMONY agreements is a community-centered group focused on contributor agreements for free and open source software (FOSS).

When do I need to sign a CLA?

We must have a signed CLA/CCLA before we can merge any code or documentation to our project.

What licenses are used?

We use three licenses depending on the purpose:

  1. Apache Software License version 2 for common libraries
  2. GNU General Public License v3 with a linking exception for modules including web software
  3. Creative common attribution share alike v3 (cc by-sa) for documentation

The general organisation is:

  • library-kind (for example, “scala-ldap”) modules are using ASLv2
  • other (“rudder web app, techniques, etc) are using GPLv3

All the Normation OSS projects and modules can be found in GitHub (https://github.com/Normation). Each root directory project contains a LICENSE file with the license used for the project.