Open-Source Compliance

What Is a CLA and Why Do Enterprises Need One?

Luca Bertrand 8 min read
Abstract visualization of contributor license agreement concept

Most engineering teams encounter a Contributor License Agreement for the first time under pressure — a lawyer flags it during an M&A due diligence review, or a new corporate policy arrives requiring CLA coverage before any external PR can merge. At that point, the team is playing catch-up on a body of contributor history they didn't track systematically.

Understanding what a CLA actually does — and what it doesn't — before you're in that situation is the difference between a two-week compliance sprint and a months-long remediation project.

What a CLA Does, Precisely

A Contributor License Agreement is a legal document in which an individual or entity grants a project maintainer specific rights over the contributions they submit. Those rights typically include the right to reproduce, modify, distribute, and sublicense the contributed code under the project's chosen license — including any future license changes.

Two flavors exist in practice:

  • Individual CLA (ICLA): Signed by a developer acting on their own behalf, covering contributions they own personally.
  • Corporate CLA (CCLA): Signed by an authorized representative of a company, covering contributions made by employees of that company. The CCLA typically includes a schedule or addendum listing covered contributors.

The distinction matters because an employee's work-related contributions are generally owned by their employer, not by the employee, under work-for-hire doctrine in US law (and equivalent doctrine in most common-law jurisdictions). An ICLA from an engineer whose employer hasn't signed a CCLA may be legally meaningless — the engineer doesn't own the IP they're granting rights to.

Why a License Alone Isn't Enough

A common misconception is that publishing code under an open-source license — Apache 2.0, MIT, GPL — implicitly handles contributor rights. It doesn't.

When you release code under Apache 2.0, you're granting rights to users of the code. You're not obtaining any rights from contributors who add new code to your project. Those contributors retain copyright in their contributions unless something explicitly transfers or licenses those rights to you.

Without a CLA, every significant third-party contribution sits in an ambiguous state: you have the code, but the rights arrangement is governed entirely by whatever the contributor implicitly agreed to (usually nothing more than the project's inbound license policy, if one exists at all). The SPDX license header in a file tells you what rights downstream users have. It says nothing about what rights you — the maintainer — hold from the upstream contributor.

This becomes acutely problematic when you want to:

  • Relicense the project (moving from GPL to Apache, or adding a commercial exception)
  • Commercialize the project or dual-license it
  • Pursue patent claims or defend against them
  • Demonstrate clean IP provenance during an acquisition or investment

What a CLA Grants You

A well-drafted CLA typically grants the project maintainer or sponsoring entity:

  1. A copyright license to reproduce, prepare derivative works, publicly display, and distribute the contribution
  2. A patent license covering any patents the contributor holds that would be infringed by the combination of their contribution with the project
  3. A representation of ownership — the contributor asserts they have the right to grant these rights (i.e., they own the code, or their employer has authorized the contribution)
  4. Moral rights waiver or license (where applicable under local law — relevant in EU jurisdictions)

The Apache Individual Contributor License Agreement is the most widely adopted template in the industry, used by the Apache Software Foundation, Google, and many enterprise open-source programs. The Apache CCLA adds the employer authorization dimension. Most organizations start with these templates and modify the governing law section, the notice provisions, and the scope of the patent grant to fit their specific needs.

The Enterprise Case: IP Due Diligence

Consider a mid-size infrastructure software company preparing for an acquisition. Their flagship open-source project has 340 external contributors across three years of development. The acquiring company's counsel requests a representation that the project has clean IP ownership — no undisclosed IP encumbrances from third-party contributors.

If that company tracked CLA signatures manually in a spreadsheet, or relied on GitHub comments like "I agree to the CLA" as the record of consent, they're in trouble. Acquirers' counsel wants a timestamped, tamper-evident record of each contributor's CLA version, signature date, and the email address or GitHub identity that signed. "We have emails" doesn't satisfy that standard.

This scenario plays out routinely in M&A diligence on open-source projects. It also appears in early funding rounds where investors' counsel conducts IP representation verification, and in enterprise customer due diligence reviews where the customer's legal team wants to confirm the vendor's open-source stack isn't encumbered.

We're not saying every project needs a CLA from day one — a small project with no external contributors and no plans for commercialization may never need one. The question is whether your project's growth trajectory and business model will eventually require clean IP provenance. If yes, the cost of setting up CLA collection early is trivially small compared to the cost of retroactive remediation.

Where CLAs Fit in an OSPO

Open-source program offices typically manage CLA compliance as part of a broader inbound contribution policy. The OSPO's responsibility is to define that policy, communicate it to contributors, and maintain the audit trail. The challenge isn't the policy definition — most organizations adopt a standard Apache-style CLA with minor modifications — it's the operational execution at scale.

A project with 50 contributors is manageable with a spreadsheet and a manual review process. At 200 contributors across 15 repositories, the process breaks. Contributor lists change with each PR. Corporate contributors' covered-employee schedules go stale as developers change jobs. CLA versions get updated and some contributors need to re-sign. The OSPO becomes a bottleneck: engineers wait days for CLA status confirmation before their PRs can merge.

This is the operational problem that CLA automation addresses. The legal problem — getting valid, defensible contributor agreements — has been understood for decades. The tooling problem is what makes it expensive at enterprise scale.

CLAs and the Developer Experience Question

The main friction point in CLA programs is contributor friction. External contributors who encounter a CLA requirement for the first time often experience it as bureaucratic overhead that disrupts the contribution flow. Some abandon the PR entirely.

Reducing that friction matters both for contribution velocity and for completion rates. Best practices here include: presenting the CLA signing step inline in the PR workflow (rather than redirecting to an external portal and losing the contributor), keeping the CLA language concise (developers are more likely to read a 500-word agreement than a 3,000-word one), and clearly explaining why the CLA exists — contributors who understand the IP reasoning are far more likely to complete the process.

A poorly implemented CLA program doesn't just slow down contributions — it signals that the project is not contributor-friendly, which has lasting effects on open-source community reputation. The implementation quality reflects on the project maintainers as much as the CLA requirement itself.

Choosing the Right CLA Model for Your Organization

For most enterprise OSPOs, the decision framework is straightforward:

  • If you accept contributions from individuals and corporate employees: you need both ICLA and CCLA mechanics
  • If your project is purely internal (inner source): consider whether an IP assignment agreement is more appropriate than a CLA
  • If your project is a foundation-governed project: the foundation typically provides the CLA and administers signatures; you don't manage this directly
  • If you're considering a Developer Certificate of Origin instead: DCO is lighter weight but provides narrower protections — covered in a separate article

The governance structure matters because it determines who holds the CLA records and what happens to them if the project or company changes hands. A CLA signed with a corporate entity is tied to that entity's legal existence. If the project moves to a foundation, existing CLAs may need to be migrated or re-executed.

Getting the CLA model right at the beginning — and then enforcing it consistently at every pull request — is the foundation of a defensible IP program. Everything else in open-source compliance builds on top of this.