This is the blog section.
Files in these directories will be listed in reverse chronological order.
This is the multi-page printable view of this section. Click here to print.
This is the blog section.
Files in these directories will be listed in reverse chronological order.
This post was written using Claude Code, and the key facts cited were cross-checked against public sources.
This post reflects the author’s personal analysis and is not legal advice. The facts cited were verified against public sources, but specific matters should be reviewed by a lawyer or other qualified professional.
It is hard to answer this question directly with a “yes” or “no.” As I will explain point by point below, what determines the answer is not AI itself. AI coding increases the rate at which code fragments not declared as packages flow in, but it does not change the conditions under which license obligations arise. So rather than asking “does scanning still matter in the age of AI,” it helps more to ask “under what conditions does snippet-level scanning become more important, and under what conditions does it become less important.”
First, the terms need to be separated so the discussion doesn’t get tangled.
| Category | What it looks at | How it catches code that came in |
|---|---|---|
| Dependency-level SCA | Components declared through a package manager | Manifests such as package.json, pom.xml, and build artifacts |
| Snippet-level matching | Fragments within the source code body | Code fragments that entered via copy-paste or AI generation |
Software Composition Analysis (SCA) refers broadly to the activity of identifying open source that has entered the code and managing its vulnerabilities and licenses. Most SCA looks at declared dependencies, as in the first row of the table above. Snippet-level matching is a separate feature found in only some commercial tools; it compares the source code body against a large number of open source projects to find the origin of fragments that are not declared as packages. What this post addresses is not SCA as a whole but this snippet matching.
Let’s start with cases where AI code snippets led to license violation disputes.
The most widely known case is the Copilot class action lawsuit that open source developers filed against GitHub, Microsoft, and OpenAI in November 2022. In May 2023, the copyright infringement claim was dismissed for lack of concrete evidence of copying, and in July 2024, the claim under Section 1202(b) of the Digital Millennium Copyright Act (DMCA) was also dismissed. This section prohibits removing copyright management information attached to an original work, and the court did not accept the claim on the grounds that the Copilot output was not sufficiently identical to the original A2. Of the 22 claims originally filed, two remain: open source license violation and breach of contract A2·A3.
This carries facts that can be read in two directions.
On one hand, the defendants in disputes so far have all been vendors that built the AI tools, and no publicly reported case exists of an adopting company being sued solely for using AI-generated code C1. Also, in September 2023, Microsoft announced through its Copilot Copyright Commitment that it would cover defense costs and damages if a paying commercial customer is sued by a third party over intellectual property arising from Copilot output. This comes with the condition that the customer must not disable the product’s built-in filtering features and must not intentionally generate infringing content B1·C5.
On the other hand, the legal question has not been settled. The DMCA issue above has gone up to the Ninth Circuit Court of Appeals as an interlocutory appeal — where a specific issue is contested in a higher court before the trial court’s judgment — and as of June 2026, no ruling has come down, and the trial court proceedings remain paused A1. The absence of reported precedent does not mean there is no risk.
One distinction needs to be made here. Whether you get sued and whether you have an obligation to comply with a license are different questions. Even if no one files a lawsuit, the obligation to comply with an open source license remains. And when that obligation is triggered matters.
The copyleft obligation of GPL-family licenses, which requires disclosing source code, arises when software is distributed. Merely running software internally is use, not distribution, so no obligation arises C3·C4. Pure SaaS that does not deliver code is likewise outside GPL obligations for the same reason. Two caveats apply here.
Whether short code is even copyrightable is also worth examining. A few lines of functional code may be too trivial an amount of copying to pursue (de minimis), or may fall outside protection because there is effectively only one way to express it (merger doctrine) A4·A5. That said, this is a case-by-case determination, and longer, creative code blocks are protected, so it is hard to say all snippets are free to use.
In practice, it is common for small fragments to come with obligations attached. Code from Stack Overflow, which developers frequently copy, is licensed under CC BY-SA, carrying attribution and share-alike obligations. According to one study, the proportion of GitHub projects that used this code in compliance with the license was at most 1.8% C6. This means even small fragments can carry license obligations, and that obligation is widely not observed.
OpenChain ISO/IEC 5230, the international standard for open source license compliance, focuses on defining where the compliance process sits, how roles and responsibilities are allocated, and how the process is sustained A6. It is a non-prescriptive standard that sets what must be achieved while leaving the specific method to the organization, so it does not mandate a particular technique such as snippet scanning A6·A7. What the standard requires is identifying third-party components and maintaining a list of them — a Software Bill of Materials (SBOM). What matters for meeting the standard is grasping which components entered the code; it does not require analyzing the origin of every single code fragment. In fact, many widely used SCA tools on the market operate at the dependency level only, without snippet matching.
This fact can be read two ways. It means the standard can be met without snippet scanning, since the standard does not require it, and at the same time it means an area remains that the standard does not cover. Dependency-level scanning cannot see fragments that were copied or AI-generated without being declared as a package. Snippet matching is the feature that fills exactly that gap, and some organizations perform it for more thorough intellectual property management.
How much weight snippet scanning deserves depends on two conditions a company faces.
First, whether the company delivers code or binaries directly to customers. When code leaves the company — as with on-premises installed products, mobile apps, SDKs, or embedded device firmware — this counts as distribution and can trigger copyleft obligations. Pure SaaS that does not deliver code carries a smaller burden.
Second, whether the company undergoes external verification — situations where someone outside the company actually checks the origin of the code, such as M&A due diligence, a large customer’s security audit, regulatory requirements, or an SBOM submission that demands snippet-level detail.
The more these two overlap, the greater the chance that a latent obligation surfaces as an actual cost. Even if code is delivered, if there is no verification trigger, the risk stays latent, and if code is not delivered, the obligation itself rarely arises. Neither condition has anything to do with whether AI is used. AI coding is a factor that increases the inflow volume once a condition holds, not a factor that creates the condition.
Placing the two conditions above on two axes yields four quadrants.

Figure 1. How much weight snippet scanning deserves, by condition
The top-right quadrant carries the greatest burden: code leaves the company, creating a license obligation, and there is also a trigger — such as M&A due diligence or a customer audit — that actually looks into that obligation. In the top-left, even if an obligation arises, there is no one to check it, so it stays latent. In the bottom two quadrants, there is no distribution at all, so an obligation rarely arises to begin with.
This diagram is a starting point for judgment, not a definitive answer. Even within the same quadrant, the choice can vary depending on the nature of the code involved, the types of licenses used, and the company’s risk tolerance.
Everything so far has assumed software built through a package manager. Software that runs as embedded or firmware code — routers, set-top boxes, IoT devices, automotive controllers — is a different case. It is mostly written in C/C++, and open source is often copied in as raw source directly into the project without a manifest. In this case, dependency-level SCA has no manifest to read and can barely see the open source at all.
One distinction is needed. For large components brought in wholesale, such as the Linux kernel or BusyBox, the company is usually aware it is using them. That is not a discovery problem but a matter of whether the source disclosure obligation is being met. Where snippet scanning is needed is different: small code fragments pulled in bits and pieces from various open source projects that no one has listed anywhere. Finding these fragments, which dependency-level SCA cannot see, is the job of snippet scanning.
So in embedded software, snippet scanning is not a conditional supplement but closer to a basic means of finding undeclared open source fragments.
Apart from scanning after the fact, there is also a way to block problem code before it comes in. GitHub Copilot has a setting that blocks suggestions matching public code verbatim. Suggestions that match public code exactly at a certain length (on average, roughly 150 characters) or longer are simply not shown B2·C2. GitHub has stated that verbatim duplication over 150 characters occurs at about the 1% level, though independent studies report higher figures depending on context. Either way it is not zero, but turning on this setting reduces the inflow of fragments with unclear provenance. It costs almost nothing, and it is also a precondition for the vendor indemnification discussed earlier.
This setting overlaps in purpose with after-the-fact snippet scanning. One finds fragments after they come in; the other blocks them before they come in. Which of the two to use, and to what extent, is a matter to decide by weighing the conditions above together with cost.
Putting the inflow paths and inspection methods covered so far in one place looks like this.

Figure 2. Code inflow paths and the methods that catch them
Where the blind spot of dependency-level SCA lies, and how snippet matching fills that spot, is the starting point for this judgment.
There is a reason this decision is not simple. Snippet matching is effectively the only way to find code fragments that entered without being declared as a package, whether copied or AI-generated. Neither dependency-level SCA nor code-filtering settings catch all of those fragments. So a small residual area remains that only snippet matching fills. Yet at many companies, that small area rarely translates into actual loss, and snippet scanning costs tool spend and review effort. In the end, this comes down to deciding whether to spend that much to guard against this small risk.
There are four points to examine when making this decision.
One more point is worth adding. Snippet scanning does not have to be decided as an all-or-nothing choice, always on or never done. The occasions when an outside party actually looks into code provenance are largely predictable: M&A due diligence or a large customer’s audit. So one option is to run only dependency scanning and the blocking setting normally, and undergo a one-time snippet scan when such an occasion is anticipated.
Weighing the four points above and this operating approach against your own company’s situation, the answer to how much weight to give snippet scanning will differ from company to company. The exception is embedded software built without a manifest. There, snippet scanning is not a conditional supplement but a basic means of finding undeclared open source fragments.
Everything up to this point has been about licensing. Security vulnerabilities are a different axis, and the conditional conclusions above should not simply be applied here. If vulnerable open source is present in the code, it is dangerous whether or not it is distributed and whether or not it is audited, because even code that stays internal-only or sits in a pure SaaS backend is exposed to attack. So vulnerability inspection is broadly needed at nearly every company.
Tools handling security inspection fall broadly into two kinds.
Whether code was copied in or generated by AI, security vulnerability inspection is no different from any other code. SAST catches risky coding patterns in the code itself, and dependency-level SCA catches known vulnerabilities in libraries that were pulled in. Snippet scanning is a feature for finding license origin, so it is not a tool used for security inspection.
One exception worth noting: the rare case where code with a known vulnerability was copied in verbatim, yet it triggers no SAST pattern and appears in no dependency list. Catching this requires not the snippet feature that finds license origin, but an inspection that directly compares a vulnerable-code signature built from a CVE patch against your own code — vulnerable code clone detection D3. Academic tools and some commercial tools provide this.
A1. BakerHostetler (2025). Doe v. GitHub, Inc. — The Copilot Litigation. https://www.bakerlaw.com/the-copilot-litigation/ (accessed: 2026-06-08). — Claim-by-claim progress of the Copilot class action and its status pending before the Ninth Circuit Court of Appeals. ↩
A2. Claburn, T. (2024). Judge dismisses DMCA copyright claim in GitHub Copilot suit. The Register, 2024-07-08. https://www.theregister.com/2024/07/08/github_copilot_dmca/ (accessed: 2026-06-08). — Dismissal of the DMCA §1202(b) claim; 2 of the original 22 claims remain (license violation, breach of contract). ↩
A3. Pearl Cohen (2024). Copyright Claims Against GitHub, Microsoft, and OpenAI Largely Dismissed. https://www.pearlcohen.com/copyright-claims-against-github-microsoft-and-openai-largely-dismissed/ (accessed: 2026-06-08). — Overview of the dismissal of most claims and the claims that remain. ↩
A4. Goldstein Patent Law. Understanding the Copyright Merger Doctrine. https://www.goldsteinpatentlaw.com/copyright-merger-doctrine/ (accessed: 2026-06-08). — The merger doctrine, which denies copyrightability to functional code. ↩
A5. NYU Journal of Intellectual Property & Entertainment Law. Clarifying the De Minimis Doctrine in Copyright Law. https://jipel.law.nyu.edu/clarifying-the-de-minimis-doctrine-in-copyright-law/ (accessed: 2026-06-08). — The de minimis doctrine, which does not treat trivial copying as infringement. ↩
A6. OpenChain Project. OpenChain ISO/IEC 5230 — License Compliance. https://openchainproject.org/license-compliance (accessed: 2026-06-08). — That the standard defines process and roles but does not mandate a specific technique such as snippet scanning. ↩
A7. ISO. ISO/IEC 5230:2020 — Information technology — OpenChain Specification. https://www.iso.org/standard/81039.html (accessed: 2026-06-08). — Bibliographic information for the standard text. ↩
B1. Microsoft (2023-09-07). Microsoft announces new Copilot Copyright Commitment for customers. https://blogs.microsoft.com/on-the-issues/2023/09/07/copilot-copyright-commitment-ai-legal-concerns/ (accessed: 2026-06-08). — Intellectual property indemnification for paying commercial customers and the condition of keeping the built-in filtering feature enabled. ↩
B2. GitHub. GitHub Copilot (product page). https://github.com/features/copilot (accessed: 2026-06-08). — The existence and operation of the setting that blocks matches with public code. ↩
C1. TechTarget. AI lawsuits explained: Who’s getting sued?. https://www.techtarget.com/whatis/feature/AI-lawsuits-explained-Whos-getting-sued (accessed: 2026-06-08). — Evidence that lawsuit defendants have been concentrated among vendors, with no reported cases of adopting companies being sued. ↩
C2. Microsoft Community Hub. Demystifying GitHub Copilot Security Controls. https://techcommunity.microsoft.com/blog/azuredevcommunityblog/demystifying-github-copilot-security-controls-easing-concerns-for-organizational/4468193 (accessed: 2026-06-08). — The roughly 150-character match threshold for the public-code-match blocking setting and the roughly 1% duplication rate. ↩
C3. Mend.io. The SaaS Loophole In GPL Open Source Licenses. https://www.mend.io/blog/the-saas-loophole-in-gpl-open-source-licenses/ (accessed: 2026-06-08). — The distribution trigger for copyleft, why internal use and SaaS do not qualify, and the AGPL Section 13 exception. ↩
C4. Revenera. Understanding the SaaS Loophole in GPL. https://www.revenera.com/blog/software-composition-analysis/understanding-the-saas-loophole-in-gpl/ (accessed: 2026-06-08). — Additional support on the distribution trigger and the SaaS exception. ↩
C5. TechTarget. Microsoft Copilot Copyright Commitment explained. https://www.techtarget.com/searchenterprisedesktop/tip/Microsoft-Copilot-Copyright-Commitment-explained (accessed: 2026-06-08). — Additional support on the scope and conditions of the indemnification. ↩
C6. Baltes, S. & Diehl, S. (2019). Usage and Attribution of Stack Overflow Code Snippets in GitHub Projects. Empirical Software Engineering, arXiv:1802.02938. https://arxiv.org/abs/1802.02938 (accessed: 2026-06-08). — An empirical study finding that the rate of license-compliant use of Stack Overflow code (CC BY-SA) in GitHub projects was at most 1.8%. ↩
D1. Cycode. What Is Software Composition Analysis (SCA)?. https://cycode.com/blog/what-is-software-composition-analysis-sca/ (accessed: 2026-06-08). — How SCA finds vulnerabilities by checking components and versions against CVE/NVD. ↩
D2. Pearce, H., Ahmad, B., Tan, B., Dolan-Gavitt, B., & Karri, R. (2022). Asleep at the Keyboard? Assessing the Security of GitHub Copilot’s Code Contributions. IEEE S&P 2022, arXiv:2108.09293. https://arxiv.org/abs/2108.09293 (accessed: 2026-06-08). — Vulnerabilities in about 40% of 1,689 programs generated across 89 scenarios. ↩
D3. Kim, S., Woo, S., Lee, H., & Oh, H. (2017). VUDDY: A Scalable Approach for Vulnerable Code Clone Discovery. IEEE S&P 2017. https://seulbae-security.github.io/pubs/vuddy-sp17.pdf (accessed: 2026-06-08). — The problem of vulnerabilities propagating through copied code and copies remaining unpatched even after an upstream patch, and detection of this. ↩
Research as of: 2026-06-08
This article was written using Claude Code, and the key facts cited were cross-verified against primary sources.
This article reflects the author’s personal analysis and summary, and does not constitute legal advice. The facts cited have been verified based on publicly available sources, but legal determinations such as whether infringement has occurred are matters that can be disputed, so please have specific matters reviewed by an attorney or other expert.
Hello.
I have put together a summary of the Rockchip and FFmpeg license dispute, which became a hot topic in the embedded Linux industry. I first wrote this article in December 2025, when the repository was taken down. Since then, Rockchip has taken action and the repository was restored. I have thoroughly revised the article to reflect these developments, and replaced the evidence with the actual code that became available for review once the repository reopened.
This case is not just about one company’s mistake. It also shows the kind of supply chain risk that comes with taking an SDK or BSP provided by a hardware vendor and using it as-is, and how a misunderstanding of licensing can inflate a simple fix into a two-year-long task.

In December 2025, Rockchip’s GitHub repository rockchip-linux/mpp (Media Process Platform) was disabled. This was in response to a DMCA (Digital Millennium Copyright Act) takedown notice filed by an FFmpeg contributor.
Rockchip has provided a middleware library called mpp for hardware video acceleration on its chipsets (such as the RK3588). The problem is that this library’s stream header parser code came from FFmpeg’s libavcodec. Simply taking the code was not, by itself, the problem; the compliance violation arose from three overlapping acts. Rockchip deleted the original copyright notices, rewrote the headers to make it appear that Rockchip was the author, and redistributed code that had been LGPL 2.1 under Apache-2.0.
The notice specified exactly these three acts, and stated as grounds for infringement that this is “evident from the identical code structure and comments, including commented-out calls to FFmpeg internal functions retained under their original names.”

Figure 1. Dispute timeline (Source: DMCA notice, MPP commit history, Issues 530 and 73, Internet Archive. Verified 2026-07-23.)
The exact date the repository reopened was not publicly disclosed. Internet Archive snapshots returned HTTP 451 (Unavailable for Legal Reasons) through March 6, 2026, and new forks began appearing starting March 11, so the reopening is estimated to have occurred sometime in between. The repository was inactive for roughly 10 weeks.
One point worth noting about the DMCA process: it is commonly said that a platform must take content down within a set time after receiving a notice, but 17 U.S.C. §512(c)(1)(C) of the US Copyright Act only uses the term “expeditiously,” with no specific deadline. As a matter of operating policy, GitHub gives repository owners roughly one business day to self-correct when a notice identifies specific files, before taking the repository down.
The notice identified 12 infringing files: 4 related to AV1, 3 related to H.265, and 5 related to VP9. With the repository restored, it became possible to pull the commit as it stood at the time infringement was alleged and compare it directly against the FFmpeg original. Below are the results of that comparison.
The header from FFmpeg’s libavcodec/vpx_rac.h:
/*
* Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org>
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
...
*/
The same location in MPP’s mpp/codec/dec/vp9/vpx_rac.h:
/*
*
* Copyright 2015 Rockchip Electronics Co. LTD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
*/
The name of the original author, Aurelien Jacobs, the LGPL terms, and any reference to FFmpeg all disappeared, replaced with an Apache-2.0 header under Rockchip’s name. The original authors of vpx_rac.c, Fiona Glaser, and of vp9data.h, Ronald S. Bultje and Clément Bœsch, likewise vanished without a trace.
Let’s compare the core function of the VP9 range coder.
FFmpeg libavcodec/vpx_rac.h:
static av_always_inline int vpx_rac_get_prob(VPXRangeCoder *c, uint8_t prob)
{
unsigned int code_word = vpx_rac_renorm(c);
unsigned int low = 1 + (((c->high - 1) * prob) >> 8);
unsigned int low_shift = low << 16;
int bit = code_word >= low_shift;
c->high = bit ? c->high - low : low;
c->code_word = bit ? code_word - low_shift : code_word;
return bit;
}
MPP mpp/codec/dec/vp9/vpx_rac.c (commit 14667441, as of the time infringement was alleged):
rk_s32 vpx_rac_get_prob(VpxRangeCoder *c, uint8_t prob)
{
unsigned int code_word = vpx_rac_renorm(c);
unsigned int low = 1 + (((c->high - 1) * prob) >> 8);
unsigned int low_shift = low << 16;
int bit = code_word >= low_shift;
c->high = bit ? c->high - low : low;
c->code_word = bit ? code_word - low_shift : code_word;
return bit;
}
The only changes are dropping the inline specifier and changing the return type from int to rk_s32. The function body is identical down to the whitespace, and the uint8_t parameter type and unsigned int in the body remain exactly as written in FFmpeg.
Comments unrelated to functionality are exactly what reveal provenance. The following comments remained untouched in the MPP files.
// branchy variant, to be used where there's a branch based on the bit decoded
// rounding is different than vpx_rac_get, is vpx_rac_get wrong?
The first is a word-for-word match with FFmpeg’s vpx_rac.h. The second is a question the FFmpeg developer posed to themselves; the original refers to vp56_rac_get, and MPP simply substituted its own function name while carrying the comment over unchanged. A rhetorical question-style comment like this could not coincidentally appear as an identical sentence in independently written code.
At the top of the file, a description referring to a codec that MPP doesn’t even support was left in place.
/**
* vp56 specific range coder implementation
*/
In FFmpeg, this description exists because the file is shared across VP5 through VP9, but it carried straight over into MPP, which doesn’t handle VP5 or VP6 at all. There is also a spot where an alignment macro was redefined to do nothing.
#define DECLARE_ALIGNED(n,t,v) t v
This macro name exists in both FFmpeg and libvpx, so by itself it doesn’t establish provenance. However, where it is used tracks FFmpeg exactly. FFmpeg’s vp56.h declares the first field of its motion vector struct as DECLARE_ALIGNED(4, int16_t, x);, and MPP’s corresponding struct carries this line over verbatim. The equivalent struct in libvpx does not use this macro at all.
A match at this level would be unlikely to survive a substantial similarity analysis under copyright law. Changing type names or macros alone does not make a work independent. This approach is sometimes used when absorbing external open source into an internal codebase, and this case demonstrates exactly the risk that carries.
The codec’s probability tables, however, are an area where snap judgments should be avoided. These figures are constants defined in the VP9 bitstream specification, and comments like /* a/l both not split */ next to the values are not expressions FFmpeg created either. The same wording already appears in libvpx (Google, BSD-family license), the reference implementation of VP9. FFmpeg, too, should be understood as having taken these from libvpx.
So the fact that the comments match does not by itself tell us where they were taken from. Placing the three codebases side by side, the point where they diverge is not the wording but the formatting.
libvpx:
{ 222, 34, 30 }, // a/l both not split
FFmpeg:
{ 222, 34, 30 } /* a/l both not split */,
libvpx places a comma and then attaches a // comment, while FFmpeg places a /* */ comment before the comma and aligns the numbers to two-character width. MPP’s version matches FFmpeg’s format byte-for-byte. While the values and wording trace back to libvpx, the formatting fits the conclusion that the actual copying source was the FFmpeg version.
The reason this distinction matters is clear. In areas where implementing the same algorithm naturally produces similar code, similarity by itself is not grounds for infringement. One has to pin down which version’s specific traces were followed.
This is the part of the case with the most to learn from. The issue was first made public on February 23, 2024. FFmpeg’s official account posted the callout on X, and on the same day, the developer maintaining the ffmpeg-rockchip fork opened Issue 530 on the MPP repository to relay it. It took 22 months from there to the DMCA notice.
Contrary to what is commonly assumed, Rockchip did not stay silent. The person in charge issued a public apology in February 2024, and continued to respond afterward with statements such as “it’s delayed,” “it’s in progress,” and “the refactor is on hold.” This was a case of responding without correcting.
Rockchip later revealed the reason for the delay.
But after studying the license details, we realised that simply restoring
the LGPL headers would convert the entire MPP library to LGPL-licensed code.
While this is acceptable for dynamically linked libraries, it would mandate
that any project statically linking MPP also adopt the LGPL license.
To avoid this mixed-license scenario, we decided to develop a brand-new parser.
Rockchip’s reasoning was that restoring the LGPL headers would make all of MPP LGPL-licensed, forcing even customer projects that statically link MPP to adopt the LGPL as well. To avoid that outcome, they decided to write a new parser from scratch — but they underestimated the amount of work involved, and progress stalled as it was crowded out by day-to-day work.
This reasoning is only half right. The first part has a basis. If FFmpeg code was incorporated into MPP, MPP becomes a “work based on the Library” as that term is used in LGPL 2.1, and Section 2(c) requires that the entire work be licensed under the terms of the LGPL.
The second part is different. Section 6 provides an exception for combined works, including those using static linking.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, ...
A combined work can be distributed under terms of the distributor’s choosing. The conditions are that customers must be permitted to modify it for their own use, reverse engineering for debugging must be permitted, and either a re-linkable form must be provided or a shared library mechanism must be used. A customer company that statically links MPP is not required to release its own product under the LGPL.
Because the license clause was misread, a task that would have ended with restoring the headers instead inflated into a full parser rewrite, and because that task was heavy, it sat neglected for nearly two years. Distribution in a state of violation continued the entire time. This is the kind of way costs balloon when a compliance judgment is wrong.
After the DMCA notice, Rockchip moved quickly. Within a little over ten days of the notice, it restored the LGPL headers on the 12 identified files, and then went on to replace the VP9, AV1, and H.265 parsers in turn. In mid-February 2026, it announced that it had “removed all FFmpeg LGPL code” and requested review.
A substantial portion of this was actually carried out. Eight of the 12 identified files disappeared from the repository, and the range coder was replaced with an implementation with an entirely different function naming scheme and structure. Scanning all 778 source files in the repository for FFmpeg-specific identifiers such as ff_vp9_, av_always_inline, AVCodecContext, and libavcodec turned up none. No source file mentions the LGPL either. The only trace left is the title of the restoration commit in the changelog document.
Still, a few things remain.
The identified file vp9data.h was not deleted; it was renamed to vp9d_codec.c. In the commit history, this file’s status is shown as a rename, not a deletion. In the process, the header was changed again. The FFmpeg copyright notice and LGPL terms that the LGPL-restoration commit had added were removed, reverting to sole Rockchip copyright with an Apache-2.0 notice. The two commits were made the same day, three hours apart. Of 1,299 lines, 1,045 remain unchanged, and the probability tables and comments also remain in the FFmpeg formatting seen earlier.
Files not listed in the notice were left untouched. In the hardware abstraction layer’s hal_vp9d_com.c, the VP9 probability tables discussed earlier remain in FFmpeg’s exact formatting. This bears out the caveat the notice attached before its file list: “(and possibly others).”
Whether this portion constitutes infringement is hard to say definitively. Since the values and comment wording trace back to libvpx and the specification document, the scope of copyright protection itself is open to dispute.
Above all, there is no public record that FFmpeg has reviewed or accepted this state of affairs. Issue 530 was closed on April 1, 2026, but it was closed by the third-party fork maintainer who had opened it, not by the FFmpeg project. That is not the same as a release from the rights holder. Neither side has stated a policy on how already-distributed past versions will be handled.
It is easy to assume that “code released under Apache-2.0 is safe.” This case shows that Apache-2.0 code with an opaque copyright provenance can actually be a greater risk. This is because it is the code’s actual origin, not its stated license, that determines the obligations that attach to it.
Mapping each violation to the relevant clause looks like this.
| Act | Relevant LGPL 2.1 Section |
|---|---|
| Deleting copyright notices | Section 1 — keep intact the notices concerning the license and disclaimer of warranty |
| Failing to disclose modifications | Section 2(b) — mark modified files with a notice stating that they were changed, along with the date |
| Not licensing the entire work | Section 2(c) — license the entire work under the terms of this license |
| Relicensing under Apache-2.0 | Section 3 (permits conversion to the GPL only) and Section 8 (any other disposition is void; rights terminate automatically) |
Falsely altering attribution is treated differently depending on the country. In Korea and France, this constitutes infringement of the right of attribution, one of the moral rights of authors. US copyright law has no general moral rights regime; the Visual Artists Rights Act (VARA) applies only, and narrowly, to works of visual art.
The Linux kernel provides a standard interface called V4L2 (Video for Linux 2) for hardware acceleration. In this structure, FFmpeg is left unmodified in user space, and hardware-dependent code is kept separate in the kernel driver.

Figure 2. Comparison of hardware acceleration integration structures
Because FFmpeg and the kernel driver are cleanly separated into user space and kernel space, there is no longer any reason for a vendor to tear apart and redistribute FFmpeg code itself.
Progress in this direction was led not by Rockchip but by Collabora. Decoder support for the RK3588’s VDPU381 and the RK3576’s VDPU383 was merged into mainline in February 2026 and landed in Linux 7.0 (April 2026). The current scope covers H.264 and H.265, while AV1, VP9, and multi-core decoding remain as follow-up work.
One point of caution: the nyanmisaka/ffmpeg-rockchip fork, commonly mentioned by developers using Rockchip hardware as an alternative, does not replace MPP. This project is an FFmpeg fork that implements hardware acceleration by calling MPP and librga, so it does not avoid MPP’s provenance problem. To escape the dependency on MPP, one must use the mainline V4L2 path.
There is a history of embedded chip vendors repeating the same mistake with multimedia codec licenses. The closest precedent is Allwinner’s CedarX from 2015.
| Point of Comparison | Allwinner CedarX (2015) | Rockchip MPP (2025-2026) |
|---|---|---|
| Distribution form | Centered on binary blobs | Source released |
| Nature of violation | Included code derived from FFmpeg’s libavcodec in the user-space CedarX library without releasing source | Copied FFmpeg code, then removed copyright notices, changed attribution to Rockchip, and relicensed under Apache-2.0 |
| Response | Community reverse-engineered the Cedrus driver, later merged upstream | DMCA takedown, repository disabled, parser rewritten, V4L2 driver pursued on a separate track |
| Lesson | Binary distribution makes violations easy to hide, but they eventually surface through symbol analysis | Even with source released, erasing provenance and relicensing is still a violation — and it leaves clearer evidence behind |
In March 2015, Allwinner put out an “LGPL release,” but in practice it amounted to no more than an API layer wrapping a closed binary. The eventual resolution was that a Cedrus driver, reverse-engineered by the community, was merged upstream. This is structurally similar to how, in the Rockchip case, the V4L2 driver work was led by Collabora.
There are also cases where a license violation led to actual monetary liability. On February 14, 2024, the Paris Court of Appeal ordered damages of 800,000 euros in the lawsuit Entr’ouvert brought against Orange. This consisted of 500,000 euros in economic damages, 150,000 euros for infringement of moral rights, and 150,000 euros in restitution of unjust enrichment, with 60,000 euros in litigation costs added separately. This was the conclusion reached 13 years after the suit was filed in 2011, following a first-instance trial, an appeal, and a remand from the Court of Cassation. This ruling matters because it treated the open source license violation as copyright infringement rather than as a breach of contract.
In Germany, the Hamburg Regional Court held in the 2013 Fantec case that “a supplier’s assurance of license compliance alone does not provide a defense; the distributor must verify it independently.” This applies directly to any company that takes a BSP from an SoC vendor and incorporates it into a product.
The same problem may be hiding in an SDK or BSP provided by a vendor. Here are three things to check.
First, a supply-chain license audit. You need to verify that a vendor-supplied library — especially code related to multimedia, graphics, or AI acceleration — retains the original author’s license. Even if a vendor claims Apache-2.0 or MIT, if the internal code came from a GPL or LGPL project, the entire product is exposed to risk. Scanning vendor-supplied code with a source code analysis tool such as Black Duck or FOSSID can surface original license notices or copyright markings left inside. As this case shows, the decisive clue is often found in comments unrelated to functionality.
Second, check whether the vendor’s driver is upstream in the mainline kernel. Code merged into mainline has gone through review and license scrutiny by multiple developers, giving it higher reliability than a vendor’s own self-managed repository. That said, being mainlined and being feature-complete are separate questions, so you should check the scope of support alongside it.
Third, internal development rules. When bringing in external open source, committing changes that delete the copyright header at the top of a file or change it to the company’s own name should never be permitted. This can be read as willful infringement and becomes damaging evidence in any later dispute. If integration is needed, prefer a linking approach, and make it a standing rule to always preserve the original author’s license and copyright notice.
The Rockchip case shows that releasing source and complying with an open source license are two different things. LGPL code cannot be relicensed under something like Apache-2.0 without the copyright holder’s consent, and deleting copyright notices and changing attribution are infringements in themselves.
The more practical lesson lies in how the delay came about. Because the license clause was misread, a task that should have ended with restoring the headers instead became a full parser rewrite, and its weight left it neglected for nearly two years. License determinations should be made together with legal or compliance teams, and the larger the apparent cost of a remedy looks, the more that determination needs to be double-checked.
Rather than simply trusting software as delivered by a vendor, it is necessary to periodically check, using a source code analysis tool, what licenses and copyright notices are present, and to have a process in place for using those results to sort out the division of responsibility with the vendor.
Revised on July 23, 2026 to reflect subsequent developments.
This post is based on Ars Technica’s article “German router maker is latest company to inadvertently clarify the LGPL license”. The article covers the details of the lawsuit between AVM and Sebastian Steck and the importance of LGPL license compliance.
On January 9, 2025, the Software Freedom Conservancy (SFC) announced that the lawsuit it had filed against AVM, a German network equipment manufacturer, had concluded. The core of this lawsuit concerned the rights of users specified in the GNU Lesser General Public License (LGPL) version 2.1, particularly the obligation to provide installation information.

Sebastian Steck, a German software developer, purchased an AVM router in May 2021 and discovered that the source code provided by AVM did not allow him to reinstall modified software on the router. Steck demanded that AVM “provide the complete source code and the compilation and installation scripts for the uClibc, libblkid, libexif, and libosip2 libraries.” When AVM failed to remedy this, Steck filed a lawsuit in a Berlin court in July 2023.
As a result of the lawsuit, the German court ordered AVM to pay Steck’s attorney’s fees. AVM decided not to appeal this decision. The ruling specifies the allocation of litigation costs, which reflects the economic value and importance of open source license compliance issues.
Disclaimer:
This post was not written by a legal professional and cannot be used as a legal basis. For specific situations related to license and legal issues, please be sure to seek advice from a legal professional. Also, this post was written based on publicly available information and may not reflect the positions of all parties to the lawsuit. Please refer to the original text for the full content and context of the ruling.
In May 2021, German software developer Sebastian Steck purchased AVM’s popular Fritz!Box 4020 router. Steck requested the source code used in the firmware of this router, and this is where the problem arose. The source code AVM provided did not allow him to reinstall modified software on the router.
An important characteristic of this lawsuit is that Sebastian Steck was able to file the lawsuit even though he was not the copyright holder of the LGPL-2.1 software. This is because the LGPL-2.1 license has the character of a contract for the benefit of third parties. According to the complaint, users also have the right to receive the source code under LGPL-2.1:
“This license agreement represents a genuine contract in favor of third parties in accordance with Section 328 of the German Civil Code (BGB), namely in favor of the users who receive the software in object code and, in accordance with the wording of the LGPL-2.1 license conditions to be handed over to them, have a direct right to the transfer of the complete corresponding source code.”
This legal basis significantly strengthens the rights of open source software users. When a manufacturer fails to properly fulfill its license obligations, not only the copyright holder but also ordinary users can now take legal action.
The violations of LGPL-2.1 by AVM that Sebastian Steck raised in the complaint are as follows:
Failure to provide compilation and installation scripts: The source code AVM initially provided lacked the compilation and installation scripts required by LGPL-2.1. These scripts are an essential element needed to convert the source code into an executable program and install that program on the device.
Failure to provide environment variable information: Environment variable configuration information such as KERNEL_LAYOUT, which is essential to the compilation process, was not provided. Environment variables are important information that configure the environment in which a program runs, and without them the source code cannot be compiled properly.
Inability to install permanently: The information AVM provided did not allow permanent installation of the modified library on the Fritz!Box. Steck argued that this violates a core requirement of LGPL-2.1, namely that users must be able to continuously use modified software on their own device.
Inability to build a firmware image: The provided source code did not allow building an installable firmware image for the Fritz!Box. A firmware image is a file containing the router’s operating system and functionality, and being unable to build one effectively means the software cannot be modified and reinstalled.
Steck argued that these matters infringe on “user software freedom,” a core principle of the LGPL-2.1 license. According to his argument, merely providing the source code is not enough; users must be able to actually modify the code and reinstall it on the device.
[Note] An excerpt from the complaint disclosed by SFC:
“The information required for the reinstallation of the compiled program libraries on the Fritz!Box (“installation script”) was also deliberately withheld from the plaintiff. Upon request, the plaintiff only received information that could be used to load the libraries in dispute into the working memory (RAM). However, this is not a sufficient installation on the Fritz!Box because the copy is only created temporarily, meaning “fleetingly [volatile].” When the Fritz!Box is switched off and restarted, the modified versions of the LGPL 2.1 libraries would no longer be present on the device, and the versions created by the defendant would be used instead. This is diametrically opposed to the purpose of the LGPL-2.1, namely, to be able to customize and reinstall the software.”
The ruling includes a decision on litigation costs and specifies that AVM must pay Steck’s attorney’s fees. This reflects the economic value and importance of open source license compliance issues. AVM decided not to appeal this decision.
LGPL-2.1’s obligation to provide installation information: The complaint raised the claim that AVM must provide installation information under the LGPL-2.1 license. This includes the scripts or information needed to actually make the source code usable. The ruling does not explicitly include this content, but the decision to burden the defendant with litigation costs during the proceedings reflects the strengthening of user rights and the importance of providing installation information. However, the installation information required in this case appears to be at the level of the installation scripts required under GPL/LGPL v2, not the GPL/LGPL-3.0 level.
Strengthening of users’ legal rights: This decision allows open source software users to take legal action directly against license violations. This is expected to strengthen the power of the open source community and further promote license compliance by companies. In particular, the fact that the third-party beneficiary logic was also recognized in Germany is an important development.
Improved self-correcting capacity of the open source ecosystem: Since not only copyright holders but also ordinary users can now demand license compliance, the self-correcting capacity of the open source ecosystem is expected to improve significantly. This contributes to maintaining the freedom of open source software and a collaborative development environment.
Expanded scope of corporate responsibility: Companies must now fulfill their LGPL-2.1 license obligations not only to copyright holders but to all users. This expands the scope of corporate responsibility and will require more thorough license compliance. This can increase the transparency and reliability of open source software use.
Reconfirming the importance of open source license compliance: Companies must more thoroughly comply with the relevant license terms when using open source software. They must recognize that the obligations under LGPL are not light simply because it is LGPL. However, it is difficult to say that this decision brought a major change in the legal interpretation of GPL installation information. AVM voluntarily provided the source code and installation scripts; the court did not issue a ruling on the interpretation of GPL/LGPL.
Existence of various interpretations: Various interpretations exist regarding this case. There is also a view that the Software Freedom Conservancy (SFC) somewhat overstates the significance of this case, because the ruling itself does not present a clear judgment on the interpretation of GPL/LGPL. These various interpretations show that the discussion on open source licenses and user rights is still ongoing.
Considering these implications and various interpretations, companies should improve their internal processes for open source license compliance and respond to user demands more quickly and proactively. Similar cases in the future are expected to further clarify these issues.
Three major pieces of legislation the European Union (EU) has recently introduced carry very significant implications for Korean companies. The Product Liability Directive (PLD), the Cyber Resilience Act (CRA), and the AI Act present a comprehensive regulatory framework governing the development, deployment, and use of software and AI systems.
These pieces of legislation matter to Korean companies for the following reasons:
Important perspectives for Korean companies to keep in mind when approaching these laws include the following:
Now let’s look at the key content of each law.
The Product Liability Directive (PLD) aims to modernize the EU’s legal framework for product liability and adapt it to the digital age. This directive introduces a strict liability regime for all products, including software and AI systems.
The PLD applies to all products placed on the market or made available as a service in the EU. This applies even to products manufactured outside the EU, if they are sold in the EU market.
| Obligation | Description |
|---|---|
| Documentation and information provision | Manufacturers must provide accurate documentation on the product’s functionality, safety, and regulatory compliance. |
| Continuous monitoring | Manufacturers must continue to monitor the product even after it is placed on the market, and provide updates as needed. |
| Risk assessment and management | Manufacturers must establish a risk assessment and management system spanning the product’s entire lifecycle. |
The PLD is expected to be published in November 2024, with penalties applying from 2026, two years later.

The Cyber Resilience Act (CRA) is a piece of legislation introduced in the EU to strengthen the cybersecurity of digital products. This law applies to all products with digital elements (PDEs), including software.
The CRA applies to all PDEs sold in the EU market. This applies even to products manufactured outside the EU, if they are sold in the EU market.
The CRA is expected to enter into force in the second half of 2024, and manufacturers must bring compliant products to the EU market by 2027.
| Impact | Description |
|---|---|
| Changes to product design and development processes | Companies must consider cybersecurity from the product design stage onward. This means applying the ‘Security by Design’ principle. |
| Stronger documentation and transparency | Companies must provide more detailed and clear documentation regarding a product’s security features, vulnerabilities, SBOM, and more. |
| Continuous monitoring and updates | Companies must continue to monitor products after they are placed on the market and provide security updates where necessary. |
| Improved vulnerability management processes | Companies must build processes to quickly identify, assess, and resolve vulnerabilities. |
The CRA is expected to significantly strengthen the cybersecurity of digital products. Companies should treat this not as mere regulatory compliance but as an opportunity to improve product quality and reliability. A proactive response can secure competitiveness in the EU market and, further, an edge in the global market as well.
The AI Act is the EU’s first comprehensive legal framework governing the development, deployment, and use of AI systems. This law aims to address the risks of AI systems while enabling Europe to play a leading role globally.
The AI Act classifies AI systems by risk level as follows:
The AI Act entered into force on August 1, 2024, and will fully apply from August 2026, two years later. However, some provisions apply sooner:
| Impact | Description |
|---|---|
| Classification and assessment of AI systems | Companies must assess which risk category their AI systems fall under and comply with the requirements applicable to that category. |
| Strict management of high-risk AI systems | Companies that develop or use AI systems classified as high risk must comply with strict requirements. This includes detailed documentation, continuous monitoring, human oversight, and more. |
| Stronger transparency | Transparency is strengthened for all AI systems. In particular, when using technologies such as chatbots or deepfakes, users must be clearly informed. |
| Additional obligations for General-Purpose AI models | Companies that develop General-Purpose AI models must comply with additional transparency and risk management obligations. |
| Consideration of international competitiveness | EU companies must consider the impact of this regulation on international competitiveness. They should prepare for increased compliance costs and possible slower innovation, while also recognizing that meeting the EU’s high AI standards can serve as a competitive advantage in the global market. |
| Promoting ethical AI development | The AI Act will encourage companies to pay more attention to ethical and responsible AI development. This also carries significant implications for corporate reputation management and social responsibility. |
| Building an AI governance framework | Companies must build an internal governance framework for the development, deployment, and monitoring of AI systems. This should be a comprehensive framework that includes risk management, quality assurance, ethical review, and more. |
The AI Act is a comprehensive regulatory framework that takes into account both the advancement of AI technology and its social impact. This law aims to increase the safety and reliability of AI while also promoting innovation. By proactively responding to these regulatory changes, companies will be able to manage risk and create new opportunities. The AI Act should be used not merely as a target for regulatory compliance, but as a guideline for responsible and sustainable AI development.
The EU’s three major laws (PLD, CRA, AI Act) are closely related to one another and together form a comprehensive regulatory framework for digital products and services. Understanding this interrelationship is important for companies in establishing an effective response strategy.
| Law | Main Purpose |
|---|---|
| PLD | Ensuring the safety of digital products and strengthening consumer protection |
| CRA | Strengthening the cybersecurity of digital products |
| AI Act | Ensuring the safety, transparency, and accountability of AI systems |
All three laws share the common goal of increasing the safety and reliability of digital technology.
In many cases, a single product or service may be subject to multiple laws at once. For example, an IoT device that includes AI functionality could be subject to all three laws as follows:
Rather than responding to these laws individually, companies should adopt an integrated approach. This offers the following benefits:
The following are key recommendations for Korean companies to consider in responding to the EU’s new regulatory environment.
The EU’s new digital regulatory environment is both a challenge and an opportunity for Korean companies. The PLD, CRA, and AI Act should not be treated merely as targets of regulatory compliance, but can be used as a framework for developing safer, more reliable digital products and services.
Companies that respond proactively to this regulation can gain the following benefits:
Korean companies can treat these regulatory changes as an opportunity for new innovation and growth, and build stronger competitiveness in the global digital economy. By going beyond mere regulatory compliance to pursue responsible technology development and use, they can increase their social value and achieve sustainable growth.
Disclaimer: I am not a legal expert, and this content should not be relied upon as a legal basis. For specific matters related to licensing or legal issues, please be sure to seek the advice of a legal professional.
This post is based on JBB Rechtsanwält:innen’s blog post “To Mine or Not To Mine” (https://jbb.de/to-mine-or-not-to-mine/) and is published to explain a recent German court ruling on text and data mining (TDM) and to share related knowledge.
Please note that I am not a legal professional, and this content cannot serve as a legal basis. For specific situations related to license and legal issues, please be sure to seek advice from a legal professional.
In 2021, German photographer Robert Kneschke learned that his photos had been included without authorization in an AI training dataset created by the nonprofit organization LAION (Large-scale Artificial Intelligence Open Network).

An AI training dataset refers to a large collection of data used to train artificial intelligence models. The dataset called ‘LAION-5B’ consisted of about 5.8 billion images and their corresponding description text. Such datasets are used to improve an AI’s ability to recognize and understand images.
At the heart of this case is the nonprofit organization ‘CommonCrawl’, which plays an important role. CommonCrawl regularly creates a ‘backup’ or ‘snapshot’ of the internet. It replicates, in text form, every webpage accessible through links.
CommonCrawl makes the datasets it collects available on its own website. This dataset includes the ‘source code’ of webpages, which researchers can use to analyze the structure and content of the internet.
LAION used this dataset provided by CommonCrawl to create its own image dataset. This process is as follows:
Extracting image links from the CommonCrawl dataset: LAION filtered the CommonCrawl data to find only the links to image files.
Collecting additional information: LAION sought to collect not only image links but also additional information about each image. This additional information includes:
Downloading and analyzing images: To obtain this additional information, LAION downloaded the actual images through the collected links and analyzed the images using its own AI models.
Constructing the dataset: The final dataset LAION created was structured as a table, with each row containing an image link and additional information about the corresponding image.
Through this process, LAION built a large-scale image dataset that could be used for AI training. However, copyright issues were raised during this process, which eventually led to a legal dispute.
Kneschke argued that even though the terms of service of the website containing his photo prohibited automated content downloading, LAION’s unauthorized downloading and analysis of his photo constituted copyright infringement. In response, LAION countered that its activities fell under text and data mining (TDM) for scientific research purposes and were permitted under Section 60d of the Copyright Act.
This case raised important legal and ethical questions about how to strike a balance between data collection and copyright protection in the AI era.
On April 27, 2023, Kneschke filed a copyright infringement lawsuit against LAION in the Hamburg Regional Court. Copyright infringement refers to the use of a copyrighted work without the copyright holder’s permission. Kneschke objected to the unauthorized use of his photo and demanded that his image be removed from the dataset. This raised an important question about how to protect creators’ rights in the AI era.
The core issues of this lawsuit are as follows:
In 2019, the EU adopted the Digital Single Market Copyright Directive (DSM Directive), which came into effect in EU member states starting June 7, 2021. This directive included two exceptions for text and data mining:
Germany incorporated this directive into domestic law and amended its Copyright Act as follows:
On September 27, 2024, the Hamburg Regional Court ruled that LAION’s conduct did not constitute copyright infringement. The main points of the ruling are as follows:
Kneschke can appeal this ruling, and given the importance of the matter, it could go to a higher court or even the Court of Justice of the European Union (CJEU). This ruling is also expected to affect similar cases in other EU member states.
This case raises important legal and ethical questions about how to strike a balance between copyright protection and technological innovation in the AI era. Further discussion and legal judgments in this area are expected to follow.
Although this ruling is a German case, it also offers important implications for domestic AI companies:
This case raises important legal and ethical questions about how to strike a balance between copyright protection and technological innovation in the AI era. Domestic AI companies should also keep an eye on this global trend and continue their efforts toward responsible AI development.
As the use of open source software has spread widely, the legal issues surrounding it have grown increasingly complex. In particular, the question of copyright over derivative works based on open source projects that use a copyleft license such as GPL (GNU General Public License) is a thorny subject for many companies. A recent software copyright infringement lawsuit in China offers important implications for this issue.
In 2009, Wangjing developed a converged communication smart gateway product called “OfficeTen.”

OfficeTen SDG 1800 by Wangjing - http://www.cncr-it.com/product_detail.php?sid=26&cid=133&id=388
The “OfficeTen1800” software embedded in this product was developed based on the open source framework “OpenWRT,” and obtained a copyright registration certificate from the National Copyright Administration in 2013.
This software consisted of two components: the base system software built on OpenWRT and the upper-layer application software. Wangjing claimed that the latter was an “independent and separate program” from the OpenWRT system.

In 2015, Wangjing began an investigation after suspecting that a competitor, Yibang’s product infringed its copyright. The investigation found that former Wangjing employees had provided the source code of “OfficeTen1800” to Qi’ao, helping it develop very similar software, and that this software was used in Yibang’s product.
According to the appraisal, the proportion of identical non-open-source code between Wangjing’s “OfficeTen1800” and the software used in Yibang’s product reached 90.2%, and Wangjing’s special marks were found in Yibang’s product.
In July 2018, Wangjing filed a software copyright infringement lawsuit against Yibang and Qi’ao. Wangjing demanded that the infringement be stopped and sought damages of 3 million yuan.
Yibang and Qi’ao denied the infringement and argued as follows:
The Suzhou Intermediate People’s Court ruled as follows:
Accordingly, the court found Yibang and Qi’ao liable for infringement and ordered them to stop the infringement and pay damages of 500,000 yuan (about $70,961, roughly KRW 1 billion).
Yibang and Qi’ao appealed, but the Supreme People’s Court upheld the original judgment. The Supreme People’s Court’s main findings were as follows:
This ruling offers important implications for the copyright protection of derivative works based on open source software.
In the Karlsruhe Higher Regional Court’s WordPress theme case (ruling of November 13, 2020, reference number 6 U 60/20), GPLv2 was likewise raised as a defense. In that case, the court made the following important findings:
This finding aligns with the ruling of China’s Supreme People’s Court, and shows a converging trend in the international legal interpretation of GPL licenses and the rights to derivative works.
This ruling offers the following important implications for corporate open source managers:
This ruling from the Chinese court, together with a similar ruling from a German court, clearly resolves the misconception that “GPL-based software products already have an obligation to disclose source anyway, so isn’t it fine to copy them?” Even a derivative work based on open source software under the GPL license can be subject to copyright protection if the developer made an original contribution.
This can be seen as a balanced approach that encourages innovation using open source software while preventing reckless copying and copyright infringement. Companies should refer to this legal interpretation when establishing their open source policies, and strike a balance between license compliance and original development.
As the use of open source software becomes even more common, this kind of legal judgment is expected to be referenced in more countries going forward. Corporate open source managers should therefore continuously monitor these legal trends and reflect them in their own open source policies.
Finally, this ruling delivers an important message to both the open source community and commercial users. It reminds us once again that respecting the spirit of open source while recognizing developers’ effort and creativity, and pursuing innovation while complying with licenses, is the path to a healthy software ecosystem.
This article was written together with Perplexity (https://www.perplexity.ai/).
SKT customers can use Perplexity Pro for free for one year: https://perplexity.sktadotevent.com/

Elasticsearch began as an open source project and has since gone through several changes in licensing policy. Initially it was distributed under the Apache 2.0 license, but in 2021 Elastic changed its license to the Elastic License 2.0 and the Server Side Public License. Then, on August 30, 2024, it drew attention again with an announcement (Elasticsearch is Open Source, Again) adding back the AGPL-3.0.

This change has had a major impact not only on the open source community but also on the companies that use it. In this article, we look at why Elasticsearch changed its licensing policy again, and how companies using it should respond.
Elasticsearch initially used the Apache 2.0 license, but in January 2021 Elastic shifted to the Elastic License 2.0 and SSPL. Elastic made this change because of competition with cloud providers, particularly AWS. AWS was profiting from its own service based on Elasticsearch without contributing to it or paying for it, and Elastic changed its license to check this.
Elastic License 2.0 discloses source code but restricts its use in commercial cloud services, and was used as a means of protecting Elastic’s technical assets. In response, AWS started the OpenSearch project and kept the Apache 2.0 license.
This was covered in detail in a previous blog post, “**Elastic License 2.0 and the Evolving Open Source License.”
However, Elastic License 2.0 was not an open source license recognized by the Open Source Initiative (OSI). This sparked controversy in the open source community. Elastic’s decision created tension between the free use of open source and commercial interests, and became an occasion for companies to raise their awareness of licensing issues when adopting open source.
In August 2024, Elastic announced that it was adding the GNU Affero General Public License v3 (AGPL-3.0) as a license option for the free portions of Elasticsearch and Kibana. AGPL-3.0 differs from the traditional GPL license in that it requires source code to be disclosed even for software used over a network.
The key characteristics of AGPL-3.0 are as follows:
A detailed guide to AGPL-3.0 can be found here: AGPL-3.0 Guide
The reasons Elastic chose AGPL-3.0 are as follows:
Elastic’s decision can be seen as a strategic choice that both attempts to restore its relationship with the community and still seeks to control commercial use.
However, some experts question whether this change can quickly restore the community’s trust. There is also analysis suggesting that the success of OpenSearch may have influenced Elastic’s decision.
Such license changes carry important implications for companies that use open source. Companies need to always keep in mind the possibility that an open source software’s license may change, and establish a response strategy for it.
Frequent changes to open source licenses can expose a company to new legal risk. Preventing this requires continuous monitoring, which makes it important to form a dedicated team and introduce a management system. A systematic process should be built through open source governance to ensure open source license compliance across the company.
Companies need to provide training and guidelines so that developers who use open source internally can understand and respond to license changes. This can reduce legal disputes arising from license violations.
Companies operating cloud services need to clearly understand their legal obligations under AGPL-3.0 and put in place a system to prepare for source code disclosure requests. This response strategy can include strengthening internal review processes and considering alternative licenses.
For reference, AGPL-3.0 does not impose requirements such as source disclosure when open source is used only internally, without redistribution or being offered as an external service. Therefore, for purely in-house use, it can be freely used without complying with obligations such as source code disclosure. However, please discuss with your in-house legal team for a clear determination of the scope of AGPL-3.0 open source use within your company and the obligations that apply to it.
Elasticsearch’s decision to return to AGPL-3.0 carries significant meaning within the open source ecosystem. It is not only an effort by Elastic to find a balance between commercial interest and the spirit of open source, but also carries important implications for every company that uses open source.
Companies must respond proactively to changes in open source licenses, and through this establish a strategy that reduces legal risk and maximizes technical opportunity. A strong copyleft license such as AGPL-3.0 will draw even more attention in the cloud era, and companies should strengthen their internal systems and advance their open source management framework accordingly.
Changes in open source licenses are an unavoidable reality, but a company that responds to this appropriately, treating it as an opportunity, can secure a competitive edge. Through a systematic open source management strategy, companies can minimize legal risk and maximize technical advantage, achieving sustainable growth within the open source ecosystem.
This article was written together with Perplexity (https://www.perplexity.ai/).
SKT customers can use Perplexity Pro for free for one year: https://perplexity.sktadotevent.com/

SPDX (Software Package Data Exchange) is an open standard for communicating software component, license, copyright, and security information in a standardized way. SPDX 3.0 is the latest version of this standard, released in April 2024, and is a major update that significantly improves the transparency and security of the software supply chain[2].

SPDX is a Linux Foundation project that provides a standard format for sharing important information related to software packages. Its main purposes are as follows:
SPDX 3.0 brings significant changes compared to previous versions:
SPDX 3.0 is important for enterprise open source management for the following reasons:
SPDX 3.0 is a powerful tool that greatly improves transparency, security, and compliance throughout the software development and distribution process. By understanding and applying this standard, enterprise open source managers can modernize their organization’s software management processes and reduce risk.
Citations:
[1] https://fossa.com/blog/understanding-using-spdx-license-identifiers-license-expressions/
[2] https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases
[3] https://fossa.com/learn/spdx
[4] https://fossa.com/blog/sbom-examples-explained/
[5] https://ossna2023.sched.com
[6] https://ossna2023.sched.com/list/descriptions/
[7] https://fossa.com/blog/spdx-3-0/
SPDX 3.0 is the latest version of software package data exchange, offering significantly improved features compared to previous versions. The key features are as follows:
SPDX 3.0 introduces a modular structure that greatly improves flexibility and extensibility[1][5]. This structure consists of the following elements:
This modular approach allows users to selectively use only the information they need, reducing complexity and increasing efficiency.
SPDX 3.0 is designed to make it easy to add custom fields and relationships[5]. This provides the following benefits:
SPDX 3.0 supports various use cases through six main profiles[7]:
These profiles help software engineers, security experts, and legal and compliance professionals use SPDX more easily[7].
SPDX 3.0 provides an enhanced data model that can express relationships between entities more clearly[1]. This enables:
SPDX 3.0 complies with the ISO/IEC 5962:2021 standard, which has significant implications for global software supply chain management[5][6]. This enables:
These key features of SPDX 3.0 greatly improve the transparency, security, and compliance of the software supply chain, and play an important role in meeting modern software development and management requirements.
Citations:
[1] https://scribesecurity.com/ko/blog/spdx-vs-cyclonedx-sbom-formats-compared/
[2] https://github.com/spdx/spdx-3-model/releases
[3] https://olis.or.kr/license/licenseSPDX.do?mapcode=010107
[4] https://ettrends.etri.re.kr/ettrends/203/0905203008/0905203008.html
[5] https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases
[6] https://www.prnewswire.com/news-releases/spdx-3-0-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases-302118321.html
[7] https://www.gttkorea.com/news/articleView.html?idxno=5131
The concept of profiles introduced in SPDX 3.0 is a key feature that enables SPDX data to be organized and managed according to various use cases. Each profile defines the information and structure required for a specific domain or use case.
The Core Profile defines the core elements that form the basis of every SPDX document.
The Software Profile provides detailed information related to software packages.
The Security Profile covers security-related information about software.
The License Profile covers software license-related information in detail.
The Build Profile provides information about the software build process.
The AI/ML Profile covers information specific to artificial intelligence and machine learning models.
Each profile reflects the modular structure of SPDX 3.0, and users can select the appropriate profile as needed to generate SPDX documents. This allows various aspects of the software supply chain to be documented and managed effectively.
Citations:
[1] https://spdx.dev/leveraging-profiles-for-license-compliance-insights-from-spdx-mini-summit/
[2] https://spdx.dev/providing-transparency-at-software-developments-core-process-build-time/
[3] https://spdx.github.io/spdx-spec/v2.3/SPDX-license-list/
[4] https://spdx.dev/capturing-software-vulnerability-data-in-spdx-3-0/
[5] https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases
[6] https://spdx.dev/understanding-spdx-profiles/
[7] https://github.com/spdx/spdx-3-model/actions
[8] https://spdx.github.io/spdx-spec/v3.0/model/AI/AI/
The data model of SPDX 3.0 is designed to be more flexible and extensible than previous versions. This model better reflects the complexity of the software supply chain and supports a variety of use cases.
SPDX 3.0 introduces a more robust and flexible identifier scheme:
SPDX 3.0 supports various data types:
The SPDX 3.0 data model can be serialized into various formats:
This support for multiple formats facilitates integration with other systems.
The data model is designed to support various profiles:
Each profile defines the additional fields and relationships required for a specific use case. The data model of SPDX 3.0 can comprehensively express the complexity of the software supply chain while providing the flexibility to meet the requirements of specific domains. This enables organizations to manage and share more accurate and detailed information about their software components.
This section provides a detailed guide for effectively implementing SPDX 3.0.
The main tools and libraries that support SPDX 3.0 are as follows:
These tools can be used to generate, parse, and validate SPDX 3.0 documents.
SPDX 3.0 supports various file formats:
JSON-LD
The most recommended format
Example:
{
"@context": "<https://spdx.org/spdx-3.0-context.jsonld>",
"@type": "SpdxDocument",
"name": "Example SPDX 3.0 Document",
"elements": [
{
"@type": "Package",
"name": "ExamplePackage",
"version": "1.0.0"
}
]
}
YAML
A human-readable format
Example:
---
$schema: <https://spdx.org/spdx-3.0-schema.json>
spdxVersion: SPDX-3.0
name: Example SPDX 3.0 Document
elements:
- type: Package
name: ExamplePackage
version: 1.0.0
RDF
Suitable for semantic web applications
Example:
<rdf:RDF xmlns:rdf="<http://www.w3.org/1999/02/22-rdf-syntax-ns#>"
xmlns:spdx="<http://spdx.org/rdf/terms#>">
<spdx:SpdxDocument>
<spdx:name>Example SPDX 3.0 Document</spdx:name>
<spdx:element>
<spdx:Package>
<spdx:name>ExamplePackage</spdx:name>
<spdx:versionInfo>1.0.0</spdx:versionInfo>
</spdx:Package>
</spdx:element>
</spdx:SpdxDocument>
</rdf:RDF>
Each format is suited to specific use cases, and developers can choose the appropriate format based on their project requirements.
The process of migrating from SPDX 2.x to 3.0 is as follows:
spdx_tools.spdx3.bump_from_spdx2.spdx_document module of the SPDX Python Librarybump_spdx_document() functionDuring the migration process, it is advisable to actively make use of SPDX community resources and documentation, and to seek expert help if needed.
By following this implementation guide, organizations can effectively adopt and utilize SPDX 3.0.
Citations:
[1] https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases
[2] https://www.youtube.com/watch?v=iqVk-Sek8Pc
[3] https://github.com/spdx/Spdx-Java-Library
[4] https://spdx.github.io/spdx-spec/v3.0/annexes/diffs-from-previous-editions/
[5] https://github.com/spdx/spdx-3-model/releases
[6] https://spdx.dev/use/spdx-tools/
[7] https://github.com/spdx/tools-python/blob/main/README.md
[8] https://fossa.com/learn/spdx
The Software Bill of Materials (SBOM) has become a core element of software supply chain security. SPDX 3.0 provides a powerful framework for generating and managing SBOMs, enabling organizations to track and manage software components more effectively.
SPDX 3.0 meets the SBOM minimum requirements defined by the National Telecommunications and Information Administration (NTIA)[4][5].
SBOM management using SPDX 3.0 goes beyond simply meeting regulatory requirements — it significantly strengthens an organization’s software supply chain security and contributes to greater transparency. This ultimately leads to the construction of a safer and more trustworthy software ecosystem.
Citations:
[1] https://spdx.dev/capturing-software-vulnerability-data-in-spdx-3-0/
[2] https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases
[3] https://www.legitsecurity.com/blog/best-practices-for-managing-maintaining-sboms
[4] https://www.ntia.gov/report/2021/minimum-elements-software-bill-materials-sbom
[5] https://cybellum.com/blog/ntia-minimum-elements-for-a-software-bill-of-materials-sbom-a-guide/
[6] https://jfrog.com/devops-tools/article/best-practices-for-software-bill-of-materials-management/
[7] https://about.gitlab.com/blog/2022/10/25/the-ultimate-guide-to-sboms/
[8] https://scribesecurity.com/sbom/how-to-generate-an-sbom/
SPDX 3.0 provides powerful features for software security and vulnerability management. This enables organizations to manage the security of their software supply chain more effectively.
Integrating Common Vulnerabilities and Exposures (CVE) information into SPDX 3.0 documents is a core element of security management.
How to reference CVEs
SPDX 3.0 uses the ExternalReference class to reference CVE information.
Example:
{
"@type": "ExternalReference",
"referenceType": "SecurityAdvisory",
"referenceLocator": "CVE-2021-44228",
"referenceCategory": "CVE"
}
Inclusion of detailed CVE information
Automatic CVE updates
Linking CVE information to components
SPDX 3.0 provides features for effectively tracking and reporting vulnerabilities.
Vulnerability lifecycle management
The entire lifecycle of a vulnerability, including discovery date, report date, and patch date, can be tracked.
Example:
{
"@type": "Vulnerability",
"name": "CVE-2021-44228",
"description": "Log4j RCE vulnerability",
"discoveredDate": "2021-12-09",
"publishedDate": "2021-12-10",
"patchedDate": "2021-12-14"
}
Vulnerability severity assessment
The severity of a vulnerability can be assessed and recorded using the CVSS score.
Example:
{
"@type": "VulnerabilityAssessment",
"vulnerability": "CVE-2021-44228",
"cvssV3": {
"baseScore": 10.0,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
}
}
Vulnerability report generation
Vulnerability trend analysis
The Security Profile of SPDX 3.0 enables systematic management of security-related information.
Security Profile structure
Vulnerability: A class representing vulnerability informationVulnerabilityAssessment: A class representing vulnerability assessment informationSecurityAdvisory: A class representing security advisoriesExample use of the Security Profile
{
"@type": "SecurityProfile",
"vulnerabilities": [
{
"@type": "Vulnerability",
"name": "CVE-2021-44228",
"description": "Log4j RCE vulnerability"
}
],
"assessments": [
{
"@type": "VulnerabilityAssessment",
"vulnerability": "CVE-2021-44228",
"cvssV3": {
"baseScore": 10.0,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
}
}
],
"advisories": [
{
"@type": "SecurityAdvisory",
"title": "Update Log4j to version 2.15.0 or later",
"description": "Upgrade Log4j to mitigate CVE-2021-44228"
}
]
}
Ways to utilize the Security Profile
Security metric tracking
By leveraging the security and vulnerability management features of SPDX 3.0, organizations can greatly strengthen the security of their software supply chain. Integrating CVE information, systematically tracking and reporting vulnerabilities, and utilizing the Security Profile help security teams respond to threats more effectively and improve the organization’s overall security posture.
SPDX 3.0 provides powerful features for effectively managing software license compliance. This allows organizations to more easily identify and comply with the license obligations of open source and commercial software.
License identifiers
Inclusion of license text
The full license text can be included in the SPDX document.
Example:
{
"@type": "License",
"licenseId": "MIT",
"name": "MIT License",
"text": "MIT License\\n\\nCopyright (c) [year] [fullname]\\n\\nPermission is hereby granted, ..."
}
Custom licenses
License expressions
File- and package-level licenses
SPDX 3.0 data can be used to automatically check license compatibility.
Detailed license compliance reports can be generated based on SPDX 3.0 data.
By leveraging the license compliance features of SPDX 3.0, organizations can effectively manage and comply with license obligations within a complex software ecosystem. This helps reduce legal risk, improve relationships with the open source community, and increase the transparency and reliability of the overall software development process.
SPDX 3.0 can be used to improve software management and security across a variety of industries. The main use cases are as follows:
These use cases of SPDX 3.0 enable organizations to improve software management, security, and compliance in an integrated way. Its standardized approach promotes collaboration between organizations and contributes to increasing transparency and reliability across the software ecosystem.
Citations:
[1] https://linuxsecurity.com/news/organizations-events/spdx-3-0
[2] https://spdx.dev/spdx-announces-3-0-release-candidate-with-new-use-cases/
[3] https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases
[4] https://www.prnewswire.com/news-releases/spdx-3-0-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases-302118321.html
[5] https://spdx.dev/leveraging-profiles-for-license-compliance-insights-from-spdx-mini-summit/
[6] https://www.synopsys.com/blogs/software-security/sboms-and-spdx.html
[7] https://spdx.dev/understanding-spdx-profiles/
A systematic approach is needed to successfully adopt SPDX 3.0 within an organization. The following is a detailed strategy for adopting SPDX 3.0.
Successful adoption of SPDX 3.0 involves not only technical implementation but also changes in organizational culture and processes. Through systematic planning, continuous education, and a flexible approach, organizations can make the most of the benefits of SPDX 3.0[1][2].
Citations:
[1] https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases
[2] https://spdx.dev/unpacking-the-spdx-3-0-tooling-mini-summit-a-new-era-of-compliance-and-security/
[3] https://spdx.dev/spdx-announces-3-0-release-candidate-with-new-use-cases/
[4] https://openchainproject.org/news/2023/03/31/webinar-50
[5] https://nand-research.com/quick-take-spdx-3-0-release/
[6] https://linuxsecurity.com/news/organizations-events/spdx-3-0
[7] https://spdx.dev/leveraging-profiles-for-license-compliance-insights-from-spdx-mini-summit/
The release of SPDX 3.0 has opened a new chapter in software supply chain management. This section takes a closer look at the future and direction of SPDX.
SPDX 3.0 is an important milestone shaping the future of software management. Through continued community participation, technological advancement, and international standardization efforts, SPDX is expected to continue making a significant contribution to improving software supply chain security and transparency.
Citations:
[1] https://spdx.dev/engage/participate/
[2] https://www.linuxinsider.com/story/spdx-becomes-new-standard-for-open-source-software-security-87265.html
[3] https://spdx.dev/engage/join/
[4] https://sbomify.com/2024/04/28/exploring-the-new-spdx-3-0-a-game-changer-for-sboms/
[5] https://www.prnewswire.com/news-releases/spdx-3-0-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases-302118321.html
[6] https://spdx.dev/spdx-announces-3-0-release-candidate-with-new-use-cases/
[7] https://wiki.spdx.org/view/GSOC/GSOC_ProjectIdeas
[8] https://linuxsecurity.com/news/organizations-events/spdx-3-0
SPDX 3.0 provides enterprise open source managers with a powerful and flexible tool. The following are strategic approaches for making effective use of SPDX 3.0:
In conclusion, SPDX 3.0 provides enterprise open source managers with a powerful tool for effectively managing and leveraging the open source ecosystem. By taking a strategic and systematic approach to using SPDX 3.0, organizations can maximize the benefits of open source while minimizing the associated risks. Through this tool, open source managers can play a central role in driving their organization’s digital transformation and strengthening its competitiveness.
This article was written with Perplexity (https://www.perplexity.ai/).
SK telecom customers can use Perplexity Pro free for one year: https://perplexity.sktadotevent.com/

Hello.
Today I want to look at a case in which a French court ordered the telecom company Orange to pay damages for violating the GPL. This case seemed especially worth noting for two main reasons.
Through these aspects, this case looks set to reaffirm the importance of open source license compliance. It stands as an important example emphasizing that companies must thoroughly understand and comply with license requirements when using open source.
Thanks to Manager Cheolung Park of SK telecom for his review and comments.
Short for GNU General Public License, GPL is one of the most representative open source licenses, a strongly copyleft license under which a software’s copyright holder “allows anyone to freely use, modify, and distribute the software, while imposing the condition that modified versions or derivative works must also follow the GPL.”
Entr’Ouvert, a French software company founded in September 2002, developed a C library named Lasso. Lasso is a library that implements authentication protocols such as the Liberty Alliance’s SAML standard.

Lasso is currently offered under two licenses.
We strongly recommend the use of the GNU General Public License each time it is possible. But for proprietary projects, that wouldn’t want to use it, we designed a commercial license.
In 2005, Orange, a major French telecom operator, signed a contract with the French agency for the development of electronic administration (ADAE, now DGME) to develop the “My Public Service” portal (now https://www.service-public.fr/).

At the time, this portal needed to use the SAML protocol to support an identity management service. Orange used Lasso to implement this, but did not comply with the terms of the GPL-2.0 license. That is, Orange did not identify the source and license of the Lasso software, and did not disclose the modified source code.
Entr’Ouvert discovered this and, in 2011, filed a lawsuit against Orange seeking damages.
The lawsuit ran for more than 10 years, and finally, on February 14, 2024, the Paris Court of Appeal ordered Orange to pay Entr’Ouvert a total of 650,000 euros (roughly KRW 940 million) for failing to comply with the GNU GPL v2 license. Orange must pay Entr’Ouvert 500,000 euros in compensation for economic loss and 150,000 euros for moral damages.
The court stated that “had Orange respected the license agreement and entered into a paid license, it would have had to pay royalties to Entr’Ouvert.” The court further noted that by using the Lasso software for free, Orange had unjustly profited over the seven years this large public-sector contract continued.
It is interesting that a telecom operator, now accelerating into non-telecom strategies as 5G growth hits its limits, became the target of this lawsuit. Telecom operators that are launching a variety of products and services in advanced technology fields such as AI, cloud, IoT, robotics, semiconductors, and UAM, and pushing into the B2B space alongside other industries, have now come to rely on open source in their software development just as companies in other industries do. Establishing policies and processes for open source management has therefore become important.
Open source license disputes have mostly arisen when a device or software product developed using open source is distributed without authorization. In this case, however, the subject of the dispute was open source used by a software supplier under contract to build a government agency’s website. Companies should therefore keep in mind that they need to apply open source management processes not only when distributing software devices, apps, and the like, but also when they enter into a B2B web service development contract and supply software to a government agency or client.
This blog post is based on a translation of an article originally written in French, and since my legal knowledge is very limited, there may be errors. If you find an error, please let me know (haksung@sk.com)
I’ll update it right away. ^^
In the previous post, I introduced the OpenChain Project for global collaboration as an effective open source management practice for companies. This time, I would like to introduce the OpenChain Korea Work Group, a collaborative community for Korean companies to effectively manage open source.
The OpenChain Korea Work Group (KWG) is a subgroup of the Linux Foundation’s OpenChain Project. This group is a gathering where, through the open source spirit of collaboration and sharing, everyone thinks about and shares ways to succeed at effective open source management. Open source managers from Korea’s major ICT companies participate in the KWG.

Even large companies that have already established policies and processes for open source management find it difficult to escape open source license or security vulnerability risks, given today’s massive and complex software supply chains. Ultimately, it is important to raise the level of open source management across all companies in the software supply chain. To achieve this, companies with a high level of understanding of open source management practices need to first share their know-how and act as a guide so that other companies can easily participate.
Even if a company shares its open source management assets with competitors, this does not negatively affect revenue. Conversely, even if a company learns a competitor’s open source management policy, it cannot connect this to its own profit. If companies share open source management best practices with each other, each company can achieve significant results with less cost and fewer resources invested. Resonating with this idea, the first OpenChain KWG meeting, attended by open source managers from LG Electronics, SK telecom, Kakao, Hyundai Motor, and Samsung Electronics, was held in January 2019.
The meetings are held every quarter, and were held online during the COVID-19 period. Then, on March 28, 2023, an in-person meeting was held for the first time in 3 years. About 50 open source managers from 19 companies/organizations attended. This in-person meeting was organized by LINE Plus. Thank you to LINE Plus’s open source managers Seoyeon Lee and Donghyuk Kim for providing a comfortable venue, refreshments, and souvenirs! ^^

In the first part of this meeting, there were presentations on the latest domestic and international trends in the OpenChain Project and the security assurance specification, as well as a presentation on legal issues and case studies related to AI technology. In the second part, there was a session presenting open source tools developed and shared by companies for open source management. I will cover the details of each presentation below.
Shane Coughlan, General Manager of the Linux Foundation’s OpenChain Project, attended in person and introduced the Global Trend of the OpenChain Project.

In addition to ISO/IEC 5230, the standard for open source compliance, ISO/IEC DIS 18974, a standard for security, is also under development. This standard is expected to soon be registered as an official ISO standard, and a Self-Checklist that companies must comply with has also been published. Companies can use these materials to carry out efficient open source risk management.
Shane also brought souvenirs for KWG members, which received a great response. (Thank you, Shane.)

ISO/IEC 5230 is the international standard for open source compliance. This standard was registered with ISO in 2020, and many companies around the world comply with this standard to carry out open source compliance management well. The reason companies need to manage open source is not only license compliance but also the risk of security vulnerabilities. The OpenChain Project has created a standard for security vulnerability management, ISO/IEC DIS 18974, the OpenChain security assurance specification. I gave a brief summary introduction of what this standard consists of.

This security standard is organized in the same format as ISO/IEC 5230. Instead of license compliance, it defines the requirements that must be fulfilled for security vulnerability management. In addition to license compliance, companies must establish policies and processes for security vulnerability management. They must also establish procedures to respond to discovered security vulnerabilities.

Jungsuk Park of ETRI analyzed the recently filed Stable Diffusion-related lawsuit and introduced AI legal issues. The presentation materials can be found here.

Jungsuk Park analyzed the current status of AI-related legislation, and based on this, explored and shared ways to respond to AI-related open source compliance issues.

In Part 2, there were session presentations sharing each company’s best practices for automating open source management.
Hyunji Lim of Kakao presented a comparative analysis of the dependency analysis methods of open source analysis tools. The presentation materials can be found here.

She identified and shared the dependency analysis methods of the representative open source analysis tools FOSSA, FOSSLight, ORT (OSS Review Toolkit), and OLIVE Platform.

Soim Kim of LG Electronics gave a session presentation introducing the OSORI project.

OSORI is an open source project that discloses open source information data so that anyone can easily check open source information and comply with the necessary obligations. It defined a schema for building a database of the key information, license types, and related key compliance and restriction requirements for open source projects held by LG Electronics, Samsung Electronics, and Kakao, organized as tables by item, and introduced a roadmap for future data refinement, establishing operating policy, and building a guide page.

FOSSLight is an integrated open source management system developed in-house by LG Electronics, which was open-sourced in 2021 for anyone to use. Kyungae Kim of LG Electronics introduced the 2023 FOSSLight Roadmap.

The FOSSLight Project has a roadmap for 2023 that includes improving security vulnerability features, strengthening SBOM functionality, and improving UX.

OLIVE Platform is an open source license verification service developed by Kakao, which anyone can use for free with just a Kakao account. Eunkyung Hwang of Kakao introduced the key features of the OLIVE Platform.

The OLIVE Platform added the OLIVE CLI feature, which can be used safely even when there are concerns about source code exposure, allowing it to be adopted even in the security-sensitive financial sector.

onot is an open source project jointly developed by SK telecom and Kakao. It is a tool that automatically converts an SBOM written in the SPDX format into an open source notice. Hyeonmin Han of Kakao introduced the new features recently added to onot. The presentation materials can be found here.

onot can now extract file information in addition to package information, and now also supports multi-license notation. It can generate open source notices from SPDX documents in RDF/XML format as well, and now supports a more convenient user environment, such as a GUI on Windows PCs.

The in-person meeting, held for the first time in about 3 years, was so packed with content that the short time felt like too little. Thank you again to Seoyeon Lee and Donghyuk Kim of LINE Plus for preparing a wonderful venue, souvenirs, and even raffle prizes.

Companies face similar difficulties in open source management work, and sharing how they overcame and streamlined these challenges is of great help to one another. The OpenChain Korea Work Group is a gathering that anyone who shares this sentiment can voluntarily join. Anyone in charge of open source management at a company or organization can participate in the OpenChain Korea Work Group: How to Join
Lastly, the OpenChain KWG holds regular meetings every quarter. The next meeting is expected to be held at Kakao.
Until then, happy days to everyone!
Using open source has become almost essential to modern software development, to the point that it is said over 93% of the software products companies develop use open source. Yet there are reports that 53% of the open source used has license compliance issues, and 81% has security vulnerabilities. Given the complexity of modern software development environments and the vast software supply chain, companies developing products with open source need open source management efforts to minimize license compliance and security vulnerability risks. The Linux Foundation’s OpenChain Project is a project for carrying out these efforts at the community level, with multiple companies sharing and collaborating together.
On March 27, 2023, Shane Coughlan, General Manager of the OpenChain Project, visited SK telecom for a session explaining the OpenChain Project’s major activities, international standards related to open source, and global trends.

Members of SK telecom’s OSRB and the SK Group open source council (SK Planet, SK Shieldus, SK Inc., the Supex Council, and others) took part and exchanged various opinions.

On this day, Shane introduced the OpenChain Project and explained how it jointly resolves open source management issues in the software supply chain through global collaboration. This article introduces the main points.
Multiple global companies collaborate through the OpenChain Project to manage software supply chain issues: https://www.openchainproject.org/community

The OpenChain Project has numerous Work Groups, and each Work Group develops standards for open source management and jointly builds automation tools. There are also Work Groups organized by country.

The most visible outcome is the development of the first international standard for open source management. In December 2020, ISO/IEC 5230 was registered as the sole international standard for open source compliance. ISO/IEC DIS 18974 is the de facto standard for open source security assurance compliance, and is scheduled to be formally registered as an ISO standard in the second half of 2023.
These standards define the core requirements companies need to manage open source. By complying with the requirements of these standards, a company can transparently demonstrate that open source management is taking place within its software supply chain.

The OpenChain Project also provides a checklist for Self-Certification. Companies can raise their level of open source management by working through the checklist items one by one.

A company that complies with every item on the checklist can declare itself compliant with ISO/IEC 5230. The list of companies that have declared adoption of ISO/IEC 5230 includes several Korean companies as well, such as LG Electronics, Kakao, Samsung Electronics, Naver, SK telecom, NCSOFT, and Hyundai Motor Group.

The OpenChain Project continues to hold online webinars on open source management.

A free training course for open source license compliance is provided, and a badge can also be earned upon completion.

This training course is put to various uses, such as companies requiring their employees or suppliers to complete it.

Collaboration with the OpenChain Project is also active in China. In particular, discussions on collaboration are underway with Chinese government bodies such as CAICT and CESI.
Companies such as Huawei, Honor, and OPPO also actively participate in the OpenChain China Work Group, which has around 250 members.
Starting in the second quarter of 2023, a quarterly event co-hosted by OpenChain and CAICT is planned, and the Asian Legal Network (ALN) together with OIN is also said to be restarting.
The OpenChain Japan Work Group has around 190 participating members. Fujitsu, Hitachi, NEC, Panasonic, Sony, Toshiba, and Toyota provide ongoing support, and community events are held every other month.
In collaboration with TODO Group, OSPO events are also held every two weeks.
The OpenChain Korea Work Group is an excellent Work Group that ranks second in the world in scale and enthusiasm, after Japan. Major companies such as SK telecom, LG Electronics, Samsung Electronics, and Hyundai Motor participate, and NIPA is also involved through sponsorship and other means.
That said, Korea is not immune to the risk posed by the global economic downturn. It is also a shame that there is no Korean corporate member on the OpenChain Board.
If the OpenChain Korea Work Group continues its community meetings and activities as it has so far, opportunities will keep coming. If possible, it would be good to work toward including the OpenChain standard in government open source policy, as Japan and China have done, and to encourage the participation of government bodies for this purpose.
Lastly, if a Korean company joins the OpenChain Board, it would increase the strategic diversity of the OpenChain Project and help grow its influence in the global supply chain.
The OpenChain Project is a community for applying the open source approach of sharing and collaboration to the field of corporate open source management itself, so that everyone can together achieve a high level of risk management practice with lower cost and fewer resources. The OpenChain Korea Work Group is where companies that share this purpose gather. Nearly 100 open source managers from various companies have joined the OpenChain Korea Work Group’s mailing list and are active there. As it happens, an offline meetup was held on March 28, the first in three years since COVID. I will cover this in detail in the next article.
After the meeting session with Shane, we enjoyed a nice lunch sponsored by SK telecom’s Tech HR team. (Thank you, Sangki~ ^^)

Thank you.
Hello.
Do you often use Anaconda when setting up a Python development environment? Python is widely used for everything from simple task automation to data analysis, AI training, and modeling, and running multiple Python projects can create the inconvenience of package version conflicts. Anaconda has the advantage of providing a virtual environment for each development project to prevent version conflicts, and it is widely used because it can be easily downloaded and installed from the homepage.

In September 2020, Anaconda changed its Terms of Service to require payment when a company or government organization with 200 or more employees uses the Anaconda Repository.
Therefore, if you are a developer working at a company with 200 or more employees, you must purchase a Pro or higher license on the Anaconda website.

https://www.anaconda.com/pricing
Let’s look a bit more closely. To install Anaconda, you can typically download the Anaconda Distribution for free from the Anaconda homepage.

https://www.anaconda.com/products/distribution
Installing it sets up a development environment easily, since the conda package manager, Python, and about 150 packages are installed together.
Anaconda Inc. hosts the Anaconda Repository, providing over 8,000 open source packages, and users can reliably install and manage these packages with the conda install PACKAGENAME command.

The Terms of Service for this very Anaconda Repository is what changed in September 2020, and free use of the Anaconda Repository is no longer possible for commercial activity.
Many developers easily download and use the Anaconda Distribution, but in doing so they end up using the Anaconda Repository. For a developer at a company with 200 or more employees, this results in “unintentionally” violating Anaconda’s Terms of Service, and to avoid this you must purchase Anaconda Pro or higher.
For reference, Miniconda is, like Anaconda, a software package that installs the conda package manager, Python, and minimal dependencies. Using Miniconda also accesses the Anaconda Repository to download packages, so it can be considered subject to the same paid-purchase requirement as Anaconda.

https://docs.conda.io/en/latest/miniconda.html
In the end, even if a developer at a company with 200 or more employees downloads and uses the Anaconda Distribution for free, they won’t immediately be charged or have features blocked. Still, for the stable development of Anaconda, it would be good for developers at companies with 200 or more employees to voluntarily purchase and use it. (Of course, a license violation notice and invoice could show up at the company at some point. ^^)
Anaconda Inc. publishes and maintains the package manager conda as open source. conda itself is open source released under the BSD-3-Clause license, so there is no problem with companies using it for free.

https://github.com/conda/conda
conda needs a repository location to find packages to install and manage, and this is called a channel. The default channel is the Anaconda Repository. However, there is also a community-based repository: conda-forge.

You can install conda and add conda-forge as a channel.
conda config --add channels conda-forge
conda config --set channel_priority strict
This way, since you are not using the Anaconda Repository, you can use conda without violating the Terms of Service described above.
Peter Wang, CEO of Anaconda Inc., has stated directly that downloading Miniconda and changing the conda config to conda-forge allows free use.

https://www.reddit.com/r/Python/comments/iqsk3y/comment/g4xuabr/
Removing the defaults channel, which points to the Anaconda Repository, entirely can more reliably restrict use of the Anaconda Repository.
conda config --remove channels defaults
You can check whether the channel has changed as intended with the command below.
### Before the change
% conda config --show channels
channels:
- defaults
### After the change
% conda config --show channels
channels:
- conda-forge
Going a step further, Miniforge is an open source project that provides a minimal installer for conda, and it adds conda-forge to the channel by default at installation. Miniforge is also known to support various CPU architectures, including Apple M1.

https://github.com/conda-forge/miniforge
Therefore, if you install Miniforge instead of Anaconda, it appears you can relatively easily set up a development environment with the conda package manager without violating the license.
One interesting point is that operating conda-forge requires substantial hosting costs, which Anaconda Inc. pays. Anaconda Inc. explains that it needed the revenue from changing the Anaconda Repository’s Terms of Service in order to keep conda-forge free.
In conclusion, considering development convenience and stability, it would be good to purchase and use Anaconda Pro where possible. Until then, to avoid license issues, you might consider the Miniconda + conda-forge combination, or Miniforge, as alternatives.
Please let me know if there is anything incorrect. ^^
Thank you.
There is a growing number of cases where software companies that started out as open source change their license policy. Lightbend, a US company that had maintained an Apache-2.0 open source license policy, announced in September 2022 that it would change Akka’s license to BUSL-1.1 (Business Source License). Let’s take a look at what the Business Source License is, and what the background and impact are of Lightbend changing Akka’s license to BSL.
Akka is a toolkit that simplifies distributed applications, in which multiple threads work concurrently on the JVM, based on the Actor Model. It is reportedly used mainly in backend platforms that require high performance, such as live chatting.

Lightbend, a US company, changed Akka’s license in September 2022.

The main points of the license change are as follows.
Lightbend stated that it had supported the Akka open source project under Apache-2.0 for over a decade, but that it had become difficult to sustain this.
Over the years, Lightbend has steadily borne more of the support for Akka. With Akka now considered critical infrastructure for many large organizations, the Apache 2.0 model becomes increasingly risky when a small company solely carries the maintenance effort. Balancing the global demands of our corporate community while supporting these needs of a vast open source base is a tremendous weight to bear.
In the end, Lightbend also gave up sustaining the Apache-2.0 open source model, and instead introduced BUSL-1.1, a “Source Available” license, to disclose source code to the community while generating revenue by charging enterprise users a license fee. The number of cases where companies that develop software as open source change their license policy to improve profitability has been increasing since 2018. MongoDB’s SSPL is a representative example, and Elasticsearch introduced the Elastic License. You can find the details on this in the previous post, ‘Elastic License 2.0 (subtitle: The Evolving Open Source License)’. It can be inferred that Lightbend also decided to change its license considering this background and profitability.
BUSL-1.1 had already been applied to several projects that used to be open source, even before Akka.
How is BUSL-1.1 different from an open source license?
Unlike a typical open source license, BUSL-1.1 grants the right to copy, modify, and redistribute only for non-production use.
The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and make non-production use of the Licensed Work.
If your use does not qualify as non-production use, you are required to purchase a commercial license from the Licensor.
If your use of the Licensed Work does not comply with the requirements currently in effect as described in this License, you must purchase a commercial license from the Licensor, …
Therefore, companies using the version of Akka to which BUSL-1.1 applies (v2.7 and later) can no longer use Akka for free and must purchase a commercial license from Lightbend.
Another characteristic of BUSL-1.1 is the Change Date and Change License. Once the Change Date passes after a version of the software under BUSL-1.1 is released, the Change License applies and BUSL-1.1 no longer applies.
Effective on the Change Date, or the fourth anniversary of the first publicly available distribution of a specific version of the Licensed Work under this License, whichever comes first, the Licensor hereby grants you rights under the terms of the Change License, and the rights granted in the paragraph above terminate.
For Akka’s BUSL-1.1, the Change Date is 3 years after release, and the Change License is Apache-2.0.

For example, if Akka 2.8 were released on January 1, 2023, after 3 years, from January 1, 2026, Apache-2.0 would apply and companies could also use it for free. BUSL-1.1 provides this Change License provision so that you have to pay to use the new version, but even old versions can be used for free even for commercial purposes. This appears to reflect an intent to charge large companies, the heavy users of the software.
BUSL-1.1 has an Additional Use Grant provision that allows the Licensor to grant rights to commercial users under certain conditions.
The Licensor may make an Additional Use Grant, above, permitting limited production use.
Therefore, the Licensor can permit users to use the software for commercial purposes as needed. For example, Lightbend permitted the use of Akka when developing an application using Play Framework that utilizes akka.
Additional Use Grant: If you develop an application using a version of Play Framework that utilizes binary versions of akka-streams and its dependencies, you may use such binary versions of akka-streams and its dependencies in the development of your application only as they are incorporated into Play Framework and solely to implement the functionality provided by Play Framework; provided that, they are only used in the following way: Connecting to a Play Framework websocket and/or Play Framework request/response bodies for server and play-ws client.
Lightbend provides an FAQ related to the Akka license change, and here are a few of the key points.
First, looking at Akka’s pricing, it is provided for free to startup companies with annual revenue under $25 million.
The license of older versions remains unchanged as Apache-2.0. However, additional features, improvements, non-critical security updates, and non-critical bug fixes will not be provided. For version 2.6.x, only critical security updates and critical bug fixes will be provided under Apache-2.0 for the next year, i.e., until September 2023.
You only need a commercial license for the copies of the software used for production.
If Akka is used in production rather than for non-production use, a commercial license purchase is required even for government departments.
Government departments using Akka in production will require a commercial license.
No. This would violate Lightbend’s copyright, as well as Apache-2.0.
No. In this circumstance, you would either violate Lightbend’s copyright by re-releasing the code under Open Source, or you would violate the earlier Akka version’s Apache license by introducing incompatible BSL code (i.e., code subject to a use limitation not allowed by the Open Source Apache 2.0 license).
The role of corporate open source governance is becoming increasingly important. Using open source in products while complying with open source license obligations, such as attribution notices and source code disclosure, is a basic compliance activity that companies must maintain. However, there has recently been an increase in cases where software that used to be open source changes to a license that requires a commercial purchase, such as BUSL-1.1. Therefore, companies developing products/services using open source need to respond quickly to such license changes. Otherwise, it should be remembered that a license violation could result in significant losses.
In particular, companies should build an SBOM (Software Bill of Materials) management system so that, when they identify a license change case like this one with Akka, they can immediately determine which products/services or internal systems within the company use Akka and which version, and take the necessary action (using an older version, or purchasing a commercial license).
Thank you.
Hello, this is Haksung Jang.
SFC (Software Freedom Conservancy) filed suit against Vizio, a US smart TV manufacturer, alleging violations of the GPL. On May 13, 2022, a US federal court issued a ruling related to this case.
I have put together a superficial summary of the background and implications of this ruling. Since I am not a legal expert, there may be errors in terminology or interpretation. I would appreciate it if experts could provide feedback. ^^
First, I would like to disclose the references I consulted while writing this article.
On May 18, an article titled “US court holds ‘GPL is a contract too’ … recognizes consumers’ right to demand code” was published. The following sentence seemed to convey something important, but I did not quite understand exactly what it meant.
Out of curiosity, I looked into some materials and summarized what I understood in my own way. I hope this helps others who have had similar questions.
SFC filed suit against Vizio in October 2021. The contents of the suit at the time and the subsequent history are as follows.
Vizio responded to this as follows.
For this reason, Vizio requested that the case, filed in state court, be handled by federal court instead (NOTICE of REMOVAL of ACTION to FEDERAL COURT).
If the federal court approves this, the case would need to be reviewed under US copyright law, and since SFC is not the copyright holder, it would not even have standing as a plaintiff.
SFC rebutted Vizio’s arguments and filed a Motion to Remand with the federal court to have the case sent back to state court.
The federal court granted SFC’s Motion to Remand (ORDER GRANTING PLAINTIFF’S MOTION TO REMAND) and remanded the case to state court.
This lawsuit has several new aspects compared to prior GPL litigation. Heather Meeker, a US open source attorney, explained this as follows.
Let’s look at what the federal court ruled on May 13, 2022.
The court first explained the central question that the federal court needed to decide, as follows.
SFC stated regarding this ruling that, while many people believe the GPL functions only as a copyright license, this decision marks a watershed moment in the history of copyleft licensing, showing that it functions as a contract as well as a copyright license. SFC also stated that this lawsuit is the first legal case to focus on the rights of individual consumers as third-party beneficiaries of the GPL, and that it looks forward to the opportunity to establish these consumer rights in state court.
Honestly, when I skimmed only the domestic (Korean) news coverage, I thought SFC had won the lawsuit and that ordinary consumers now had a legal right to demand GPL source code from companies. But this ruling was not a final decision on that question. As I understand it, it is a ruling that grants an opportunity to litigate this matter in state court going forward.
Finally, Heather Meeker’s commentary on this is a useful reference.
With that, I will wrap up this summary and take another look at the domestic article that I had trouble understanding earlier.
Now it seems to make sense. However, I still don’t understand why it says the case was remanded “(to a higher court).” A US district court is a federal court, and this case was remanded to state court — so why does it say remanded “(to a higher court)”? Is it a typo? Do Americans refer to state courts as a “higher court”? Or am I misunderstanding something? I would welcome an opinion from a legal expert. :)
Thank you.
Hello, this is Haksung Jang.
InnerSource is a method of introducing open source development methodology inside an organization to maximize cross-team sharing and collaboration, and to gain effects such as faster development speed, transparent communication, and improved code quality.
Several documents explain methods for InnerSource. Today I have briefly summarized the ways to start InnerSource and the expected effects as described in the following material, so please refer to it.

First, let’s look at the key practices emphasized in open source development methodology. How can a massive open source project grow through voluntary participation? Why is it said that participating in an open source project can lead to individual developer growth? This is because open source projects have the following key practices.
When a company introduces the open source practices described in section 1 internally, this is called InnerSource. For reference, InnerSource has its techniques and practices developed more systematically by communities such as InnerSource Commons.
So what effects can a company expect when it adopts InnerSource?
Now let’s look at the challenges a company must consider when trying to adopt InnerSource.
Simply opening and sharing source code internally cannot be expected to produce the effects of InnerSource on its own. The following must necessarily accompany it.
Even after an InnerSource environment has been built internally, developers who are busy with tasks within their own team may find it daunting to look at or contribute to another team’s code. However, participating in InnerSource projects is helpful for developers’ own growth.
For why developers should contribute to open source, please also refer to the following blog post: “Why Developers Should Contribute to Open Source”
Thank you.
Hello, I’m Haksung Jang.
AI has become such an essential technology in modern business that virtually no company operates without using it. Building an AI service requires large volumes of data, and publicly available datasets are also widely used for this purpose. However, even a publicly available dataset carries copyright, so using it in a commercial AI service requires checking its license to minimize legal risks such as copyright infringement.
Today, I want to introduce a recently published paper on this topic: Can I use this publicly available dataset to build commercial AI software? – A Case Study on Publicly Available Image Datasets: https://arxiv.org/abs/2111.02374
“Can I use this publicly available dataset to build commercial AI software? – A Case Study on Publicly Available Image Datasets”
- Gopi Krishnan Rajbahadur, Erika Tuck, Li Zi, Dayi Lin, Boyuan Chen, Zhen Ming (Jack)Jiang, Daniel Morales German
I hope this post gives some insight into the efforts and procedures needed to minimize copyright infringement when building an AI service that relies on publicly available datasets.
The paper first explains that, unlike open source licenses, licenses for using publicly available datasets present several difficult problems.
Let me briefly touch on the debate surrounding GitHub Copilot here. The U.S.-based Software Freedom Conservancy (SFC) recently published a post titled “If Software is My Copilot, Who Programmed My Software?” pushing back against the claims made by Microsoft and GitHub.
Copilot is an AI service that GitHub trained on publicly available source code to help developers write code, and because this includes copyleft software, it has become a legal issue. In response, GitHub CEO Nat Friedman made the following counterargument:
However, the SFC warned that this position taken by GitHub could cause significant harm to Copilot users in the following ways. It therefore took the position that, in order to avoid infringing on someone else’s copyright, it is best not to use Copilot.
The SFC further argued that Microsoft and GitHub must prove why training on copylefted code qualifies as “fair use” and that the trained model is not a “work based on GPL’d software.”
Let’s return to today’s paper. It explains copyright law and contract law as they relate to datasets.
In the end, the paper emphasizes that, for companies developing AI services using publicly available datasets (except in cases that can be judged as fair use), a rigorous approach to confirming the rights and obligations tied to the dataset and ensuring license compliance is important in order to prevent copyright infringement, breach of contract law, and the like.
However, as I will mention again later, checking the license of every dataset, data source, and even individual data point involved in using a publicly available dataset, and complying with each obligation, is close to impossible in practice. Personally, I think a realistic approach is to accept a certain amount of license risk in order to use a publicly available dataset, or to build a legal basis on which fair use can be argued.
Now let’s look at what rigorous approach the paper proposes for using publicly available datasets in commercial AI services.
The paper emphasizes that an AI engineer who wants to use a publicly available dataset must identify the applicable license, and a lawyer must analyze the rights and obligations of that license to determine whether it can be applied to a commercial AI service.

First, Phase 1 is the process in which the AI engineer confirms the license. The paper explains the details as follows.
That covers Phase 1, and there is quite a lot for an AI engineer who wants to use a publicly available dataset to confirm. A bigger problem is that no matter how much effort is put in, if a website provides no license information or provides incorrect information, the scope of what the AI engineer can confirm will inevitably be limited. In any case, let’s look further into the paper. Next is Phase 2, the stage in which a lawyer or other legal professional confirms the rights and obligations of the license.
Going through Phase 2, we’ve looked at how a legal professional documents license rights and obligations in the Enhanced MDL format and how this is used. The paper explains that checking not just the dataset’s license but also the licenses of its data sources matters, because if a data source’s license restricts commercial use, using the dataset commercially carries risk as well.
Using this same approach, the paper conducted case studies on other datasets as well. Let’s look at what it found.
All six of these datasets are image datasets, and their licenses have the following characteristics.
| Dataset | Dataset license | Data Source |
|---|---|---|
| CIFAR-10 | No license stated (citation only required) | Multiple data sources |
| ImageNet | custom license | Multiple data sources |
| Cityscapes | custom license | One data source |
| FFHQ | CC-NC-SA-4.0 | Multiple data sources |
| VGGFaces2 | CC-NC-SA-4.0 | Multiple data sources |
| MS COCO | CC 4.0 | Multiple data sources |
Now let’s look at the results of the paper’s research on these six datasets.
Even just from the results described above, using a publicly available dataset in a commercial AI service carries the potential to cause a license compliance violation. Moreover, the paper further explains that there are additional aspects this study did not consider.
Considering, as described above, both the difficulty of confirming the license of individual data points and the difficulty of confirming a license from inaccurate information, I think it may be fair to conclude that using a publicly available dataset in a commercial AI service without any license risk is genuinely close to impossible. That said, publicly available datasets cannot be excluded entirely from AI product research either. Just as GitHub is preparing the Copilot service despite the copyright infringement issues — accepting a certain degree of legal risk and, where necessary, continuing to fight it out in court — it seems worth considering that a company should be willing to bear some degree of potential copyright infringement risk in order to make use of AI technology. In fact, there is also a view that using a dataset solely for machine learning training does not constitute copyright infringement.
That said, since there is still no clear case law on this point, it cannot be said that there is no risk at all. (And by the way, I am not a lawyer, so please note that none of this carries any legal effect. ^^)
Overseas, countries such as those in Europe, Japan, and the United States have amended their laws to allow the use of big data for AI training, and I understand that a bill to amend the Copyright Act for this purpose has also been introduced in Korea’s National Assembly. I hope the government moves quickly to pass the necessary legislation so that domestic companies can use publicly available datasets more easily and accelerate innovation in AI technology.
Thank you.
Most open source licenses place no restrictions on simply running the software, but they do require compliance with obligations such as source code disclosure and attribution when the open source is redistributed. Here, “distribution” generally means the physical delivery of software, such as selling an embedded device that carries the software or distributing a mobile app through an app market.
SaaS providers do not distribute software to deliver their service, so they can be relatively free of license obligations even when they use open source. However, some open source licenses, such as AGPL, impose license obligations even when a service is provided over a network, so care is needed there.
Heather Meeker, a well-known open source attorney in the United States, published a post titled Open Source Compliance for SaaS Vendors, explaining the open source compliance issues SaaS vendors need to watch for. Today I’d like to introduce this content.
Heather first discussed client-side software. On a SaaS platform, most of the software resides on the vendor’s server side, but some software is delivered to and runs on the user’s computer (“client-side”).
Heather used WordPress, which provides website-building functionality as SaaS, as an example. Suppose you access WordPress in the Chrome browser and open the screen for building a blog. If you press control-u there (Command + Option + U on a MacBook), you can view the page source code, and you’ll see roughly 3,000 lines of source code (of course, most of the source code that makes up the blog-writing functionality runs on WordPress.com’s servers).
This client-side code mainly consists of simple logic, such as checking whether values like a date or address entered into a web page’s input “form” are valid. There’s no need to spend time coordinating with the server for these small tasks. This client-side code is mostly “scripting language” code, typically HTML, JavaScript, and CSS. What’s notable here is that, as you can see in the browser, this script code is always delivered in source code form. So even if the code is under a copyleft license like LGPL, there’s no need to separately provide the source code.
Heather explains that the notice obligation still needs to be considered, and raises an issue. Developers, wanting to keep loading times fast, tend to keep only the minimal amount of open source HTML/CSS/JavaScript code, and because of this they often strip out the copyright and license notices in the code. But when distributing software under a copyleft license like LGPL, you must provide not only the source code but also the full license text.
- … and distribute a copy of this License along with the Library.
So how should the full text of the LGPL license be delivered while delivering LGPL-licensed JavaScript code to the client side?
One approach Heather suggests is to create a page for open source notices within a screen such as the SaaS system’s dashboard, and include a link there showing the full license text.
However, Heather also raises some doubt as to whether even this approach can be considered to fully satisfy the license conditions. In fact, most of the notice obligation clauses in open source licenses were written long before web services existed, and they only assumed the software delivery methods of that time — that the notice would be delivered together with the installation program.
MIT also requires the following.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Given this clause, one could argue that providing the license notice on a separate web page within the SaaS system isn’t sufficient either. Of course, providing it this way is still much better than not providing it at all.
Developers minimize the size of code delivered to the client side as much as possible in order to minimize the loading time. To do this, they remove unnecessary comments in the JavaScript code and also strip “white space,” among other minification steps.
<script id=’wp-media-utils-js-translations’>
( function( domain, translations ) {
var localeData = translations.locale_data[ domain ] ||
translations.locale_data.messages;
localeData[“”].domain = domain;
wp.i18n.setLocaleData( localeData, domain );
} )( “default”, { “locale_data”: { “messages”: { “”: {} } } } );
</script>
For example, minifying the code above converts it into the following, and readability naturally suffers.
<scriptid=’wp-media-utils-js-translations’>(function(domain,translations){varlocaleData=translations.locale_data[domain]||translations.locale_data.messages;localeData[“”].domain=domain;wp.i18n.setLocaleData(localeData,domain);})(“default”,{“locale_data”:{“messages”:{“”:{}}}});</script>
Now, open source licenses that require source code disclosure define “source code” as a form that is convenient to modify.
3. … The source code for a work means the preferred form of the work for making modifications to it.
Given that, if LGPL-licensed JavaScript code is minified while being delivered to the client side, can this be considered compliant with the source code provision obligation? Since a user would have difficulty modifying it while minified, shouldn’t a separately readable, unminified version of the code be provided?
On this point, Heather says it isn’t a problem, because most development tools automatically improve readability by inserting white space and the like, even for minified JavaScript code. In other words, she explained that delivering minified JavaScript code can also be regarded as “the preferred form of the work for making modifications,” which is what GPL and LGPL require as the definition of source code.
Another potential issue Heather raises for SaaS is network copyleft licenses. Some open source licenses, such as AGPL, require disclosure of server-side source code when a user interacts with the software over a network, even without any physical distribution of the software. Heather calls these “network copyleft licenses.” AGPL-3.0, a representative network copyleft license, defines the obligation regarding remote network interaction in Section 13 as follows.
AGPL-3.0
- Remote Network Interaction; Use with the GNU General Public License.
… if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software.
In other words, if AGPL software is used in the following two ways, you must provide the source code:
One might then ask, isn’t it perfectly fine to just use it without modification? Even if a developer doesn’t modify it at first when introducing AGPL-3.0 open source, over time a situation may arise where modification becomes necessary. As time passes, some other developer may make modifications for functional, performance, or compatibility reasons, without taking the AGPL license into account. So while claiming “no one will modify this AGPL-3.0 open source, so there’s no need to worry about license compliance” may sound plausible for now, it can’t account for the possibility of future changes.
For reference, Google created an “AGPL Policy” to make clear that code under AGPL cannot be used at Google.
*WARNING: Code licensed under the GNU Affero General Public License (AGPL) MUST NOT be used at Google.
The license places restrictions on software used over a network which are extremely difficult for Google to comply with. Using AGPL software requires that anything it links to must also be licensed under the AGPL. Even if you think you aren’t linking to anything important, it still presents a huge risk to Google because of how integrated much of our code is. The risks heavily outweigh the benefits.*
Google explains that it created the AGPL Policy for the following reasons.
Heather explains that, besides AGPL-3.0, there are several other licenses that include network provisions like this.
Heather says that most companies classify these network copyleft licenses as high-risk licenses and have a policy of not using them in SaaS development.
Actually, I used to think that since AGPL-3.0 only imposes the source disclosure obligation when the software has been modified, using it without modification should be fine. So my position was that there was no real need for a company to have a policy specifically banning the use of AGPL-3.0. But when I consider whether a company actually has systems in place internally to guarantee that the software won’t be modified even years down the line, even if it isn’t modified when it’s first introduced, I can no longer be so sure it won’t ever be modified. So, like Google, I think it’s reasonable, from a license management perspective, to adopt a default policy that restricts the use of AGPL-3.0 open source.
Heather says that because the server-side code of a SaaS platform is also almost always distributed at some point eventually, open source compliance needs to be considered for the server-side code as well. Situations where SaaS code ends up being distributed include the following.
Considering that such situations can arise, Heather explains that even when developing a SaaS service, companies should avoid combining GPL or AGPL open source with their own proprietary code, in anticipation of possible future distribution.
Some may see this as an overly cautious policy, but I think it’s an argument well worth considering. In particular, given the recent trend of open source commonly used on servers changing its license, establishing a system to identify and manage the Software Bill of Materials even for server-side programs is becoming an essential process for companies.
In the past, some companies’ open source compliance policies excluded open source used only on internal servers, without external distribution, from open source review altogether. However, given (1) open source licenses with network copyleft clauses such as AGPL, and (2) the trend of software changing its license from open source to a commercial software license, a management system for license compliance is becoming necessary for server-side software as well. Companies will need to improve their policies and processes for this, and adopt tools that can automatically generate a Bill of Materials for server-side software.
This paper was translated by Haksung Jang from the English version available at this white paper. The original author, Heather Meeker, has not reviewed this translation.
Hello, this is Haksung Jang.
In September 2021, it was reported through a Chinese news article that the first GPL-related ruling in China had been handed down. I’ve summarized what I understood of it using a translation tool. Please keep in mind that, since I’m not a lawyer and don’t know Chinese, there may be errors in the content. :) If you find any errors, I’d be grateful if you’d let me know at any time (haksung@sk.com).
(Thanks to Jin-Young Choi, Center Director at the Korea Copyright Commission, for helping review this. ^^)
Source: “首例!违反 GPL 协议致侵权,被判赔偿 50 万元” - https://www.oschina.net/news/159435
In April 2021, a first-instance civil ruling was handed down in China in a copyright infringement dispute. The ruling found that, because the defendant used code the plaintiff had released under GPL-3.0 without complying with GPL-3.0’s obligations, the license rights granted by GPL-3.0 had terminated, and this constituted infringement. The court confirmed the infringement and ordered the defendant to pay damages of RMB 500,000 (about KRW 100 million).
The plaintiff, the defendants, and the software at issue in this dispute are as follows.
The plaintiff is Jining Luohe Network Technology Co., Ltd, the copyright holder of VirtualApp.
There are three defendant companies in total.

The plaintiff developed and distributed VirtualApp, software that provides a virtual Android environment.

http://www.downcc.com/soft/359746.html
Let’s take a closer look at the history.
"VirtualApp (Chinese name: Luo box) was formally established in August 2017.
If you need to use VirtualApp for commercial purposes, please
contact QQ: 10890 to purchase a commercial license.
If you use VirtualApp's code as your own code for commercial gain or internal use,
or upload it to a software marketplace without authorization,
we will directly report this to the police (copyright infringement),
resulting in legal action and criminal liability for your company."
For reference, Lody was the primary contributor to VirtualApp, with about 30 additional developers contributing afterward.
Like VirtualApp, Dim Sum Desktop is software that provides a virtual Android environment, and it was developed by defendant Fujian Fengling Chuangjing Technology Co., Ltd.

http://www.appchina.com/app/com.dianxinos.dxhome
While developing Dim Sum Desktop, the defendant obtained and included the August 16, 2017 version of VirtualApp published on GitHub. This version was under GPL-3.0 while also (inconsistently) including language prohibiting commercial use.
In September 2018, the plaintiff confirmed that “Dim Sum Desktop v6.5.8” was using code from VirtualApp V1.0.
In 2019, the plaintiff filed suit seeking the following relief.
In April 2021, the court ruled that this case was a dispute concerning copyright infringement of computer software and involved issues related to open source, and offered its opinion on the following issues.

The court determined that GPL-3.0 has a contractual nature and can be regarded as a copyright agreement between the licensor and the user, and that it falls within the scope of adjustment of China’s “Contract Law”. It further explained tort liability for GPL-3.0 violations as follows.
The court did not clearly explain the nature of ownership (e.g., sole work, joint work, combined work) of a work created by multiple contributors on GitHub. However, it determined that, because the plaintiff registered a copyright for VirtualApp and for other reasons, the plaintiff holds the copyright and has the right to bring suit without the consent of other contributors.
However, the court did not rule on whether the plaintiff has the right to relicense VirtualApp. Nor did it rule on the question of whether relicensing, by including contributions from other contributors, tainted GPL-3.0.
The court pointed out that VirtualApp’s “prohibition on commercial use” clause violates GPL-3.0 (Section 7, Additional Terms; Section 10, Automatic Licensing of Downstream Recipients), and determined that the GPL-3.0 license still takes precedence.
However, the court made no mention of the “license reinstatement clause” of Section 8 of GPL-3.0 (which permanently reinstates the license if this is the first time the copyright holder has notified the violator of a violation, and the violation is cured within 30 days of receiving the notice). A Chinese attorney raised questions such as “Did the plaintiff notify the defendant of the violation beforehand?”, “Did the plaintiff file suit directly without prior notice?”, and “If so, does the opportunity for ‘permanent reinstatement of the license upon cure within 30 days’ still remain available?” (Shouldn’t filing the lawsuit itself be regarded as constituting notice?)
The plaintiff requested that damages be calculated based on the defendant’s profits. However, the court appears to have determined the damages based on statutory damages.
RMB 500,000 is reportedly close to the maximum level of statutory damages for copyright infringement.
There has long been a perception that China is lenient toward violations of copyright law, so it was striking that the court recognized the legal effect of an English-language open source license and ruled that a license violation constituted copyright infringement. Companies need policies and processes in place to comply with open source license obligations in order to minimize the risk of getting caught up in disputes like this.
It is reported that the defendant has appealed the case to the Supreme Court. I’m curious to see what arguments the defendant will make on appeal. :)
Hello.
P. McCoy Smith, a well-known open source license attorney in the United States, recently published an article titled Does GPLv2 Require ‘Installation Information’ in JOLTS (Journal of Open Law, Technology & Society) (JOLTS).
In March 2021, the SFC (Software Freedom Conservancy) (SFC) blog published a post titled “Understanding Installation Requirements in GPLv2,” arguing that GPLv2 also requires the provision of installation information. This article analyzes that claim and explains, with detailed grounds, the view that GPLv3’s ‘Installation Information’ requirement does not apply to GPLv2.
This translation renders the original text while adding background explanations wherever possible to improve readability and help readers understand the content.
If you find any errors or have additional comments, please feel free to contact me at haksung@sk.com.
Thank you. :)
This paper was translated by Haksung Jang from the English version available at this article. The original author, P. McCoy Smith, has not reviewed this translation.
One of the key features added in GPLv3 (GNU General Public License version 3) is the requirement to provide ‘Installation Information’ in addition to source code when distributing software. This was newly added to GPLv3 to address a loophole in GPLv2 (Tivoization). Recently, however, a claim has been raised that this installation information requirement should be considered to apply to GPLv2 as well.
This article reviews the historical basis for including the ‘Installation Information’ requirement in GPLv3 and explains that this requirement is newly applied in GPLv3, not GPLv2. It also arrives at the same conclusion through an analysis of the GPLv2 text.
GPLv2 (GNU General Public License, version 2)1, released by the FSF (Free Software Foundation) in 1991, adopted a Copyleft (or Reciprocal) licensing approach. The Copyleft approach requires disclosure of source code in a specified manner at a specified time, and requires the same license to be applied when the software is redistributed. This is considered the best means of ensuring that software remains “free,” a view still widely held today2. Here, “free” means the following3.
Nevertheless, in 2005 the FSF recognized the need to revise the license to address legal4 and technical5 issues that had not been considered6 when GPLv2 was released. Accordingly, the FSF began a large-scale, multinational collaborative effort from 20067 through 2007 to create a new version of the GPL, and released GPLv3 on June 29, 20078.

GPLv3 added numerous features to address the problems and concerns raised during the 15 years GPLv2 was in widespread use. Among these, the most notable (and also most controversial9) are (1) the provision defining ‘Installation Information’ and (2) the provision specifying the circumstances under which installation information must be provided when ‘conveying’10 software licensed under GPLv3. Understanding the extent to which GPLv3’s ‘Installation Information’ requirement includes, and does not include, elements required under GPLv2 requires a detailed review of the language and history of both licenses.
GPLv3, Section 611 (which specifies the obligations that apply when GPLv3 code is “conveyed in Non-Source Form”) defines the disclosure obligations specific to ‘Installation Information’.
“‘Installation Information’ ... means any methods, procedures, authorization keys, or other
information required to install and execute modified versions of a covered work ... from a
modified version of its Corresponding Source. The information must suffice to ensure that the
continued functioning of the modified object code is in no case prevented or interfered with
solely because modification has been made.”

What is notable about GPLv3’s definition of ‘Installation Information’ is that it specifically mentions ‘authorization keys’ and ‘other information’. This was included to address specific instances of abuse of GPLv2 software that concerned the FSF when the process of creating GPLv3 began12.
The detailed requirements of GPLv3’s ‘Installation Information’ obligation, and how and when GPLv3 requires the provision of installation information, are beyond the scope of this article13. Nevertheless, a general understanding is needed of what similarities might support the argument that the installation information obligation also applies to GPLv2, what evidence demonstrates that the installation information obligation is unique to GPLv3, and through what process this content came to be adopted. It is therefore important to understand the historical background behind the addition of the ‘Installation Information’ obligation to GPLv3, the specific language added to GPLv3, and how that language differs from the obligations stated in GPLv2.
Around 2006, when GPLv3, the new version of the GPL, was proposed, the FSF expressed concern about a practice that could potentially undermine the concept of ‘software freedom’. The FSF named this practice ‘Tivoization’14, and at the time, the FSF considered that TiVo, a DVR (digital video recorder) company, was infringing on users’ freedom.

https://blog.codinghorror.com/tivoization-and-the-gpl/
In the mid-2000s, certain TiVo DVR hardware devices had a GPLv2-licensed Linux kernel installed. These devices included a mechanism to verify the version of the Linux kernel to be installed on the TiVo hardware device. This validation mechanism used a checksum or cryptographic hash function to compare against the kernel version installed on the device, and refused to install any version of the Linux kernel whose checksum or cryptographic hash15 did not match a specific value. In this way, TiVo devices allowed only TiVo — as the hardware manufacturer and the sole party with the necessary information about the embedded checksum or hash value — to install authorized versions of the Linux kernel on the device. If a user of a TiVo device (e.g., a customer who purchased the device) obtained the source code of the kernel installed on the device, modified that kernel, and tried to reinstall it, the checksum or hash would differ for the modified kernel, so the modified kernel could not be reinstalled or executed16.
Accordingly, in 2006 the FSF considered the inability to reinstall a modified version of GPLv2 software on an existing device to be an infringement of the freedom users should have over software, and did not hesitate to describe this practice in highly disparaging terms.
“A tyrant is a malicious device that refuses to allow users to install a different operating system or a modified operating system. These devices have measures to block execution of anything other than the ‘approved’ system versions.”17

https://fsfe.org/activities/gplv3/brussels-rms-transcript.en.html
Although the FSF had long opposed the practice of ‘Tivoization’ (preventing the reinstallation of modified binaries), during the drafting of GPLv3, statements by the FSF’s President, General Counsel, and Executive Director also made clear that this practice could be permitted under GPLv2.
“[T]he Tivo itself is the prototype of [T]ivoisation. The Tivo contains a small GNU/Linux operating system, thus, several programs under the GNU GPL[v2]. And, as far as I know, the Tivo company does obey GPL version 2. … [T]he trouble begins because the Tivo will not run modified versions, the Tivo contains hardware designed to detect that the software has been changed and shuts down.”18
“TiVo is a provider of hardware and software …. Our concern with them is that they have rights as users, but they should respect the rights of the users to whom they sell. Having a personal video recorder … which won’t run software if you modify the box … is not user-respecting conduct. (TiVo) complied with GPL 2 by the skin of its teeth.”19
“TiVoization is described by Peter Brown [Executive Director of FSF in 2006-07 during drafting of GPLv3] as circumventing GPL2 ‘in spirit, not technically.’”20
This difference (between GPLv3, which prohibits ‘Tivoization’, and GPLv2, which permits it) was the decisive reason why Linus Torvalds, the author of the Linux kernel, decided not to change the license to GPLv3 and to keep it ‘GPLv2 only’.

https://www.youtube.com/watch?v=bV3cKq26nKQ
“’The FSF is trying to make some things no longer permissible under the GPLv3 that the GPLv2 left open, and I just happen to think that those things were better off being left open.’”21
“‘I don’t think the GPL v3 conversion is going to happen for the kernel, since I personally don’t want to convert any of my code.’ … ‘I think it’s insane to require people to make their private signing keys available, for example. I wouldn’t do it,’ [Torvalds] said.”22
“[If] you can not install or run your changes on somebody else’s hardware … it in no way changes the fact that you got all the source code, and you can make changes (and use their changes) to it. That requirement has always been there, even with plain GPLv2. You have the source. The difference? The hardware may only run signed kernels. The fact that the hardware is closed is a hardware license issue. Not a software license issue. I’d suggest you take it up with your hardware vendor, and quite possibly just decide to not buy the hardware. Vote with your feet. … [I]t’s important to realize that signed kernels that you can’t run in modified form under certain circumstances is not at all a bad idea in many cases.”23
Torvalds’s view on GPLv3’s ‘Installation Information’ requirement was shared by several major kernel developers, as shown below24. Torvalds maintained a consistent position even a decade later, which is one of the reasons the Linux kernel continues to maintain a ‘GPLv2 only’ license to this day25.
“I give you source code, you give me your changes back; we’re even. … That’s my take on GPL version 2 and it’s that simple. … Version 3 extended that in ways that I personally am really uncomfortable with. Namely I give you source code, that means if you use that source code, you can’t use it on your device unless you follow my rules. And to me that’s a violation of everything version 2 stood for. And I understand why the FSF did it, because I know what the FSF wants, but to me it’s not the same license at all. So I was very upset, and made it very clear, and this was months before version 3 was actually published.”26
In the process of creating and releasing GPLv3, the FSF made clear that, unlike GPLv2, GPLv3 was adding content that could prevent ‘Tivoization’.
“There are several primary areas where version 3 is different from version 2. One is in regard to [T]ivoisation."27
“The Tivo includes some GPL-covered software. …[Y]ou can get the source code for that, as required by the GPL … and once you get the source code, you can modify it, and there are ways to install the modified software in your Tivo and if you do that, it won’t run, period. Because, it does a check sum of the software and it verifies that it’s a version from them and if it’s your version, it won’t run at all. So this is what we are forbidding, with the text we have written for GPL version three. It says that the source code they must give you includes whatever signature keys, or codes that are necessary to make your modified version run.”28
The FSF has made clear (consistently from when GPLv3 was first proposed to the day this article was published) that GPLv3 in fact contains a definition of the ‘Installation Information’ requirement that is broader than any requirement contained in GPLv2.
“GPLv2 did not address the use of technical measures to take back the rights that … GPL[v2] granted, because such measures did not exist in 1991 [when GPLv2 was written], and would have been irrelevant to the forms in which software was then delivered to users. … GPLv3 must address these issues: free software is ever more widely embedded in devices that impose technical limitations on the user’s freedom to change it.”29
“Does GPLv2 have a requirement about delivering installation information?…
“GPLv3 explicitly requires redistribution to include the full necessary ‘Installation Information.’ GPLv2 doesn’t use that term, but it does require redistribution to include scripts used to control compilation and installation of the executable with the complete and corresponding source code. This covers part, but not all, of what GPLv3 calls ‘Installation Information.’ Thus, GPLv3’s requirement about installation information is stronger.”30
Richard Stallman appealed to software developers to “upgrade” their licensing policy to GPLv3 to address the existing problems with GPLv2, and cited the newly introduced installation information requirement as the first reason developers should switch to GPLv3.
““Keeping a program under GPLv2 won’t create problems. The reason to migrate is because of the existing problems which GPLv3 will address.
“One major danger that GPLv3 will block is tivoization. Tivoization means computers (called “appliances”) contain GPL-covered software that you can’t change, because the appliance shuts down if it detects modified software. The usual motive for tivoization is that the software has features the manufacturer thinks lots of people won’t like. The manufacturers of these computers take advantage of the freedom that free software provides, but they don’t let you do likewise.31
One of the most notable features of a Copyleft license such as GPLv2, released in 1991, is that any individual or entity that distributes32 code licensed under the terms of GPLv2 has an obligation to provide the ‘source code’33. GPLv2’s Section 3 specifically defines the components of ‘source code’ that must be provided when code under GPLv2 is distributed in object or executable code form34.
“The source code for a work means the preferred form of the work for making modifications to it.
For an executable work, complete source code means all the source code for all modules it
contains, plus any associated interface definition files, plus the scripts used to control
compilation and installation of the executable.”
The explanation of the obligation to provide source code can generally be understood in connection with common knowledge of what ‘source code’ means in computer programming.
“Source Code: … The form in which a computer program (software) is written by the programmer. Source code is written in some formal programming language which can be compiled automatically into object code or machine code or executed by an interpreter.”35
GPLv2 also includes two other items that fall within the license’s definition of ‘source code’.
To understand how GPLv2’s disclosure obligation differs from GPLv3’s disclosure obligation, it is necessary to review the meaning of these provisions.
As discussed above, GPLv3’s disclosure obligation for distributing executable code includes both ‘Corresponding Source’36 and ‘Installation Information’37.
“[A]ll the source code needed to generate, install, and (for an executable work) run the object
code and to modify the work, including scripts to control those activities.”
“[A]ny methods, procedures, authorization keys, or other information required to install and
execute modified versions of a covered work ... from a modified version of its Corresponding
Source.”
GPLv3’s original draft included the obligation to provide authorization keys within the definition of “Corresponding Source”38. However, there was opposition to defining data such as authorization keys together with source code, and accordingly the FSF moved the authorization key requirement to a different section.
“We have moved the technical restrictions provisions from section 1, where they formed part of the definition of Corresponding Source, to section 6, where they are presented as a condition on the right to convey object code works. Some critics of the provisions in our earlier drafts focused on what they regarded as an inappropriate equation of cryptographic keys with source code. Placing the requirements in section 6 should make their purpose and reasonableness more evident.”39
Thus, during the draft revision stage of GPLv3, the FSF recognized and acknowledged that the ‘Installation Information’ requirement is a separate obligation beyond the ‘Corresponding Source Code’ obligation that existed in GPLv2 and was also included in GPLv3.
GPLv2’s source code disclosure obligation is as follows40.
“For an executable work, complete source code means all the source code for all modules it
contains, plus any associated interface definition files, plus the scripts used to control
compilation and installation of the executable.”

To the extent that anything within GPLv2’s ‘corresponding source code’ requirement resembles GPLv3’s ‘Installation Information’ requirement, it would be the two separately specified items below.
‘Interface definition file’ is a term commonly used in computer programming (GPLv2 does not provide a more detailed definition of this term). It can be interpreted as a separate file containing attributes and definitions of a particular software’s programming interface41. This requirement in GPLv2 does not appear to impose an obligation to provide authorization keys, checksums, or other information necessary to permit the installation or execution of a modified binary. Instead, it requires the disclosure of information necessary to understand the interface of the distributed binary (because this is difficult to determine from the disclosed source code alone).
By contrast, the second item — scripts used to compile and install the executable — is clearly material related to the installation of a GPLv2-covered executable. However, this requirement concerns the term ‘script’ itself, in the sense commonly understood in computing.
“A computer script is a list of commands that are executed by a certain program or scripting engine. Scripts may be used to automate processes on a local computer …. Script files are usually just text documents that contain instructions written in a certain scripting language. … [W]hen opened by the appropriate scripting engine, the commands within the script are executed.”42
“Script[:] … a sequence of instructions or commands for a computer to execute … especially … one that automates a small task (such as assembling or sorting a set of data).”43
An installation script44 is generally a small, simple program used to automate the process of installing a particular program on a particular device45.
Therefore, from the standpoint of textual interpretation, there appears to be no doubt that GPLv2’s obligation to provide ‘scripts used to control … installation of the executable’ cannot be interpreted as including the provision of checksums, hashes, authorization/signing keys, or other numerical data needed to install GPLv2 executable code. Such data does not fall within the ordinary scope of a ‘script’.
A more interesting interpretive question would instead be a case where firmware embedded in the hardware device itself runs an installation program that validates the executable in some form (for example, a feature that restricts installation by determining that the executable is invalid if it has been modified). Even in such a case, however, given that both the FSF and Linux kernel developers consistently maintained, over a long period during the drafting and release of GPLv3, the position that any form of installation validation (such as the use of PROM-loaded information, as with TiVo) was permitted under GPLv2, it would be difficult to argue that such an immediate check performed by firmware would trigger an obligation to provide installation information under GPLv2’s ‘scripts used to … installation of the executable’ requirement.
Some attempt to backport the entirety of GPLv3’s ‘Installation Information’ definition into GPLv2’s source code obligation, but such an effort produces results that are historically and textually incorrect. Suppose the complete ‘Installation Information’ definition were included in GPLv2’s Section 3. The moment one does so, a dilemma arises. GPLv3’s ‘Installation Information’ requirement is limited in its application to a specific type of product, namely a ‘User Product’46. The obligation to provide ‘Installation Information’ under GPLv3 applies only to ‘User Products’ and does not apply to other products47.
“If you convey an object code work under this section in, or with, or specifically for use in,
a User Product ... the Corresponding Source conveyed under this section must be accompanied by the
Installation Information.”

GPLv2, by contrast, contains no definition or limitation on the type of product to which the source code obligation applies. Source code must be provided under the GPLv2 obligation regardless of whether the product is a ‘User Product’ or not. Therefore, if GPLv3’s complete definition of the ‘Installation Information’ obligation were merely a restatement or clarification of GPLv2’s existing disclosure obligation, GPLv3 would have narrowed the circumstances under which that disclosure obligation could exist. The result would be that GPLv3 applies to a narrower range of software than GPLv2, thereby narrowing its scope in terms of ‘software freedom’. This interpretation is the exact opposite of what GPLv3 was originally intended to achieve.
“As a free software license … this license [GPLv3] intrinsically disfavours technical attempts to restrict users freedom to copy, modify, and share copyrighted works. Each of [the licenses] provisions shall be interpreted in light of this specific declaration of the licensor’s intent. We wish courts all over the world to understand that our intent [in creating GPLv3] is to maximise freedom, not to restrict it, and that everything should be so understood when effect is given to its terms”48
Stated differently, GPLv3 can maximize freedom in line with its original intent only if the ‘Installation Information’ obligation itself extends ‘freedom’ beyond GPLv2’s disclosure obligation. Otherwise, since GPLv2’s obligation is not limited to a specific product type, GPLv3 — which imposes the obligation only on User Products — falls into the interpretive dilemma of having narrowed the scope of ‘freedom’.
As explained in detail above, textual analysis and a review of the historical record make it clear that GPLv3’s ‘Installation Information’ obligation does not exist within GPLv2’s source code obligation, and that it cannot be backported to GPLv2 in any way. Despite this fact, there have recently been efforts to alter the historical record and reinterpret GPLv2’s requirements so as to equate GPLv2’s source code obligation with GPLv3’s ‘Installation Information’ requirement.
“GPLv2 §3 requires that the source code include ‘meta-material’ like scripts, interface definitions, and other material that is used to ‘control compilation and installation’ of the binaries.”49
“GPLv2 included a clear obligation to provide ‘the scripts used to control … installation’ that function for the GPLv2’d works. GPLv2 assures, to the purchaser of an embedded product, their absolute right to receive the information necessary to install a modified version of the GPLv2’d works. … The GPLv2 was designed to assure bug-fixing. Furthermore, the drafters knew that, on embedded systems and devices, you need to know how to install those fixes. Scripts can be technical [artefacts] like shell scripts, but can also be merely a recipe and/or guidance — written instructions that explain how to succeed at install.”50
As shown in these statements, an effort is currently underway to fold GPLv3’s concept of the ‘Installation Information’ requirement (information, recipes, guides, instructions, etc. for installing and executing an executable) into GPLv2, so that GPLv2 would also require the provision of a ‘script’ for installation. All such efforts are not only counter-textual to GPLv2’s actual requirements but also ahistorical. Again, GPLv2’s drafters acknowledged that GPLv2 could not require TiVo to provide the information necessary to reinstall a modified executable on a TiVo device51.
Whether this ahistorical and textually unsupported interpretation of GPLv2 remains merely a theoretical debate, or is ultimately decided by a court as a result of compliance litigation, remains to be seen. The many statements made during the drafting of GPLv3 (as detailed above), together with the actual language of GPLv2, will serve as the basis for any determination of the scope of GPLv2’s source code obligation.
P. McCoy Smith is Founding Attorney at Lex Pan Law (www.lexpan.law), a full-service intellectual property law firm in Portland, Oregon, U.S.A., that has a sub-speciality in free and open source licensing, as well as Founder at Opsequio (www.opsequ.io), an software licence compliance consultancy. As a member of GPLv3 Discussion Committee B, he was an active participant in the debate over, and revision of, the ‘Installation Information’ requirement in that licence.
Licence and Attribution
This paper was published in the Journal of Open Law, Technology, & Society, Volume 12, Issue 1 (April 2021). It originally appeared online at https://www.jolts.world
This article should be cited as follows:
Smith, P. McCoy (2021) ‘Does GPLv2 Include an “Installation Information” Obligation? A Textual & Historical Analysis’, Journal of Open Law, Technology & Society, 12(1), pp 21 – 31
DOI: 10.5033/jolts.v12i1.149ㅊㅊ
Copyright © 2021 P. McCoy Smith.
This article is licensed under a Creative Commons Attribution 4.0 CC-BY available at
https://creativecommons.org/licenses/by/4.0/

GNU Operating System, ‘GNU Library General Public License, version 2.0,’ (June, 1991) https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html (accessed March 8, 2021). ↩︎
Although GPLv3 was designed to eventually supplant GPLv2, in the 14 years since GPLv3 was published, the use of GPLv3, by some measures, is roughly equal in measure to the use of GPLv2; GPLv3’s relative use is also declining while GPLv2 remains steady state. Johnson, Patricia, ‘Open Source Licenses in 2021: Trends and Predictions,’ WhiteSource (January 28, 2021) https://resources.whitesourcesoftware.com/blog-whitesource/open-source-licenses-trends-and-predictions (accessed March 30, 2021). ↩︎
See GNU Operating System, ‘What is free software? The Free Software Definition,’ https://www.gnu.org/philosophy/free-sw.en.html (accessed March 8, 2021). ↩︎
One example of a change in the law that the authors of GPLv3 felt needed to be addressed in that license was the adoption in 1996 of the WIPO Copyright Treaty (WCT), and the passage in 1998 of its counterpart in the United States, the Digital Millennium Copyright Action (DMCA), particularly the provisions against circumvention of ’technological protection measures’, See WCT Article 11; 17 U.S.C. § 1201 (1998). GPLv3, § 3 directly addresses these additions to copyright law. ↩︎
The technology in TiVo’s devices, preventing reinstallation of modified binaries on devices running GPLv2 software, was one example of technology developed long after the GPLv2 licence was drafted that was of concern to the drafters of GPLv3. Subsequent to the release of GPLv3, millions, if not billions, of devices continue to be distributed with a GPLv2-licensed Linux kernel that prevent the reinstallation of modified binaries. GPLv3 also addressed the outmoded language around distribution of source code in GPLv2, and GPLv3 ‒ in Section 6 ‒ added several additional mechanisms for fulfilling source code obligations more consistent with current mechanisms for software distribution. See GPLv3, § 6(d)-(e). ↩︎
Free Software Foundation, ‘Rationale for 1st discussion draft,’ http://gplv3.fsf.org/gpl-rationale-2006-01-16.html (accessed March 22, 2021). ↩︎
Irish Free Software Organization, ‘Transcript of Opening session of first international GPLv3 conference,’ (January 16th 2006) http://www.ifso.ie/documents/gplv3-launch-2006-01-16.html (accessed March 22, 2021). ↩︎
GNU Operating System, ‘GNU General Public License, version 3,’ (‘GPLv3’) (June 29, 2007) https://www.gnu.org/licenses/gpl-3.0.html (accessed March 22, 2021). ↩︎
Burnette, Ed, ‘Tivo and GPL: Beauty and the Beast?,’ ZDNet, (October 2, 2006) https://www.zdnet.com/article/tivo-and-gpl-beauty-and-the-beast/ (accessed March 29, 2021). ↩︎
‘Convey’ is the activity defined in GPLv3 as triggering source code disclosure obligations. GPLv3, n. 6, §§ 4-6. ↩︎
GPLv3, n. 6 above, § 6. ↩︎
See ‘Transcript of Opening Session of First International GPLv3 Conference,’ (January 16th 2006) http://www.ifso.ie/documents/gplv3-launch-2006-01-16.html (accessed May 5, 2021) at 0h 03m 59s ↩︎
Perhaps the most notable feature of the ‘Installation Information’ requirement, and an important feature in understanding how that requirement differs from the source code obligations in GPLv2, is that the ‘Installation Information’ requirement of GPLv3 applies only to a specified subset of products – ‘User Products’ upon which GPLv3 might be installed. See GPLv3, n. 6 above, at § 6. ↩︎
The Computer Language Company, ‘Tivoization,’ The Free Dictionary by Farlex https://encyclopedia2.thefreedictionary.com/Tivoization (accessed April 2, 2021). ↩︎
Checksums and cryptographic hashes are techniques used to determine whether a received binary file is identical to, or deviates from, an expected binary file. Various techniques are used to generate a numerical value associated with the digits in the expected file to generate a value; that value is then compared at the receiving end to a stored representation of the same value. In this way, any changes to the binary file, even so much as changing one bit from ‘0’ to ‘1’ or vice versa, will produce a different value which will not match the stored value, thus indicating at the received binary file is not identical to the expected binary file. See Fisher, T., ‘What Is a Checksum?’ Lifewire (June 14, 2021) https://www.lifewire.com/what-does-checksum-mean-2625825 (accessed June 14, 2021). ↩︎
Miller, Todd, ‘Using large disks with TiVo,’ Sudo Project (2008) https://web.archive.org/web/20120206023943/http://www.gratisoft.us/tivo/bigdisk.html (accessed April 2, 2021) (‘it is not possible to replace the kernel on a Series2 TiVo since the PROM requires that the kernel be cryptographically signed with a key from TiVo’). Note that although most of the commentary about the Series 2 TiVo devices of the mid-2000s indicate that they would not allow modified GPLv2 binaries to install or execute, at least one commentator has stated that that device allowed such binaries to be installed and run, but only prevented execution of non-GPLv2 proprietary code on that device. See Kuhn, Bradley & Webster, Behan, ‘Safely Copylefted Cars: Reexamining GPLv3 Installation Information Requirements,’ Linux Foundation Events (2017) at 13 https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Safely-Copylefted-Cars-Reexamining-GPLv3-Installation-Information-Requirements-ALS-Bradley-Kuhn-Behan-Webster-1.pdf (accessed April 9, 2021) ↩︎
GNU Operating System, ‘Proprietary Tyrants,’ https://www.gnu.org/proprietary/proprietary-tyrants.html (accessed April 2, 2021). ↩︎
Stallman, Richard, ‘Transcript of Richard Stallman at the 5th international GPLv3 conference,’ (November 21, 2006) https://fsfe.org/activities/gplv3/tokyo-rms-transcript#tivoisation (accessed April 2, 2021). ↩︎
Shankland, Stephen, ‘Defender of the GPL,’ CNet (January 19, 2006) https://www.cnet.com/news/defender-of-the-gpl/ (accessed April 2, 2021). ↩︎
Byfield, Bruce, ‘GPLv2 or GPLv3?: Inside the Debate,’ Datamation (June 17, 2007) https://www.datamation.com/trends/gplv2-or-gplv3-inside-the-debate/ (accessed April 9, 2021). ↩︎
Bennett, Amy, ‘Linux creator Torvalds still no fan of GPLv3,’ Computerworld (July 28, 2006) https://www.computerworld.com/article/2820022/linux-creator-torvalds-still-no-fan-of-gplv3.html (accessed April 7, 2021). ↩︎
Shankland, Stephen, ‘Torvalds rules out GPL3 for Linux,’ ZDNet UK (January 27, 2006) https://web.archive.org/web/20080424051024/http:/news.zdnet.co.uk/software/0,1000000121,39249370,00.htm (accessed April 7, 2021). ↩︎
Barr, Joe, ‘Torvalds versus GPLv3 DRM restrictions,’ Linux.com (February 2, 2006) https://www.linux.com/news/torvalds-versus-gplv3-drm-restrictions/ (accessed April 8, 2021). ↩︎
Bottomley, James, et al., ‘Kernel developers’ position on GPLv3,’ LWN.net (September 22, 2006) https://lwn.net/Articles/200422/ (accessed April 8, 2021). See also Bottomley, James, et al., ‘The Dangers and Problems with GPLv3,’ (September 15, 2006) https://lore.kernel.org/lkml/1158941750.3445.31.camel@mulgrave.il.steeleye.com (accessed May 27, 2021). ↩︎
Linux kernel licensing notice, https://elixir.bootlin.com/linux/latest/source/COPYING (accessed April 8, 2021). ↩︎
Deb Conf, ‘Linus Torvalds says GPL v3 violates everything that GPLv2 stood for,’ YOUTUBE (accessed May 5, 2021, at 0h 0m 34s) https://www.youtube.com/watch?v=PaKIZ7gJlRU. ↩︎
Stallman, Richard, ‘Transcript of Richard Stallman at the 3rd international GPLv3 conference,’ (June 22, 2006) https://fsfe.org/activities/gplv3/barcelona-rms-transcript.en.html#tivoisation (accessed April 2, 2021). ↩︎
Stallman, Richard, ‘Transcript of Richard Stallman speaking on GPLv3 in Torino,’ (March 18, 2006) https://fsfe.org/activities/gplv3/torino-rms-transcript.en.html#drm (accessed April 2, 2021). ↩︎
Free Software Foundation, ‘Opinion on Digital Restrictions Management,’ (August, 2006) http://gplv3.fsf.org/drm-dd2.html (accessed March 17, 2021). ↩︎
GNU Project, ‘Frequently Asked Questions About the GNU Licenses,’ https://www.gnu.org/licenses/gpl-faq.html#InstInfo (accessed April 7, 2021) ↩︎
Stallman, Richard M. ‘Why Upgrade to GPL Version 3,’ (May 31, 2007) http://gplv3.fsf.org/rms-why.html (accessed May 6, 2021). ↩︎
GPLv3 uses the term ‘convey,’ n. 8 above, whereas GPLv2 uses the term ‘distribute,’ to articulate acts that trigger, among other things, obligations to provide source. Although there are subtle differences between the two terms, they are intended to cover the same acts. GNU Project, ‘Frequently Asked Questions About the GNU Licenses,’ https://www.gnu.org/licenses/gpl-faq.html#ConveyVsDistribute (accessed March 29, 2021). ↩︎
Brown, Neil, ‘GNU GPL 2.0 and 3.0: obligations to include licence text, and provide source code,’ JOLTS vol. 2, no. 1 (2010) DOI: 10.5033/ifosslr.v2i1.31 (accessed March 30, 2021). ↩︎
GPLv2, n. 1 above, § 3. ↩︎
‘Source Code,’ Computer Dictionary of Information Technology https://www.computer-dictionary-online.org/definitions-s/source-code.html (accessed March 30, 2021). ↩︎
GPLv3, n. 6 above, § 1. ↩︎
GPLv3, n. 6 above, § 6. ↩︎
Free Software Foundation, ‘GPLv3 First Discussion Draft,’ §1 (January 16, 2006) http://gplv3.fsf.org/gpl-draft-2006-01-16.html (accessed June 14, 2021). ↩︎
Free Software Foundation, ‘GPLv3 Third Discussion Draft Rationale,’ (March 28, 2007) http://gplv3.fsf.org/gpl3-dd3-rationale.pdf/download (accessed June 14, 2021). ↩︎
GPLv2, n. 1 above, § 3. ↩︎
E.g., Microsoft, ‘Interface Definition (IDL) File,’ Windows Developer Documentation (May 31, 2018) https://docs.microsoft.com/en-us/windows/win32/midl/interface-definition-idl-file (accessed April 8, 2021); de St. Germain, H. James, ‘Interfaces in Object Oriented Programming Languages,’ University of Utah Computing Department https://www.cs.utah.edu/~germain/PPS/Topics/interfaces.html (accessed April 8, 2021). ↩︎
Christensson, Per, ‘Script Definition,’" TechTerms. (2006) https://techterms.com/definition/script (accessed April 8, 2021). ↩︎
‘Script,’ Merriam-Webster.com Dictionary, Merriam-Webster https://www.merriam-webster.com/dictionary/script (accessed April 8, 2021). ↩︎
GPLv2’s requirement to provide ‘compilation’ scripts are not analysed in this article; compilation is part the process of converting source code into executable code, and is not related to the subsequent activities of installing, or executing, that executable code. ↩︎
Arthur, Ty, ‘How to Write a Simple Script to Install a Program,’ Techwalla https://www.techwalla.com/articles/how-to-write-a-simple-script-to-install-a-program (accessed April 8, 2021) ↩︎
‘User Products’ in GPLv3 are subject to a rigorous definition which excludes a large class of products which can, and currently do, use code licensed under one of the GPL family of licences: “A ‘User Product’ is either (1) a ‘consumer product’, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. … A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.” GPLv3, n. 6 above, at Section 6. ↩︎
GPLv3, n. 6 above, at Section 6. ↩︎
Transcript of Opening Session of First International GPLv3 Conference, see n.10 above, at 0h 23m 30s. ↩︎
Kuhn, Bradley, et al., ‘Copyleft and the GNU General Public License: A Comprehensive Tutorial and Guide,’ Copyleft.org at § 5.2 (2003-2018) https://copyleft.org/guide/comprehensive-gpl-guidech6.html#x9-460005.2 (accessed April 9, 2021). ↩︎
Gingerich, Denver, ‘Understanding Installation Requirements in GPLv2,’ Software Freedom Conservancy (March 25, 2021) https://sfconservancy.org/blog/2021/mar/25/install-gplv2/ (accessed April 9, 2021). ↩︎
See above nn. 17 and 22-23. ↩︎
Hello!
In April 2021, Till Jaeger, a well-known German open source lawyer, published an article on who is responsible for the license compliance of the open source software included in the Docker image generated from a Dockerfile. Based on German law and the case law of the Court of Justice of the European Union (CJEU), Till explains that the Dockerfile provider must comply with license obligations.
This is a Korean translation of Till’s original English text. I added images to aid understanding, and here and there I added my own personal comments as blockquotes (in the polite register).
- If you find translation errors or have questions, please contact me by email at haksung@sk.com
- I am deeply grateful to Sean of Kakao for his help reviewing this translation. ^^
This paper was translated by Haksung Jang from the English version available at the Distribution of Dockerfiles. The original document is licensed under CC-BY-4.0. The original author, Till Jaeger, has not reviewed this translation.
FOSS license compliance issues related to Docker technology have been a major subject of research in recent years. In particular, Armijn Hemel’s white paper, “Docker Containers for Legal Professionals"1, which explains the technical foundations of Docker and raises related license compliance issues, provides an extensive analysis. Hemel openly raised the question of who is responsible for the license compliance of the software components that a recipient of a Dockerfile downloads from a third party in order to use the Dockerfile.
Almost all FOSS licenses tie compliance with license obligations to “distribution” (or, in the case of GPL-3.0, “conveying”). Because most licenses do not further define what “distribution” or “conveying” means within the license itself, the definition of “distribution” must be determined by reference to the applicable copyright law2.
Most open source licenses require compliance with license obligations at the point when open source software is “redistributed.” In other words, if the open source software is not redistributed, compliance with license obligations is not required. How far the scope of “distribution” extends must be interpreted according to the copyright law applicable in the relevant jurisdiction.
Because of its importance to license compliance, the term “distribution” continues to be the subject of legal analysis. Heather Meeker wrote about distribution in open source licenses from the perspective of U.S. copyright law3. Although many open source licenses were drafted against the background of U.S. copyright law, European courts are expected to rule based on the definition of “distribution” elaborated by the CJEU.
This article first provides an overview of the technical fundamentals of Docker and an interpretation of the term “distribution” under European copyright law. It then discusses who should be responsible for license compliance when distributing a Dockerfile.
Docker is a technology for installing and distributing programs in containers. It has the advantage that all dependencies exist within a single technical unit and are largely independent of the host system. Unlike virtualization through a hypervisor, a Docker container does not include an operating system kernel. Instead, a specific operating system command causes the container’s file system tree to be displayed as the root directory for all programs in the container. As a result, the rest of the file system outside the container remains invisible to programs inside the container. Docker containers require a Unix-family operating system and are mainly intended for use with the Linux kernel.
A preconfigured container can be distributed as a “Docker image,” which, in addition to the base program, may also include applications, dependencies as program code, and, where necessary, utilities and configuration files. A Docker image can be distributed individually, but it can also be distributed through a public repository such as “Docker Hub.” The same applies to what is known as a “Base Image,” which includes essential system components such as C libraries, a package manager, a shell, and a directory tree, and which refers to a specific Linux distribution. On top of this Base image, additional functionality can be distributed separately as individual archive files, but it can also be added as so-called “layers” that are built on top of one another to form a complete Docker image.

A “Dockerfile” is a text file that, similar to a script, contains step-by-step instructions for building a Docker image. A Dockerfile generally can have its own license that applies only to the Dockerfile itself, and this license does not apply to the programs included in the Docker container.

The “Docker Engine,” the management software for Docker containers, processes the instructions in a Dockerfile sequentially to generate a Docker image. Typically, each component for the Base image or the individual layers is downloaded from an internal or external repository. This means that it is possible for a provider to supply a Dockerfile without transmitting the physical program code, and this is in fact common practice. Using the Dockerfile they receive, customers can build a Docker container by independently obtaining all or part of the program code from a public repository.

This raises the question of whether, and which, license obligations the Dockerfile provider must comply with for the FOSS included in a Docker image built using such a Dockerfile.
Almost all FOSS licenses, under copyright law, require compliance with license obligations as a condition for the act of distributing or conveying software. In other words, license obligations must be complied with when a copy of the program is transferred to a third party. Some licenses include a definition of “distribution” within the license itself (for example, GPL-3.0 includes a definition of the term “convey”), but most licenses do not define this. It is therefore common to refer to how the applicable copyright law interprets distribution. In Germany, §69c no. 3 UrhG of the German Copyright Act uses the term “Verbreitung” and defines distribution as “any form of distributing the original or copies of a computer program (including rental).” Here, “Verbreitung” can be understood, as in §17 (1) UrhG, as granting the right to make use of a work generally, not only a computer program.
“The right of distribution is the right to offer the original or copies of the work to the public or to put it into circulation."
This was interpreted in light of Article 4 of the Directive 2009/24/EG of the European Parliament and of the Council on the legal protection of computer programs4. The highest German and European courts, the German Federal Court of Justice (Bundesgerichtshof, BGH) and the CJEU, have made numerous contributions in their judgments that help interpret the right of distribution. This is explained in more detail below.
This section first examines whether distribution under copyright law necessarily requires the physical transmission of program code. It then discusses the various components of a Docker image, namely the Base image, program libraries, patches, and updates.
Not only in the first case below, but also in the second case, responsibility for “distribution” lies with the Dockerfile provider.
Note that the highest German and EU courts have frequently held that both of the following must be considered.
This aspect includes, in particular, the organizational control that the CJEU calls an “essential role”5. One example is the BGH’s judgment on an “internet radio music recording service.” That judgment addressed whether the fully automated recording of digital radio stations by an internet service constitutes a personal copy of the client (permitted) or a copy made by the service provider (not permitted). On this point, the BGH stated as follows6:
BGH, judgment of 2020-03-05
“In this context, the decisive factor is whether the manufacturer is limited to ’taking the place of the reproduction device’ and acting as a ’necessary tool’ of the other party - in which case the reproduction is to be attributed to the purchaser - or whether he opens up a copyright-relevant use to an extent and intensity that cannot be reconciled with the considerations that justify the privileges of private use - then the reproduction is to be attributed to the manufacturer. Within the framework of this examination, which is based on normative standards, it must also be determined whether the client has organizational sovereignty over the recording process."
For more details on the internet radio music recording service, see the Korea Copyright Commission’s 2019 material, “A German district court rules that a provider of internet radio music recording (stream ripping) services infringes the reproduction right and the right of communication to the public.”
The plaintiff in this judgment was the record producer Sony Music Germany, and the defendant was MusicMonster.FM, which operates a service that records and provides music broadcast on internet radio.
The German court ruled that, because the defendant’s service went beyond simply providing the technical means for reproduction and exceeded the scope justified by private use, the defendant was the actor performing the reproduction and communication to the public, and that the defendant had infringed the plaintiff’s reproduction right and right of communication to the public.
The CJEU relied on several determinations as to who performed the “essential role” in relation to acts of copyright infringement. This is particularly evident in §17 UrhG (German Copyright Act). The UrhG designates a mere “offer,” that is, a preparatory act of a physical distribution, as itself an act of distribution7.
CJEU of 2015-05-13
“Taking that context into account, the Court specifically found that distribution to the public is characterised by a series of acts going, at the very least, from the conclusion of a contract of sale to the performance thereof by delivery to a member of the public. A trader in such circumstances bears responsibility for any act carried out by him or on his behalf giving rise to a distribution to the public in a Member State where the goods distributed are protected by copyright. … As regards an invitation to submit an offer, or a non-binding advertisement for a protected object, those also fall under the series of acts taken with the objective of making a sale of that object. … In the light of the foregoing considerations, the answer to the questions referred is that Article 4(1) of Directive 2001/29 must be interpreted as meaning that it allows a holder of an exclusive right to distribute a protected work to prevent an offer for sale or a targeted advertisement of the original or a copy of that work, even if it is not established that that advertisement gave rise to the purchase of the protected work by an EU buyer, in so far as that that advertisement invites consumers of the Member State in which that work is protected by copyright to purchase it."
This CJEU judgment, and others, show that not only technical distribution but also preparatory acts for distribution can constitute distribution, at least where the distributor plays an “essential role” in the distribution process. This is exactly the case with a Dockerfile. Because a Dockerfile provides organized instructions for transmitting a complete functioning system to the Dockerfile’s recipient (depending on its intended use), the Dockerfile provider plays an essential role in the distribution of the software included in the Docker image. In this respect, it is the Dockerfile provider who holds organizational control. Accordingly, the Dockerfile provider must comply with the license obligations of the FOSS (to be included in the Docker image) that is distributed in this form.
The fact that the Dockerfile provider distributes the software referenced by the Dockerfile does not conflict with the fact that the operator of the repository from which the Base image or layers can be downloaded also performs an act of distributing the program code, or “makes it available to the public,” respectively8. This is because most Base images or layers are offered not only for a specific container but also as a general download. In the case of a general download, it is the individual or entity providing the Base image or layer through the repository - rather than the repository operator - that can potentially be regarded as performing the act of distribution (or communication to the public).
Using an additional layer, an already-installed program can also be modified. In this case, the Docker container includes the unmodified program in one layer and the modified program in another layer, so that the modified program is run. Even in this situation, the Dockerfile provider must bear responsibility for the “essential role,” because the modifications to be applied are defined in the Dockerfile. Accordingly, the Dockerfile provider must comply with the license obligations for the modifications.
It should be noted that, because both versions are distributed to the recipient (even if only the modified version is actually used), this applies to the original version as well as the modified version9. The same is true even where the program is removed by a new layer but remains physically included in the Docker image.
This section starts from the premise that an open source license does not extend to granting permission to use independent programs that are necessary to use the open source software but are not included within the scope of the license. A representative example is the operating system or web server needed to run an application. Such independent programs necessary to run an application will be referred to as “system requirements.” A provider who distributes a Dockerfile is not responsible for complying with the license obligations for system requirements such as the Docker Engine or the Linux kernel. Such system requirements are not even referenced in the Dockerfile.
For reference, Section 3 of GPL-2.0 provides the following exception, under which major components of the operating system, such as the compiler and kernel, are not included within the scope of source code disclosure.
“3. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable."
Can a Base image also be regarded as a system requirement? Generally, the programs included in a Base image are independent of the application running in the Docker container. As long as the programs included in the Base image are used unmodified, the Base image can be regarded as a system requirement even though the Dockerfile contains a download instruction, because the Dockerfile provider is not the provider of the Base image. Furthermore, if the repository operator denies access, the download is no longer possible. In light of these facts, the Base image is outside the Dockerfile provider’s control. The situation is similar for patches, but patches and system requirements must be treated differently.
Computer programs generally operate together with other independent programs. This is a characteristic that distinguishes them from other forms of work. For example, most applications do not run without an operating system. However, the fact that system requirements must be installed to run such an application does not mean that the application provider plays an essential role in distributing the system requirements.
This situation is somewhat similar to that of a download link. Whether a link to download a copyrighted work constitutes an act relevant under copyright law - that is, an act of communication to the public (and therefore potentially giving rise to copyright infringement) - is a fiercely debated issue in the EU. The CJEU has established a set of complex criteria on this point10. These criteria present, among others, the following case-by-case questions: whether the work is made available to a new group of purchasers, whether the intended use is commercial, whether the act plays an important role in the offer, and whether the offer is illegal. Because the matter must be addressed case by case in this way, a comprehensive judgment is almost impossible. In fact, Member States have not commonly taken these criteria into account. Nevertheless, these criteria were likely established out of the CJEU’s desire to better harmonize the legal situation regarding internet copyright.
According to the view presented so far, the operator and provider of the Base image repository play an essential role in the distribution of the Base image, whereas a Base image that the Dockerfile merely references serves only to make it easy to obtain the system requirements. Therefore, it is the repository operator who performs the act of communication to the public, and it is the repository operator - at least where this provision is lawful - who must solely comply with the license obligations of the FOSS included.
The interpretation described above is the legal opinion of this article’s author. There is generally no case law on this specific situation with respect to computer programs, and Dockerfiles in particular. Other interpretations are certainly open to debate (in particular, the view that all referenced layers, including the Base image, are distributed by the Dockerfile provider).
One point worth mentioning is that many repository operators currently do not properly comply with the license obligations of FOSS (for example, by failing to properly provide the source code for GPL and LGPL components), which gives rise to liability for copyright infringement. In this case, if the Dockerfile provider knows, or should know, of the license violation, providing a Dockerfile that includes a reference in violation of the license may be regarded as an independent act of distribution, or at least as contributory copyright infringement (that is, inciting or aiding the license violation). Accordingly, the Dockerfile provider should review whether the Base image provided by the designated repository complies with the license11.
A recipient who intends to use a Docker image solely within their own organization can use it without issue, because the mere execution of a FOSS program is not restricted. For example, Section 4 of GPL-2.0 states this clearly12. However, if the recipient intends to redistribute the Docker image, the recipient who wishes to redistribute it must ensure compliance with the license terms, because the distribution right is not exhausted where the distribution of the Dockerfile infringes copyright (see section 4.6 below).
In the case of a library linked with a program, there is some difference of opinion as to whether the library is regarded as an independent program or becomes part of the linked program13. In this context, a distinction can be made as follows.
GPL-2.0 Section 3 and GPL-3.0 Section 1(3) include a provision exempting “System Libraries” from the scope of the obligation to provide source code among the license obligations14. Accordingly, where a Dockerfile includes an instruction to use such unmodified system libraries in a Docker container, there is no need to comply with license obligations for these system libraries. The legal situation for such system libraries is therefore the same as that applying to a Base image (see 4.3 above), in which case the essential role for distribution does not lie with the Dockerfile provider.
However, if a Dockerfile downloads a library (other than a system library) from a third-party repository, and specifies a layer that links this library with a GPL-3.0 or AGPL-3.0 application within the Docker container, then the obligations of the license (GPL-3.0 or AGPL-3.0) of the respective linked application must be complied with for this library. For example, the library’s source code must be provided (cf. section 1 GPL-3.0: “Corresponding Source includes …, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, …”). The same applies equally under GPL-2.0. As in the case of the library’s physical distribution, the applicable license terms must be complied with (provided there is no license conflict issue). In other words, the copyleft requirements cannot be circumvented through a decentralized distribution process.
Because the Dockerfile provider has organizational control over the selection of a program library as a dependency, it can be concluded that the Dockerfile provider distributes the program library. Accordingly, the Dockerfile provider plays an essential role in the process of distributing the program library.
How updates are treated depends on whether the Dockerfile provider controls the update. If the Dockerfile provider (or an agent) uploads the update directly to the repository so that the Dockerfile’s recipient can retrieve it, the Dockerfile provider can be regarded as distributing the update. By contrast, if the update is provided under the control of the repository operator (for example, where the Dockerfile references the “latest version”), this is not distribution by the Dockerfile provider. In this case, in contrast to the situation where the Dockerfile provider selects a program version and names it within the Dockerfile, the Dockerfile provider has no influence over the content of the update.
License obligations must be complied with at the point of distribution (or communication to the public). Because a preparatory act within the same series of distribution steps, such as the delivery of a Dockerfile, may already be regarded as distribution, strictly speaking, license obligations must be fulfilled at the time the Dockerfile is delivered. However, open source licenses can be interpreted in a way that treats compliance with license obligations at the time of downloading from the repository as sufficient. This interpretation is further supported by the fact that, particularly at the time a Dockerfile is distributed, it is not clear what program code will be included in the layers to be downloaded - for example, where a program version is specified as “latest.”
However, if the relevant repository does not fully satisfy the license obligations, it is advisable for the Dockerfile provider to independently comply with the license obligations and to provide, together with the Dockerfile, a file containing the necessary essential information (for example, the license text, copyright notices, and the provision of source code).
About the author
Till Jaeger has been a partner at JBB Rechtsanwälte since 2001 (www.jbb.de). He is a Certified Copyright and Media Law Attorney and advises large and medium-sized IT businesses as well as government authorities and software developers on matters involving contracts, licensing and IP rights.
One particular focus of Till Jaeger’s work is on the legal issues created by free and open source software (FOSS). He is co-founder of the Institute for Legal Aspects of Free & Open Source Software, ifrOSS (www.ifross.org), contributing to its work with academic publications, lectures and seminars in the fields of software law and copyright law.
Till Jaeger is a lecturer at the Humboldt University Berlin in the subjects of IT law and IP law and general counsel of Open Source Automation Development Lab (OSADL) eG.
He represented the gpl-violations.org project in several lawsuits to enforce the GPL and has published articles and books related to legal questions of Free and Open Source Software (among them Jaeger/Metzger, Open Source Software - Rechtliche Rahmenbedingungen der Freien Software, 5th ed. Munich 2020, and Van den Brande/Coughlan/Jaeger - The International FOSS Law Book, 2nd ed. Munich 2014). He was member of the Committee C in the GPLv3 drafting process.
Licence and Attribution
This paper was published in the Journal of Open Law, Technology, & Society, Volume 12, Issue 1 (April 2021). It originally appeared online at http://www.jolts.world
This article should be cited as follows:
Jaeger, Till (2021) ‘Distribution of Dockerfiles: Who is responsible for FOSS License Compliance?’, Journal of Open Law, Technology, & Society, 12(1), pp 13 – 20 DOI: 10.5033/jolts.v12i1.147
Copyright © 2021 Till Jaeger
This article is licensed under a Creative Commons Attribution 4.0 CC-BY available at
https://creativecommons.org/licenses/by/4.0/
1: Hemel, Armijn, (2020), ‘Docker Containers for Legal Professionals,’ [pdf] Available at: https://www.linuxfoundation.org/wp-content/uploads/Docker-Containers-for-Legal-Professionals-Whitepaper_042420.pdf [Accessed 16 February 2021]. See also Peterson, Scott, (2020), ‘Making compliance scalable in a container world.’ Available at: https://opensource.com/article/20/7/compliance-containers [Accessed 16 February 2021]. ⏎
2: Sec. 0 GPL-3.0 provides as follows: “To ‘convey’‘ a work means any kind of propagation that enables other parties to make or receive copies.” and “To ’propagate’ a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy.”⏎
3: Meeker, Heather (2012), ‘The Gift that Keeps on Giving – Distribution and Copyleft in Open Source Software Licenses’, JOLTS, 4(1), pp 29 – 40, [DOI: 10.5033/ifosslr.v4i1.66].⏎
4: Directive 2009/24/EC on the legal protection of computer programs (codified version). Available at: https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32009L0024 [Accessed 16 February 2021]. ⏎
5: See the ‘Opinion of Advocate General Saugmandsgaard Øe in the joined Cases C‑682/18 and C‑683/18 (Frank Peterson v Google LLC et al), ECLI:EU:C:2020:586. Available at: https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:62018CC0682 [Accessed 16 February 2021].⏎
6: BGH (German Federal Court of Justice), judgment of 2020-03-05 - I ZR 32/19 – Internet radio recorder. Available at: https://openjur.de/u/2202077.html [Accessed 16 February 2021].⏎
7: CJEU of 2015-05-13, C-516/13 – Dimensione Direct Sales and Labianca. Available at: https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:62013CJ0516&qid=1607613372933&from=EN [Accessed 16 February 2021]. ⏎
8: Please not that the “Right of communication to the public of works and right of making available to the public” in Art. 3 are independent rights from the “distribution right” in Art. 4 Directive 2001/29/EC. Available at: https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32001L0029 [Accessed 16 February 2021].⏎
9: See Hemel Armijn, ibid n. 1, p. 19. ⏎
10: As the CJEU, judgment of 14 June 2017 in case C-610/15 – Stichting Brein (The Pirate Bay) itself declares: “In order to determine whether a user is making a ‘communication to the public’ within the meaning of Article 3(1) of Directive 2001/29, it is necessary to take into account several complementary criteria, which are not autonomous and are interdependent. Consequently, those criteria must be applied both individually and in their interaction with one another, since they may, in different situations, be present to widely varying degrees.” Available at: http://curia.europa.eu/juris/liste.jsf?language=en&T,F&num=c-610-15 [Accessed 16 February 2021]. ⏎
11: For efforts of Red Hat to improve the situation see Peterson, S., ibid. ⏎
12: “However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.” ⏎
13: See for more details Jaeger, Till and Metzger, Aaxel, Open Source Software, 5th edition, 2020, 64 et seq; Meeker, Heather, Open Source for Business, A practical Guide to Open Source Software Licensing, 3rd edition 2020, 119 et seq; Working Paper on the legal implication of certain forms of Software Interactions (a.k.a linking), Available at: https://www.ifosslr.org/public/LinkingDocument.odt [Accessed 16 February 2021]. ⏎
14: The definition in section 1 GPL-3.0 reads as follows: ’The “System Libraries’ of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A ‘Major Component’, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.” ⏎
This paper was translated by Haksung Jang from the English version available at the OSPO Definition. The original document is licensed under CC-BY-SA-4.0.
Hello!
TODO Group is a group under the Linux Foundation that advocates Talk Openly, Develop Openly, aiming to build successful open source projects and programs through collaboration. TODO Group creates and publishes open source guides, tools, and more, making them available to anyone interested in open source.
For an organization such as a company to effectively manage and use open source, it is said that establishing an OSPOOpen Source Program Office is needed for activities such as developer education, ensuring compliance, engaging with and building community, releasing open source, and code review. This article carries over the article defining what an OSPO is and what role it plays, as written by TODO Group.

An OSPOOpen Source Program Office is designed to concentrate an organization’s capabilities centrally for the organization’s open source operations. This can include the use, distribution, selection, and inspection of open source and the establishment of related policies, as well as activities that facilitate developer education, ensuring compliance, and engaging with and building community in ways that benefit the organization.
There is no broad template for building an open source program that can be applied across all industries, but here we have classified the general functions of an OSPO into three categories.
Classifying them into these three categories brings to mind Fear, Love, and Money, respectively.
A company’s primary concern is legal compliance. Accordingly, the OSPO builds and manages the company’s open source license compliance process. Companies that distribute software generally have the most interest in this issue, and it is this legal risk mitigation that most often gets an OSPO started in the first place.
For legal risk management, the OSPO holds the following responsibilities.
The OSPO improves engineering functions by providing guides and policies for code management in an open source environment. Companies with many software engineers tend to focus their OSPO on engineering policy and practices.
The OSPO’s responsibilities in this area are as follows.
Some companies focus on the financial benefits related to open source. They use the OSPO to establish a strategy for whether to use commercial vendors or open source vendors. Meanwhile, some technology companies leverage their own OSPO (and open source projects) to drive customers toward purchasing their commercial products.
The OSPO’s responsibilities in this area are as follows.
In this way, each OSPO is structured to fit the company’s business, products, and goals.
TODO Group provides guides for companies to establish and operate an OSPO.
TODO Group has compiled and published case studies of how companies that make effective use of open source, such as Microsoft, Facebook, and Uber, run their OSPOs.
I close this article by introducing SK telecom’s OSPO: SK telecom OSPO
Thank you.
This paper was translated by Haksung Jang from the English version available at this white paper. The original author, Heather Meeker, has not reviewed this translation.
Hello.
This article is based on a white paper about the Elastic License published on March 11, 2021 by Heather Meeker, a U.S. attorney specializing in open source law. Most of it is a translation of the original article, and I have added my own opinions as blockquotes.
For reference, while Heather Meeker presented this white paper as her personal view, she also disclosed that it received some funding from Elastic. Perhaps for that reason, the original article takes a favorable stance toward the Elastic License.
(A bit of digging turned up that Heather Meeker wrote Elastic License 2.0 herself.)
In any case, as the times change and software distribution methods shift, commercial open source companies have had to think about which licensing model to adopt in order to pursue both development and business at once, and I think this article helps in understanding one aspect of the background behind the Elastic License. If you find any errors in this article, please feel free to contact me at any time. :-)
- My deep thanks to Sean and Robin of Kakao, and Kyoungae Kim of LG Electronics, for their help reviewing this article.
Recently, in February 2021, Elastic introduced a new license called Elastic License 2.0 for its software products. This licensing model was applied to major software products such as Elasticsearch and Kibana. Let’s look at the purpose of this change and what it means.
Elastic License 2.0 is a representative licensing best practice available to companies doing business under an Open Development Model. Elastic License 2.0 is not an open source license, but it aims to set the minimum restrictions necessary to maintain a fair balance between the freedom to use, share, and modify software and the prevention of behavior that harms the community.

To understand the trend toward new licenses like Elastic License 2.0, it helps to look at how the open source licensing movement grew.
The open source and Free Software movements began out of developers’ concerns about the privatization of software. The spark for these concerns was Unix, the most popular operating system of the time. AT&T Bell Labs, the developer of Unix, was barred by a 1956 consent decree from profiting from research projects that included Unix and the C programming language,1 and as a result it distributed Unix for many years under very permissive license terms. Academics, researchers, and developers began modifying, improving, and sharing Unix, and it soon became the leading operating system. However, when the consent decree was lifted in 1983, AT&T applied terms to Unix that no longer allowed the sharing of modifications. As a result, each vendor used its own modified version of the operating system, Unix splintered into many incompatible variants, and users could no longer collaborate.
As Unix became privatized, the Free Software movement arose, followed by the open source movement, both seeking to prevent infrastructure software from being closed off again in this way. This movement centered on Linux, the free software that replaced Unix, and it soon grew into a larger movement based on the philosophy that all software should be “free” (free as in freedom of speech, not free as in free beer). One element of this movement was the right to access source code and to make and share improvements and changes. These principles were embodied in the GNU General Public License (GPL), under which distributors of binaries must share the corresponding source code.
As time passed, buoyed by the internet boom of the early 2000s, open source licenses grew even more popular. Some licenses, such as the GPL, raised complex legal concerns, but they also laid the groundwork for companies to collaborate. Since 2000, open source, and the collaboration it made possible, has been adopted across every technology sector. Today, open source is a core technology for e-commerce, and companies continue to collaborate on software infrastructure.
Licenses such as the GPL require that changes be shared. They impose a condition of sharing source code for binary distribution. Making and using a “private copy,” on the other hand, does not require sharing changes. This condition was effective at compelling sharing at the time, because most software was deployed on-premise. However, starting in the early 2000s, software began moving to the public cloud, and it was no longer necessary to distribute software at all. Customers could use software without ever obtaining a local copy.
As the cloud services business grew, this paradigm shift created tension between the expectations of the open source community and cloud service providers such as AWS (Amazon Web Services). Cloud service providers were free of any legal obligation to share their improvements. Because Google was well known for relying on Linux to power its search service, this was also called the “Google Loophole.” In response, the Free Software community created the Affero GPL (AGPL), a partially modified version of the GPL. AGPL 3.0 is nearly identical to GPL 3.0, but it includes the following Remote Network Interaction clause.
[I]f you modify the Program, your modified version must prominently offer
all users interacting with it remotely through a computer network …
an opportunity to receive the Corresponding Source of your version by
providing access to the Corresponding Source from a network server at no
charge, through some standard or customary means of facilitating copying
of software….
This new license was intended to compel cloud service providers to share their source code improvements, just as the GPL had done for Linux distributions.
The AGPL was controversial from its very first release. In 2007, as the drafting of GPL 3.0 was nearing completion, some of its authors wanted to change the GPL into a network copyleft model. However, the community decided to leave the “loophole” in GPL 3.0 as it was, and a few months later offered the AGPL as an alternative. Even so, the AGPL was not widely adopted. MongoDB, a highly popular distributed database product, is the AGPL’s one and only “killer app.” Companies initially found the AGPL difficult to understand and accept, but because most users neither modified the software nor offered it as a service, they were able to reasonably decide to use software under the AGPL.
The Remote Network Interaction clause of AGPL 3.0 only requires you to make the source code of your changes available to remote users over a computer network if you have modified the program. In other words, if you do not modify it, no obligation to disclose source code arises.
MongoDB used the AGPL under a “dual licensing” business model. It gave licensees a choice between the AGPL and a commercial software license. Users who did not want to comply with the AGPL’s requirements, or did not even want to be involved in the legal review needed to comply with them, chose the commercial license. This dual licensing business model was originally developed around a choice between the GPL and a commercial license, but over time the AGPL, with its broader copyleft scope, came to be used in place of the GPL. This licensing model was quite successful for MongoDB. Because the AGPL was the strongest copyleft license, it was useful to MongoDB in driving commercial negotiations. At the same time, the creators of the AGPL criticized the way it was used as a business tool by MongoDB, calling it a “toxic shakedown.” In any case, even the AGPL’s source-sharing condition, powerful as it was considered to be, proved insufficient to stop cloud providers from making large-scale commercial use of open source software while giving nothing back to developers or the community.
Just as cloud adoption had “broken” the GPL model, the AGPL dual licensing model also began to come under pressure as cloud computing advanced through the 2010s. This time, the problem was different. The scope of the GPL or AGPL extends only to a single program executable. This “feature” was intentionally designed into the GPL, based on the theory that a copyright license can only specify usage terms for a single work. In other words, the GPL imposes a source-sharing requirement for a derivative work, but not for a collective work. The legal boundary between the two is fairly unclear, but as the GPL grew popular, it became common practice to define a single program as a single executable process. The Free Software Foundation has long asserted this principle in its GPL FAQ.
However, two things happened as cloud services advanced. First, software engineering became more focused on cloud implementation. Whereas cloud providers had once needed to improve or modify software to run it in a cloud environment, as software engineering advanced, cloud providers were able to use existing open source software in a “plug and play” fashion. This allowed cloud providers to shift the locus of innovation away from the primary executable. They developed additional software to manage, monitor, and deploy their software, and this innovation is what let them grow their cloud services. The AGPL did nothing to compel cloud providers to share these kinds of improvements.
In this way, commercial open source companies came to look like a shop the large cloud providers could raid for free. The problem was especially severe for “platform software,” or middleware (software that sits between the top-level applications and the operating system in the computing stack). Software in this category is essential to modern computing and extremely useful for cloud implementations.
This gave rise to criticism in the business world of how cloud providers used open source software. In 2018, Salil Deshpande of Bain Capital said, “It is clearly not illegal. But we think it is wrong, and does not do right by the open-source community.” Another expert said, “AWS is exploiting open source’s Achilles heel: taking someone else’s creation for free and building a business by renting out access to it.” The problem is that none of the major open source licenses prevent software from being used this way.
When the major open source licenses were drafted, there was no such thing as an AWS-style “program as a service,” so their terms could not have accounted for it.
Commercial open source companies developed open source programs and ran their business on a dual licensing model (GPL or commercial), while cloud providers simply took those open source programs, offered them as cloud services, and generated no profit for the companies in return. It’s easy to imagine this had a negative effect on both the business and development sides.
A representative example would be cloud providers offering MongoDB as Amazon DocumentDB or Azure Cosmos DB to win over customers.
Commercial open source companies and their investors were troubled by these limitations of the open source model. No license, whether GPL, AGPL, or otherwise, could use copyright law to compel cloud providers to share their changes. In addition, cloud providers with a large customer base, such as AWS, Azure, or Google Cloud, maintained “sticky” relationships with customers by making it easy to add software with the click of a button. Some open source vendors offered their own cloud services, but found it too difficult to compete with large cloud providers using their software for free. Even when an open source vendor’s service was superior, customers turned away because using a new service, unlike simply “checking a box” to add a software product within an existing cloud account, carried a transaction cost.
In 2018, the industry found a breakthrough. As AWS continued to gain popularity by hosting open source platform software, open source vendors began to take action. They changed their licenses.
Open source vendors responded to the strip-mining problem through two different paths.
Both of these categories were previously undefined. Both were intended to support a dual licensing model, as with MySQL and MongoDB.
The ultra-strong copyleft approach was attempted by MongoDB, which created the SSPL (Server Side Public License) in 2018.
1. Offering the Program as a Service.
If you make the functionality of the Program or a modified version
available to third parties as a service, you must make the Service
Source Code available via network download to everyone at no charge,
under the terms of this License. Making the functionality of the
Program or modified version available to third parties as a service
includes, without limitation, enabling third parties to interact
with the functionality of the Program or modified version remotely
through a computer network, offering a service the value of which
entirely or primarily derives from the value of the Program or
modified version, or offering a service that accomplishes for users
the primary purpose of the Program or modified version.
"Service Source Code" means the Corresponding Source for the Program
or the modified version, and the Corresponding Source for all programs
that you use to make the Program or modified version available as a
service, including, without limitation, management software, user
interfaces, application program interfaces, automation software,
monitoring software, backup software, storage software and hosting
software, all such that a user could run an instance of the service
using the Service Source Code you make available. [emphasis added].
This license was written to create an open source solution to the strip-mining problem. Its source-sharing requirement is far broader than that of the AGPL. The scope of this requirement was designed to work like the GPL’s requirement even for distributed software. MongoDB applied a dual licensing model under which its software could be used under either the SSPL or a commercial license.
MongoDB submitted the SSPL to the OSI (Open Source Initiative) for approval. After months of debate it was not approved, but MongoDB continues to use the SSPL as the open source option in its dual licensing model. The discussion of why this license does not fit the Open Source Definition was complicated, and meeting that definition was not the only criterion at issue. In short, it was not clear whether a license with such a broad source-sharing requirement would “ensure software freedom.”
Others followed a different path. Some companies adopted the Commons Clause, led by Salil Deshpande, while others created their own licenses, such as Redis, Confluent, and CockroachDB, just as Elastic created Elastic License 1.0. Unlike the SSPL, these licenses were not intended to satisfy the Open Source Definition. Instead, they carry restrictions specifically targeting strip-mining.
Why did these two paths diverge? It has to do with Freedom Zero, “the freedom to run the program as you wish, for any purpose."2
A key feature of open source or Free Software licenses is that they carry no licensing constraints or restrictions.3 Compare this to a typical commercial software license. An End User License Agreement, the kind you click to accept for personal use, only permits you to use the software; you cannot modify or distribute it. An enterprise license sets limits on the number of users, servers, or physical locations where the software can be used, and requires the company to monitor that usage. Open source licenses have no such restrictions. Therefore, even if the source code is provided for free, a license that carries a restriction such as no commercial use is, by definition, not open source.
In other words, any licensing restriction at all takes a license outside the open source category.
Nearly all of the licenses released as part of the wave of license changes since 2018 carry similar restrictions. Each has its own specific terms, but they all focus on letting users use the software for free while prohibiting its use to offer a competing hosted service.
In early 2021, Elasticsearch blazed a path that follows both of these tracks at once. It made its software suite available under two free options: the SSPL and a new Elastic License 2.0 (ELv2).
The new Elastic License 2.0 is short (just one page), written in plain language, and grants nearly all of the freedoms of an open source license. Recipients of the software are free to use, modify, and redistribute it. Even if you have never read a software license before, this one is worth reading.
It has two main restrictions.
You may not provide the software to third parties as a hosted or
managed service, where the service provides users with access to
any substantial set of the features or functionality of the software.
You may not move, change, disable, or circumvent the license key
functionality in the software, and you may not remove or obscure
any functionality in the software that is protected by the license key.
The first restriction is focused on addressing the strip-mining problem. As a result, using the software in violation of this restriction infringes the rights granted for the software.
The second restriction is meant to prohibit hacking the software’s license key. This kind of restriction has long been common in software licenses, but it has only just begun to appear in source-available licenses. This clause allows developers to have a paid service interact with software under ELv2, or to protect part of a software component for a paid feature.
The license’s other provisions are very straightforward and will be familiar to anyone who has read an open source license.
Elasticsearch took the unusual path of letting users choose between the SSPL and the Elastic License. Many companies today use an “open core” model, and in fact Elasticsearch itself used this model before. The distinction between the two can be described as subtle. An open core model offers the core software under an open source license (usually a permissive one, such as Apache 2.0). It then offers additional functionality, usually features useful for enterprise-scale deployment, under a restricted license or only as a service. Elasticsearch, however, stuck with a dual licensing model in which the same software can be used under two different licenses. This dual licensing model was pioneered by MySQL, and it typically uses a copyleft license, such as the GPL, AGPL, or SSPL, as the free licensing option. In recent years, though, this model has fallen out of favor because of the conflict between open source licenses and cloud services.
Elastic’s choice was even more unusual in that it offered two free licensing options, the SSPL and Elastic License 2.0. Dual licensing typically offers only one free option. Through this unusual approach, Elasticsearch emphasized the flexibility to let nearly every user use the software for free.
Elastic License 2.0 appears to reflect a resolve to prevent just one thing: cloud service providers offering Elasticsearch as their own cloud service.
In the end, AWS forked Elasticsearch to keep offering its Elasticsearch service, naming it Open Distro for Elasticsearch, applying the Apache License 2.0, and setting out to grow its own community.
Who, then, is actually contributing to the sustainability and advancement of open source?
Elasticsearch moved to a new licensing model in order to remain as open as possible while maintaining a business model that is fair and sustainable for both users and developers. In doing so, it reflected the goals and aspirations of other participants in the source-available movement when drafting the license.
As summarized in the FAQ on the license change, Elastic’s license change is not expected to affect the number of customers or community users. Most users build applications on top of Elastic’s software, which is not a business of “providing [the software] to third parties as a hosted or managed service.”
In addition, by devoting resources to drafting Elastic License 2.0, Elastic pursued an advance in the craft of license drafting itself. In a sense, source-available licensing is as old as software itself. In fact, binary-only licensing was a product of PC/Mac platform standardization in the 1980s. Before that, nearly all software was licensed in source code form. Over time, however, the form and method of license distribution changed considerably.
Elastic License 2.0 is the culmination of this trend. In form, it adopts the simple, intuitive drafting style and template most popular among open source licenses. It also, through its license key preservation clause, makes it easy for vendors to license software with both free and paid features.
Much like the many incompatible proprietary versions that split off from Unix decades ago, proprietary licenses are a patchwork stitched together from all manner of separate terms and conditions. Even a simple end user license for an ordinary consumer software product is typically so long and obscure that most users cannot understand it. Many say that nobody reads them at all. Yet most of this complexity is unnecessary. Open source licenses, particularly permissive ones, have taken this lesson to heart. A simple set of rules should be enough, and the easier a license is to understand, the more likely users are to respect it.
Not only is Elastic License 2.0 short, simple, and easy to understand, but people can also use it as a template. Since the debate over preventing strip-mining began, demand has grown for licenses that are frictionless, carry reasonable restrictions, and are simple and understandable. However, most small software companies lack the resources to draft their own license. It is no surprise that many software startups are looking to licenses like Elastic License 2.0 and the Confluent Community License as models they can adopt.
This space has been popularized by Fair Code, which has established a standard for it. Fair Code states the following.
Fair-code is not a software license.
It describes a software model where software:
* is generally free to use and can be distributed by anybody
* has its source code openly available
* can be extended by anybody in public and private communities
* is commercially restricted by its authors
This initiative is still in its early stages, but it clearly shows that the industry is beginning to recognize the need for a paradigm that is fair to both users and developers, and that it is enabling commercial open source companies to strike that balance in a more flexible way than the open source model alone. One expert has even called this recent evolution in licensing the “post-open-source era.” In practice, however, these source-available licenses are typically used alongside open source licenses as business and licensing models continue to evolve. The two models are therefore not strict substitutes but complements.
There is also another standardized licensing option. In 2020, a group of attorneys launched the PolyForm Project to draft a collection of source-available license templates. These licenses were peer reviewed by attorneys experienced in both open source and proprietary licensing. Much like Creative Commons for open content licensing, it offers a menu of options, including non-commercial, evaluation-only, and anti-competition licenses. Like Elastic License 2.0, all of them provide free access to source code and grant the necessary patent license. PolyForm Perimeter and PolyForm Shield resemble their forebear, the Confluent Community License, and Elastic License 2.0 has advanced the options available along this same trend.
If you have questions or would like to learn more, refer to the following resources.
“The rise of open source IPOs” https://coss.media/rise-of-the-open-source-ipo/. This article tracks some of the spectacular business successes of open source companies.
“The After Open Source Era Has Started” https://monetize.substack.com/p/open-source-eras . This article discusses the sea change represented by companies moving to source available licenses.
US House of Representatives Committee on the Judiciary’s report on investigation into competition in digital markets, spearheaded by the Subcommittee on Antitrust, Commercial and Administrative Law. https://www.documentcloud.org/documents/7222836-Investigation-of-Competition-in-Digital-Markets.html. Note the mention of Elasticsearch on page 326.
1: “Modification of Final Judgment,” August 24, 1982, filed in case 82-0192, United States of America v. Western Electric Company, Incorporated, and American Telephone and Telegraph Company, U.S. District Court for the District of Columbia web.archive.org/web/20060827191354/members.cox.⏎
2: The Free Software Definition is similar to the Open Source Definition, but shorter and clearer.⏎
3: Open source licenses can contain conditions, such as notices or source code sharing. But these are not limitations that tell you what you cannot do with software, they only require that if you elect to do certain things, you also must do others.⏎
Hello.
Matija Šuklje, a well-known attorney in the open source field, recently introduced why copyright statements are needed in source code and how to write them correctly.
The post below is based on the original article above. Most of it is translated directly from the original so that the author’s intent is faithfully conveyed.
I started out thinking of this as a simple copyright notice guide for developers, but since there was no unified guide for how to display copyright information, writing the guide wasn’t easy. In the end, I decided to write a new one.
I tried to strike a balance while keeping the following points in mind.
If you are extremely short on time, check the minimal guide in TL;DR. If you have about 2 minutes, read the actual HowTo a bit lower below.
Of course, if you have about 20 minutes, the best option is to read it from start to finish.
Add a copyright and license statement in the following format to every source code file you write.
SPDX-FileCopyrightText: © {$year_of_file_creation} {$name_of_copyright_holder} <{$contact}>
SPDX-License-Identifier: {$SPDX_license_name}
For example, if I wrote a source code file today and released it under the [BSD-3-Clause license][bsd-3-clause], I would add the following content in the header comment at the top of the file.
SPDX-FileCopyrightText: © 2020 Matija Šuklje <matija@suklje.name>
SPDX-License-Identifier: BSD-3-Clause
For reference, following the [REUSE.software][reuse] project’s guide lets you verify that every file has been marked appropriately.
Copyright is (following the [Berne Convention][berne]) automatically generated when an author creates a work. Every work is protected by copyright, and the copyright holder is granted exclusive rights over the work. So if you want other users to be able to use your work (source code, text, images, other media, etc.), you must grant them a license. The dictionary definition of a license is “permission granted by a competent authority to exercise a certain right,” and exercising that right without such permission constitutes an unlawful act such as copyright infringement.
Likewise, if you want to copy, modify, or otherwise work with someone else’s source code, you must be granted the necessary permission. In other words, you must obtain a license. And if that license imposes certain obligations as a condition for granting permission to exercise the right, you must also comply with those obligations in order to exercise the right.
In any case, you must comply with the basic requirements of copyright law, and at minimum this requires the following two things.
Attribution: Identify the copyright holder and/or author. (Especially in jurisdictions that recognize moral rights)
License: Since a license is the only way to grant someone other than the copyright holder permission to use the code, it’s good practice to state the license and provide the full license text. This applies both to the Outbound license you grant to others and the Inbound license you receive from others (when using third-party works such as copied code or libraries).
Inbound vs. Outbound Licenses
The license you grant to your users (downstream) is called the Outbound license, because it governs the rights of code flowing out (out) from you. Conversely, from the perspective of users of that same code, it is considered the Inbound license, because it governs the rights of code flowing in (in) to them. Simply put, a license that describes incoming rights is called an Inbound license, and a license that describes outgoing rights is called an Outbound license. The good news is that attribution is a right of the author, not an obligation. Also, users are only obligated to preserve attribution if the author has exercised their right of attribution. In other words, if the author did not provide attribution, users don’t need to go out of their way to add it themselves.
Before the United States joined the Berne Convention in 1989, U.S. copyright law required an explicit copyright notice in order for a work to be protected. However, under the Berne Convention, copyright is generated automatically even without a copyright statement. Even so, copyright statements are still useful.
While a copyright statement is not legally required, in practice it is extremely useful as evidence of who holds the copyright in a given work. It is also of great help for compliance purposes and for tracking code.
A copyright statement is practically necessary for the following reasons.
Therefore, it makes sense to include the author’s name and contact information in a work.
A good copyright statement should consist of the following information.
Year: the year the source code file was first written. Once written, do not modify it further.
Copyright holder name: usually the author, but it may be the author’s employer. It could also be a different legal entity or individual under a CLA.
a valid contact: information for contacting the copyright holder
For example, if you wrote a source code file today, you would add a copyright statement like the following in the header at the top of the file.
© 2020 Matija Šuklje <matija@suklje.name>
It’s also very important to state the license under which the code is released. Using an SPDX ID lets you clearly identify the license of the code. If the license notice isn’t clear, it can cause confusion for the users who see it.
The REUSE.software project provides a best practice for writing copyright statements and license notices using SPDX tags.
Copyright statement tag: SPDX-FileCopyrightText
License notice tag: SPDX-License-Identifier
The example below is a copyright statement and license notice that takes all of the above into account and complies with both the SPDX and REUSE.software requirements.
SPDX-FileCopyrightText: © 2020 Matija Šuklje <matija@suklje.name>
SPDX-License-Identifier: BSD-3-Clause
Now check that every source code file you have written includes this comment!
Some people argue that omitting the year and keeping things simple would actually make copyright statements easier to maintain. In fact, this is also the policy of Microsoft and GitHub.
I agree that omitting the year greatly simplifies the task, but keeping it helps clarify an otherwise ambiguous timeline in the codebase. It can also be useful for determining when an invention was first disclosed to the public, which can be particularly useful for patent defense.
Taking these considerations into account, Liferay’s new policy is to record the year the file was created and not change the year afterward.
You’ve probably seen copyright statements like this:
Copyright (C) 1992, 1995, 2000, 2001, 2003 CompanyX Inc.
This practice of continually adding years is widespread, based on the idea that it extends the period of copyright protection. Unfortunately, though, this practice is useless and can even be harmful.
Moreover, adding a year every time a new change or contribution is received is legally questionable when you think it through. The issue is that not every contribution is original or substantial enough to give rise to a copyright claim. So, to avoid this problem, you would first need to determine whether each contribution is original enough to be protected by copyright under the law, and only then add a year to the copyright statement accordingly.
On the other hand, copyright lasts for at least 50 years (usually 70 years) after the death of the author (or, if the copyright holder is a legal entity, after publication). So the risk of losing the ability to claim copyright due to the expiration of the protection period, simply because you didn’t keep adding years to the copyright statement, is very low.
Furthermore, a single source code file is generally just one of many files that make up a piece of software. As the software grows, new files will be added, and when a new creation year is added to each new file, the copyright statement for the software as a whole, as a work, already ends up including the latest year.
Don’t pollute your Git/VCS history
If you add a new year statement to every file every year, this unnecessarily lengthens the Git/VCS history, consumes repository space, and can get in the way when you’re looking for genuinely important information.
Expressing the year as a range (e.g., 1999-2020) is subject to all the same considerations mentioned in the question above, because it also needs to be updated every year.
In some cases, a range is specified in a form like ‘{$year}-present’. This too is largely subject to the points mentioned above, and it can add further confusion. What ‘present’ means is abstract. What does ‘present’ refer to?
The time the file was last modified?
The time the package was released?
The time it was first downloaded?
The time it was last run?
Or right now, this very moment?
As you can see, ‘present’ isn’t a helpful marker at all.
Not always. Git (and other VCSs) is excellent at managing metadata, but you should be cautious about relying on it entirely.
First, Git has an ‘Author’ field separate from the ‘Committer’ field. Not only does each contributor put different kinds of values into the ‘Author’ field, but even if you assume the person entered in the ‘Author’ field is actually the author, that author may not be the copyright holder.
More importantly, when a file is moved out of a repository, its metadata disappears. If you only distribute compressed source code, or copy each file into a new codebase by forking or rebasing a repository, the tracking data up to that point is no longer available.
These issues are resolved by including copyright and license information directly in every file. The REUSE.software best practice handles this very well.
Someone might argue that the English word “Copyright” is used more often and that many people are already familiar with it, but if you actually look at copyright law, you’ll find that using “©” (the Copyright Sign) is not the only way to make a copyright statement.
As one example from the EU, Article 175(1) of Slovenia’s ZASP states that an exclusive copyright holder may mark their work with “(c)” or “©”. Meanwhile, in the United States, 17 U.S. Code § 401(b)(1) specifies the way to mark a work as follows: “the symbol © (the letter C in a circle), or the word “Copyright”, or the abbreviation “Copr.””
Also, using © is reasonable because it is the “common global denominator.”
Whether or not people like the © symbol may be a matter of taste, but from a practical standpoint it isn’t actually all that important. As explained above, since copyright is generated automatically, the symbol you use doesn’t change the legal risk.
Contact information isn’t required by copyright law, but it’s very useful for practical reasons.
A user may want to contact the code’s author or copyright holder for legal or technical questions. They may want to ask how the code works or request a modification. They might discover a license issue and want to help resolve it, or need to request a separate license. Contact information is a great help in all of these cases.
Since email is still a commonly used contact method today, providing the copyright holder’s email address is the best option.
In cases where copyright is highly distributed or held by a legal entity, it may make more sense to provide the URL of the project’s or the entity’s homepage.
If a project lists copyright holders in a file such as AUTHORS or CONTRIBUTORS, providing a link to that file is also a good option.
Public Domain generally refers to a work whose copyright term has expired, but it’s a tricky concept that requires care.
In some jurisdictions (e.g., the United States, the United Kingdom), a copyright holder can waive their copyright and donate the work to the public domain, but in most jurisdictions (e.g., most EU member states) this isn’t possible. This means that, depending on the jurisdiction, even if an author states that they are dedicating their work to the public domain, that statement may fail to meet the legal requirements to actually be effective, and the copyright in the work may still remain solely with the copyright holder.
For this reason, open source compliance professionals who take copyright and licensing seriously are very wary of a “this is public domain” label.
Copyright holders can mitigate this problem in the following two ways.
If you want to waive your copyright in your own work and dedicate it, use a very permissive license such as CC0-1.0 instead of the phrase “public domain.”
Leave your name and contact information in the “SPDX-FileCopyrightText:” field. This lets a user who is curious about the copyright holder’s intent, or who runs into any ambiguity, reach out to resolve the issue.
Modern minifiers offer an option to preserve copyright and license information even while removing comments. Use this option when minifying code to keep the copyright and license information intact.
Even if source code is converted into another language, or compiled, or transformed into another form, the copyright holder retains exclusive rights over all of it. So even when using minified code, you still need a valid license.
You’ve probably seen the phrase “All rights reserved” in copyright statements before. Copyright law doesn’t require this expression. I suspect it’s simply copied from something people saw used on a music CD or in a book. But in open source, this expression causes confusion.
“All rights reserved” clearly contradicts an open source license. An open source license grants everyone the right to use, study, share, and improve the code. “All rights reserved,” on the other hand, states that all of these rights are granted solely to the copyright holder.
“All rights reserved” only brings problems like this, without offering any benefit, so it should not be used in open source.
Hello.
In February 2020, the Linux Foundation published an article about security risks in the Open Source Software Supply Chain, and this post summarizes that content.
Modern software development has become a far more complex process than it was in past decades. It is rare for an organization to develop all of its software in-house. Instead, most organizations make use of Open Source Software (OSS). They build products by incorporating a variety of OSS and developing only the connecting pieces in-house.
The “Software Supply Chain” is already highly complex. Whereas software used to be delivered to customers on physical media such as CDs, today’s software (both OSS and proprietary software alike) is stored in “repositories” and distributed remotely on demand through a Project Dependency Manager (PDM) or Package Manager.
![]()
Most of the recent attention paid to security in the software supply chain has focused on the Developer, the first link in the chain, or the End User, the last link, but vulnerabilities exist at every level. Consider the following incidents.
In 2015, a security firm warned Apple that 39 applications distributed through the App Store were infecting iPhones and iPads. The malicious applications downloaded to devices connected to a remote command-and-control server and uploaded sensitive user information. Further investigation revealed that the malicious code had been inserted into the applications through a “repackaged” version of Xcode, Apple’s official development platform.
These apps were immediately removed, and Apple took additional measures to ensure that only legitimate developers could access the official version of Xcode, but the incident highlighted the risk that a software security vulnerability within the software supply chain can affect multiple applications.
Apple scrambles after 40 malicious “XcodeGhost” apps haunt App Store, Dan Goodin, ArsTechnica (Sep. 25, 2015), https://arstechnica.com/information-technology/2015/09/apple-scrambles-after-40-malicious-xcodeghost-apps-haunt-app-store/
In 2016, following a naming-rights dispute over an unrelated OSS package, a well-known developer removed all of his OSS packages from npm, the software registry used to distribute Node.js code. The developer removed a total of 273 packages from npm, but the problem showed up in just one of them: “left-pad.”
“left-pad,” an incredibly simple package, right-aligns text to produce more readable text output. However, because a large number of important downstream packages depended on “left-pad,” its sudden disappearance broke countless downstream packages. Another developer replaced the missing package with a functionally equivalent one, but downstream developers were still left with the task of updating their code to reference the new package.
This incident starkly highlighted the risk developers face when depending on upstream packages over which they have little control, and it exposed a broader “dependency” problem: because the package was embedded as an upstream dependency, even developers who had no intention of depending on “left-pad” were affected.
The “left-pad” incident occurred three years ago, but problems like this remain.
Rage-quit: Coder unpublished 17 lines of JavaScript and “broke the Internet”, Sean Gallagher, ArsTechnica (March 24, 2016), https://arstechnica.com/information-technology/2016/03/rage-quit-coder-unpublished-17-lines-of-javascript-and-broke-the-internet/ .
In 2017, attackers created malicious libraries whose names were made to look “very similar” to those of built-in Python libraries. Unsuspecting developers downloaded these malicious libraries. The malicious packages contained the same code as the originals, but their installation scripts had been modified to include malicious code.
Goodin, Dan. 2017-09-16. “Devs unknowingly use “malicious” modules snuck into official Python repository: Code packages available in PyPI contained modified installation scripts.” Ars Technica. https://arstechnica.com/information-technology/2017/09/devs-unknowingly-use-malicious-modules-put-into-official-python-repository/
In 2018, a cryptocurrency-stealing package called “Colourama” was discovered in the Python Software Repository. Its name was deliberately made to resemble “Colorama,” a legitimate package that ranked among the 20 most-downloaded software packages in the Python repository, in order to cause confusion. Although the malicious package had been downloaded only 151 times by the time it was discovered, removing the infection from affected devices required considerable effort, which highlighted the security vulnerability of software repositories.
Two new supply-chain attacks come to light in less than a week, Dan Goodin, ArsTechnica (October, 23, 2018), https://arstechnica.com/information-technology/2018/10/two-new-supply-chain-attacks-come-to-light-in-less-than-a-week/.
In 2018, one of the most widely used JavaScript libraries had cryptocurrency-stealing code inserted into it as a backdoor. Notably, this insertion was far more sophisticated than similar incidents (by the time the backdoor was discovered, the library had recorded 2 million downloads).
First, the malicious actors behind the backdoor gained legitimate publishing rights to the event-stream package by offering to help the developer. Once they had obtained those rights, they used them to add a benign package, flatmap-stream, to the npm registry and added it as a dependency of event-stream itself. About a month later, the malicious actors added malicious code to flatmap-stream that targeted popular cryptocurrency wallet software (and was thereby added to event-stream as well).
This staged attack, together with the effort the attackers invested in gaining publishing rights to the event-stream package, shows not only that there are weaknesses in how new code and new developers are vetted, but also that malicious actors are willing to make that kind of effort. This suggests that similar attacks are likely to continue, and to increase in both frequency and sophistication.
Widely used open source software contained bitcoin-stealing backdoor, Dan Goodin, ArsTechnica (November 26, 2018), https://arstechnica.com/information-technology/2018/11/hacker-backdoors-widely-used-open-source-software-to-steal-bitcoin/
In July 2019, a developer updating a codebase noticed that one of its dependencies was missing a changelog.md file. The affected package, strong_password, had been updated from 0.0.6 to 0.0.7 with no explanation of the changes, and with a discrepancy between the code hosted on GitHub and the code hosted in the Ruby repository. Through further investigation, the developer discovered that the package had been updated to reach out to a remote URL and pull in additional code when it ran in a production environment. Once that happened, the new code created an opportunity for remote code execution within the infected environment.
The developer notified the package’s original maintainer, who discovered that his Ruby repository account had been compromised. The malicious actor had taken over the maintainer’s account, changed the package’s ownership, and then published the backdoored code. Although it could not be confirmed, the original maintainer believed that the absence of two-factor or multi-factor authentication (2FA or MFA) was what allowed the malicious actor to access his developer account. Because a dependency such as strong_password is deployed in a wide variety of environments and is tied to a well-known developer with an established reputation for trustworthiness, taking over that developer’s account is highly valuable. Attacks like this will only increase.
strong_password v0.0.7 rubygem hijacked, Tute Costa (July 3, 2019), https://withatwist.dev/strong-password-rubygem-hijacked.html
Beginning in April 2018 and discovered in August 2019, an unknown malicious actor used a backdoor in the popular Webmin administration tool. The change was relatively small but could have significant impact. A malicious actor using the backdoor could send commands to an infected server through a specially crafted URL, allowing commands to be executed with root privileges.
According to the Webmin developers, the server containing the Webmin source code was compromised in April 2018 and malicious code was inserted into it. At the time, the attacker altered the relevant server logs to make it appear that the files had not been updated for some time, hiding the change from common detection mechanisms such as code comparison tools. The altered code went undetected, and additional malicious activity continued, until August 17, 2019, when it was discovered externally that the backdoor had been disclosed as part of a zero-day attack.
The Webmin maintainer removed the infection and took additional steps, but the incident became yet another example showing the vulnerability of such software and its continuing appeal to malicious actors.
The year-long rash of supply chain attacks against open source is getting worse, Dan Goodin, Ars Technica (August 21, 2019) https://arstechnica.com/information-technology/2019/08/the-year-long-rash-of-supply-chain-attacks-against-open-source-is-gettingworse/; Webmin page explaining exploit, Webmin, http://www.webmin.com/exploit.html.
In August 2019, an analysis by a developer investigating Ruby libraries uncovered 11 backdoored packages. In each case, the backdoor allowed malicious actors holding preselected credentials to remotely execute code on infected servers.
The infected packages also enabled cryptocurrency mining. It is not clear how each library became infected, but for at least one package, the code could be modified because the developer’s account had been compromised. That account had been using a previously cracked password and was not protected by 2FA or MFA.
These incidents reveal weaknesses inherent in the current policies, processes, and procedures used by package managers and repositories. Making matters worse, because these elements of the supply chain are indispensable to modern software development, organizations are required to use them in nearly every case, and are therefore exposed to a high level of risk they cannot control.
Finally, there is one more element that stands apart from the software supply chain but is nonetheless indispensable: the “Vulnerability Database.”
Given the distributed and overwhelmingly complex nature of modern software development, identifying, analyzing, remediating, and tracking vulnerabilities found in deployed software is critically important. However, the National Vulnerability Database (NVD), provided by the CVE (Common Vulnerabilities and Exposures) program and the most heavily relied-upon vulnerability tracking database in the world, continues to struggle under the growth, speed, and complexity of modern software development. These difficulties directly affect the developers and companies that depend on the CVE and NVD programs, and affect the security and stability of the software supply chain as a whole. This section examines the security and stability issues currently affecting the software supply chain and introduces areas and ways in which things can be changed to improve it overall.
In the diagram introduced earlier, the developer is shown as the first link in the software supply chain. That is true in a sense, but developers are actually present everywhere, at every stage. Developers choose the programming language, the repository, and the PDM. They choose the libraries, packages, and OSS that make up the finished product a company’s customers will purchase. In other words, developers are the single most indispensable member of the software supply chain.
However, many developers do not follow security best practices when developing software. There are several reasons for this. One is that modern software development is an enormously complex process. This means that a “best practice” strategy for one person may turn out to be a critical weakness for another. Another reason is that security is often seen as something that gets in the way of the developer and user experience. As a result, many developers avoid or minimize the use of proper security practices.
Ignoring or being reluctant to adopt security practices in this way leads to a range of consequences, many of which were highlighted in the supply chain incidents described above. Many of these incidents could have been avoided if developers had used the following security practices.
Many developers fail to observe these practices. This may be due to a lack of the necessary resources, expertise, or support. What is clear, however, is that failing to follow these best practices carries serious consequences not only for developers but also for the end users of the software.
In the past, much software development relied on code licensed from partners or vendors, but today most development incorporates large volumes of OSS retrieved freely and without restriction from the internet. Many developers depend on software repositories, known as “repositories,” to build their software.
At its core, a software repository is a server that holds a set of software packages. These packages range from small utility libraries to full command line tools and development frameworks. Linux systems typically use an operating system repository to manage applications and their dependencies for a given Linux distribution. The developers of that distribution manage all packages within the repository’s collection, keeping packages current based on upstream software package releases and, when necessary, fixing reported security and other bugs in those packages.
Beginning with Perl and continuing as interpreted programming languages grew, it became advantageous to provide users with an expanded repository of “helper” libraries. Because of the size of these repositories, they were generally excluded from the main packaging of individual Linux distributions. As these language-specific repositories grew, developers working in that language came to rely on the language repository’s tooling to install required dependencies, not only during development but also whenever they needed to run the development software on a non-development system.
Today, a significant portion of software development depends on OSS, and because much of the most widely depended-upon OSS in the world is written in languages that rely on a language repository for their libraries, developers must pull portions of their software from these repositories. However, for a variety of historical and economic reasons, these language repositories lack even basic security or quality controls. For example:
Some language repositories have taken steps to address these concerns, but none has developed a mechanism that solves every problem. Moreover, some of the language repositories that have attempted to address these concerns have “commercialized” the repository itself, offering these capabilities only to customers who pay for a “premium” service. As a result, the security and quality controls that should be provided as a baseline remain out of reach for many everyday consumers.
Managing large-scale software efficiently today requires tools that are both simple and powerful. Many such tools exist, but the most widely adopted of them is the “package manager.” A package manager automates the process of installing, upgrading, configuring, and removing files such as software packages and libraries on a given system. In particular, package managers known as “project/application dependency managers” (PDM) are frequently used.
By using a PDM, users can collapse the many complex steps once required to find, install, and configure software into a single step. A PDM connects to a language repository, as described above, to search for and configure the software a user specifies, including any software it indirectly depends on. By simplifying software discovery and management in this way, PDMs have greatly reduced the level of expertise and resources required for modern software development.
However, a PDM is nothing more than a software discovery tool. It does not check the software it retrieves for the following, and it has no actionable way to fix them.
Vaidya et al, “Security Issues in Language-based Software Ecosystems, March 6, 2019, https://arxiv.org/abs/1903.02613
Instead, as discussed above, these practices are generally expected to be carried out elsewhere in the software supply chain, but that is generally not the case. As a result, the efforts of PDM users and PDM maintainers to ensure some level of security and quality are undermined within the retrieved software itself. This is a problem in particular because, as can be seen from the increasing frequency of security incidents involving PDMs, the weaknesses inherent in current PDM procedures have become a popular vector for malicious actors.
As discussed above, modern software is composed of many software packages assembled together. These “building block” packages may be proprietary code, licensed code, or OSS, and a product may be composed of anywhere from dozens to thousands of these blocks. This provides significant benefits, but it also introduces risk. Today, developers and companies must manage not only the bugs and vulnerabilities in their own code, but also those in each of the software packages their product depends on.
Just as modern software development has outpaced in-house development strategies, the number, variety, and uniqueness of vulnerabilities and bugs found in modern software make it impossible to keep up through in-house vulnerability tracking alone. This was a reality the software community recognized early on, and it led to the creation of the CVE (Common Vulnerability and Exposure) program and the NVD (National Vulnerability Database) program, standardized U.S.-based programs for assigning, describing, and tracking vulnerabilities and bugs.
These two programs have existed for more than 20 years and have become the foundation for many modern cybersecurity tools, products, and practices.
The NVD is considered so important that in 2018 it was exempted from the U.S. government shutdown. See “Closed Down: Government Shutdown Impacts Enterprise Security, December 31, 2018, https://duo.com/decipher/government-shutdown-impacts-enterprise-security
However, in recent years both programs have struggled as the astonishing growth of new technologies has driven a sharp increase in requests for additions to the NVD. These difficulties have given rise to a number of downstream problems, including the following.
As a result, many stakeholders who rely on the CVE and NVD programs, including nearly every modern company, federal agency, and other organization, are not fully resolving their vulnerability exposure. Worse still, a lack of NVD coverage that produces few alerts can create a false sense of security, leading stakeholders to believe their products are safe and trustworthy when they are not.
Given their position at the very end of the software supply chain, end users would seem to have the least control over security.
![]()
However, the picture changes if you think of the supply chain as a loop.
![]()
End users will typically use a technology vendor’s solution, and in that case, they cannot make decisions about the choice of PDM or OSS packages. However, end users do control “acquisition requirements” (although many users do not make full use of this leverage).
The best practice here is for end users to add the following requirements to the contract when negotiating with a technology provider.
In some cases, end users themselves carry out the same practices discussed under developer practices for the OSS packages within their own solutions. In addition to these practices and “acquisition requirement” practices, there are also practical steps end users can take on their own: checking the trustworthiness of software, downloading software only from trusted sources, and verifying that the software they received is the software they requested. They can also limit the permissions granted to software in order to reduce the impact of supply chain problems.
Even so, the following facts remain.
End users occupy both the best and worst position to influence the software supply chain. Companies that acquire technology from a vendor can use acquisition practices to encourage the vendor to apply security best practices, but they still face difficulty correcting, or even discovering, defects in the products they receive. For end users who wish to manage their own software themselves, they must recognize that doing so essentially requires them to become developers and to act accordingly. In either case, end users need to understand that as modern software development continues to change, their own behavior must change along with it.
Modern software development relies on a “supply chain” that is distributed on a massive scale. This ever-increasing trend has reduced the average time to market for products and created substantial value, but it has also created risk and opportunities for abuse.
Software repositories, package managers, and vulnerability databases are all necessary components of the software supply chain, just as the developers and end users who make use of them are. However, unless the vulnerabilities currently inherent in these components are resolved, the companies and developers that depend on them will continue to face significant risk. This article was written to highlight known problems within the software supply chain and to spur action to address them. The Linux Foundation will convene a meeting of global technology leaders to design a comprehensive solution to these problems.
Hello.
Mark Radcliffe, an IP attorney at DLA Piper, recently contributed an article titled “Top 10 FOSS legal developments in 2019.” Expecting it to be useful to those interested in Open Source Compliance, I have summarized it to the extent I understand it. (Since I am not a lawyer, there may be shortcomings in the legal terminology or interpretation. I would appreciate it if you let me know of anything that needs correcting.)
Patrick McHardy, an early contributor to the Linux kernel, has engaged in activity in Germany resembling that of a copyright troll seeking financial gain through litigation as a weapon. He has been active for seven and a half years and is reported to have approached more than 80 companies, but since many companies settled rather than going to trial and German court proceedings are kept confidential, it is difficult to estimate exact figures. In the Geniatech case, which McHardy filed in 2017, the appellate court judge in 2018 responded skeptically to McHardy’s copyright claims alleging GPLv2 violations, and McHardy ultimately withdrew the suit.
Since then, McHardy has not been generating further lawsuits, but he continues to make claims of GPLv2 compliance violations. Whereas he previously extracted financial gain by first signing a light contractual penalty and then, after discovering additional violations, enforcing a heavier penalty, since early 2019 he has shifted to a new strategy of demanding compensation for the time he spent finding violations (demanding excessive engineering costs).
Richard Stallman resigned as President and board member of the Free Software Foundation. The Free Software (and Open Source) movement owes a great deal to Richard Stallman’s vision and sustained effort. However, over the past several years he has stirred controversy by voicing various opinions on matters outside the FOSS movement. His statements this year about a victim in the Jeffrey Epstein case led to pressure for him to resign from the Free Software Foundation.
He also resigned from MIT, and the maintainers of the GNU operating system removed him. While acknowledging his contributions, they stated the following: “However, it must be recognized that over the years Stallman’s conduct has undermined the interests of all computer users, a core value of the GNU project. GNU cannot properly carry out its mission when a leader’s conduct diverges from the values we aim to reach.”
It is not yet clear who will take up the leadership role in the Free Software movement going forward.
(Related domestic article: http://www.zdnet.co.kr/view/?no=2019091817351)
In May 2019, the US Bureau of Industry and Security (BIS) placed Huawei Technologies Co., Ltd. and 68 non-US affiliates on the Entity List. In August 2019, BIS added 46 more non-US Huawei affiliates to the Entity List. Companies cannot export, re-export, or transfer items subject to the Export Administration Regulations (EAR) to Huawei, except in four areas for which BIS issued a temporary license (narrowed to three in August 2019).
Google immediately cut off access to Google Services such as the Google Play Store as well as the Android OS (though some updates continued to be provided under the BIS exception). Huawei had to fall back on using the Android Open Source Project. BIS extended the Temporary General License several times. Huawei announced that it is developing a version that could replace Android and may ship it with its next phone. This suspension of Huawei’s access to Google’s Android OS appears likely to be permanent, raising the possibility that Android will split into two ecosystems, one US-based and one China-based.
There have been repeated attempts to condition OSS use on ethical grounds. This year saw several examples of “Ethical Licenses.” In one case, developer Seth Vargo deleted his open source library project Chef Sugar, making it unavailable to users. He deleted Chef Sugar because it was used as part of a contract with U.S. Immigration and Customs Enforcement (ICE), which he criticized for detaining parents and children separately after illegal entry.
Chef, the provider of Chef Sugar, initially tried to resolve the issue by asserting that it owned the copyright to the Chef Sugar project. Chef’s CEO said Chef would continue to provide services to ICE, but four days later the CEO announced that Chef would not renew its license with ICE and would donate the proceeds of the ICE contract to charities dealing with family separation (families separated because of ICE).
Activist Coraline Ada Ehmke created the Hippocratic License. She says this license “adds ethics to Open Source projects.” The Hippocratic License adds the following clause to the MIT License:
“The software may not be used by anyone for systems or activities that actively and knowingly endanger, harm, or otherwise threaten the physical, mental, economic, or general well-being of other individuals or groups, in violation of the United Nations Universal Declaration of Human Rights.”
OSI promptly stated that the Hippocratic License is not an “open source” license. Unfortunately, this additional clause makes the license very difficult to interpret.
Many blockchain projects have been released under FOSS licenses. The blockchain community has made complex and unusual choices regarding infrastructure technology. Algorand, a new blockchain project, released its SDK, example applications, and helper library under the MIT License in 2019. However, the Algorand node software was licensed under AGPLv3. Many companies’ legal or Compliance departments restrict the use of software under AGPLv3 because ensuring compliance is difficult. This may make it harder for companies to adopt the Algorand project.
The Court of Appeals for the Federal Circuit (CAFC) issued its second decision in Oracle v. Google, ruling that Google’s unauthorized use of 37 packages of Oracle’s Java Application Programming Interface (API) in the Android operating system infringed Oracle’s copyright. In 2014, the CAFC reversed the district court’s first-instance ruling and held that the API was copyrightable, remanding the case to the district court to determine whether the use qualified as Fair Use. In 2016, the district court ruled in Google’s favor on the ground that Google’s use of the API constituted Fair Use, and Oracle appealed. In March 2019, the CAFC once again reversed the district court’s ruling, holding that Google’s use of the API did not, as a matter of law, constitute Fair Use. The Supreme Court granted certiorari (arguments scheduled to begin in March 2020). This case will be a critically important precedent in determining the scope of copyright protection for computer software.
(Related domestic article: https://byline.network/2020/02/11-94/)
In March 2015, Christoph Hellwig, a core Linux kernel developer, sued VMware in the Hamburg Regional Court in Germany. Hellwig claimed that VMware violated the terms of GPLv2 by (1) combining Linux with VMware’s proprietary code, called “vmkernel,” in a manner that created a derivative work, while (2) failing to provide the complete corresponding source code for vmkernel as required under GPLv2. Vmkernel, the “kernel” of the VMware ESXi operating system, manages the hardware and software resources of the physical server.
VMware responded that vmkernel is not a derivative work of Linux but merely communicates with Linux through the VMK API. VMware also stated that the drivers that operate with vmkernel need not be Linux drivers, and that “a compatibility alternative called ‘vmklinux’ (interoperating with any Linux driver) via a loadable kernel module is loaded by vmkernel and interfaces with vmkernel through the VMK API.” Because the complaint and court filings are kept confidential under German court rules, the facts underlying the dispute cannot be confirmed.
The Hamburg court dismissed Hellwig’s suit on the ground that Hellwig failed to establish which components of the Linux system he had developed and whether VMware had used those components. The Hamburg Higher Regional Court dismissed the appeal of the first-instance ruling, and Hellwig decided not to appeal that decision further. Neither court addressed the substantive issues raised in the complaint; both ruled based on insufficient evidence regarding the right of ownership or copyright-protectability of certain components taken from Linux.
In response to these rulings, VMware stated, “VMware has been actively working for several years, independent of the litigation, to remove vmklinux from vSphere and hopes to accomplish this in a future major release.”
Many commercial FOSS companies have expressed concern that traditional OSS licenses allow Cloud Service Providers to use their programs without paying the FOSS company. In June 2019, CockroachDB adopted the BSL (Business Source License), first developed for MariaDB by Bruce Perens, one of the founders of the Open Source movement. CockroachDB’s CEO said the following: “Today we are adopting a very permissive license, the BSL (Business Source License). Users of CockroachDB can scale CockroachDB across multiple nodes. They can use CockroachDB or embed it in an application (whether distributing the application to customers or running it as a service). They can also run it internally as a service. The one and only restriction is that CockroachDB cannot be offered as a commercial service without purchasing a license.”
In November, Sentry also adopted the BSL. There were also several developments regarding new licenses adopted in 2018. In 2018, Redis Labs changed the license of its Redis modules from AGPL to Apache v2.0 with Commons Clause added (these Redis modules are add-ons on top of Redis core). Commons Clause was introduced as an addition to the Apache Software License version 2 to restrict use of the product by Cloud Service Providers. The introduction of this mixed license was highly controversial, and Redis abandoned the Commons Clause, adopting the Redis Source Available License for RediSearch, RedisGraph, RedisJSON, Redis-ML, and RedisBloom. Other companies adopted similar licenses.
As FOSS has become widely adopted as a development methodology, standard setting organizations (SSOs) have worked to incorporate FOSS approaches into their processes. However, the methodologies of FOSS projects and SSOs differ considerably. FOSS projects operate with much more diverse responsibilities and in a more decentralized manner. One particular source of friction is the typical SSO approach of granting members patent rights on a royalty-bearing basis (under Fair, Reasonable, And Non-Discriminatory / FRAND terms). This friction is reflected in articles addressing patent licensing disputes under open source licenses (here and here).
David Kappos, the former Director of the US Patent and Trademark Office, stated the following: “Instead, we have found substantial support for the opposite conclusion — that OSD-compliant licenses should not be assumed to grant patent licenses absent an explicit patent grant clause. That is, OSS licensors can choose licenses that grant patent licenses, or choose licenses that do not, such as MIT and Berkeley. This preserves the ability of OSS and standard-essential patents (SEP) to work together to advance innovation.”
Van Lindberg, on the other hand, responded as follows: “This is why open source and FRAND are complementary but not compatible: open source and FRAND innovate relying on different intellectual property policies. These two development models can learn from each other and compete with each other, but they are fundamentally grounded in different underlying principles.”
“It’s understandable why SSOs want to incorporate OSS. Open source is cheap, interoperable, and innovative. SSOs have the ability to change to secure interoperability with OSS. All they need to do, as many organizations have already done, is adopt a Royalty-free IPR (intellectual property rights) policy. But an SSO that wants to impose FRAND royalties ultimately has the same choice that commercial companies have when dealing with open source: either respect the licenses and rules that must be followed when using OSS, or invest the time to create a commercial version.”
The difference in how royalties are paid on patents is creating tension between the FOSS and SSO communities. And some in the SSO community have argued that they should be able to define what “open source” is. This issue does not appear likely to be resolved anytime soon.
Data has been called the “new oil.” The concept of open source has been applied to data licensing (see the Linux Foundation’s Community Data License Agreement from 2017). This year, however, it was applied to data and cybersecurity. For example, the Cryptographic Autonomy License (CAL) was developed by Van Lindberg, an open source lawyer well known from his work with Holochain. Holochain explained this license as follows: “For distributed apps, the cryptographic key occupies a strange middle ground between code and user data. Code is functional and provides the process that routes and transforms user data as input or output for a computing system. User data is generally more like passive content that can be processed and stored by code. A cryptographic key is both user data and functional. In Holochain, cryptographic keys mediate proof of ownership of data: where data is stored, who controls the data, who verifies the security and encryption of communication and storage, and the operation of the chain structure for progressive hashing and signing that establishes the order and integrity of data.”
The CAL provides the following obligation with respect to user data: “Throughout any period in which You exercise any of the permissions granted to You under this License, You must also provide to any Recipient to whom you provide services via the Work, a no-charge copy, provided in a commonly used electronic form, of the Recipient’s User Data in your possession, to the extent that such User Data is available to You for use in conjunction with the Work.”
The license also allows a delay in providing source code when addressing a security flaw, which is a new and welcome approach: “You may delay providing the Source Code corresponding to a particular modification of the Work for up to ninety (90) days (the ‘Embargo Period’) if: a) the modification is intended to address a newly-identified vulnerability or a security flaw in the Work, b) disclosure of the vulnerability or security flaw before the end of the Embargo Period would put the data, identity, or autonomy of one or more Recipients of the Work at significant risk, c) You are participating in a coordinated disclosure of the vulnerability or security flaw with one or more additional Licensees, and d) Access to the Source Code pertaining to the modification is provided to all Recipients at the end of the Embargo Period.”
The Linux Foundation has continued to work on open data issues through the JDF (Joint Development Foundation). Working with AWS, Genesys, and Salesforce, the JDF developed the Cloud Information Model, an open source data model that standardizes data interoperability across cloud applications.