Open Source Contributor Agreements: Purpose and Scope

Contributor Agreements, also known as Contributor License Agreements (CLA), are increasingly being adopted by open source projects. This article explains the purpose of these Contributor Agreements.

When a contribution is made to an open source project, there is an implicit assumption (and sometimes explicit consent) that the contribution (code, translation, artwork, etc) may be incorporated into the project and distributed under the license the project is using. However, many conditions of the contribution are not explicitly called out. The purpose of Contributor Agreements is to make the terms under which contributions are made explicit, thereby protecting the project, the users of the software and often also the contributors.

Apache Software Foundation (ASF) describes the aim of their CLA in this way: "The purpose of this agreement is to clearly define the terms under which intellectual property has been contributed to the ASF and thereby allow us to defend the project should there be a legal dispute regarding the software at some future time." Contributor Agreements also ensure that contributions cannot be withdrawn by the contributor, as the FAQ for the Django CLA explains: "The CLA also ensures that once you have provided a contribution, you cannot try to withdraw permission for its use at a later date. People and companies can therefore use Django, confident that they will not be asked to stop using pieces of the code at a later date."

Contributor Agreements therefore provide confidence that there likely won't be any legal issues in the future regarding the individual contributions that make up the project, such as disputes over origin and ownership. A downside of Contributor Agreements is that they pose a small overhead and barrier to contribution. This can particularly be a problem for minor contributors who may feel that getting their fixes accepted is not worth the hassle of filling out a Contributor Agreement.

Which points do Contributor Agreements generally cover? There is a lot of variation among Contributor Agreements but the following areas are often covered:

  • Copyright: contributors grant a broad set of permissions and they are sometimes asked to assign their copyright to the project. The Contributor Agreement also ensures that contributors are entitled to contribute their changes to the project.
  • Trademarks: contributors ensure that marks (if there are any) are owned by the project rather than by individual contributors. This avoids possible disputes in the future if contributors leave a project.
  • Patents: contributors grant a patent license to the project in order to ensure that a contributor cannot attack the project in the future by asserting its patents against it.
  • Moral rights: contributors are asked not to assert any moral rights (where they exist) in order to stop derivative works.
  • Contributions by minors: some Contributor Agreements define how contributions by minors are handled.

I'll give an overview of some Contributor Agreements in a future article.