Open Source Governance & Licensing

A GPLv2 component in an Apache 2.0 project: check the version before assessing distribution

Apache 2.0 Project Discovers GPLv2 Component: Confirm Version First, Then Judge Composition and Distribution

When planning to adopt Apache 2.0 for a project, one discovers the presence of GPLv2 code. The first step should be to restore specific licenses and engineering relationships by identifying the exact licensing conditions of third-party code.

First distinguish the two GPLv2 licensing statements

One should examine actual file and package declarations to determine if the component is limited to GPLv2 or allows adoption of that version or subsequent versions. Apache's official statement: Apache 2.0 does not interoperate with GPLv2, but Apache code can be included in a group work distributed under GPLv3. If the relevant code indeed allows selection of subsequent versions, further evaluation of the GPLv3 path is possible; this does not mean that GPL code can be re-labeled as Apache 2.0. Apache Compatibility Statement

Then determine how the code enters the product

GPLv2 distinguishes between simple aggregation based on programs and independent works. Therefore, merely having a 'single code repository' or 'same installation package' is insufficient to determine the overall project's license. One must analyze code duplication, modification, linking, dependency usage, and distribution methods.

Using an independent build tool versus incorporating its implementation code into a final program are different facts. Even if it is considered independent aggregation, the GPL component itself still needs to fulfill its obligations. The inclusion of licensed code in generated artifacts must be independently checked.

IPC is not an automatic exemption

Splitting into two processes helps describe boundaries, but legal judgment will still involve the relationship between communication content and modules. Socket, RPC, or container cannot be seen as unconditional isolation solutions. The GNU official FAQ also emphasizes that mechanisms and communication semantics both affect analysis.

What to do before release

Your team can create a checklist to record the versions, licenses, modifications, linking methods, and final delivery locations of each relevant component. Based on the review results, choose one path:

  • - Retain truly independent components and provide licenses, copyrights, and required source code materials separately.
  • - Adjust the release license of composite works when relevant rights allow it.
  • - Obtain additional authorization from right holders to confirm its scope covers actual use cases.
  • - Replace the component or rewrite related functionality, and validate the new implementation and dependencies.

After choosing a solution, you should also update file declarations, NOTICE, source code delivery methods, and build materials. Do not consider 'replacement complete' as the end of all reviews. Compatibility check tools can identify conflict clues; combination relationships and authorization scopes still need to be jointly confirmed by development and legal teams.

Back to insights