<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Blog | Haksung</title><link>https://haksungjang.github.io/en/blog/</link><description>Haksung Jang — Open Source Program Manager at SK telecom</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 08 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://haksungjang.github.io/en/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>AI-Generated Code: How Far Should Open Source Scanning Go?</title><link>https://haksungjang.github.io/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/</guid><description>Examines whether AI-generated code needs snippet-level open source license scanning, laying out the decision criteria from public sources and distinguishing this from the security vulnerability angle.</description><content:encoded>&lt;![CDATA[<div class="alert alert-info" role="alert"><p>This post was written using Claude Code, and the key facts cited were cross-checked against public sources.</p></div><div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">Notice</div><p>This post reflects the author&rsquo;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.</p></div><h2 id="one-point-to-clarify-first">One point to clarify first</h2><p>It is hard to answer this question directly with a &ldquo;yes&rdquo; or &ldquo;no.&rdquo; 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 &ldquo;does scanning still matter in the age of AI,&rdquo; it helps more to ask &ldquo;under what conditions does snippet-level scanning become more important, and under what conditions does it become less important.&rdquo;</p><h2 id="snippet-scanning-and-sca-are-different-things">Snippet scanning and SCA are different things</h2><p>First, the terms need to be separated so the discussion doesn&rsquo;t get tangled.</p><table><thead><tr><th>Category</th><th>What it looks at</th><th>How it catches code that came in</th></tr></thead><tbody><tr><td>Dependency-level SCA</td><td>Components declared through a package manager</td><td>Manifests such as<code>package.json</code>,<code>pom.xml</code>, and build artifacts</td></tr><tr><td>Snippet-level matching</td><td>Fragments within the source code body</td><td>Code fragments that entered via copy-paste or AI generation</td></tr></tbody></table><p>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.</p><h2 id="how-much-legal-risk-actually-exists">How much legal risk actually exists</h2><p>Let&rsquo;s start with cases where AI code snippets led to license violation disputes.</p><p>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<a id="a2-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#a2">A2</a>. Of the 22 claims originally filed, two remain: open source license violation and breach of contract<a id="a2-ref-2"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#a2">A2</a>·<a id="a3-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#a3">A3</a>.</p><p>This carries facts that can be read in two directions.</p><p>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<a id="c1-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#c1">C1</a>. 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&rsquo;s built-in filtering features and must not intentionally generate infringing content<a id="b1-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#b1">B1</a>·<a id="c5-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#c5">C5</a>.</p><p>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&rsquo;s judgment — and as of June 2026, no ruling has come down, and the trial court proceedings remain paused<a id="a1-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#a1">A1</a>. The absence of reported precedent does not mean there is no risk.</p><h2 id="when-do-license-obligations-arise">When do license obligations arise</h2><p>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.</p><p>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<a id="c3-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#c3">C3</a>·<a id="c4-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#c4">C4</a>. Pure SaaS that does not deliver code is likewise outside GPL obligations for the same reason. Two caveats apply here.</p><ul><li>AGPL is a stricter license that treats even providing a network service as distribution. If you use a component licensed under AGPL, the source disclosure obligation arises even if you provide it only as a service without directly delivering the code<a id="c3-ref-2"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#c3">C3</a>. Such components can be managed by excluding them through internal policy.</li><li>&ldquo;Internal&rdquo; must mean use limited to the company&rsquo;s own employees, and if distribution occurs later — through an acquisition or open-sourcing — the issue arises at that point.</li></ul><p>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)<a id="a4-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#a4">A4</a>·<a id="a5-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#a5">A5</a>. 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.</p><p>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%<a id="c6-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#c6">C6</a>. This means even small fragments can carry license obligations, and that obligation is widely not observed.</p><h2 id="do-standards-require-snippet-scanning">Do standards require snippet scanning</h2><p>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<a id="a6-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#a6">A6</a>. 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<a id="a6-ref-2"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#a6">A6</a>·<a id="a7-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#a7">A7</a>. 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.</p><p>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.</p><h2 id="under-what-conditions-does-it-become-more-important">Under what conditions does it become more important</h2><p>How much weight snippet scanning deserves depends on two conditions a company faces.</p><p>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.</p><p>Second, whether the company undergoes external verification — situations where someone outside the company actually checks the origin of the code, such as M&amp;A due diligence, a large customer&rsquo;s security audit, regulatory requirements, or an SBOM submission that demands snippet-level detail.</p><p>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.</p><h2 id="looking-at-it-by-company-condition">Looking at it by company condition</h2><p>Placing the two conditions above on two axes yields four quadrants.</p><p><img src="/blog/2026/06/08/ai%EA%B0%80-%EB%A7%8C%EB%93%A0-%EC%BD%94%EB%93%9C-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B2%80%EC%82%AC%EB%A5%BC-%EC%96%B4%EB%94%94%EA%B9%8C%EC%A7%80-%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C/snippet-decision-matrix-en.png" alt="A quadrant chart with two axes: whether code is delivered outside the company, and whether it undergoes external verification. Snippet scanning matters most only when both apply; when code is not delivered, it matters little regardless of verification"/><p><strong>Figure 1.</strong> How much weight snippet scanning deserves, by condition</p><p>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&amp;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.</p><p>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&rsquo;s risk tolerance.</p><h2 id="embedded-software-is-a-different-case">Embedded software is a different case</h2><p>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.</p><p>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.</p><p>So in embedded software, snippet scanning is not a conditional supplement but closer to a basic means of finding undeclared open source fragments.</p><h2 id="filtering-code-before-it-comes-in">Filtering code before it comes in</h2><p>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<a id="b2-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#b2">B2</a>·<a id="c2-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#c2">C2</a>. 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.</p><p>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.</p><p>Putting the inflow paths and inspection methods covered so far in one place looks like this.</p><p><img src="/blog/2026/06/08/ai%EA%B0%80-%EB%A7%8C%EB%93%A0-%EC%BD%94%EB%93%9C-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B2%80%EC%82%AC%EB%A5%BC-%EC%96%B4%EB%94%94%EA%B9%8C%EC%A7%80-%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C/code-inflow-coverage-en.png" alt="Three paths through which code enters, and the methods that catch each one. Code declared through a package manager is caught by dependency-level SCA, but fragments that entered via copy-paste or AI generation, and embedded code copied in as raw source without a manifest, are caught only by snippet matching"/><p><strong>Figure 2.</strong> Code inflow paths and the methods that catch them</p><p>Where the blind spot of dependency-level SCA lies, and how snippet matching fills that spot, is the starting point for this judgment.</p><h2 id="criteria-for-the-decision">Criteria for the decision</h2><p>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.</p><p>There are four points to examine when making this decision.</p><ul><li><strong>Does the company send code outside the organization?</strong> — The more it does, the greater the room for a copyleft obligation to actually arise.</li><li><strong>Does the company undergo external verification?</strong> — M&amp;A due diligence or a customer audit can surface an obligation that had been buried until then.</li><li><strong>How much license risk is the company willing to accept?</strong> — There is no reported litigation precedent, but the legal question is not settled either. How to weigh this uncertainty is up to the company to decide.</li><li><strong>Are other inspection measures already in place?</strong> — If dependency-level SCA, an AI tool setting that blocks suggestions matching public code verbatim, and a policy excluding AGPL components are already running, the additional share that snippet scanning would catch shrinks accordingly.</li></ul><p>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&amp;A due diligence or a large customer&rsquo;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.</p><p>Weighing the four points above and this operating approach against your own company&rsquo;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.</p><h2 id="security-vulnerabilities-are-a-separate-matter">Security vulnerabilities are a separate matter</h2><p>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.</p><p>Tools handling security inspection fall broadly into two kinds.</p><ul><li><strong>Dependency-level SCA</strong> — Looks at the name and version of declared open source libraries and checks them against known vulnerability (CVE) lists<a id="d1-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#d1">D1</a>. Known vulnerabilities in libraries that AI pulled in are caught here.</li><li><strong>SAST (static analysis)</strong> — Finds risky coding patterns in the source code itself, regardless of where the code came from. This is where the primary security risk of AI code lies. One study found vulnerabilities in about 40% of 1,689 programs generated by Copilot<a id="d2-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#d2">D2</a>.</li></ul><p>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.</p><p>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<a id="d3-ref-1"/><a href="/en/blog/2026/06/08/ai-generated-code-how-far-should-open-source-scanning-go/#d3">D3</a>. Academic tools and some commercial tools provide this.</p><h2 id="sources">Sources</h2><p><a id="a1"/><strong>A1.</strong> BakerHostetler (2025).<em>Doe v. GitHub, Inc. — The Copilot Litigation</em>.<a href="https://www.bakerlaw.com/the-copilot-litigation/">https://www.bakerlaw.com/the-copilot-litigation/</a> (accessed: 2026-06-08). — Claim-by-claim progress of the Copilot class action and its status pending before the Ninth Circuit Court of Appeals.<a href="#a1-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="a2"/><strong>A2.</strong> Claburn, T. (2024).<em>Judge dismisses DMCA copyright claim in GitHub Copilot suit</em>. The Register, 2024-07-08.<a href="https://www.theregister.com/2024/07/08/github_copilot_dmca/">https://www.theregister.com/2024/07/08/github_copilot_dmca/</a> (accessed: 2026-06-08). — Dismissal of the DMCA §1202(b) claim; 2 of the original 22 claims remain (license violation, breach of contract).<a href="#a2-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="a3"/><strong>A3.</strong> Pearl Cohen (2024).<em>Copyright Claims Against GitHub, Microsoft, and OpenAI Largely Dismissed</em>.<a href="https://www.pearlcohen.com/copyright-claims-against-github-microsoft-and-openai-largely-dismissed/">https://www.pearlcohen.com/copyright-claims-against-github-microsoft-and-openai-largely-dismissed/</a> (accessed: 2026-06-08). — Overview of the dismissal of most claims and the claims that remain.<a href="#a3-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="a4"/><strong>A4.</strong> Goldstein Patent Law.<em>Understanding the Copyright Merger Doctrine</em>.<a href="https://www.goldsteinpatentlaw.com/copyright-merger-doctrine/">https://www.goldsteinpatentlaw.com/copyright-merger-doctrine/</a> (accessed: 2026-06-08). — The merger doctrine, which denies copyrightability to functional code.<a href="#a4-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="a5"/><strong>A5.</strong> NYU Journal of Intellectual Property &amp; Entertainment Law.<em>Clarifying the De Minimis Doctrine in Copyright Law</em>.<a href="https://jipel.law.nyu.edu/clarifying-the-de-minimis-doctrine-in-copyright-law/">https://jipel.law.nyu.edu/clarifying-the-de-minimis-doctrine-in-copyright-law/</a> (accessed: 2026-06-08). — The de minimis doctrine, which does not treat trivial copying as infringement.<a href="#a5-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="a6"/><strong>A6.</strong> OpenChain Project.<em>OpenChain ISO/IEC 5230 — License Compliance</em>.<a href="https://openchainproject.org/license-compliance">https://openchainproject.org/license-compliance</a> (accessed: 2026-06-08). — That the standard defines process and roles but does not mandate a specific technique such as snippet scanning.<a href="#a6-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="a7"/><strong>A7.</strong> ISO.<em>ISO/IEC 5230:2020 — Information technology — OpenChain Specification</em>.<a href="https://www.iso.org/standard/81039.html">https://www.iso.org/standard/81039.html</a> (accessed: 2026-06-08). — Bibliographic information for the standard text.<a href="#a7-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="b1"/><strong>B1.</strong> Microsoft (2023-09-07).<em>Microsoft announces new Copilot Copyright Commitment for customers</em>.<a href="https://blogs.microsoft.com/on-the-issues/2023/09/07/copilot-copyright-commitment-ai-legal-concerns/">https://blogs.microsoft.com/on-the-issues/2023/09/07/copilot-copyright-commitment-ai-legal-concerns/</a> (accessed: 2026-06-08). — Intellectual property indemnification for paying commercial customers and the condition of keeping the built-in filtering feature enabled.<a href="#b1-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="b2"/><strong>B2.</strong> GitHub.<em>GitHub Copilot</em> (product page).<a href="https://github.com/features/copilot">https://github.com/features/copilot</a> (accessed: 2026-06-08). — The existence and operation of the setting that blocks matches with public code.<a href="#b2-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="c1"/><strong>C1.</strong> TechTarget.<em>AI lawsuits explained: Who&rsquo;s getting sued?</em>.<a href="https://www.techtarget.com/whatis/feature/AI-lawsuits-explained-Whos-getting-sued">https://www.techtarget.com/whatis/feature/AI-lawsuits-explained-Whos-getting-sued</a> (accessed: 2026-06-08). — Evidence that lawsuit defendants have been concentrated among vendors, with no reported cases of adopting companies being sued.<a href="#c1-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="c2"/><strong>C2.</strong> Microsoft Community Hub.<em>Demystifying GitHub Copilot Security Controls</em>.<a href="https://techcommunity.microsoft.com/blog/azuredevcommunityblog/demystifying-github-copilot-security-controls-easing-concerns-for-organizational/4468193">https://techcommunity.microsoft.com/blog/azuredevcommunityblog/demystifying-github-copilot-security-controls-easing-concerns-for-organizational/4468193</a> (accessed: 2026-06-08). — The roughly 150-character match threshold for the public-code-match blocking setting and the roughly 1% duplication rate.<a href="#c2-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="c3"/><strong>C3.</strong> Mend.io.<em>The SaaS Loophole In GPL Open Source Licenses</em>.<a href="https://www.mend.io/blog/the-saas-loophole-in-gpl-open-source-licenses/">https://www.mend.io/blog/the-saas-loophole-in-gpl-open-source-licenses/</a> (accessed: 2026-06-08). — The distribution trigger for copyleft, why internal use and SaaS do not qualify, and the AGPL Section 13 exception.<a href="#c3-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="c4"/><strong>C4.</strong> Revenera.<em>Understanding the SaaS Loophole in GPL</em>.<a href="https://www.revenera.com/blog/software-composition-analysis/understanding-the-saas-loophole-in-gpl/">https://www.revenera.com/blog/software-composition-analysis/understanding-the-saas-loophole-in-gpl/</a> (accessed: 2026-06-08). — Additional support on the distribution trigger and the SaaS exception.<a href="#c4-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="c5"/><strong>C5.</strong> TechTarget.<em>Microsoft Copilot Copyright Commitment explained</em>.<a href="https://www.techtarget.com/searchenterprisedesktop/tip/Microsoft-Copilot-Copyright-Commitment-explained">https://www.techtarget.com/searchenterprisedesktop/tip/Microsoft-Copilot-Copyright-Commitment-explained</a> (accessed: 2026-06-08). — Additional support on the scope and conditions of the indemnification.<a href="#c5-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="c6"/><strong>C6.</strong> Baltes, S. &amp; Diehl, S. (2019).<em>Usage and Attribution of Stack Overflow Code Snippets in GitHub Projects</em>. Empirical Software Engineering, arXiv:1802.02938.<a href="https://arxiv.org/abs/1802.02938">https://arxiv.org/abs/1802.02938</a> (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%.<a href="#c6-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="d1"/><strong>D1.</strong> Cycode.<em>What Is Software Composition Analysis (SCA)?</em>.<a href="https://cycode.com/blog/what-is-software-composition-analysis-sca/">https://cycode.com/blog/what-is-software-composition-analysis-sca/</a> (accessed: 2026-06-08). — How SCA finds vulnerabilities by checking components and versions against CVE/NVD.<a href="#d1-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="d2"/><strong>D2.</strong> Pearce, H., Ahmad, B., Tan, B., Dolan-Gavitt, B., &amp; Karri, R. (2022).<em>Asleep at the Keyboard? Assessing the Security of GitHub Copilot&rsquo;s Code Contributions</em>. IEEE S&amp;P 2022, arXiv:2108.09293.<a href="https://arxiv.org/abs/2108.09293">https://arxiv.org/abs/2108.09293</a> (accessed: 2026-06-08). — Vulnerabilities in about 40% of 1,689 programs generated across 89 scenarios.<a href="#d2-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><p><a id="d3"/><strong>D3.</strong> Kim, S., Woo, S., Lee, H., &amp; Oh, H. (2017).<em>VUDDY: A Scalable Approach for Vulnerable Code Clone Discovery</em>. IEEE S&amp;P 2017.<a href="https://seulbae-security.github.io/pubs/vuddy-sp17.pdf">https://seulbae-security.github.io/pubs/vuddy-sp17.pdf</a> (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.<a href="#d3-ref-1" onclick="event.preventDefault(); history.back(); return false;" title="Return to text">↩</a></p><hr><p><em>Research as of: 2026-06-08</em></p>
]]></content:encoded></item><item><title>Rockchip and FFmpeg: A License Dispute Case Study</title><link>https://haksungjang.github.io/en/blog/2026/02/20/rockchip-and-ffmpeg-a-license-dispute-case-study/</link><pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2026/02/20/rockchip-and-ffmpeg-a-license-dispute-case-study/</guid><description> This article was written using Claude Code, and the key facts cited were cross-verified against primary sources.
Notice This article reflects the author&amp;rsquo;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.</description><content:encoded>&lt;![CDATA[<div class="alert alert-info" role="alert"><p>This article was written using Claude Code, and the key facts cited were cross-verified against primary sources.</p></div><div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">Notice</div><p>This article reflects the author&rsquo;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.</p></div><p>Hello.</p><p>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.</p><p>This case is not just about one company&rsquo;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.</p><p><img src="/blog/2026/02/20/rockchip%EA%B3%BC-ffmpeg%EC%9D%98-%EB%9D%BC%EC%9D%B4%EC%84%A0%EC%8A%A4-%EB%B6%84%EC%9F%81-%EC%82%AC%EB%A1%80/featured-image.jpg" alt="An illustration symbolizing the Rockchip and FFmpeg license dispute"/><h2 id="1-overview-of-the-incident">1. Overview of the Incident</h2><p>In December 2025, Rockchip&rsquo;s GitHub repository<code>rockchip-linux/mpp</code> (Media Process Platform) was disabled. This was in response to a DMCA (Digital Millennium Copyright Act) takedown notice filed by an FFmpeg contributor.</p><p>Rockchip has provided a middleware library called<code>mpp</code> for hardware video acceleration on its chipsets (such as the RK3588). The problem is that this library&rsquo;s stream header parser code came from FFmpeg&rsquo;s<code>libavcodec</code>. 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.</p><p>The notice specified exactly these three acts, and stated as grounds for infringement that this is &ldquo;evident from the identical code structure and comments, including commented-out calls to FFmpeg internal functions retained under their original names.&rdquo;</p><h3 id="timeline">Timeline</h3><p><img src="/blog/2026/02/20/rockchip%EA%B3%BC-ffmpeg%EC%9D%98-%EB%9D%BC%EC%9D%B4%EC%84%A0%EC%8A%A4-%EB%B6%84%EC%9F%81-%EC%82%AC%EB%A1%80/dispute-timeline-en.png" alt="The timeline from FFmpeg’s public callout in February 2024, which went uncorrected for about 22 months, through the DMCA notice in December 2025 that took the repository down, to its restoration roughly 10 weeks later in early March 2026"/><p><strong>Figure 1.</strong> Dispute timeline<em>(Source: DMCA notice, MPP commit history, Issues 530 and 73, Internet Archive. Verified 2026-07-23.)</em></p><p>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.</p><p>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 &ldquo;expeditiously,&rdquo; 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.</p><h2 id="2-what-was-copied">2. What Was Copied</h2><p>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.</p><h3 id="copyright-header-replacement">Copyright Header Replacement</h3><p>The header from FFmpeg&rsquo;s<code>libavcodec/vpx_rac.h</code>:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">/*</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"> * Copyright (C) 2006 Aurelien Jacobs &lt;aurel@gnuage.org&gt;</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"> *</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"> * This file is part of FFmpeg.</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"> *</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"> * FFmpeg is free software; you can redistribute it and/or</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"> * modify it under the terms of the GNU Lesser General Public</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"> * License as published by the Free Software Foundation; either</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"> * version 2.1 of the License, or (at your option) any later version.</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">...</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">*/</span></span></span></code></pre></div><p>The same location in MPP&rsquo;s<code>mpp/codec/dec/vp9/vpx_rac.h</code>:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">/*</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">*</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">* Copyright 2015 Rockchip Electronics Co. LTD</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">*</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">* Licensed under the Apache License, Version 2.0 (the "License");</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">* you may not use this file except in compliance with the License.</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">...</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">*/</span></span></span></code></pre></div><p>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&rsquo;s name. The original authors of<code>vpx_rac.c</code>, Fiona Glaser, and of<code>vp9data.h</code>, Ronald S. Bultje and Clément Bœsch, likewise vanished without a trace.</p><h3 id="matching-function-bodies">Matching Function Bodies</h3><p>Let&rsquo;s compare the core function of the VP9 range coder.</p><p>FFmpeg<code>libavcodec/vpx_rac.h</code>:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">static</span><span style="color:#000">av_always_inline</span><span style="color:#204a87;font-weight:bold">int</span><span style="color:#000">vpx_rac_get_prob</span><span style="color:#000;font-weight:bold">(</span><span style="color:#000">VPXRangeCoder</span><span style="color:#ce5c00;font-weight:bold">*</span><span style="color:#000">c</span><span style="color:#000;font-weight:bold">,</span><span style="color:#204a87;font-weight:bold">uint8_t</span><span style="color:#000">prob</span><span style="color:#000;font-weight:bold">)</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">unsigned</span><span style="color:#204a87;font-weight:bold">int</span><span style="color:#000">code_word</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">vpx_rac_renorm</span><span style="color:#000;font-weight:bold">(</span><span style="color:#000">c</span><span style="color:#000;font-weight:bold">);</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">unsigned</span><span style="color:#204a87;font-weight:bold">int</span><span style="color:#000">low</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">+</span><span style="color:#000;font-weight:bold">(((</span><span style="color:#000">c</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#000">high</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">)</span><span style="color:#ce5c00;font-weight:bold">*</span><span style="color:#000">prob</span><span style="color:#000;font-weight:bold">)</span><span style="color:#ce5c00;font-weight:bold">&gt;&gt;</span><span style="color:#0000cf;font-weight:bold">8</span><span style="color:#000;font-weight:bold">);</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">unsigned</span><span style="color:#204a87;font-weight:bold">int</span><span style="color:#000">low_shift</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">low</span><span style="color:#ce5c00;font-weight:bold">&lt;&lt;</span><span style="color:#0000cf;font-weight:bold">16</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">int</span><span style="color:#000">bit</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">code_word</span><span style="color:#ce5c00;font-weight:bold">&gt;=</span><span style="color:#000">low_shift</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#000">c</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#000">high</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">bit</span><span style="color:#ce5c00;font-weight:bold">?</span><span style="color:#000">c</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#000">high</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#f57900">low</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000">low</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span><span style="color:#000">c</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#000">code_word</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">bit</span><span style="color:#ce5c00;font-weight:bold">?</span><span style="color:#000">code_word</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#f57900">low_shift</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000">code_word</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">return</span><span style="color:#000">bit</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div><p>MPP<code>mpp/codec/dec/vp9/vpx_rac.c</code> (commit<code>14667441</code>, as of the time infringement was alleged):</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#000">rk_s32</span><span style="color:#000">vpx_rac_get_prob</span><span style="color:#000;font-weight:bold">(</span><span style="color:#000">VpxRangeCoder</span><span style="color:#ce5c00;font-weight:bold">*</span><span style="color:#000">c</span><span style="color:#000;font-weight:bold">,</span><span style="color:#204a87;font-weight:bold">uint8_t</span><span style="color:#000">prob</span><span style="color:#000;font-weight:bold">)</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">unsigned</span><span style="color:#204a87;font-weight:bold">int</span><span style="color:#000">code_word</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">vpx_rac_renorm</span><span style="color:#000;font-weight:bold">(</span><span style="color:#000">c</span><span style="color:#000;font-weight:bold">);</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">unsigned</span><span style="color:#204a87;font-weight:bold">int</span><span style="color:#000">low</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">+</span><span style="color:#000;font-weight:bold">(((</span><span style="color:#000">c</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#000">high</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">)</span><span style="color:#ce5c00;font-weight:bold">*</span><span style="color:#000">prob</span><span style="color:#000;font-weight:bold">)</span><span style="color:#ce5c00;font-weight:bold">&gt;&gt;</span><span style="color:#0000cf;font-weight:bold">8</span><span style="color:#000;font-weight:bold">);</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">unsigned</span><span style="color:#204a87;font-weight:bold">int</span><span style="color:#000">low_shift</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">low</span><span style="color:#ce5c00;font-weight:bold">&lt;&lt;</span><span style="color:#0000cf;font-weight:bold">16</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">int</span><span style="color:#000">bit</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">code_word</span><span style="color:#ce5c00;font-weight:bold">&gt;=</span><span style="color:#000">low_shift</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#000">c</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#000">high</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">bit</span><span style="color:#ce5c00;font-weight:bold">?</span><span style="color:#000">c</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#000">high</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#f57900">low</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000">low</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span><span style="color:#000">c</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#000">code_word</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">bit</span><span style="color:#ce5c00;font-weight:bold">?</span><span style="color:#000">code_word</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#f57900">low_shift</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000">code_word</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">return</span><span style="color:#000">bit</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div><p>The only changes are dropping the inline specifier and changing the return type from<code>int</code> to<code>rk_s32</code>. The function body is identical down to the whitespace, and the<code>uint8_t</code> parameter type and<code>unsigned int</code> in the body remain exactly as written in FFmpeg.</p><h3 id="traces-left-in-the-code">Traces Left in the Code</h3><p>Comments unrelated to functionality are exactly what reveal provenance. The following comments remained untouched in the MPP files.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// branchy variant, to be used where there's a branch based on the bit decoded</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// rounding is different than vpx_rac_get, is vpx_rac_get wrong?</span></span></span></code></pre></div><p>The first is a word-for-word match with FFmpeg&rsquo;s<code>vpx_rac.h</code>. The second is a question the FFmpeg developer posed to themselves; the original refers to<code>vp56_rac_get</code>, 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.</p><p>At the top of the file, a description referring to a codec that MPP doesn&rsquo;t even support was left in place.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">/**</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"> * vp56 specific range coder implementation</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"> */</span></span></span></code></pre></div><p>In FFmpeg, this description exists because the file is shared across VP5 through VP9, but it carried straight over into MPP, which doesn&rsquo;t handle VP5 or VP6 at all. There is also a spot where an alignment macro was redefined to do nothing.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">#define DECLARE_ALIGNED(n,t,v) t v</span></span></span></code></pre></div><p>This macro name exists in both FFmpeg and libvpx, so by itself it doesn&rsquo;t establish provenance. However, where it is used tracks FFmpeg exactly. FFmpeg&rsquo;s<code>vp56.h</code> declares the first field of its motion vector struct as<code>DECLARE_ALIGNED(4, int16_t, x);</code>, and MPP&rsquo;s corresponding struct carries this line over verbatim. The equivalent struct in libvpx does not use this macro at all.</p><p>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.</p><h3 id="the-probability-tables-are-a-somewhat-different-matter">The Probability Tables Are a Somewhat Different Matter</h3><p>The codec&rsquo;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<code>/* a/l both not split */</code> 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.</p><p>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.</p><p>libvpx:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span><span style="color:#0000cf;font-weight:bold">222</span><span style="color:#000;font-weight:bold">,</span><span style="color:#0000cf;font-weight:bold">34</span><span style="color:#000;font-weight:bold">,</span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#000;font-weight:bold">},</span><span style="color:#8f5902;font-style:italic">// a/l both not split</span></span></span></code></pre></div><p>FFmpeg:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span><span style="color:#0000cf;font-weight:bold">222</span><span style="color:#000;font-weight:bold">,</span><span style="color:#0000cf;font-weight:bold">34</span><span style="color:#000;font-weight:bold">,</span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#000;font-weight:bold">}</span><span style="color:#8f5902;font-style:italic">/* a/l both not split */</span><span style="color:#000;font-weight:bold">,</span></span></span></code></pre></div><p>libvpx places a comma and then attaches a<code>//</code> comment, while FFmpeg places a<code>/* */</code> comment before the comma and aligns the numbers to two-character width. MPP&rsquo;s version matches FFmpeg&rsquo;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.</p><p>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&rsquo;s specific traces were followed.</p><h2 id="3-why-it-took-22-months">3. Why It Took 22 Months</h2><p>This is the part of the case with the most to learn from. The issue was first made public on February 23, 2024. FFmpeg&rsquo;s official account posted the callout on X, and on the same day, the developer maintaining the<code>ffmpeg-rockchip</code> fork opened Issue 530 on the MPP repository to relay it. It took 22 months from there to the DMCA notice.</p><p>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 &ldquo;it&rsquo;s delayed,&rdquo; &ldquo;it&rsquo;s in progress,&rdquo; and &ldquo;the refactor is on hold.&rdquo; This was a case of responding without correcting.</p><p>Rockchip later revealed the reason for the delay.</p><pre tabindex="0"><code>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.</code></pre><p>Rockchip&rsquo;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.</p><p>This reasoning is only half right. The first part has a basis. If FFmpeg code was incorporated into MPP, MPP becomes a &ldquo;work based on the Library&rdquo; 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.</p><p>The second part is different. Section 6 provides an exception for combined works, including those using static linking.</p><pre tabindex="0"><code>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, ...</code></pre><p>A combined work can be distributed under terms of the distributor&rsquo;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.</p><p>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.</p><h2 id="4-rockchips-response-and-remaining-issues">4. Rockchip&rsquo;s Response and Remaining Issues</h2><p>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 &ldquo;removed all FFmpeg LGPL code&rdquo; and requested review.</p><p>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<code>ff_vp9_</code>,<code>av_always_inline</code>,<code>AVCodecContext</code>, and<code>libavcodec</code> 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.</p><p>Still, a few things remain.</p><p>The identified file<code>vp9data.h</code> was not deleted; it was renamed to<code>vp9d_codec.c</code>. In the commit history, this file&rsquo;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.</p><p>Files not listed in the notice were left untouched. In the hardware abstraction layer&rsquo;s<code>hal_vp9d_com.c</code>, the VP9 probability tables discussed earlier remain in FFmpeg&rsquo;s exact formatting. This bears out the caveat the notice attached before its file list: &ldquo;(and possibly others).&rdquo;</p><p>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.</p><p>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.</p><h2 id="5-why-license-laundering-is-dangerous">5. Why License Laundering Is Dangerous</h2><p>It is easy to assume that &ldquo;code released under Apache-2.0 is safe.&rdquo; 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&rsquo;s actual origin, not its stated license, that determines the obligations that attach to it.</p><p>Mapping each violation to the relevant clause looks like this.</p><table><thead><tr><th style="text-align: left">Act</th><th style="text-align: left">Relevant LGPL 2.1 Section</th></tr></thead><tbody><tr><td style="text-align: left">Deleting copyright notices</td><td style="text-align: left">Section 1 — keep intact the notices concerning the license and disclaimer of warranty</td></tr><tr><td style="text-align: left">Failing to disclose modifications</td><td style="text-align: left">Section 2(b) — mark modified files with a notice stating that they were changed, along with the date</td></tr><tr><td style="text-align: left">Not licensing the entire work</td><td style="text-align: left">Section 2(c) — license the entire work under the terms of this license</td></tr><tr><td style="text-align: left">Relicensing under Apache-2.0</td><td style="text-align: left">Section 3 (permits conversion to the GPL only) and Section 8 (any other disposition is void; rights terminate automatically)</td></tr></tbody></table><p>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.</p><h3 id="what-the-correct-structure-looks-like">What the Correct Structure Looks Like</h3><p>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.</p><p><img src="/blog/2026/02/20/rockchip%EA%B3%BC-ffmpeg%EC%9D%98-%EB%9D%BC%EC%9D%B4%EC%84%A0%EC%8A%A4-%EB%B6%84%EC%9F%81-%EC%82%AC%EB%A1%80/architecture-comparison-en.png" alt="In the problematic structure, an application reaches the hardware through the MPP library, which embeds copied FFmpeg code, whereas in the standards-compliant structure, unmodified FFmpeg calls the same hardware through the kernel’s V4L2 interface"/><p><strong>Figure 2.</strong> Comparison of hardware acceleration integration structures</p><p>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.</p><p>Progress in this direction was led not by Rockchip but by Collabora. Decoder support for the RK3588&rsquo;s VDPU381 and the RK3576&rsquo;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.</p><p>One point of caution: the<code>nyanmisaka/ffmpeg-rockchip</code> 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&rsquo;s provenance problem. To escape the dependency on MPP, one must use the mainline V4L2 path.</p><h2 id="6-the-allwinner-case-ten-years-earlier">6. The Allwinner Case, Ten Years Earlier</h2><p>There is a history of embedded chip vendors repeating the same mistake with multimedia codec licenses. The closest precedent is Allwinner&rsquo;s CedarX from 2015.</p><table><thead><tr><th style="text-align: left">Point of Comparison</th><th style="text-align: left">Allwinner CedarX (2015)</th><th style="text-align: left">Rockchip MPP (2025-2026)</th></tr></thead><tbody><tr><td style="text-align: left">Distribution form</td><td style="text-align: left">Centered on binary blobs</td><td style="text-align: left">Source released</td></tr><tr><td style="text-align: left">Nature of violation</td><td style="text-align: left">Included code derived from FFmpeg&rsquo;s<code>libavcodec</code> in the user-space CedarX library without releasing source</td><td style="text-align: left">Copied FFmpeg code, then removed copyright notices, changed attribution to Rockchip, and relicensed under Apache-2.0</td></tr><tr><td style="text-align: left">Response</td><td style="text-align: left">Community reverse-engineered the Cedrus driver, later merged upstream</td><td style="text-align: left">DMCA takedown, repository disabled, parser rewritten, V4L2 driver pursued on a separate track</td></tr><tr><td style="text-align: left">Lesson</td><td style="text-align: left">Binary distribution makes violations easy to hide, but they eventually surface through symbol analysis</td><td style="text-align: left">Even with source released, erasing provenance and relicensing is still a violation — and it leaves clearer evidence behind</td></tr></tbody></table><p>In March 2015, Allwinner put out an &ldquo;LGPL release,&rdquo; 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.</p><p>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&rsquo;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.</p><p>In Germany, the Hamburg Regional Court held in the 2013 Fantec case that &ldquo;a supplier&rsquo;s assurance of license compliance alone does not provide a defense; the distributor must verify it independently.&rdquo; This applies directly to any company that takes a BSP from an SoC vendor and incorporates it into a product.</p><h2 id="7-what-companies-should-check">7. What Companies Should Check</h2><p>The same problem may be hiding in an SDK or BSP provided by a vendor. Here are three things to check.</p><p>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&rsquo;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.</p><p>Second, check whether the vendor&rsquo;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&rsquo;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.</p><p>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&rsquo;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&rsquo;s license and copyright notice.</p><h2 id="summary">Summary</h2><p>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&rsquo;s consent, and deleting copyright notices and changing attribution are infringements in themselves.</p><p>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.</p><p>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.</p><h2 id="references">References</h2><ul><li><a href="https://github.com/github/dmca/blob/master/2025/12/2025-12-18-ffmpeg.md">FFmpeg DMCA Notice on GitHub (2025-12-18)</a></li><li><a href="https://github.com/rockchip-linux/mpp/issues/530">rockchip-linux/mpp Issue #530 — LGPL license violation reported by upstream FFmpeg</a></li><li><a href="https://github.com/HermanChen/mpp/issues/73">HermanChen/mpp Issue #73 — Official explanation from Rockchip</a></li><li><a href="https://github.com/rockchip-linux/mpp">rockchip-linux/mpp repository</a></li><li><a href="https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt">GNU LGPL 2.1, original text</a></li><li><a href="https://www.law.cornell.edu/uscode/text/17/512">17 U.S.C. §512 (Cornell LII)</a></li><li><a href="https://hackaday.com/2026/01/05/github-disables-rockchips-linux-mpp-repository-after-dmca-request/">Hackaday: GitHub Disables Rockchip&rsquo;s Linux MPP Repository After DMCA Request</a></li><li><a href="https://www.tomshardware.com/software/chinese-semiconductor-outfit-has-linux-mpp-repository-on-github-disabled-after-a-dmca-takedown-request-ffmpeg-team-accuses-it-of-using-libavcodec-code-without-attribution">Tom&rsquo;s Hardware: Rockchip Repository Disabled</a></li><li><a href="https://www.collabora.com/news-and-blog/news-and-events/rk3588-and-rk3576-video-decoders-support-merged-in-the-upstream-linux-kernel.html">Collabora: RK3588 and RK3576 video decoders support merged in the upstream Linux Kernel</a></li><li><a href="https://github.com/webmproject/libvpx">libvpx (VP9 reference implementation)</a></li><li><a href="https://www.cnx-software.com/2015/02/26/allwinners-new-media-codec-library-cedarx-may-infringe-on-open-source-licenses-and-copyrtights/">CNX Software: Allwinner&rsquo;s CedarX May Infringe on Open Source Licenses (2015-02-26)</a></li><li><a href="https://www.cnx-software.com/2015/03/23/allwinner-cedarx-media-codec-library-gpl-lgpl-compliance-update/">CNX Software: Allwinner CedarX GPL/LGPL Compliance Update (2015-03-23)</a></li><li><a href="https://github.com/nyanmisaka/ffmpeg-rockchip">nyanmisaka/ffmpeg-rockchip</a></li></ul><p><em>Revised on July 23, 2026 to reflect subsequent developments.</em></p>
]]></content:encoded></item><item><title>The AVM Lawsuit: Revisiting LGPL-2.1 User Rights and the Obligation to Provide Installation Information</title><link>https://haksungjang.github.io/en/blog/2025/01/13/the-avm-lawsuit-revisiting-lgpl-2.1-user-rights-and-the-obligation-to-provide-installation-information/</link><pubDate>Mon, 13 Jan 2025 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2025/01/13/the-avm-lawsuit-revisiting-lgpl-2.1-user-rights-and-the-obligation-to-provide-installation-information/</guid><description> This post is based on Ars Technica&amp;rsquo;s article &amp;ldquo;German router maker is latest company to inadvertently clarify the LGPL license&amp;rdquo;. The article covers the details of the lawsuit between AVM and Sebastian Steck and the importance of LGPL license compliance.
1. Case Overview 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.</description><content:encoded>&lt;![CDATA[<blockquote><p>This post is based on Ars Technica&rsquo;s article<a href="https://arstechnica.com/gadgets/2025/01/suing-wi-fi-router-makers-remains-a-necessary-part-of-open-source-license-law/">&ldquo;German router maker is latest company to inadvertently clarify the LGPL license&rdquo;</a>. The article covers the details of the lawsuit between AVM and Sebastian Steck and the importance of LGPL license compliance.</p></blockquote><h2 id="1-case-overview">1. Case Overview</h2><p>On January 9, 2025, the Software Freedom Conservancy (SFC)<a href="https://sfconservancy.org/news/2025/jan/09/avm-copyleft-lawsuit-resolved-with-install/">announced</a> 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.</p><p><img src="/blog/2025/01/13/avm-%EC%86%8C%EC%86%A1-lgpl-2.1-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B6%8C%EB%A6%AC%EC%99%80-%EC%84%A4%EC%B9%98%EC%A0%95%EB%B3%B4-%EC%A0%9C%EA%B3%B5-%EC%9D%98%EB%AC%B4%EC%9D%98-%EC%9E%AC%EC%A1%B0%EB%AA%85/featured_AVM.png" alt="Featured image for the AVM LGPL-2.1 lawsuit"/><p>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 &ldquo;provide the complete source code and the compilation and installation scripts for the uClibc, libblkid, libexif, and libosip2 libraries.&rdquo; When AVM failed to remedy this, Steck filed a lawsuit in a Berlin court in July 2023.</p><p>As a result of the lawsuit, the German court ordered AVM to pay Steck&rsquo;s attorney&rsquo;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.</p><blockquote><p><strong>Disclaimer:</strong></p><p><em>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.</em></p></blockquote><h2 id="2-background-and-progress-of-the-lawsuit">2. Background and Progress of the Lawsuit</h2><h3 id="background">Background</h3><p>In May 2021, German software developer Sebastian Steck purchased AVM&rsquo;s popular<a href="https://en.avm.de/products/fritzbox/fritzbox-4020/">Fritz!Box 4020</a> 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.</p><h3 id="legal-basis-of-the-lawsuit">Legal Basis of the Lawsuit</h3><p>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<a href="https://sfconservancy.org/static/docs/avm-Complaint_Klageschrift_EN.pdf">complaint</a>, users also have the right to receive the source code under LGPL-2.1:</p><p>&ldquo;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.&rdquo;</p><p>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.</p><h3 id="progress-of-the-lawsuit">Progress of the Lawsuit</h3><ol><li>May 7, 2021: Steck requested the source code for firmware version 6.83 of the Fritz!Box 4020 from AVM</li><li>May 11, 2021: An AVM subsidiary provided a source code download link</li><li>May 14, 2021: Steck pointed out the incompleteness of the provided source code and demanded a correction</li><li>January 12, 2023: Steck&rsquo;s attorney explained the legal situation to AVM and demanded correction of the source code</li><li>March 9, 2023: Steck additionally requested the source code for firmware version 7.02</li><li>July 27, 2023: Steck filed a lawsuit in the Berlin Regional Court</li><li>Several months after the lawsuit was filed: AVM provided Steck with all the source code requested, including &ldquo;the scripts that control library installation&rdquo;</li><li>January 9, 2025: The German court ordered AVM to pay Steck&rsquo;s attorney&rsquo;s fees. This decision includes a ruling on litigation costs, and AVM decided not to appeal this decision</li></ol><h3 id="the-plaintiffs-claims">The Plaintiff&rsquo;s Claims</h3><p>The violations of LGPL-2.1 by AVM that Sebastian Steck raised in the complaint are as follows:</p><ol><li><p>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.</p></li><li><p>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.</p></li><li><p>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.</p></li><li><p>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&rsquo;s operating system and functionality, and being unable to build one effectively means the software cannot be modified and reinstalled.</p></li></ol><p>Steck argued that these matters infringe on &ldquo;user software freedom,&rdquo; 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.</p><blockquote><p>[Note] An excerpt from the<a href="https://sfconservancy.org/static/docs/avm-Complaint_Klageschrift_EN.pdf">complaint</a> disclosed by SFC:</p><p>&ldquo;The information required for the reinstallation of the compiled program libraries on the Fritz!Box (&ldquo;installation script&rdquo;) 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 &ldquo;fleetingly [volatile].&rdquo; 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.&rdquo;</p></blockquote><h2 id="3-summary-of-the-ruling">3. Summary of the Ruling</h2><p>The ruling includes a decision on litigation costs and specifies that AVM must pay Steck&rsquo;s attorney&rsquo;s fees. This reflects the economic value and importance of open source license compliance issues. AVM decided not to appeal this decision.</p><h2 id="4-implications-and-various-interpretations">4. Implications and Various Interpretations</h2><ol><li><p><strong>LGPL-2.1&rsquo;s obligation to provide installation information</strong>:
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.</p></li><li><p><strong>Strengthening of users&rsquo; legal rights</strong>:
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.</p></li><li><p><strong>Improved self-correcting capacity of the open source ecosystem</strong>:
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.</p></li><li><p><strong>Expanded scope of corporate responsibility</strong>:
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.</p></li><li><p><strong>Reconfirming the importance of open source license compliance</strong>:
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.</p></li><li><p><strong>Existence of various interpretations</strong>:
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.</p></li></ol><p>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.</p>
]]></content:encoded></item><item><title>Key Points of the EU's Three Major Digital Regulations That Korean Software Companies Need to Know</title><link>https://haksungjang.github.io/en/blog/2024/11/12/key-points-of-the-eus-three-major-digital-regulations-that-korean-software-companies-need-to-know/</link><pubDate>Tue, 12 Nov 2024 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2024/11/12/key-points-of-the-eus-three-major-digital-regulations-that-korean-software-companies-need-to-know/</guid><description>Introduction 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:
Access to the EU market: The EU is one of the largest single markets in the world, and many Korean companies aim to enter it. Failure to comply with these laws can restrict access to the EU market. Setting a global standard: EU regulation tends to become a de facto global standard. This is the so-called &amp;lsquo;Brussels effect&amp;rsquo;, and other countries are likely to introduce similar regulations. Expanded corporate liability: These laws significantly expand the scope of corporate liability. In particular, the strict liability principle under the PLD could pose a new challenge for Korean companies. Important perspectives for Korean companies to keep in mind when approaching these laws include the following:</description><content:encoded>&lt;![CDATA[<h2 id="introduction">Introduction</h2><p>Three major pieces of legislation the European Union (EU) has recently introduced carry very significant implications for Korean companies. The<a href="https://ec.europa.eu/info/business-economy-euro/doing-business-eu/contract-rules/digital-contracts/liability-rules-artificial-intelligence_en">Product Liability Directive (PLD)</a>, the<a href="https://digital-strategy.ec.europa.eu/en/library/cyber-resilience-act">Cyber Resilience Act (CRA)</a>, and the<a href="https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai">AI Act</a> present a comprehensive regulatory framework governing the development, deployment, and use of software and AI systems.</p><p>These pieces of legislation matter to Korean companies for the following reasons:</p><ol><li><strong>Access to the EU market</strong>: The EU is one of the largest single markets in the world, and many Korean companies aim to enter it. Failure to comply with these laws can restrict access to the EU market.</li><li><strong>Setting a global standard</strong>: EU regulation tends to become a de facto global standard. This is the so-called &lsquo;<a href="https://en.wikipedia.org/wiki/Brussels_effect">Brussels effect</a>&rsquo;, and other countries are likely to introduce similar regulations.</li><li><strong>Expanded corporate liability</strong>: These laws significantly expand the scope of corporate liability. In particular, the strict liability principle under the PLD could pose a new challenge for Korean companies.</li></ol><p>Important perspectives for Korean companies to keep in mind when approaching these laws include the following:</p><ul><li><strong>Proactive response</strong>: Companies should prepare in advance of the laws taking effect in order to secure a competitive advantage.</li><li><strong>Integrated approach</strong>: Rather than viewing each law individually, companies should recognize them as a single, overall shift in the regulatory environment.</li><li><strong>Balancing innovation and regulatory compliance</strong>: Care must be taken not to stifle innovation in the process of complying with regulation.</li></ul><p>Now let&rsquo;s look at the key content of each law.</p><h2 id="1-product-liability-directive-pld">1. Product Liability Directive (PLD)</h2><h3 id="11-overview">1.1 Overview</h3><p>The<a href="https://ec.europa.eu/info/business-economy-euro/doing-business-eu/contract-rules/digital-contracts/liability-rules-artificial-intelligence_en">Product Liability Directive (PLD)</a> aims to modernize the EU&rsquo;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.</p><h3 id="12-key-changes">1.2 Key Changes</h3><ol><li><strong>Inclusion of software in the definition of a product</strong>: The PLD expands the definition of a &ldquo;product&rdquo; to explicitly include software. This applies to all kinds of software, including operating systems, firmware, computer programs, applications, and AI systems.</li><li><strong>Strict liability principle</strong>: The PLD introduces the principle of &lsquo;<a href="https://en.wikipedia.org/wiki/Strict_liability">strict liability</a>&rsquo;. This means that a manufacturer can be held liable for damage caused by a defect in a product even without fault.</li><li><strong>Expanded scope of damage</strong>: The PLD expands the scope of damage to include not only harm to persons or property but also data corruption.</li></ol><h3 id="13-scope-of-application">1.3 Scope of Application</h3><p>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.</p><h3 id="14-key-obligations">1.4 Key Obligations</h3><table><thead><tr><th>Obligation</th><th>Description</th></tr></thead><tbody><tr><td>Documentation and information provision</td><td>Manufacturers must provide accurate documentation on the product&rsquo;s functionality, safety, and regulatory compliance.</td></tr><tr><td>Continuous monitoring</td><td>Manufacturers must continue to monitor the product even after it is placed on the market, and provide updates as needed.</td></tr><tr><td>Risk assessment and management</td><td>Manufacturers must establish a risk assessment and management system spanning the product&rsquo;s entire lifecycle.</td></tr></tbody></table><h3 id="15-implementation-timeline">1.5 Implementation Timeline</h3><p>The PLD is expected to be published in November 2024, with penalties applying from 2026, two years later.</p><h3 id="16-impact-on-companies">1.6 Impact on Companies</h3><ol><li><strong>Expanded scope of liability</strong>: Software companies must now take responsibility for all kinds of damage their products could cause. This includes not only physical harm but also data loss or privacy breaches.</li><li><strong>Changes to product design and development processes</strong>: Companies must consider safety and security from the product design stage onward. This means applying the &lsquo;<a href="https://en.wikipedia.org/wiki/Secure_by_design">Security by Design</a>&rsquo; principle.</li><li><strong>Stronger documentation and transparency</strong>: Companies must provide more detailed and clear documentation regarding a product&rsquo;s functionality, risks, safety features, and more.</li><li><strong>Continuous monitoring and updates</strong>: Companies must continue to monitor products after they are placed on the market and provide security updates where necessary.</li></ol><h2 id="2-cyber-resilience-act-cra">2. Cyber Resilience Act (CRA)</h2><p><img src="/blog/2024/11/12/%ED%95%9C%EA%B5%AD-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B8%B0%EC%97%85%EC%9D%B4-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0-eu%EC%9D%98-3%EB%8C%80-%EB%94%94%EC%A7%80%ED%84%B8-%EA%B7%9C%EC%A0%9C-%ED%95%B5%EC%8B%AC-%EB%82%B4%EC%9A%A9/featured_CRA.png" alt="Featured image for the EU’s three major digital regulations, including the Cyber Resilience Act (CRA)"/><h3 id="21-overview">2.1 Overview</h3><p>The<a href="https://digital-strategy.ec.europa.eu/en/library/cyber-resilience-act">Cyber Resilience Act (CRA)</a> 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.</p><h3 id="22-scope-of-application">2.2 Scope of Application</h3><p>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.</p><h3 id="23-key-requirements">2.3 Key Requirements</h3><ol><li><strong>Essential cybersecurity requirements</strong>: Manufacturers must develop, produce, and distribute products that meet &ldquo;essential cybersecurity requirements&rdquo; appropriate to the product&rsquo;s risk.</li><li><strong>Cybersecurity risk assessment</strong>: Manufacturers must carry out a cybersecurity risk assessment related to the PDE. This assessment must be updated throughout the support period and considered across the entire product lifecycle.</li><li><strong>Vulnerability management</strong>: PDEs must be placed on the market free of known vulnerabilities, and security updates for vulnerabilities must be provided without delay. Resolved vulnerabilities must also be publicly disclosed.</li><li><strong>Support period</strong>: A product&rsquo;s support period must correspond to its expected duration of use and must be at least 5 years. The end date of the support period (month and year) must be accessible to the user at the time of purchase.</li><li><a href="https://www.cisa.gov/sbom"><strong>Software Bill of Materials (SBOM)</strong></a>: Manufacturers must identify and document the product&rsquo;s components and vulnerabilities. This includes, at minimum, preparing a Software Bill of Materials (SBOM) covering the product&rsquo;s top-level dependencies.</li><li><strong>Testing</strong>: Manufacturers must regularly test the security of their products.</li><li><strong>Vulnerability reporting</strong>: Manufacturers must establish a vulnerability reporting policy and make it publicly available.</li></ol><h3 id="24-implementation-timeline">2.4 Implementation Timeline</h3><p>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.</p><h3 id="25-impact-on-companies">2.5 Impact on Companies</h3><table><thead><tr><th>Impact</th><th>Description</th></tr></thead><tbody><tr><td>Changes to product design and development processes</td><td>Companies must consider cybersecurity from the product design stage onward. This means applying the &lsquo;<a href="https://en.wikipedia.org/wiki/Secure_by_design">Security by Design</a>&rsquo; principle.</td></tr><tr><td>Stronger documentation and transparency</td><td>Companies must provide more detailed and clear documentation regarding a product&rsquo;s security features, vulnerabilities, SBOM, and more.</td></tr><tr><td>Continuous monitoring and updates</td><td>Companies must continue to monitor products after they are placed on the market and provide security updates where necessary.</td></tr><tr><td>Improved vulnerability management processes</td><td>Companies must build processes to quickly identify, assess, and resolve vulnerabilities.</td></tr></tbody></table><h3 id="26-company-response-measures">2.6 Company Response Measures</h3><ol><li><strong>Adopt security-focused design</strong>: Introduce a design methodology that considers security from the earliest stage of product development.</li><li><strong>Build an SBOM management system</strong>: Build a system to track and manage all software components used in a product.</li><li><strong>Improve vulnerability management processes</strong>: Establish a system to quickly discover and respond to vulnerabilities.</li><li><strong>Establish a long-term support plan</strong>: Establish a long-term support plan that takes the product&rsquo;s expected lifetime into account.</li><li><strong>Strengthen security testing</strong>: Introduce a regular, systematic security testing process.</li><li><strong>Improve documentation and reporting systems</strong>: Build a detailed documentation and reporting system that meets CRA requirements.</li><li><strong>Train personnel and build capacity</strong>: Hire cybersecurity experts or build up the capacity of existing staff.</li></ol><p>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.</p><h2 id="3-ai-act">3. AI Act</h2><h3 id="31-overview">3.1 Overview</h3><p>The<a href="https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai">AI Act</a> is the EU&rsquo;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.</p><h3 id="32-classification-of-ai-systems">3.2 Classification of AI Systems</h3><p>The AI Act classifies AI systems by risk level as follows:</p><ol><li>Unacceptable risk</li><li>High risk</li><li>Limited risk</li><li>Minimal risk</li></ol><h3 id="33-key-requirements">3.3 Key Requirements</h3><ol><li><strong>Requirements for high-risk AI systems</strong>: High-risk AI systems must comply with the following strict obligations before being placed on the market:<ul><li>An adequate risk assessment and mitigation system</li><li>High-quality datasets to minimize risk and discriminatory outcomes</li><li>Activity logging to ensure traceability of results</li><li>Detailed documentation providing authorities with all the information needed to assess compliance</li><li>Clear and adequate information provided to deployers</li><li>Appropriate human oversight measures to minimize risk</li><li>A high level of robustness, security, and accuracy</li></ul></li><li><strong>Requirements for limited-risk AI systems</strong>: Specific transparency obligations apply to limited-risk AI systems. For example, when using a<a href="https://en.wikipedia.org/wiki/Chatbot">chatbot</a>, users must be aware that they are interacting with a machine.</li><li><strong>Requirements for General-Purpose AI models</strong>: Transparency obligations apply to General-Purpose AI models. Additional risk management obligations apply to particularly powerful and influential models.</li></ol><h3 id="34-implementation-timeline">3.4 Implementation Timeline</h3><p>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:</p><ul><li>Prohibitions apply after 6 months</li><li>Governance rules and obligations for General-Purpose AI models apply after 12 months</li><li>Rules for AI systems embedded in regulated products apply after 36 months</li></ul><h3 id="35-impact-on-companies">3.5 Impact on Companies</h3><table><thead><tr><th>Impact</th><th>Description</th></tr></thead><tbody><tr><td>Classification and assessment of AI systems</td><td>Companies must assess which risk category their AI systems fall under and comply with the requirements applicable to that category.</td></tr><tr><td>Strict management of high-risk AI systems</td><td>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.</td></tr><tr><td>Stronger transparency</td><td>Transparency is strengthened for all AI systems. In particular, when using technologies such as chatbots or<a href="https://en.wikipedia.org/wiki/Deepfake">deepfakes</a>, users must be clearly informed.</td></tr><tr><td>Additional obligations for General-Purpose AI models</td><td>Companies that develop General-Purpose AI models must comply with additional transparency and risk management obligations.</td></tr><tr><td>Consideration of international competitiveness</td><td>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&rsquo;s high AI standards can serve as a competitive advantage in the global market.</td></tr><tr><td>Promoting ethical AI development</td><td>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.</td></tr><tr><td>Building an AI governance framework</td><td>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.</td></tr></tbody></table><h3 id="36-company-response-measures-to-prepare-for-implementation">3.6 Company Response Measures to Prepare for Implementation</h3><ol><li><strong>Assess and classify AI systems</strong>: Companies must assess their AI systems and classify them according to the risk categories under the AI Act. This allows them to identify the regulatory requirements applicable to each system.</li><li><strong>Establish a regulatory compliance roadmap</strong>: Companies must establish a phased regulatory compliance roadmap aligned with the AI Act&rsquo;s implementation timeline. This should include the necessary resource allocation, process improvements, and technology development.</li><li><strong>Secure and train specialized personnel</strong>: Companies must secure specialized personnel for AI regulatory compliance and train existing employees. This should cover expertise across various fields, including law, technology, and ethics.</li><li><strong>Improve documentation and reporting systems</strong>: Companies must thoroughly document the development, testing, deployment, and monitoring processes of AI systems, and build a system to report to regulators as needed.</li><li><strong>Strengthen stakeholder communication</strong>: Companies must actively communicate with customers, partners, investors, and other stakeholders about the impact of the AI Act and the company&rsquo;s response measures.</li></ol><h3 id="37-key-features-and-significance-of-the-ai-act">3.7 Key Features and Significance of the AI Act</h3><ul><li><strong>Risk-based approach</strong>: The AI Act adopts an approach that varies the intensity of regulation according to the risk level of the AI system. This is a balanced approach that allows necessary regulation to be applied without stifling innovation.</li><li><strong>Strengthened transparency and accountability</strong>: This law significantly strengthens transparency and accountability throughout the development and use of AI systems. This is expected to help increase social trust in AI.</li><li><strong>Promoting ethical AI development</strong>: By requiring AI systems to respect<a href="https://european-union.europa.eu/principles-countries-history/principles-and-values/aims-and-values_en">the EU&rsquo;s fundamental values and rights</a>, the AI Act promotes ethical and responsible AI development.</li><li><strong>Setting a global standard</strong>: EU AI regulation is likely to become a global standard. This can be an opportunity for EU companies to gain competitiveness in the global market.</li></ul><p>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.</p><h2 id="4-interrelationship-among-the-three-laws">4. Interrelationship Among the Three Laws</h2><p>The EU&rsquo;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.</p><h3 id="41-common-regulatory-purposes">4.1 Common Regulatory Purposes</h3><table><thead><tr><th>Law</th><th>Main Purpose</th></tr></thead><tbody><tr><td>PLD</td><td>Ensuring the safety of digital products and strengthening consumer protection</td></tr><tr><td>CRA</td><td>Strengthening the cybersecurity of digital products</td></tr><tr><td>AI Act</td><td>Ensuring the safety, transparency, and accountability of AI systems</td></tr></tbody></table><p>All three laws share the common goal of increasing the safety and reliability of digital technology.</p><h3 id="42-overlapping-scope-of-application">4.2 Overlapping Scope of Application</h3><p>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:</p><ul><li>PLD: from a product liability perspective</li><li>CRA: cybersecurity requirements</li><li>AI Act: regulation of AI functionality</li></ul><h3 id="43-the-need-for-an-integrated-approach">4.3 The Need for an Integrated Approach</h3><p>Rather than responding to these laws individually, companies should adopt an integrated approach. This offers the following benefits:</p><ol><li>Avoiding duplicated work</li><li>Establishing a consistent regulatory compliance strategy</li><li>Efficient use of resources</li><li>Strengthened overall risk management</li></ol><h2 id="5-recommendations-for-korean-companies">5. Recommendations for Korean Companies</h2><p>The following are key recommendations for Korean companies to consider in responding to the EU&rsquo;s new regulatory environment.</p><h3 id="51-form-a-regulatory-compliance-task-force">5.1 Form a Regulatory Compliance Task Force</h3><ul><li>Form a multidisciplinary team of legal, technical, and business experts</li><li>Assign this team the role of continuously monitoring and analyzing EU regulatory trends</li><li>Build a system for smooth communication and cooperation with other departments within the company</li></ul><h3 id="52-review-the-product-and-service-portfolio">5.2 Review the Product and Service Portfolio</h3><ul><li>Assess whether current and upcoming products/services are subject to EU regulation</li><li>Identify the specific regulatory requirements applicable to each product/service</li><li>Establish a plan to redesign or improve products/services as needed</li></ul><h3 id="53-strengthen-documentation-and-transparency">5.3 Strengthen Documentation and Transparency</h3><ul><li>Build a detailed documentation system covering the product development, testing, and deployment process</li><li>Introduce a process for preparing and managing an<a href="https://www.cisa.gov/sbom">SBOM (Software Bill of Materials)</a></li><li>Develop a way to explain the decision-making process of AI systems</li></ul><h3 id="54-strengthen-the-risk-management-framework">5.4 Strengthen the Risk Management Framework</h3><ul><li>Establish a risk assessment and management process spanning the entire product lifecycle</li><li>Build a system for continuous monitoring of and response to cybersecurity risk</li><li>Introduce an ethical impact assessment for AI systems</li></ul><h3 id="55-build-human-capacity">5.5 Build Human Capacity</h3><ul><li>Hire or develop experts on EU regulation</li><li>Run EU regulatory training programs for employees</li><li>Build cooperative relationships with external experts and consulting firms</li></ul><h3 id="56-reassess-rd-and-innovation-strategy">5.6 Reassess R&amp;D and Innovation Strategy</h3><ul><li>Redesign the R&amp;D process with regulatory compliance in mind</li><li>Apply the &lsquo;<a href="https://en.wikipedia.org/wiki/Secure_by_design">Security by Design</a>&rsquo; and &lsquo;<a href="https://en.wikipedia.org/wiki/Privacy_by_design">Privacy by Design</a>&rsquo; principles</li><li>Establish guidelines for ethical AI development</li></ul><h3 id="57-adjust-the-business-model-and-strategy">5.7 Adjust the Business Model and Strategy</h3><ul><li>Analyze the impact of EU regulation on the business model</li><li>Adjust the business model or develop a new revenue model as needed</li><li>Reassess the strategy for entering or expanding in the EU market</li></ul><h3 id="58-strengthen-stakeholder-communication">5.8 Strengthen Stakeholder Communication</h3><ul><li>Regularly share the status of EU regulatory response with customers, partners, investors, and other stakeholders</li><li>Emphasize the improvement in product/service safety and reliability achieved through regulatory compliance</li><li>Where necessary, seek understanding regarding increased costs resulting from regulatory compliance</li></ul><h2 id="6-conclusion">6. Conclusion</h2><p>The EU&rsquo;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.</p><p>Companies that respond proactively to this regulation can gain the following benefits:</p><ol><li>Securing a competitive advantage in the EU market</li><li>Gaining the opportunity to lead global standards</li><li>Improving the quality and safety of products and services</li><li>Enhancing customer trust</li><li>Securing long-term business sustainability</li></ol><p>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.</p><blockquote><p>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.</p></blockquote>
]]></content:encoded></item><item><title>To Mine or Not To Mine: A German Court's Ruling on the Copyright Dilemma of the AI Era</title><link>https://haksungjang.github.io/en/blog/2024/11/06/to-mine-or-not-to-mine-a-german-courts-ruling-on-the-copyright-dilemma-of-the-ai-era/</link><pubDate>Wed, 06 Nov 2024 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2024/11/06/to-mine-or-not-to-mine-a-german-courts-ruling-on-the-copyright-dilemma-of-the-ai-era/</guid><description>This post is based on JBB Rechtsanwält:innen&amp;rsquo;s blog post &amp;ldquo;To Mine or Not To Mine&amp;rdquo; (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.</description><content:encoded>&lt;![CDATA[<p>This post is based on JBB Rechtsanwält:innen&rsquo;s blog post &ldquo;To Mine or Not To Mine&rdquo; (<a href="https://jbb.de/to-mine-or-not-to-mine/">https://jbb.de/to-mine-or-not-to-mine/</a>) and is published to explain a recent German court ruling on text and data mining (TDM) and to share related knowledge.</p><blockquote><p>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.</p></blockquote><h2 id="background">Background</h2><p>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<a href="https://laion.ai/">LAION</a> (Large-scale Artificial Intelligence Open Network).</p><p><img src="/blog/2024/11/06/to-mine-or-not-to-mine-%EB%8F%85%EC%9D%BC-%EB%B2%95%EC%9B%90%EC%9D%B4-ai-%EC%8B%9C%EB%8C%80%EC%9D%98-%EC%A0%80%EC%9E%91%EA%B6%8C-%EB%94%9C%EB%A0%88%EB%A7%88%EC%97%90-%EB%82%B4%EB%A6%B0-%ED%8C%90%EA%B2%B0/featured_Laion.jpeg" alt="Featured image for the German LAION AI copyright ruling"/><p>An AI training dataset refers to a large collection of data used to train artificial intelligence models. The dataset called &lsquo;<a href="https://laion.ai/blog/laion-5b/">LAION-5B</a>&rsquo; consisted of about 5.8 billion images and their corresponding description text. Such datasets are used to improve an AI&rsquo;s ability to recognize and understand images.</p><h3 id="commoncrawl">CommonCrawl</h3><p>At the heart of this case is the nonprofit organization &lsquo;<a href="https://commoncrawl.org/">CommonCrawl</a>&rsquo;, which plays an important role. CommonCrawl regularly creates a &lsquo;backup&rsquo; or &lsquo;snapshot&rsquo; of the internet. It replicates, in text form, every webpage accessible through links.</p><ul><li>How CommonCrawl collects data:<ol><li>It replicates the text content of webpages.</li><li>It does not directly store non-text data such as images or videos.</li><li>Instead, it stores the source code of webpages, which includes links to such content.</li></ol></li></ul><p>CommonCrawl<a href="https://commoncrawl.org/latest-crawl">makes the datasets it collects available on its own website</a>. This dataset includes the &lsquo;source code&rsquo; of webpages, which researchers can use to analyze the structure and content of the internet.</p><h3 id="laions-data-processing">LAION&rsquo;s Data Processing</h3><p>LAION used this dataset provided by CommonCrawl to<a href="https://laion.ai/blog/laion-5b/#distributed-processing-of-common-crawl">create its own image dataset</a>. This process is as follows:</p><ol><li><p>Extracting image links from the CommonCrawl dataset: LAION filtered the CommonCrawl data to find only the links to image files.</p></li><li><p>Collecting additional information: LAION sought to collect not only image links but also additional information about each image. This additional information<a href="https://laion.ai/blog/laion-5b/#watermark-and-safety-inference">includes</a>:</p><ul><li>Image description</li><li>Presence of a watermark</li><li>Whether the image contains content harmful to minors</li></ul></li><li><p><a href="https://laion.ai/blog/laion-5b/#distributed-downloading-of-the-images">Downloading</a> 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.</p></li><li><p>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.</p></li></ol><p>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.</p><p>Kneschke argued that even though the terms of service of the website containing his photo prohibited automated content downloading, LAION&rsquo;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.</p><p>This case raised important legal and ethical questions about how to strike a balance between data collection and copyright protection in the AI era.</p><h2 id="the-start-of-the-lawsuit">The Start of the Lawsuit</h2><p>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&rsquo;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&rsquo; rights in the AI era.</p><h2 id="legal-issues">Legal Issues</h2><p>The core issues of this lawsuit are as follows:</p><ol><li><strong>The scope of application of the text and data mining (TDM) exception</strong>:
The TDM exception refers to a provision in copyright law that allows a copyrighted work to be used without the copyright holder&rsquo;s permission under certain conditions. This applies when large volumes of data need to be analyzed for research or technological development. In this lawsuit, the issue was whether creating a dataset for AI training falls under this exception. For example, it had to be determined whether automatically collecting and analyzing a website&rsquo;s text for research purposes constitutes copyright infringement, or whether it falls under this exception and is permitted.</li><li><strong>The definition of noncommercial scientific research purposes</strong>:
The issue was exactly what LAION&rsquo;s claimed &rsquo;noncommercial scientific research&rsquo; means, and whether its activities fall under this definition.</li><li><strong>The validity of the copyright holder&rsquo;s &lsquo;opt-out&rsquo; right</strong>:
&lsquo;Opt-out&rsquo; refers to the right of a copyright holder to refuse to have their work used for TDM. The issue was how this right can be exercised and what form of refusal is valid.</li></ol><h2 id="the-impact-of-the-eu-copyright-directive">The Impact of the EU Copyright Directive</h2><p>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:</p><ol><li>TDM for scientific research purposes (Article 3)<ul><li>Scope: Applies only to research organizations and cultural heritage institutions.</li><li>Purpose: Permitted only for the purpose of scientific research.</li><li>Authorization: No prior permission from the copyright holder is required, and no compensation of any kind is required.</li><li>Access condition: Applies only to data that can be legally accessed (e.g., subscriptions, licenses, free online content, etc.)</li><li>Restriction: Excludes institutions under the decisive influence of private companies.</li></ul></li><li>TDM for general purposes (Article 4)<ul><li>Scope: Applies to all individuals or organizations.</li><li>Purpose: Applies to TDM for any purpose (including commercial purposes).</li><li>Authorization: Applies only if the copyright holder has not explicitly reserved their rights.</li><li>Access condition: Applies only to data that can be legally accessed.<ul><li>Opt-out mechanism: The copyright holder can reserve their rights in an &lsquo;appropriate manner&rsquo; (e.g., in a machine-readable format for online content).</li></ul></li><li>Data retention: Copies may be retained for TDM purposes.</li></ul></li></ol><p>Germany incorporated this directive into domestic law and amended its Copyright Act as follows:</p><ul><li>Section 44b: Established a new exception for TDM for general purposes. This provision permits TDM for any purpose, including commercial purposes, but recognizes the copyright holder&rsquo;s right to explicitly opt out.</li><li>Section 60d: Expanded the existing exception for TDM for scientific research purposes. This provision grants broader freedom for TDM for noncommercial scientific research purposes and does not recognize the copyright holder&rsquo;s opt-out right.</li></ul><h2 id="the-ruling">The Ruling</h2><p>On September 27, 2024, the Hamburg Regional Court ruled that LAION&rsquo;s conduct did not constitute copyright infringement. The main points of the ruling are as follows:</p><ol><li>LAION&rsquo;s dataset creation activity falls under TDM for noncommercial scientific research purposes under Section 60d of the German Copyright Act.</li><li>The mere fact that LAION has a cooperative relationship with commercial companies does not negate its noncommercial nature.</li><li>A TDM prohibition phrase written in natural language in a website&rsquo;s terms of service can also be regarded as an opt-out in a &lsquo;machine-readable format&rsquo;.</li></ol><h2 id="significance-of-the-ruling">Significance of the Ruling</h2><ol><li><strong>A broad interpretation of the TDM exception</strong>:<ul><li>The court recognized LAION&rsquo;s image dataset construction activity as TDM for noncommercial scientific research purposes.</li><li>This means that modern research methods, such as building AI training datasets, can also fall under the TDM exception.</li><li>This interpretation could provide greater freedom for AI research and development.</li></ul></li><li><strong>An expanded definition of noncommercial research</strong>:<ul><li>The court determined that the fact that LAION has a cooperative relationship with commercial companies does not negate its noncommercial nature.</li><li>This could strengthen legal protection for collaborative research between academia and industry.</li><li>Not only pure academic research but also industry-academia collaboration projects can now benefit from the TDM exception.</li></ul></li><li><strong>A new interpretation of the opt-out mechanism</strong>:
Although the opt-out did not apply in this case because LAION&rsquo;s activity was recognized as TDM for noncommercial scientific research purposes, this determination carries important meaning in a broader context:<ul><li>Flexibility of legal interpretation: The court flexibly interpreted the requirement of a &lsquo;machine-readable format&rsquo; in line with technological developments. This shows that the law can adapt to a rapidly changing technological environment.</li><li>Impact on future commercial TDM: Although not applied in this case, this interpretation could carry significant meaning for commercial TDM, because a copyright holder&rsquo;s opt-out is valid for commercial TDM.</li><li>Guidance for copyright holders: This ruling provides guidance to copyright holders that, if they wish to exclude their content from TDM, they can specify this clearly in their website&rsquo;s terms of service.</li><li>Impact on technology companies: AI and data mining companies may now need to review website terms of service more carefully.</li></ul></li><li><strong>Balance between copyright law and technological innovation</strong>:<ul><li>This ruling can be seen as an attempt to strike a balance between copyright protection and promoting technological innovation.</li><li>It provided the legal space needed for the advancement of AI and data science, without completely disregarding the copyright holder&rsquo;s rights.</li></ul></li></ol><h2 id="future-outlook">Future Outlook</h2><p>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.</p><p>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.</p><h2 id="implications-for-domestic-ai-companies">Implications for Domestic AI Companies</h2><p>Although this ruling is a German case, it also offers important implications for domestic AI companies:</p><ol><li><strong>Commercial TDM</strong>: While this ruling focuses on noncommercial research, it suggests that commercial TDM may also be permitted under certain conditions. However, for commercial TDM, the copyright holder&rsquo;s opt-out right must be respected.</li><li><strong>Data collection methods</strong>: AI companies must carefully check a website&rsquo;s terms of service when collecting data. If a provision explicitly prohibits TDM, this may need to be respected.</li><li><strong>Research collaboration</strong>: Companies could consider building datasets through collaboration with nonprofit research institutions. This could be a way to secure the necessary data while reducing legal risk.</li><li><strong>Transparency and ethics</strong>: It is important to maintain transparency about data use in the AI model development process and to establish ethical guidelines. This can help prevent potential legal disputes.</li><li><strong>Preparing for domestic legal amendments</strong>: Laws similar to the EU Copyright Directive may also be discussed domestically. AI companies need to review their data collection and use policies in advance and adjust them as necessary to prepare for such legal changes.</li></ol><p>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.</p>
]]></content:encoded></item><item><title>A Chinese Copyright Infringement Case: "Since GPL-Based Software Products Already Have an Obligation to Disclose Source Anyway, Isn't It Fine to Copy Them?"</title><link>https://haksungjang.github.io/en/blog/2024/09/23/a-chinese-copyright-infringement-case-since-gpl-based-software-products-already-have-an-obligation-to-disclose-source-anyway-isnt-it-fine-to-copy-them/</link><pubDate>Mon, 23 Sep 2024 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2024/09/23/a-chinese-copyright-infringement-case-since-gpl-based-software-products-already-have-an-obligation-to-disclose-source-anyway-isnt-it-fine-to-copy-them/</guid><description>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.
Parties to the Lawsuit Plaintiff: Wangjing Technology (Wangjing) Defendants: Yibang Communication Technology (Yibang) Qi&amp;rsquo;ao Network Technology (Qi&amp;rsquo;ao) and three individuals (Liu, Wu, Xie) Overview of the Case In 2009, Wangjing developed a converged communication smart gateway product called &amp;ldquo;OfficeTen.&amp;rdquo;</description><content:encoded>&lt;![CDATA[<p>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.</p><h2 id="parties-to-the-lawsuit">Parties to the Lawsuit</h2><ul><li>Plaintiff: Wangjing Technology (Wangjing)</li><li>Defendants:<ul><li>Yibang Communication Technology (Yibang)</li><li>Qi&rsquo;ao Network Technology (Qi&rsquo;ao)</li><li>and three individuals (Liu, Wu, Xie)</li></ul></li></ul><h2 id="overview-of-the-case">Overview of the Case</h2><p>In 2009, Wangjing developed a converged communication smart gateway product called &ldquo;OfficeTen.&rdquo;</p><p><img src="/blog/2024/09/23/%EC%A4%91%EA%B5%AD-%EC%A0%80%EC%9E%91%EA%B6%8C-%EC%B9%A8%ED%95%B4-%EC%86%8C%EC%86%A1-%EC%82%AC%EB%A1%80-gpl-%EA%B8%B0%EB%B0%98-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%A0%9C%ED%92%88%EC%9D%80-%EC%96%B4%EC%B0%A8%ED%94%BC-%EC%86%8C%EC%8A%A4-%EA%B3%B5%EA%B0%9C-%EC%9D%98%EB%AC%B4%EA%B0%80-%EC%9E%88%EC%9C%BC%EB%8B%88-%EB%B0%B0%EA%BB%B4%EB%8F%84-%EB%90%98%EB%8A%94-%EA%B2%83-%EC%95%84%EB%8B%8C%EA%B0%80%EC%9A%94/1800.png" alt=""/><blockquote><p>OfficeTen SDG 1800 by Wangjing -<a href="http://www.cncr-it.com/product_detail.php?sid=26&amp;cid=133&amp;id=388">http://www.cncr-it.com/product_detail.php?sid=26&amp;cid=133&amp;id=388</a></p></blockquote><p>The &ldquo;OfficeTen1800&rdquo; software embedded in this product was developed based on the open source framework &ldquo;OpenWRT,&rdquo; and obtained a copyright registration certificate from the National Copyright Administration in 2013.</p><p>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 &ldquo;independent and separate program&rdquo; from the OpenWRT system.</p><p><img src="/blog/2024/09/23/%EC%A4%91%EA%B5%AD-%EC%A0%80%EC%9E%91%EA%B6%8C-%EC%B9%A8%ED%95%B4-%EC%86%8C%EC%86%A1-%EC%82%AC%EB%A1%80-gpl-%EA%B8%B0%EB%B0%98-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%A0%9C%ED%92%88%EC%9D%80-%EC%96%B4%EC%B0%A8%ED%94%BC-%EC%86%8C%EC%8A%A4-%EA%B3%B5%EA%B0%9C-%EC%9D%98%EB%AC%B4%EA%B0%80-%EC%9E%88%EC%9C%BC%EB%8B%88-%EB%B0%B0%EA%BB%B4%EB%8F%84-%EB%90%98%EB%8A%94-%EA%B2%83-%EC%95%84%EB%8B%8C%EA%B0%80%EC%9A%94/featured_openwrt.png" alt="Featured image for the GPL-based software copyright infringement lawsuit case"/><p>In 2015, Wangjing began an investigation after suspecting that a competitor, Yibang&rsquo;s product infringed its copyright. The investigation found that former Wangjing employees had provided the source code of &ldquo;OfficeTen1800&rdquo; to Qi&rsquo;ao, helping it develop very similar software, and that this software was used in Yibang&rsquo;s product.</p><p>According to the appraisal, the proportion of identical non-open-source code between Wangjing&rsquo;s &ldquo;OfficeTen1800&rdquo; and the software used in Yibang&rsquo;s product reached 90.2%, and Wangjing&rsquo;s special marks were found in Yibang&rsquo;s product.</p><h2 id="progress-of-the-lawsuit">Progress of the Lawsuit</h2><p>In July 2018, Wangjing filed a software copyright infringement lawsuit against Yibang and Qi&rsquo;ao. Wangjing demanded that the infringement be stopped and sought damages of 3 million yuan.</p><h3 id="the-defendants-arguments">The Defendants&rsquo; Arguments</h3><p>Yibang and Qi&rsquo;ao denied the infringement and argued as follows:</p><ol><li>&ldquo;OfficeTen1800&rdquo; was developed based on the open source framework &ldquo;OpenWRT.&rdquo;</li><li>&ldquo;OpenWRT&rdquo; is subject to the constraints of the GPLv2 license.</li><li>Wangjing&rsquo;s failure to disclose the source code of &ldquo;OfficeTen1800&rdquo; was a violation of GPLv2.</li><li>Therefore, Wangjing cannot claim copyright over the software.</li></ol><h2 id="the-courts-ruling">The Court&rsquo;s Ruling</h2><h3 id="first-instance-judgment">First-Instance Judgment</h3><p>The Suzhou Intermediate People&rsquo;s Court ruled as follows:</p><ol><li>Even where a developer modified or made secondary development of an open source product, if it created an original work, it holds copyright in that work.</li><li>It cannot be concluded that all related software must be disclosed under the GPLv2 agreement.</li></ol><p>Accordingly, the court found Yibang and Qi&rsquo;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).</p><h3 id="the-supreme-peoples-courts-ruling">The Supreme People&rsquo;s Court&rsquo;s Ruling</h3><p>Yibang and Qi&rsquo;ao appealed, but the Supreme People&rsquo;s Court upheld the original judgment. The Supreme People&rsquo;s Court&rsquo;s main findings were as follows:</p><ol><li>Since the parties in this case are not the rights holders of the &ldquo;OpenWRT&rdquo; system software, whether GPLv2 was complied with cannot be examined in this proceeding.</li><li>Whether Wangjing violated the GPLv2 agreement and its claim for damages for copyright infringement are separate matters.</li><li>The copyright arising from a software developer&rsquo;s original contribution must not be unreasonably deprived or restricted.</li></ol><h2 id="significance-of-the-ruling">Significance of the Ruling</h2><p>This ruling offers important implications for the copyright protection of derivative works based on open source software.</p><ol><li><strong>Recognition of Originality</strong>: The court held that even a derivative work based on open source software can be subject to copyright protection if the developer made an original contribution.</li><li><strong>Separation of License Violation from Copyright Protection</strong>: The court treated the question of GPLv2 license violation and the claim for damages for copyright infringement as separate matters. This means that even if there is a license violation, the copyright itself can still be valid.</li><li><strong>Prevention of Rights Abuse</strong>: By rejecting the defendants&rsquo; argument that &ldquo;it&rsquo;s fine to copy it since there&rsquo;s an obligation to disclose source anyway,&rdquo; the court prevented reckless copying that abuses the GPL license.</li><li><strong>Protection of the Open Source Ecosystem</strong>: By recognizing copyright in derivative works, the ruling encourages open-source-based innovation and promotes the healthy development of the open source ecosystem.</li></ol><h2 id="similarity-to-the-wordpress-theme-case">Similarity to the WordPress Theme Case</h2><p>In the Karlsruhe Higher Regional Court&rsquo;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:</p><ol><li>A distinction must be made based on whether the copyright holder of the (alleged) derivative work licensed that work under GPLv2.</li><li>The mere possibility of a copyleft violation is not sufficient to defeat a copyright claim.</li><li>Enforcement of GPLv2 is the licensor&rsquo;s responsibility, and it cannot be enforced merely because a user declares the software to be &ldquo;GPL licensed.&rdquo;</li><li>The copyleft effect does not automatically lead to GPL licensing. This is an act that the author of the derivative work must actively carry out.</li></ol><p>This finding aligns with the ruling of China&rsquo;s Supreme People&rsquo;s Court, and shows a converging trend in the international legal interpretation of GPL licenses and the rights to derivative works.</p><h2 id="implications-for-corporate-open-source-management">Implications for Corporate Open Source Management</h2><p>This ruling offers the following important implications for corporate open source managers:</p><ol><li><strong>Thorough License Compliance</strong>: When using open source software under a copyleft license such as GPL, the requirements of that license must be thoroughly complied with.</li><li><strong>Importance of Original Contribution</strong>: Even when developing based on an open source project, it is important to clearly identify and document original contributions.</li><li><strong>Source Code Management</strong>: Open source code and in-house developed code must be clearly separated and managed.</li><li><strong>Legal Risk Assessment</strong>: Legal risks that may arise from using open source should be assessed and prepared for in advance.</li><li><strong>Continuous Monitoring</strong>: The similarity between a company&rsquo;s own products and competitors&rsquo; products should be continuously monitored to detect potential copyright infringement early.</li></ol><h2 id="conclusion">Conclusion</h2><p>This ruling from the Chinese court, together with a similar ruling from a German court, clearly resolves the misconception that &ldquo;GPL-based software products already have an obligation to disclose source anyway, so isn&rsquo;t it fine to copy them?&rdquo; 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.</p><p>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.</p><p>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.</p><p>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&rsquo; effort and creativity, and pursuing innovation while complying with licenses, is the path to a healthy software ecosystem.</p><h2 id="references">References</h2><ol><li>2024-09-20 OpenWRT, the GPL and the Supreme People&rsquo;s Court of China:<a href="https://www.ifross.org/?q=node/1676">https://www.ifross.org/?q=node/1676</a></li><li>2023-12-29 Copyright dispute cases over derivative works based on open source code:<a href="https://www.copyright.or.kr/information-materials/trend/International-copyright-center/download.do?brdctsno=52544&amp;brdctsfileno=22493">https://www.copyright.or.kr/information-materials/trend/International-copyright-center/download.do?brdctsno=52544&brdctsfileno=22493</a></li></ol><div class="pageinfo pageinfo-primary"><p><em>This article was written together with Perplexity (<a href="https://www.perplexity.ai/">https://www.perplexity.ai/</a>).</em></p><p><em>SKT customers can use Perplexity Pro for free for one year:<a href="https://perplexity.sktadotevent.com/">https://perplexity.sktadotevent.com/</a></em></p><p><img src="/blog/2024/09/23/%EC%A4%91%EA%B5%AD-%EC%A0%80%EC%9E%91%EA%B6%8C-%EC%B9%A8%ED%95%B4-%EC%86%8C%EC%86%A1-%EC%82%AC%EB%A1%80-gpl-%EA%B8%B0%EB%B0%98-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%A0%9C%ED%92%88%EC%9D%80-%EC%96%B4%EC%B0%A8%ED%94%BC-%EC%86%8C%EC%8A%A4-%EA%B3%B5%EA%B0%9C-%EC%9D%98%EB%AC%B4%EA%B0%80-%EC%9E%88%EC%9C%BC%EB%8B%88-%EB%B0%B0%EA%BB%B4%EB%8F%84-%EB%90%98%EB%8A%94-%EA%B2%83-%EC%95%84%EB%8B%8C%EA%B0%80%EC%9A%94/perplexity.png" alt=""/></div>
]]></content:encoded></item><item><title>Introduction to SPDX 3.0 and Enterprise Adoption Strategy</title><link>https://haksungjang.github.io/en/blog/2024/09/06/introduction-to-spdx-3.0-and-enterprise-adoption-strategy/</link><pubDate>Fri, 06 Sep 2024 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2024/09/06/introduction-to-spdx-3.0-and-enterprise-adoption-strategy/</guid><description>1. Introduction to SPDX 3.0 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].
Definition and Purpose of SPDX 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:</description><content:encoded>&lt;![CDATA[<h2 id="1-introduction-to-spdx-30">1. Introduction to SPDX 3.0</h2><p>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].</p><p><img src="/blog/2024/09/06/spdx-3.0-%EC%86%8C%EA%B0%9C%EC%99%80-%EA%B8%B0%EC%97%85-%EB%8F%84%EC%9E%85-%EC%A0%84%EB%9E%B5/featured_SPDX30.png" alt="Featured image for SPDX 3.0"/><h3 id="definition-and-purpose-of-spdx">Definition and Purpose of SPDX</h3><p>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:</p><ul><li>Providing transparency of software components</li><li>Improving license compliance</li><li>Supporting security vulnerability management</li><li>Enhancing the reliability of the software supply chain</li></ul><h3 id="key-changes-in-spdx-30">Key Changes in SPDX 3.0</h3><p>SPDX 3.0 brings significant changes compared to previous versions:</p><ol><li><strong>Modular structure</strong>: SPDX 3.0 consists of a core model and multiple profiles, allowing it to flexibly address a variety of use cases.</li><li><strong>Improved extensibility</strong>: The new version makes it easy to add custom fields and relationships, enabling it to accommodate future requirements.</li><li><strong>Support for various profiles</strong>: It provides various profiles such as Software, Security, License, Build, and AI/ML to meet the requirements of specific domains.</li><li><strong>Enhanced data model</strong>: It can express relationships between entities more clearly, allowing complex software structures to be described more accurately.</li></ol><h3 id="significance-of-spdx-30">Significance of SPDX 3.0</h3><p>SPDX 3.0 is important for enterprise open source management for the following reasons:</p><ol><li><strong>Standardization of SBOM generation</strong>: It provides a standard format for generating a Software Bill of Materials (SBOM), facilitating information exchange between organizations.</li><li><strong>Support for regulatory compliance</strong>: It meets the SBOM minimum requirements of the US NTIA and complies with various international standards and regulations.</li><li><strong>Enhanced security</strong>: It improves vulnerability management through integration with CVE information and strengthens software supply chain security.</li><li><strong>Global standardization</strong>: It has been adopted as ISO/IEC 5962:2021, becoming an internationally recognized standard[2].</li></ol><p>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&rsquo;s software management processes and reduce risk.</p><p>Citations:<br>
[1]<a href="https://fossa.com/blog/understanding-using-spdx-license-identifiers-license-expressions/">https://fossa.com/blog/understanding-using-spdx-license-identifiers-license-expressions/</a><br>
[2]<a href="https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases">https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases</a><br>
[3]<a href="https://fossa.com/learn/spdx">https://fossa.com/learn/spdx</a><br>
[4]<a href="https://fossa.com/blog/sbom-examples-explained/">https://fossa.com/blog/sbom-examples-explained/</a><br>
[5]<a href="https://ossna2023.sched.com/">https://ossna2023.sched.com</a><br>
[6]<a href="https://ossna2023.sched.com/list/descriptions/">https://ossna2023.sched.com/list/descriptions/</a><br>
[7]<a href="https://fossa.com/blog/spdx-3-0/">https://fossa.com/blog/spdx-3-0/</a><br/><h2 id="2-key-features-of-spdx-30">2. Key Features of SPDX 3.0</h2><p>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:</p><h3 id="modular-structure">Modular Structure</h3><p>SPDX 3.0 introduces a modular structure that greatly improves flexibility and extensibility[1][5]. This structure consists of the following elements:</p><ul><li><strong>Core Model</strong>: Defines the core elements that form the basis of every SPDX document.</li><li><strong>Profiles</strong>: Provide additional information and functionality tailored to specific use cases.</li></ul><p>This modular approach allows users to selectively use only the information they need, reducing complexity and increasing efficiency.</p><h3 id="improved-extensibility">Improved Extensibility</h3><p>SPDX 3.0 is designed to make it easy to add custom fields and relationships[5]. This provides the following benefits:</p><ul><li>Ability to respond quickly to new technologies and requirements</li><li>Ability to easily incorporate industry-specific requirements</li><li>Ability to flexibly adapt to future changes in the software ecosystem</li></ul><h3 id="support-for-various-use-cases">Support for Various Use Cases</h3><p>SPDX 3.0 supports various use cases through six main profiles[7]:</p><ol><li><strong>Security Profile</strong>: Includes vulnerability information and security-related metadata</li><li><strong>License Profile</strong>: Provides detailed license information and compliance data</li><li><strong>AI Profile</strong>: Includes information related to AI model training and characterization</li><li><strong>Dataset Profile</strong>: Provides information on dataset provenance and characteristics</li><li><strong>Software Packaging Profile</strong>: Includes package structure and dependency information</li><li><strong>Build Process Profile</strong>: Provides detailed information about the software build process</li></ol><p>These profiles help software engineers, security experts, and legal and compliance professionals use SPDX more easily[7].</p><h3 id="enhanced-data-model">Enhanced Data Model</h3><p>SPDX 3.0 provides an enhanced data model that can express relationships between entities more clearly[1]. This enables:</p><ul><li>More accurate description of complex software structures</li><li>Clearer expression of dependencies between software components</li><li>More granular linking of security and license information</li></ul><h3 id="compliance-with-international-standards">Compliance with International Standards</h3><p>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:</p><ul><li>Generation of SBOMs in an internationally recognized format</li><li>Compliance with various regulatory requirements (e.g., US government EO 14028, EU Cyber Resilience Act)</li><li>Improved consistency and reliability of software information exchange between organizations</li></ul><p>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.</p><p>Citations:<br>
[1]<a href="https://scribesecurity.com/ko/blog/spdx-vs-cyclonedx-sbom-formats-compared/">https://scribesecurity.com/ko/blog/spdx-vs-cyclonedx-sbom-formats-compared/</a><br>
[2]<a href="https://github.com/spdx/spdx-3-model/releases">https://github.com/spdx/spdx-3-model/releases</a><br>
[3]<a href="https://olis.or.kr/license/licenseSPDX.do?mapcode=010107">https://olis.or.kr/license/licenseSPDX.do?mapcode=010107</a><br>
[4]<a href="https://ettrends.etri.re.kr/ettrends/203/0905203008/0905203008.html">https://ettrends.etri.re.kr/ettrends/203/0905203008/0905203008.html</a><br>
[5]<a href="https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases">https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases</a><br>
[6]<a href="https://www.prnewswire.com/news-releases/spdx-3-0-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases-302118321.html">https://www.prnewswire.com/news-releases/spdx-3-0-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases-302118321.html</a><br>
[7]<a href="https://www.gttkorea.com/news/articleView.html?idxno=5131">https://www.gttkorea.com/news/articleView.html?idxno=5131</a><br/><h2 id="3-spdx-30-profiles">3. SPDX 3.0 Profiles</h2><p>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.</p><h3 id="core-profile">Core Profile</h3><p>The Core Profile defines the core elements that form the basis of every SPDX document.</p><ul><li><strong>Key components</strong>:<ul><li>Element: The base class for all SPDX objects</li><li>Artifact: A class representing a software component</li><li>Agent: A class representing a person, organization, tool, etc.</li><li>Relationship: A class defining relationships between entities</li></ul></li><li><strong>Purpose</strong>: Provides the basic structure and information commonly used by all other profiles.</li><li><strong>Example use</strong>: Every SPDX document is built on the Core Profile, with information from other profiles added on top of it.</li></ul><h3 id="software-profile">Software Profile</h3><p>The Software Profile provides detailed information related to software packages.</p><ul><li><strong>Key components</strong>:<ul><li>Package: Information about a software package</li><li>File: Information about an individual file</li><li>Snippet: Information about a portion of a file</li></ul></li><li><strong>Purpose</strong>: Describes the structure, components, and metadata of software in detail.</li><li><strong>Example use</strong>: Used when documenting the structure and components of an open source library.</li></ul><h3 id="security-profile">Security Profile</h3><p>The Security Profile covers security-related information about software.</p><ul><li><strong>Key components</strong>:<ul><li>Vulnerability: Vulnerability information</li><li>Assessment: Vulnerability assessment information</li></ul></li><li><strong>Purpose</strong>: Provides information on software security vulnerabilities and related assessments.</li><li><strong>Example use</strong>: Used when including Common Vulnerabilities and Exposures (CVE) information in an SPDX document.</li></ul><h3 id="license-profile">License Profile</h3><p>The License Profile covers software license-related information in detail.</p><ul><li><strong>Key components</strong>:<ul><li>License: License information</li><li>LicenseExpression: Complex license expressions</li></ul></li><li><strong>Purpose</strong>: Describes software license information accurately and in detail.</li><li><strong>Example use</strong>: Used when documenting the license information of open source software.</li></ul><h3 id="build-profile">Build Profile</h3><p>The Build Profile provides information about the software build process.</p><ul><li><strong>Key components</strong>:<ul><li>BuildStep: Build step information</li><li>BuildTool: Build tool information</li></ul></li><li><strong>Purpose</strong>: Provides detailed information about how software is compiled and packaged.</li><li><strong>Example use</strong>: Used when documenting the build process of a CI/CD pipeline.</li></ul><h3 id="aiml-profile">AI/ML Profile</h3><p>The AI/ML Profile covers information specific to artificial intelligence and machine learning models.</p><ul><li><strong>Key components</strong>:<ul><li>AIModel: AI model information</li><li>Dataset: Training dataset information</li></ul></li><li><strong>Purpose</strong>: Describes the characteristics, training data, performance metrics, and other aspects of AI/ML models.</li><li><strong>Example use</strong>: Used when documenting the structure and training dataset of a deep learning model.</li></ul><p>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.</p><p>Citations:<br>
[1]<a href="https://spdx.dev/leveraging-profiles-for-license-compliance-insights-from-spdx-mini-summit/">https://spdx.dev/leveraging-profiles-for-license-compliance-insights-from-spdx-mini-summit/</a><br>
[2]<a href="https://spdx.dev/providing-transparency-at-software-developments-core-process-build-time/">https://spdx.dev/providing-transparency-at-software-developments-core-process-build-time/</a><br>
[3]<a href="https://spdx.github.io/spdx-spec/v2.3/SPDX-license-list/">https://spdx.github.io/spdx-spec/v2.3/SPDX-license-list/</a><br>
[4]<a href="https://spdx.dev/capturing-software-vulnerability-data-in-spdx-3-0/">https://spdx.dev/capturing-software-vulnerability-data-in-spdx-3-0/</a><br>
[5]<a href="https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases">https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases</a><br>
[6]<a href="https://spdx.dev/understanding-spdx-profiles/">https://spdx.dev/understanding-spdx-profiles/</a><br>
[7]<a href="https://github.com/spdx/spdx-3-model/actions">https://github.com/spdx/spdx-3-model/actions</a><br>
[8]<a href="https://spdx.github.io/spdx-spec/v3.0/model/AI/AI/">https://spdx.github.io/spdx-spec/v3.0/model/AI/AI/</a><br/><h2 id="4-spdx-30-data-model">4. SPDX 3.0 Data Model</h2><p>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.</p><h3 id="key-entities-and-relationships">Key Entities and Relationships</h3><ol><li><strong>Element</strong><ul><li>The base class for all major objects in SPDX 3.0.</li><li>Every Element has a unique SPDX ID.</li></ul></li><li><strong>Artifact</strong><ul><li>Represents a software component (e.g., package, file, snippet).</li><li>Includes attributes such as name, version, and supplier.</li></ul></li><li><strong>Agent</strong><ul><li>Represents an entity involved in creating the SPDX document, such as a person, organization, or tool.</li></ul></li><li><strong>Relationship</strong><ul><li>Defines relationships between entities (e.g., dependency, containment).</li><li>Specifies the source, target, and relationship type.</li></ul></li><li><strong>LifecycleScopedRelationship</strong><ul><li>Represents a relationship specific to a particular software lifecycle stage.</li></ul></li><li><strong>Annotation</strong><ul><li>Provides additional information or comments about an entity.</li></ul></li></ol><h3 id="identifier-scheme">Identifier Scheme</h3><p>SPDX 3.0 introduces a more robust and flexible identifier scheme:</p><ul><li><strong>SPDX ID</strong>: Provides a unique identifier for every Element.</li><li><strong>External identifiers</strong>: Can reference identifiers from other systems (e.g., CVE, PURL).</li><li><strong>Namespaces</strong>: Clarify the scope of identifiers and prevent collisions.</li></ul><h3 id="metadata-management">Metadata Management</h3><ol><li><strong>CreationInfo</strong><ul><li>Includes metadata about the SPDX document itself.</li><li>Provides information such as creation date, author, and tool version.</li></ul></li><li><strong>Profile-specific metadata</strong><ul><li>Defines metadata fields specific to each profile (Software, Security, License, etc.).</li></ul></li></ol><h3 id="extensibility-mechanisms">Extensibility Mechanisms</h3><ol><li><strong>Custom attributes</strong><ul><li>Can include additional user-defined attributes beyond the standard fields.</li></ul></li><li><strong>External references</strong><ul><li>Provides links to external systems or documents.</li></ul></li></ol><h3 id="data-types">Data Types</h3><p>SPDX 3.0 supports various data types:</p><ul><li>Strings, integers, booleans, date/time</li><li>Enumerations (e.g., license type, relationship type)</li><li>Composite types (e.g., version range, checksum)</li></ul><h3 id="serialization-formats">Serialization Formats</h3><p>The SPDX 3.0 data model can be serialized into various formats:</p><ul><li>JSON-LD</li><li>YAML</li><li>RDF</li><li>XML</li></ul><p>This support for multiple formats facilitates integration with other systems.</p><h3 id="profile-support">Profile Support</h3><p>The data model is designed to support various profiles:</p><ul><li>Core Profile: Basic elements common to every SPDX document</li><li>Software Profile: Information related to software packages</li><li>Security Profile: Vulnerability and security-related data</li><li>License Profile: Detailed license information</li><li>AI/ML Profile: Metadata related to AI models</li><li>Dataset Profile: Information related to datasets</li></ul><p>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.</p><h2 id="5-spdx-30-implementation-guide">5. SPDX 3.0 Implementation Guide</h2><p>This section provides a detailed guide for effectively implementing SPDX 3.0.</p><h3 id="tools-and-libraries">Tools and Libraries</h3><p>The main tools and libraries that support SPDX 3.0 are as follows:</p><ol><li><strong>SPDX Java Library</strong><ul><li>GitHub:<a href="https://github.com/spdx/tools-java">https://github.com/spdx/tools-java</a></li><li>Features: Parsing, generating, converting, and validating SPDX documents</li><li>Usage: Add as a Maven dependency for use in Java projects</li></ul></li><li><strong>SPDX Python Library</strong><ul><li>GitHub:<a href="https://github.com/spdx/tools-python">https://github.com/spdx/tools-python</a></li><li>Features: Parsing, generating, and validating SPDX documents</li><li>Characteristics: Provides experimental support for SPDX 3.0</li></ul></li><li><strong>SPDX Online Tools</strong><ul><li>Website:<a href="https://tools.spdx.org/">https://tools.spdx.org</a></li><li>Features: Web-based SPDX document generation and validation</li></ul></li><li><strong>FOSSology</strong><ul><li>GitHub:<a href="https://github.com/fossology/fossology">https://github.com/fossology/fossology</a></li><li>Features: An open source compliance tool that supports SPDX document generation</li></ul></li><li><strong>SPDX SBOM Generator</strong><ul><li>GitHub:<a href="https://github.com/opensbom-generator/spdx-sbom-generator">https://github.com/opensbom-generator/spdx-sbom-generator</a></li><li>Features: Generates SPDX SBOMs for projects in various programming languages</li></ul></li></ol><p>These tools can be used to generate, parse, and validate SPDX 3.0 documents.</p><h3 id="file-formats-json-yaml-rdf">File Formats (JSON, YAML, RDF)</h3><p>SPDX 3.0 supports various file formats:</p><ol><li><p><strong>JSON-LD</strong></p><ul><li><p>The most recommended format</p></li><li><p>Example:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@context"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"&lt;https://spdx.org/spdx-3.0-context.jsonld&gt;"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"SpdxDocument"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"Example SPDX 3.0 Document"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"elements"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"Package"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"ExamplePackage"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"version"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"1.0.0"</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">]</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div></li></ul></li><li><p><strong>YAML</strong></p><ul><li><p>A human-readable format</p></li><li><p>Example:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#000">---</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">$schema</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">&lt;https://spdx.org/spdx-3.0-schema.json&gt;</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">spdxVersion</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">SPDX-3.0</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">name</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">Example SPDX 3.0 Document</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">elements</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#204a87;font-weight:bold">type</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">Package</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">name</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">ExamplePackage</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">version</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#0000cf;font-weight:bold">1.0.0</span><span style="color:#f8f8f8"/></span></span></code></pre></div></li></ul></li><li><p><strong>RDF</strong></p><ul><li><p>Suitable for semantic web applications</p></li><li><p>Example:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;rdf:RDF</span><span style="color:#c4a000">xmlns:rdf=</span><span style="color:#4e9a06">"&lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;"</span></span></span><span style="display:flex;"><span><span style="color:#c4a000">xmlns:spdx=</span><span style="color:#4e9a06">"&lt;http://spdx.org/rdf/terms#&gt;"</span><span style="color:#204a87;font-weight:bold">&gt;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;spdx:SpdxDocument&gt;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;spdx:name&gt;</span>Example SPDX 3.0 Document<span style="color:#204a87;font-weight:bold">&lt;/spdx:name&gt;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;spdx:element&gt;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;spdx:Package&gt;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;spdx:name&gt;</span>ExamplePackage<span style="color:#204a87;font-weight:bold">&lt;/spdx:name&gt;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;spdx:versionInfo&gt;</span>1.0.0<span style="color:#204a87;font-weight:bold">&lt;/spdx:versionInfo&gt;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;/spdx:Package&gt;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;/spdx:element&gt;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;/spdx:SpdxDocument&gt;</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;/rdf:RDF&gt;</span></span></span></code></pre></div></li></ul></li></ol><p>Each format is suited to specific use cases, and developers can choose the appropriate format based on their project requirements.</p><h3 id="migrating-from-existing-spdx-2x">Migrating from Existing SPDX 2.x</h3><p>The process of migrating from SPDX 2.x to 3.0 is as follows:</p><ol><li><strong>Understand the structural changes</strong><ul><li>Familiarize yourself with the modular structure and profile concept of SPDX 3.0</li><li>Identify new fields and relationship types</li></ul></li><li><strong>Update tools</strong><ul><li>Upgrade to the latest versions of tools and libraries that support SPDX 3.0</li></ul></li><li><strong>Convert documents</strong><ul><li>Use the<code>spdx_tools.spdx3.bump_from_spdx2.spdx_document</code> module of the SPDX Python Library</li><li>Convert SPDX 2.x documents to 3.0 using the<code>bump_spdx_document()</code> function</li></ul></li><li><strong>Add new fields</strong><ul><li>Add fields newly introduced in SPDX 3.0 (e.g., AI/ML-related information)</li></ul></li><li><strong>Redefine relationships</strong><ul><li>Redefine existing relationships using the new relationship types in SPDX 3.0</li></ul></li><li><strong>Apply profiles</strong><ul><li>Select and apply the appropriate SPDX 3.0 profiles</li></ul></li><li><strong>Validate</strong><ul><li>Use SPDX 3.0 validation tools to verify the validity of the converted document</li></ul></li><li><strong>Test and integrate</strong><ul><li>Integrate and test the converted SPDX 3.0 document within the existing workflow</li></ul></li></ol><p>During the migration process, it is advisable to actively make use of SPDX community resources and documentation, and to seek expert help if needed.</p><p>By following this implementation guide, organizations can effectively adopt and utilize SPDX 3.0.</p><p>Citations:<br>
[1]<a href="https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases">https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases</a><br>
[2]<a href="https://www.youtube.com/watch?v=iqVk-Sek8Pc">https://www.youtube.com/watch?v=iqVk-Sek8Pc</a><br>
[3]<a href="https://github.com/spdx/Spdx-Java-Library">https://github.com/spdx/Spdx-Java-Library</a><br>
[4]<a href="https://spdx.github.io/spdx-spec/v3.0/annexes/diffs-from-previous-editions/">https://spdx.github.io/spdx-spec/v3.0/annexes/diffs-from-previous-editions/</a><br>
[5]<a href="https://github.com/spdx/spdx-3-model/releases">https://github.com/spdx/spdx-3-model/releases</a><br>
[6]<a href="https://spdx.dev/use/spdx-tools/">https://spdx.dev/use/spdx-tools/</a><br>
[7]<a href="https://github.com/spdx/tools-python/blob/main/README.md">https://github.com/spdx/tools-python/blob/main/README.md</a><br>
[8]<a href="https://fossa.com/learn/spdx">https://fossa.com/learn/spdx</a><br/><h2 id="6-sbom-and-spdx-30">6. SBOM and SPDX 3.0</h2><p>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.</p><h3 id="sbom-generation-and-management">SBOM Generation and Management</h3><ol><li><strong>Automated SBOM generation</strong><ul><li>SPDX 3.0 can be integrated into CI/CD pipelines to automatically generate SBOMs[6].</li><li>This enables &ldquo;machine-speed&rdquo; SBOM generation, allowing SBOMs to be updated instantly in step with the software release cycle.</li></ul></li><li><strong>Use of a consistent format</strong><ul><li>SPDX 3.0 provides a standardized SBOM format to ensure consistency[6].</li><li>This facilitates SBOM data exchange between organizations and enables automated analysis.</li></ul></li><li><strong>Regular updates</strong><ul><li>The SBOM must be updated with every software release[6].</li><li>Leveraging the automation features of SPDX 3.0 makes it possible to manage this process efficiently.</li></ul></li><li><strong>Inclusion of metadata</strong><ul><li>SPDX 3.0 allows rich metadata, such as license information and patch status, to be included in the SBOM[6].</li><li>This greatly improves security and compliance management.</li></ul></li></ol><h3 id="improving-sboms-with-spdx-30">Improving SBOMs with SPDX 3.0</h3><ol><li><strong>Modular structure</strong><ul><li>The profile-based structure of SPDX 3.0 can be used to generate SBOMs tailored to various use cases[1].</li><li>Information specific to each profile, such as Software, Security, and License, can be included in the SBOM.</li></ul></li><li><strong>Integration of security vulnerability information</strong><ul><li>The Security Profile of SPDX 3.0 can be used to include vulnerability information directly in the SBOM[1].</li><li>This allows security teams to identify and respond to vulnerabilities more quickly and effectively.</li></ul></li><li><strong>Strengthened license compliance</strong><ul><li>The License Profile of SPDX 3.0 can be used to include detailed license information in the SBOM[2].</li><li>This makes it easier for legal and compliance teams to identify and manage license obligations.</li></ul></li><li><strong>Inclusion of AI/ML model information</strong><ul><li>The AI/ML Profile of SPDX 3.0 can be used to include AI model and dataset information in the SBOM[2].</li><li>This contributes to increasing the transparency and accountability of AI systems.</li></ul></li></ol><h3 id="meeting-ntia-minimum-requirements">Meeting NTIA Minimum Requirements</h3><p>SPDX 3.0 meets the SBOM minimum requirements defined by the National Telecommunications and Information Administration (NTIA)[4][5].</p><ol><li><strong>Basic data fields</strong><ul><li>SPDX 3.0 includes all seven basic data fields required by the NTIA:<ul><li>Supplier Name</li><li>Component Name</li><li>Component Version</li><li>Other Unique Identifiers</li><li>Dependency Relationship</li><li>SBOM Author</li><li>Timestamp</li></ul></li></ul></li><li><strong>Automation and interoperability</strong><ul><li>SPDX 3.0 supports machine-readable formats (JSON-LD, YAML, RDF), meeting the NTIA&rsquo;s automation requirements[5].</li></ul></li><li><strong>Practicability</strong><ul><li>SPDX 3.0 ensures practicability by supporting SBOM generation and management through a variety of tools and libraries.</li></ul></li><li><strong>Extensibility</strong><ul><li>The modular structure of SPDX 3.0 provides the extensibility to accommodate future requirements.</li></ul></li></ol><p>SBOM management using SPDX 3.0 goes beyond simply meeting regulatory requirements — it significantly strengthens an organization&rsquo;s software supply chain security and contributes to greater transparency. This ultimately leads to the construction of a safer and more trustworthy software ecosystem.</p><p>Citations:<br>
[1]<a href="https://spdx.dev/capturing-software-vulnerability-data-in-spdx-3-0/">https://spdx.dev/capturing-software-vulnerability-data-in-spdx-3-0/</a><br>
[2]<a href="https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases">https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases</a><br>
[3]<a href="https://www.legitsecurity.com/blog/best-practices-for-managing-maintaining-sboms">https://www.legitsecurity.com/blog/best-practices-for-managing-maintaining-sboms</a><br>
[4]<a href="https://www.ntia.gov/report/2021/minimum-elements-software-bill-materials-sbom">https://www.ntia.gov/report/2021/minimum-elements-software-bill-materials-sbom</a><br>
[5]<a href="https://cybellum.com/blog/ntia-minimum-elements-for-a-software-bill-of-materials-sbom-a-guide/">https://cybellum.com/blog/ntia-minimum-elements-for-a-software-bill-of-materials-sbom-a-guide/</a><br>
[6]<a href="https://jfrog.com/devops-tools/article/best-practices-for-software-bill-of-materials-management/">https://jfrog.com/devops-tools/article/best-practices-for-software-bill-of-materials-management/</a><br>
[7]<a href="https://about.gitlab.com/blog/2022/10/25/the-ultimate-guide-to-sboms/">https://about.gitlab.com/blog/2022/10/25/the-ultimate-guide-to-sboms/</a><br>
[8]<a href="https://scribesecurity.com/sbom/how-to-generate-an-sbom/">https://scribesecurity.com/sbom/how-to-generate-an-sbom/</a><br/><h2 id="7-security-and-vulnerability-management">7. Security and Vulnerability Management</h2><p>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.</p><h3 id="cve-information-integration">CVE Information Integration</h3><p>Integrating Common Vulnerabilities and Exposures (CVE) information into SPDX 3.0 documents is a core element of security management.</p><ol><li><p><strong>How to reference CVEs</strong></p><ul><li><p>SPDX 3.0 uses the<code>ExternalReference</code> class to reference CVE information.</p></li><li><p>Example:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"ExternalReference"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"referenceType"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"SecurityAdvisory"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"referenceLocator"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"CVE-2021-44228"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"referenceCategory"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"CVE"</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div></li></ul></li><li><p><strong>Inclusion of detailed CVE information</strong></p><ul><li>Common Vulnerability Scoring System (CVSS) score</li><li>Affected version range</li><li>Patch availability and patch information</li></ul></li><li><p><strong>Automatic CVE updates</strong></p><ul><li>SPDX 3.0 tools can automatically pull CVE information from external sources such as the National Vulnerability Database (NVD) to update SPDX documents.</li></ul></li><li><p><strong>Linking CVE information to components</strong></p><ul><li>SPDX 3.0 can clearly link specific software components with related CVE information.</li><li>This makes it easy to identify and track vulnerable components.</li></ul></li></ol><h3 id="vulnerability-tracking-and-reporting">Vulnerability Tracking and Reporting</h3><p>SPDX 3.0 provides features for effectively tracking and reporting vulnerabilities.</p><ol><li><p><strong>Vulnerability lifecycle management</strong></p><ul><li><p>The entire lifecycle of a vulnerability, including discovery date, report date, and patch date, can be tracked.</p></li><li><p>Example:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"Vulnerability"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"CVE-2021-44228"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"description"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"Log4j RCE vulnerability"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"discoveredDate"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"2021-12-09"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"publishedDate"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"2021-12-10"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"patchedDate"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"2021-12-14"</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div></li></ul></li><li><p><strong>Vulnerability severity assessment</strong></p><ul><li><p>The severity of a vulnerability can be assessed and recorded using the CVSS score.</p></li><li><p>Example:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"VulnerabilityAssessment"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"vulnerability"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"CVE-2021-44228"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"cvssV3"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"baseScore"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">10.0</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"vectorString"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div></li></ul></li><li><p><strong>Vulnerability report generation</strong></p><ul><li>Automated vulnerability reports can be generated based on SPDX 3.0 data.</li><li>The report includes the affected components, severity, patch status, and more.</li></ul></li><li><p><strong>Vulnerability trend analysis</strong></p><ul><li>Patterns in vulnerability occurrence over time can be analyzed.</li><li>This allows security teams to establish long-term security strategies.</li></ul></li></ol><h3 id="utilizing-the-security-profile">Utilizing the Security Profile</h3><p>The Security Profile of SPDX 3.0 enables systematic management of security-related information.</p><ol><li><p><strong>Security Profile structure</strong></p><ul><li><code>Vulnerability</code>: A class representing vulnerability information</li><li><code>VulnerabilityAssessment</code>: A class representing vulnerability assessment information</li><li><code>SecurityAdvisory</code>: A class representing security advisories</li></ul></li><li><p><strong>Example use of the Security Profile</strong></p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"SecurityProfile"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"vulnerabilities"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"Vulnerability"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"CVE-2021-44228"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"description"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"Log4j RCE vulnerability"</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">],</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"assessments"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"VulnerabilityAssessment"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"vulnerability"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"CVE-2021-44228"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"cvssV3"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"baseScore"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">10.0</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"vectorString"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">],</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"advisories"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"SecurityAdvisory"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"title"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"Update Log4j to version 2.15.0 or later"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"description"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"Upgrade Log4j to mitigate CVE-2021-44228"</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">]</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div></li><li><p><strong>Ways to utilize the Security Profile</strong></p><ul><li>Automatically update the Security Profile by integrating with vulnerability scanning tools</li><li>Use as a data source for building security dashboards</li><li>Use as evidence of security posture during compliance audits</li></ul></li><li><p><strong>Security metric tracking</strong></p><ul><li>Security metrics such as the number of open vulnerabilities, average patch time, and the ratio of high-risk vulnerabilities can be tracked based on SPDX 3.0 data.</li></ul></li></ol><p>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&rsquo;s overall security posture.</p><h2 id="8-license-compliance">8. License Compliance</h2><p>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.</p><h3 id="license-information-management">License Information Management</h3><ol><li><p><strong>License identifiers</strong></p><ul><li>SPDX 3.0 uses standardized license identifiers.</li><li>Example: &ldquo;MIT&rdquo;, &ldquo;Apache-2.0&rdquo;, &ldquo;GPL-3.0-only&rdquo;</li><li>This ensures the consistency and accuracy of license information.</li></ul></li><li><p><strong>Inclusion of license text</strong></p><ul><li><p>The full license text can be included in the SPDX document.</p></li><li><p>Example:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"@type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"License"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"licenseId"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"MIT"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"MIT License"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"text"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"MIT License\\n\\nCopyright (c) [year] [fullname]\\n\\nPermission is hereby granted, ..."</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div></li></ul></li><li><p><strong>Custom licenses</strong></p><ul><li>For licenses not on the standard SPDX license list, a custom license can be defined.</li><li>In this case, the &ldquo;LicenseRef-&rdquo; prefix is used.</li><li>Example: &ldquo;LicenseRef-CompanyA-Proprietary&rdquo;</li></ul></li><li><p><strong>License expressions</strong></p><ul><li>Complex license combinations can be expressed.</li><li>Example: &ldquo;(MIT OR Apache-2.0) AND CC-BY-4.0&rdquo;</li></ul></li><li><p><strong>File- and package-level licenses</strong></p><ul><li>License information can be specified at the level of individual files, snippets, or packages.</li><li>This allows for fine-grained license management.</li></ul></li></ol><h3 id="license-compatibility-checking">License Compatibility Checking</h3><p>SPDX 3.0 data can be used to automatically check license compatibility.</p><ol><li><strong>License graph generation</strong><ul><li>A license graph is generated based on the dependencies between software components and the license information of each component.</li></ul></li><li><strong>Compatibility rule definition</strong><ul><li>Compatibility rules between licenses are defined.</li><li>Example: GPL-3.0 is compatible with Apache-2.0, but GPL-2.0 is not compatible with Apache-2.0.</li></ul></li><li><strong>Automatic compatibility checking</strong><ul><li>The license graph is analyzed based on the defined rules to automatically identify compatibility issues.</li></ul></li><li><strong>Conflict resolution suggestions</strong><ul><li>When a license conflict is found, possible resolutions are suggested.</li><li>Example: Using an alternative version of a specific component, requesting a license exception, etc.</li></ul></li><li><strong>Dynamic analysis</strong><ul><li>License compatibility can be checked in real time during the software build process.</li><li>This allows license issues to be identified and resolved early in development.</li></ul></li></ol><h3 id="compliance-report-generation">Compliance Report Generation</h3><p>Detailed license compliance reports can be generated based on SPDX 3.0 data.</p><ol><li><strong>Report components</strong><ul><li>A list of all software components used</li><li>License information for each component</li><li>A summary of license obligations</li><li>Potential license conflicts and resolutions</li><li>Copyright notice text</li></ul></li><li><strong>Obligation tracking</strong><ul><li>Tracks the key obligations of each license and reports on compliance status.</li><li>Example: the obligation to disclose source code, the obligation to provide copyright notice, the obligation to include license text, etc.</li></ul></li><li><strong>Risk assessment</strong><ul><li>Assesses and reports the legal risk of each license and license combination.</li><li>Provides warnings about the use of high-risk licenses.</li></ul></li><li><strong>Compliance workflow integration</strong><ul><li>Report generation can be automated and integrated into regular compliance review processes.</li><li>It can be integrated into a CI/CD pipeline to generate a compliance report with every build or release.</li></ul></li><li><strong>Customized reports</strong><ul><li>Customized reports can be generated to meet the needs of various stakeholders (legal team, development team, management, etc.).</li><li>Example: detailed reports for the legal team, summary reports for management, etc.</li></ul></li><li><strong>History management</strong><ul><li>Changes in compliance status over time can be tracked.</li><li>This makes it possible to measure the effectiveness of license compliance improvement efforts.</li></ul></li></ol><p>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.</p><h2 id="9-spdx-30-use-cases">9. SPDX 3.0 Use Cases</h2><p>SPDX 3.0 can be used to improve software management and security across a variety of industries. The main use cases are as follows:</p><h3 id="software-supply-chain-security">Software Supply Chain Security</h3><ol><li><strong>Vulnerability identification and management</strong><ul><li>The Security Profile of SPDX 3.0 is used to systematically track vulnerabilities in software components.</li><li>CVE information can be integrated into the SPDX document to assess security risk in real time.</li></ul></li><li><strong>Ensuring supply chain transparency</strong><ul><li>SPDX 3.0 makes it possible to clearly document all components of software and their provenance.</li><li>This helps reduce the risk of malicious code injection or supply chain attacks.</li></ul></li><li><strong>Build process security</strong><ul><li>The Build Profile of SPDX 3.0 can be used to ensure the integrity of the software build process.</li><li>Documenting information such as build tools, environment, and scripts supports reproducible builds.</li></ul></li><li><strong>Rapid application of security patches</strong><ul><li>SPDX 3.0 documents make it possible to quickly identify and patch vulnerable components.</li><li>The security update process can be optimized by integrating with automated tools.</li></ul></li></ol><h3 id="open-source-management">Open Source Management</h3><ol><li><strong>License compliance</strong><ul><li>The License Profile of SPDX 3.0 is used to systematically manage open source license obligations.</li><li>Complex license combinations can be accurately expressed and analyzed.</li></ul></li><li><strong>Open source contribution tracking</strong><ul><li>SPDX 3.0 makes it possible to clearly record the provenance and contributor information of open source components within a project.</li><li>This helps strengthen collaboration with the open source community and recognize contributions.</li></ul></li><li><strong>Open source policy enforcement</strong><ul><li>SPDX 3.0 documents can be linked to an organization&rsquo;s open source policy to ensure that only approved licenses and components are used.</li></ul></li><li><strong>Streamlining open source audits</strong><ul><li>The standardized format of SPDX 3.0 makes it possible to automate and streamline the open source audit process.</li></ul></li></ol><h3 id="regulatory-compliance">Regulatory Compliance</h3><ol><li><strong>Meeting SBOM requirements</strong><ul><li>SPDX 3.0 meets the SBOM generation requirements set out in US government Executive Order 14028 and the EU Cyber Resilience Act, among others.</li></ul></li><li><strong>Responding to industry-specific regulations</strong><ul><li>SPDX 3.0 makes it possible to effectively respond to software-related regulatory requirements across various industries, including medical devices, automotive, and aerospace.</li></ul></li><li><strong>Data privacy regulatory compliance</strong><ul><li>The Dataset Profile of SPDX 3.0 can be used to support compliance with data privacy regulations such as GDPR and CCPA.</li></ul></li><li><strong>Support for audits and reporting</strong><ul><li>SPDX 3.0 documents make it easy to provide regulators or auditors with the necessary software composition and security information.</li></ul></li><li><strong>Responding to AI regulation</strong><ul><li>By using the AI/ML Profile of SPDX 3.0 to document an AI model&rsquo;s training data, algorithms, and performance metrics, organizations can proactively prepare for future AI regulation.</li></ul></li></ol><p>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.</p><p>Citations:<br>
[1]<a href="https://linuxsecurity.com/news/organizations-events/spdx-3-0">https://linuxsecurity.com/news/organizations-events/spdx-3-0</a><br>
[2]<a href="https://spdx.dev/spdx-announces-3-0-release-candidate-with-new-use-cases/">https://spdx.dev/spdx-announces-3-0-release-candidate-with-new-use-cases/</a><br>
[3]<a href="https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases">https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases</a><br>
[4]<a href="https://www.prnewswire.com/news-releases/spdx-3-0-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases-302118321.html">https://www.prnewswire.com/news-releases/spdx-3-0-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases-302118321.html</a><br>
[5]<a href="https://spdx.dev/leveraging-profiles-for-license-compliance-insights-from-spdx-mini-summit/">https://spdx.dev/leveraging-profiles-for-license-compliance-insights-from-spdx-mini-summit/</a><br>
[6]<a href="https://www.synopsys.com/blogs/software-security/sboms-and-spdx.html">https://www.synopsys.com/blogs/software-security/sboms-and-spdx.html</a><br>
[7]<a href="https://spdx.dev/understanding-spdx-profiles/">https://spdx.dev/understanding-spdx-profiles/</a><br/><h2 id="10-spdx-30-adoption-strategy">10. SPDX 3.0 Adoption Strategy</h2><p>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.</p><h3 id="phased-implementation-plan">Phased Implementation Plan</h3><ol><li><strong>Current state analysis</strong><ul><li>Assess the current SBOM generation and management process</li><li>Analyze existing tools and workflows</li><li>Identify the benefits that adopting SPDX 3.0 can bring</li></ul></li><li><strong>Pilot project selection</strong><ul><li>Select a small, low-criticality project</li><li>Select and apply a specific SPDX 3.0 profile (e.g., Security or License)</li></ul></li><li><strong>Tool selection and configuration</strong><ul><li>Evaluate tools that support SPDX 3.0 (e.g., SPDX tools, FOSSology)</li><li>Integrate the selected tools into the existing CI/CD pipeline</li></ul></li><li><strong>Process definition</strong><ul><li>Design workflows for generating, validating, and managing SPDX 3.0 documents</li><li>Define owners and roles</li></ul></li><li><strong>Expansion plan</strong><ul><li>Identify improvements based on the pilot project&rsquo;s results</li><li>Gradually expand adoption to other projects and departments</li></ul></li><li><strong>Monitoring and optimization</strong><ul><li>Set KPIs to measure the impact of SPDX 3.0 adoption</li><li>Conduct regular reviews and process improvements</li></ul></li></ol><h3 id="training-and-awareness-within-the-organization">Training and Awareness Within the Organization</h3><ol><li><strong>Securing executive support</strong><ul><li>Present the business value of adopting SPDX 3.0</li><li>Emphasize regulatory compliance and risk management aspects</li></ul></li><li><strong>Department-specific training</strong><ul><li>Development team: How to generate and manage SPDX 3.0 documents</li><li>Legal team: Ways to improve license compliance</li><li>Security team: Vulnerability management and how to use the Security Profile</li></ul></li><li><strong>Workshops and hands-on sessions</strong><ul><li>Hands-on practice using SPDX 3.0 tools</li><li>Practice applying SPDX 3.0 to real projects</li></ul></li><li><strong>Internal communication</strong><ul><li>Publish newsletters related to SPDX 3.0</li><li>Build an SPDX 3.0 resource center on the intranet</li></ul></li><li><strong>Sharing success stories</strong><ul><li>Share the outcomes and lessons learned from the pilot project</li><li>Highlight the improvements achieved through SPDX 3.0 adoption</li></ul></li></ol><h3 id="tips-for-successful-adoption">Tips for Successful Adoption</h3><ol><li><strong>Gradual approach</strong><ul><li>Do not try to change everything at once; adopt it in stages</li><li>Collect feedback and identify improvements at each stage</li></ul></li><li><strong>Forming a cross-functional team</strong><ul><li>Form a team of experts from various departments, including development, legal, security, and operations</li><li>Discuss progress and issues through regular meetings</li></ul></li><li><strong>Emphasizing automation</strong><ul><li>Automate the process of generating and managing SPDX 3.0 documents</li><li>Integrate SPDX 3.0-related steps into the CI/CD pipeline</li></ul></li><li><strong>Leveraging external experts</strong><ul><li>Seek help from the SPDX community or consulting firms as needed</li><li>Benchmark the success stories of other organizations</li></ul></li><li><strong>Maintaining flexibility</strong><ul><li>Do not try to adopt all features of SPDX 3.0 at once</li><li>Start with the profiles and features that fit the organization&rsquo;s needs</li></ul></li><li><strong>Emphasizing continuous learning</strong><ul><li>Encourage participation in SPDX community activities</li><li>Support attendance at related conferences and webinars</li></ul></li><li><strong>Measuring and reporting outcomes</strong><ul><li>Compare metrics before and after SPDX 3.0 adoption (e.g., vulnerability response time, improvement in license compliance)</li><li>Regularly report progress and ROI to management</li></ul></li><li><strong>Managing cultural change</strong><ul><li>Encourage the organization to see SPDX 3.0 not merely as a tool but as a new way of working</li><li>Develop strategies to overcome resistance to change</li></ul></li></ol><p>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].</p><p>Citations:<br>
[1]<a href="https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases">https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases</a><br>
[2]<a href="https://spdx.dev/unpacking-the-spdx-3-0-tooling-mini-summit-a-new-era-of-compliance-and-security/">https://spdx.dev/unpacking-the-spdx-3-0-tooling-mini-summit-a-new-era-of-compliance-and-security/</a><br>
[3]<a href="https://spdx.dev/spdx-announces-3-0-release-candidate-with-new-use-cases/">https://spdx.dev/spdx-announces-3-0-release-candidate-with-new-use-cases/</a><br>
[4]<a href="https://openchainproject.org/news/2023/03/31/webinar-50">https://openchainproject.org/news/2023/03/31/webinar-50</a><br>
[5]<a href="https://nand-research.com/quick-take-spdx-3-0-release/">https://nand-research.com/quick-take-spdx-3-0-release/</a><br>
[6]<a href="https://linuxsecurity.com/news/organizations-events/spdx-3-0">https://linuxsecurity.com/news/organizations-events/spdx-3-0</a><br>
[7]<a href="https://spdx.dev/leveraging-profiles-for-license-compliance-insights-from-spdx-mini-summit/">https://spdx.dev/leveraging-profiles-for-license-compliance-insights-from-spdx-mini-summit/</a><br/><h2 id="11-future-outlook-and-direction">11. Future Outlook and Direction</h2><p>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.</p><h3 id="spdx-community-participation">SPDX Community Participation</h3><ol><li><strong>Open participation model</strong><ul><li>SPDX has adopted an open community model, so anyone can participate[1].</li><li>A variety of stakeholders — individuals, companies, and organizations — can contribute to the development of SPDX.</li></ul></li><li><strong>How to participate</strong><ul><li>Subscribe to the mailing list: You can join the general SPDX mailing list to receive the latest news[1].</li><li>Attend regular meetings: You can join the monthly general meeting to follow project progress and share your input[1].</li><li>Work group activities: You can participate in various working groups such as technical, legal, and outreach.</li></ul></li><li><strong>Participation in tool development</strong><ul><li>You can participate directly in SPDX tool development. For example, students can contribute to SPDX-related projects through the Google Summer of Code program[7].</li></ul></li></ol><h3 id="future-updates-and-improvements">Future Updates and Improvements</h3><ol><li><strong>Enhancement of AI/ML-related features</strong><ul><li>Profiles covering AI model training and characterization, dataset provenance, and similar topics are expected to be further developed[4].</li><li>Adding metadata related to AI ethics and accountability may be considered.</li></ul></li><li><strong>Expansion of security features</strong><ul><li>The linkage between vulnerability information and SBOMs is expected to be further strengthened.</li><li>Integration with real-time threat intelligence is a possibility.</li></ul></li><li><strong>Improved automation and integration</strong><ul><li>Deeper integration with CI/CD pipelines is expected.</li><li>Automated SBOM generation and update features will become more sophisticated.</li></ul></li><li><strong>Improved user experience</strong><ul><li>More intuitive user interfaces and visualization tools may be developed.</li><li>Simplified versions of SPDX tools for non-technical users may emerge.</li></ul></li></ol><h3 id="global-standardization-trends">Global Standardization Trends</h3><ol><li><strong>Strengthening its position as an ISO standard</strong><ul><li>SPDX has already been adopted as the ISO/IEC 5962:2021 standard, and version 3.0 is also planned to be submitted to ISO[5].</li><li>This is expected to further accelerate the global adoption of SPDX.</li></ul></li><li><strong>Responding to international regulations</strong><ul><li>It is expected to become a core tool for addressing international software supply chain security regulations, such as US Executive Order 14028 and the EU Cyber Resilience Act[6].</li></ul></li><li><strong>Industry-specific standardization</strong><ul><li>Industry-specific standards based on SPDX may be developed across various sectors, including automotive, medical devices, and aerospace.</li></ul></li><li><strong>Strengthening international cooperation</strong><ul><li>The SPDX community is expected to strengthen cooperation with other international standards bodies and open source foundations.</li><li>This could lead to a more unified global approach to software supply chain security.</li></ul></li></ol><p>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.</p><p>Citations:
[1]<a href="https://spdx.dev/engage/participate/">https://spdx.dev/engage/participate/</a><br>
[2]<a href="https://www.linuxinsider.com/story/spdx-becomes-new-standard-for-open-source-software-security-87265.html">https://www.linuxinsider.com/story/spdx-becomes-new-standard-for-open-source-software-security-87265.html</a><br>
[3]<a href="https://spdx.dev/engage/join/">https://spdx.dev/engage/join/</a><br>
[4]<a href="https://sbomify.com/2024/04/28/exploring-the-new-spdx-3-0-a-game-changer-for-sboms/">https://sbomify.com/2024/04/28/exploring-the-new-spdx-3-0-a-game-changer-for-sboms/</a><br>
[5]<a href="https://www.prnewswire.com/news-releases/spdx-3-0-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases-302118321.html">https://www.prnewswire.com/news-releases/spdx-3-0-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases-302118321.html</a><br>
[6]<a href="https://spdx.dev/spdx-announces-3-0-release-candidate-with-new-use-cases/">https://spdx.dev/spdx-announces-3-0-release-candidate-with-new-use-cases/</a><br>
[7]<a href="https://wiki.spdx.org/view/GSOC/GSOC_ProjectIdeas">https://wiki.spdx.org/view/GSOC/GSOC_ProjectIdeas</a><br>
[8]<a href="https://linuxsecurity.com/news/organizations-events/spdx-3-0">https://linuxsecurity.com/news/organizations-events/spdx-3-0</a><br/><h2 id="12-conclusion-spdx-30-utilization-strategy-for-enterprise-open-source-managers">12. Conclusion: SPDX 3.0 Utilization Strategy for Enterprise Open Source Managers</h2><p>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:</p><ol><li><strong>Strategic adoption</strong><ul><li>Recognize SPDX 3.0 not merely as a tool but as a strategic asset.</li><li>Link SPDX 3.0 with the organization&rsquo;s open source policy to build a consistent management system.</li></ul></li><li><strong>Automation first</strong><ul><li>Automate the process of generating and managing SPDX 3.0 documents as much as possible.</li><li>Integrate SPDX 3.0-related steps into the CI/CD pipeline to achieve continuous monitoring.</li></ul></li><li><strong>Strengthened risk management</strong><ul><li>Use the Security and License profiles of SPDX 3.0 to systematically manage the risks of using open source.</li><li>Conduct regular open source audits based on SPDX 3.0 to ensure compliance.</li></ul></li><li><strong>Decision support</strong><ul><li>Use SPDX 3.0 data to support informed decision-making about the adoption and use of open source.</li><li>Use it to develop a data-driven open source strategy.</li></ul></li><li><strong>Promoting collaboration</strong><ul><li>Use SPDX 3.0 to strengthen collaboration between the development, legal, and security teams.</li><li>Use its standardized format to facilitate information exchange with external partners.</li></ul></li><li><strong>Education and capability building</strong><ul><li>Open source managers should lead internal training based on a deep understanding of SPDX 3.0.</li><li>Actively participate in SPDX community activities to keep up with the latest trends and learn best practices.</li></ul></li><li><strong>Preparing for regulatory response</strong><ul><li>Use SPDX 3.0 to proactively address SBOM-related regulatory requirements.</li><li>Build a system that can flexibly respond to future regulatory changes.</li></ul></li><li><strong>Value creation</strong><ul><li>Use SPDX 3.0 to increase the efficiency of open source management and translate this into strengthened organizational competitiveness.</li><li>Document open source contribution activities with SPDX 3.0 to enhance the company&rsquo;s technical capability and reputation.</li></ul></li><li><strong>Continuous improvement</strong><ul><li>Regularly evaluate the current state of SPDX 3.0 utilization and identify areas for improvement.</li><li>Quickly incorporate new profiles or features into the organization&rsquo;s processes as they are added.</li></ul></li><li><strong>Leading innovation</strong><ul><li>Develop an organization-specific open source management model based on SPDX 3.0.</li><li>This helps secure a leading position in open source management within the industry.</li></ul></li></ol><p>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&rsquo;s digital transformation and strengthening its competitiveness.</p><div class="pageinfo pageinfo-primary"><p><em>This article was written with Perplexity (<a href="https://www.perplexity.ai/">https://www.perplexity.ai/</a>).</em></p><p><em>SK telecom customers can use Perplexity Pro free for one year:<a href="https://perplexity.sktadotevent.com/">https://perplexity.sktadotevent.com/</a></em></p><p><img src="/blog/2024/09/06/spdx-3.0-%EC%86%8C%EA%B0%9C%EC%99%80-%EA%B8%B0%EC%97%85-%EB%8F%84%EC%9E%85-%EC%A0%84%EB%9E%B5/image.png" alt="image.png"/></div>
]]></content:encoded></item><item><title>Elasticsearch Changes Its License Again: How Should Companies Respond?</title><link>https://haksungjang.github.io/en/blog/2024/09/06/elasticsearch-changes-its-license-again-how-should-companies-respond/</link><pubDate>Fri, 06 Sep 2024 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2024/09/06/elasticsearch-changes-its-license-again-how-should-companies-respond/</guid><description>Introduction: The Background of the Elasticsearch License 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.</description><content:encoded>&lt;![CDATA[<h2 id="introduction-the-background-of-the-elasticsearch-license">Introduction: The Background of the Elasticsearch License</h2><p>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 (<a href="https://www.elastic.co/blog/elasticsearch-is-open-source-again">Elasticsearch is Open Source, Again</a>) adding back the<strong>AGPL-3.0</strong>.</p><p><img src="/blog/2024/09/06/%EB%98%90-%EB%8B%A4%EC%8B%9C-elasticsearch-%EB%9D%BC%EC%9D%B4%EC%84%A0%EC%8A%A4-%EB%B3%80%EA%B2%BD-%EA%B8%B0%EC%97%85%EC%9D%98-%EB%8C%80%EC%9D%91-%EB%B0%A9%EC%95%88%EC%9D%80/featured_original-elastic-logos.png" alt="Featured image for the Elasticsearch AGPL license change"/><p>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.</p><hr><h2 id="1-history-of-elasticsearch-license-changes">1. History of Elasticsearch License Changes</h2><h3 id="11-the-shift-from-apache-20-to-elastic-license-20">1.1 The Shift from Apache 2.0 to Elastic License 2.0</h3><p>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<strong>AWS</strong>. 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.</p><p>Elastic License 2.0 discloses source code but restricts its use in commercial cloud services, and was used as a means of protecting Elastic&rsquo;s technical assets. In response, AWS started the<a href="https://opensearch.org/"><strong>OpenSearch</strong></a> project and kept the Apache 2.0 license.</p><p>This was covered in detail in a previous blog post, &ldquo;**<a href="https://openchain-project.github.io/OpenChain-KWG/blog/2021/03/28/elastic-license-2.0-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%A7%84%ED%99%94%ED%95%98%EB%8A%94-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EB%9D%BC%EC%9D%B4%EC%84%A0%EC%8A%A4/">Elastic License 2.0 and the Evolving Open Source License</a>.&rdquo;</p><h3 id="12-elastic-license-20-is-not-an-open-source-license">1.2 Elastic License 2.0 Is Not an Open Source License</h3><p>However, Elastic License 2.0 was not an open source license recognized by the<strong>Open Source Initiative (OSI)</strong>. This sparked controversy in the open source community. Elastic&rsquo;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.</p><hr><h2 id="2-background-to-elasticsearchs-adoption-of-agpl-30">2. Background to Elasticsearch&rsquo;s Adoption of AGPL-3.0</h2><h3 id="21-key-characteristics-of-agpl-30">2.1 Key Characteristics of AGPL-3.0</h3><p>In August 2024, Elastic<a href="https://www.elastic.co/blog/elasticsearch-is-open-source-again">announced</a> 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<strong>GPL</strong> license in that it requires source code to be disclosed even for software used over a network.</p><p>The<strong>key characteristics</strong> of AGPL-3.0 are as follows:</p><ul><li><strong>Source Code Disclosure Obligation</strong>: When software is provided over a network, the source code must be provided if a user requests it.</li><li><strong>Strong Copyleft</strong>: AGPL-3.0 requires that modifications to the software also be distributed under the same license.</li></ul><p>A detailed guide to AGPL-3.0 can be found here:<a href="https://sktelecom.github.io/guide/use/obligation/agpl-3.0/">AGPL-3.0 Guide</a></p><h3 id="22-why-elastic-returned-to-agpl-30">2.2 Why Elastic Returned to AGPL-3.0</h3><p>The reasons Elastic chose<strong>AGPL-3.0</strong> are as follows:</p><ul><li><strong>Restoring the Relationship with the Open Source Community</strong>: Having lost the community&rsquo;s trust due to the earlier license change, Elastic turned back to AGPL-3.0, recognized by the OSI, to restore that trust. Shay Banon, Elastic&rsquo;s founder and CTO,<a href="https://www.elastic.co/pricing/faq/licensing">said</a>, &ldquo;We have always strongly believed in the spirit of open source and the clarity and transparency it enables.&rdquo;</li><li><strong>Providing Users with More Freedom and Flexibility</strong>: AGPL-3.0 is an OSI-approved license that grants users more rights.</li><li><strong>Improving Trust</strong>: By using an OSI-approved license, Elastic sought to raise its credibility within the open source community.</li></ul><p>Elastic&rsquo;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.</p><p>However, some experts<a href="https://www.infoq.com/news/2024/09/elastic-open-source-agpl/">question</a> whether this change can quickly restore the community&rsquo;s trust. There is also analysis<a href="https://www.computing.co.uk/news/4352646/elastic-returns-open-source-fold">suggesting</a> that the success of OpenSearch may have influenced Elastic&rsquo;s decision.</p><hr><h2 id="3-in-an-era-of-open-source-license-change-what-should-companies-do">3. In an Era of Open Source License Change, What Should Companies Do?</h2><p>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&rsquo;s license may change, and establish a response strategy for it.</p><h3 id="31-monitoring-license-changes">3.1 Monitoring License Changes</h3><p>Frequent changes to open source licenses can expose a company to new legal risk. Preventing this requires continuous<strong>monitoring</strong>, which makes it important to form a dedicated team and introduce a management system. A systematic process should be built through<strong>open source governance</strong> to ensure open source license compliance across the company.</p><ul><li><strong>Forming a Dedicated Team</strong>: Form a dedicated team where the legal and technical teams work together to track license changes.</li><li><strong>Open Source Governance</strong>: Establish clear internal policies and guidelines for open source use.</li><li><strong>Using Automation Tools</strong>: Use software composition analysis (SCA) tools to automatically track the open source components in use and their licenses.</li></ul><h3 id="32-providing-training-and-internal-guidelines">3.2 Providing Training and Internal Guidelines</h3><p>Companies need to provide<strong>training</strong> and<strong>guidelines</strong> so that developers who use open source internally can understand and respond to license changes. This can reduce legal disputes arising from license violations.</p><ul><li><strong>Regular Training Programs</strong>: Conduct regular training on open source licenses for developers and managers.</li><li><strong>Providing License Guides</strong>: Produce and distribute guides summarizing the characteristics and compliance requirements of major open source licenses.</li><li><strong>Developing In-House Experts</strong>: Develop open source license experts to serve as internal advisors.</li></ul><h3 id="33-responding-to-agpl-30-in-cloud-environments">3.3 Responding to AGPL-3.0 in Cloud Environments</h3><p>Companies operating<strong>cloud services</strong> 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.</p><ul><li><strong>Strengthening Internal Review</strong>: Conduct thorough legal and technical review before introducing AGPL-3.0 software into a cloud service.</li><li><strong>Reviewing Alternative Solutions</strong>: If the constraints of the AGPL-3.0 license are burdensome, consider alternative open source or commercial solutions.</li><li><strong>Automating License Compliance</strong>: Build a system that automatically checks license compliance for software used in cloud environments.</li></ul><blockquote><p>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.</p></blockquote><hr><h2 id="conclusion-open-source-license-change-a-companys-strategic-response">Conclusion: Open Source License Change, a Company&rsquo;s Strategic Response</h2><p>Elasticsearch&rsquo;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.</p><p>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.</p><p>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.</p><hr><div class="pageinfo pageinfo-primary"><p><em>This article was written together with Perplexity (<a href="https://www.perplexity.ai/">https://www.perplexity.ai/</a>).</em></p><p><em>SKT customers can use Perplexity Pro for free for one year:<a href="https://perplexity.sktadotevent.com/">https://perplexity.sktadotevent.com/</a></em></p><p><img src="/blog/2024/09/06/%EB%98%90-%EB%8B%A4%EC%8B%9C-elasticsearch-%EB%9D%BC%EC%9D%B4%EC%84%A0%EC%8A%A4-%EB%B3%80%EA%B2%BD-%EA%B8%B0%EC%97%85%EC%9D%98-%EB%8C%80%EC%9D%91-%EB%B0%A9%EC%95%88%EC%9D%80/image.png" alt="image.png"/></div>
]]></content:encoded></item><item><title>French Court Orders Major Telecom Orange to Pay Damages for GPL Violation</title><link>https://haksungjang.github.io/en/blog/2024/02/19/french-court-orders-major-telecom-orange-to-pay-damages-for-gpl-violation/</link><pubDate>Mon, 19 Feb 2024 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2024/02/19/french-court-orders-major-telecom-orange-to-pay-damages-for-gpl-violation/</guid><description>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.
First, the defendant in this case is Orange, a major telecom operator. (Since I work at a telecom operator myself&amp;hellip;) Second, while GPL violation lawsuits mostly arise in embedded devices, in this case the open source at issue was used to build a B2B web service. This underscores that open source license compliance matters across every area of software development. 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.</description><content:encoded>&lt;![CDATA[<p>Hello.</p><p>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.</p><ul><li>First, the defendant in this case is Orange, a major telecom operator. (Since I work at a telecom operator myself&hellip;)</li><li>Second, while GPL violation lawsuits mostly arise in embedded devices, in this case the open source at issue was used to build a B2B web service. This underscores that open source license compliance matters across every area of software development.</li></ul><p>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.</p><blockquote><p>Thanks to Manager Cheolung Park of SK telecom for his review and comments.</p></blockquote><h2 id="what-is-gpl">What Is GPL?</h2><p>Short for GNU General Public License, GPL is one of the most representative open source licenses, a strongly copyleft license under which a software&rsquo;s copyright holder &ldquo;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.&rdquo;</p><ul><li>Reference - GPL-2.0 Guide:<a href="https://sktelecom.github.io/guide/use/obligation/gpl-2.0/">https://sktelecom.github.io/guide/use/obligation/gpl-2.0/</a></li></ul><h2 id="plaintiff-entrouvert">Plaintiff: Entr&rsquo;Ouvert</h2><p>Entr&rsquo;Ouvert, a French software company founded in September 2002, developed a C library named<a href="https://lasso.entrouvert.org">Lasso</a>. Lasso is a library that implements authentication protocols such as the Liberty Alliance&rsquo;s SAML standard.</p><p><img src="/blog/2024/02/19/%ED%94%84%EB%9E%91%EC%8A%A4-%EB%B2%95%EC%9B%90-%EB%8C%80%ED%98%95-%ED%86%B5%EC%8B%A0%EC%82%AC-orange%EC%97%90%EA%B2%8C-gpl-%EC%9C%84%EB%B0%98%EC%9C%BC%EB%A1%9C-%EC%86%90%ED%95%B4%EB%B0%B0%EC%83%81-%ED%8C%90%EA%B2%B0/featured_lasso.png" alt="lasso"/><p>Lasso is currently offered under two licenses.</p><ul><li>Open source license: GPL-2.0 + OpenSSL exception (requires source code disclosure)</li><li>Commercial license (requires paid purchase)</li></ul><blockquote><p><em>We strongly recommend the use of the GNU General Public License each time it is possible. But for proprietary projects, that wouldn&rsquo;t want to use it, we designed a commercial license.</em></p><p><em><a href="https://lasso.entrouvert.org/">https://lasso.entrouvert.org/</a></em></p></blockquote><h2 id="defendant-orange">Defendant: Orange</h2><p>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 &ldquo;My Public Service&rdquo; portal (now<a href="https://www.service-public.fr/">https://www.service-public.fr/</a>).</p><p><img src="/blog/2024/02/19/%ED%94%84%EB%9E%91%EC%8A%A4-%EB%B2%95%EC%9B%90-%EB%8C%80%ED%98%95-%ED%86%B5%EC%8B%A0%EC%82%AC-orange%EC%97%90%EA%B2%8C-gpl-%EC%9C%84%EB%B0%98%EC%9C%BC%EB%A1%9C-%EC%86%90%ED%95%B4%EB%B0%B0%EC%83%81-%ED%8C%90%EA%B2%B0/orange.png" alt="orange"/><p>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.</p><p>Entr&rsquo;Ouvert discovered this and, in 2011, filed a lawsuit against Orange seeking damages.</p><h2 id="the-ruling">The Ruling</h2><p>The lawsuit ran for more than 10 years, and finally, on February 14, 2024, the Paris Court of Appeal ordered Orange to pay Entr&rsquo;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&rsquo;Ouvert 500,000 euros in compensation for economic loss and 150,000 euros for moral damages.</p><p>The court stated that &ldquo;had Orange respected the license agreement and entered into a paid license, it would have had to pay royalties to Entr&rsquo;Ouvert.&rdquo; 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.</p><h2 id="takeaways">Takeaways</h2><ol><li><p>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.</p></li><li><p>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&rsquo;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.</p></li></ol><h2 id="references">References</h2><ul><li>French Court Issues Damages Award for Violation of GPL:<a href="https://heathermeeker.com/2024/02/17/french-court-issues-damages-award-for-violation-of-gpl/amp/">https://heathermeeker.com/2024/02/17/french-court-issues-damages-award-for-violation-of-gpl/amp/</a></li><li><a href="https://www.entrouvert.com/actualites/2019/entrouvert-versus-orange/">https://www.entrouvert.com/actualites/2019/entrouvert-versus-orange/</a></li><li><a href="https://www.zdnet.fr/blogs/l-esprit-libre/non-respect-de-la-licence-gpl-orange-condamne-en-appel-39964312.htm">https://www.zdnet.fr/blogs/l-esprit-libre/non-respect-de-la-licence-gpl-orange-condamne-en-appel-39964312.htm</a></li></ul><blockquote><p>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 (<a href="mailto:haksung@sk.com">haksung@sk.com</a>)</p><p>I&rsquo;ll update it right away. ^^</p></blockquote>
]]></content:encoded></item><item><title>Effective Open Source Management Practices for Companies (2): OpenChain Korea Work Group</title><link>https://haksungjang.github.io/en/blog/2023/04/03/effective-open-source-management-practices-for-companies-2-openchain-korea-work-group/</link><pubDate>Mon, 03 Apr 2023 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2023/04/03/effective-open-source-management-practices-for-companies-2-openchain-korea-work-group/</guid><description>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.
OpenChain Korea Work Group The OpenChain Korea Work Group (KWG) is a subgroup of the Linux Foundation&amp;rsquo;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&amp;rsquo;s major ICT companies participate in the KWG.</description><content:encoded>&lt;![CDATA[<p>In the previous post, I introduced the<a href="https://devocean.sk.com/blog/techBoardDetail.do?ID=164676">OpenChain Project for global collaboration</a> as an effective open source management practice for companies. This time, I would like to introduce the<a href="https://openchain-project.github.io/OpenChain-KWG/">OpenChain Korea Work Group</a>, a collaborative community for Korean companies to effectively manage open source.</p><h2 id="openchain-korea-work-group">OpenChain Korea Work Group</h2><p>The<a href="https://openchain-project.github.io/OpenChain-KWG/">OpenChain Korea Work Group</a> (KWG) is a subgroup of the Linux Foundation&rsquo;s<a href="https://openchainproject.org/">OpenChain Project</a>. 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&rsquo;s<a href="https://openchain-project.github.io/OpenChain-KWG/about/member/">major ICT companies</a> participate in the KWG.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/featured_kwg.png" alt="featured_kwg"/><h2 id="openchain-kwg-regular-meetings">OpenChain KWG Regular Meetings</h2><p>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&rsquo;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.</p><p>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&rsquo;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<a href="https://openchain-project.github.io/OpenChain-KWG/meeting/">OpenChain KWG meeting</a>, attended by open source managers from LG Electronics, SK telecom, Kakao, Hyundai Motor, and Samsung Electronics, was held in January 2019.</p><h2 id="17th-meeting-in-person">17th Meeting (In-Person)</h2><p>The meetings are held every quarter, and were held online during the COVID-19 period. Then, on March 28, 2023, an<a href="https://openchain-project.github.io/OpenChain-KWG/meeting/17th/">in-person meeting was held</a> 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&rsquo;s open source managers<a href="https://engineering.linecorp.com/ko/blog/line-opensource-manager-interview">Seoyeon Lee</a> and Donghyuk Kim for providing a comfortable venue, refreshments, and souvenirs! ^^</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_1.png" alt="Untitled"/><p>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.</p><h2 id="part-1-session-presentations">Part 1: Session Presentations</h2><h3 id="openchain-global-update-linux-foundation-shane-coughlan">OpenChain Global Update (Linux Foundation, Shane Coughlan)</h3><p><a href="https://jp.linkedin.com/in/shanecoughlan">Shane Coughlan</a>, General Manager of the Linux Foundation&rsquo;s OpenChain Project, attended in person and introduced the<a href="https://openchain-project.github.io/OpenChain-KWG/meeting/17th/global-updates-public.pdf">Global Trend of the OpenChain Project</a>.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_2.png" alt="Untitled"/><p>In addition to ISO/IEC 5230, the standard for open source compliance,<a href="https://www.iso.org/standard/86450.html">ISO/IEC DIS 18974</a>, a standard for security, is also under development. This standard is expected to soon be registered as an official ISO standard, and a<a href="https://github.com/OpenChain-Project/Reference-Material/blob/master/Self-Certification/Checklist/DIS-18974/en/DIS-18974-Self-Certification-Checklist-2.0.md">Self-Checklist</a> that companies must comply with has also been published. Companies can use these materials to carry out efficient open source risk management.</p><p>Shane also brought souvenirs for KWG members, which received a great response. (Thank you, Shane.)</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_3.png" alt="Untitled"/><h3 id="introduction-to-the-openchain-security-standard-sk-telecom-haksung-jang">Introduction to the OpenChain Security Standard (SK telecom, Haksung Jang)</h3><p><a href="https://www.iso.org/standard/81039.html">ISO/IEC 5230</a> is the international standard for open source compliance. This standard was registered with ISO in 2020, and<a href="https://www.openchainproject.org/community-of-conformance">many companies around the world comply with this standard</a> 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,<a href="https://www.iso.org/standard/86450.html">ISO/IEC DIS 18974</a>, the OpenChain security assurance specification. I gave a<a href="https://openchain-project.github.io/OpenChain-KWG/meeting/17th/OpenChain%EB%B3%B4%EC%95%88%EB%B3%B4%EC%A6%9D%EA%B7%9C%EA%B2%A9%EC%86%8C%EA%B0%9C_20230328_%EC%9E%A5%ED%95%99%EC%84%B1.pdf">brief summary introduction</a> of what this standard consists of.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_4.png" alt="Untitled"/><p>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.</p><h3 id="legal-issues-of-ai-technologies--case-study-getty-images-v-stability-ai-etri-jungsuk-park">Legal Issues of AI Technologies / Case Study: Getty Images v. Stability AI (ETRI, Jungsuk Park)</h3><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_5.png" alt="Untitled"/><p>Jungsuk Park of ETRI analyzed the recently filed Stable Diffusion-related lawsuit and introduced AI legal issues. The presentation materials can be found<a href="https://openchain-project.github.io/OpenChain-KWG/meeting/17th/OpenChain-KWG_2023%EB%85%843%EC%9B%94_ETRI_%EB%B0%95%EC%A0%95%EC%88%99.pdf">here</a>.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_6.png" alt="Untitled"/><p>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.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_7.png" alt="Untitled"/><h2 id="part-2-mini-summit---open-source-management-automation-tools">Part 2: Mini Summit - Open Source Management Automation Tools</h2><p>In Part 2, there were session presentations sharing each company&rsquo;s best practices for automating open source management.</p><h3 id="dependency-analysis-methods-by-tool-kakao-hyunji-lim">Dependency Analysis Methods by Tool (Kakao, Hyunji Lim)</h3><p>Hyunji Lim of Kakao presented a comparative analysis of the dependency analysis methods of open source analysis tools. The presentation materials can be found<a href="https://openchain-project.github.io/OpenChain-KWG/meeting/17th/%EB%8F%84%EA%B5%AC%EB%B3%84_%EC%9D%98%EC%A1%B4%EC%84%B1_%EB%B6%84%EC%84%9D_%EB%B0%A9%EC%8B%9D.pdf">here</a>.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_8.png" alt="Untitled"/><p>She identified and shared the dependency analysis methods of the representative open source analysis tools FOSSA, FOSSLight, ORT (OSS Review Toolkit), and OLIVE Platform.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_9.png" alt="Untitled"/><h3 id="osori-lg-electronics-soim-kim">OSORI (LG Electronics, Soim Kim)</h3><p>Soim Kim of LG Electronics gave a<a href="https://openchain-project.github.io/OpenChain-KWG/meeting/17th/230328_History_of_OSORI_%EB%B0%9C%ED%91%9C%EC%9A%A9.pdf">session presentation</a> introducing the OSORI project.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_10.png" alt="Untitled"/><p>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.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_11.png" alt="Untitled"/><h3 id="fosslight-roadmap-lg-electronics-kyungae-kim">FOSSLight Roadmap (LG Electronics, Kyungae Kim)</h3><p><a href="https://fosslight.org/">FOSSLight</a> is an integrated open source management system developed in-house by LG Electronics, which was<a href="https://live.lge.co.kr/lg-fosslight/">open-sourced in 2021</a> for anyone to use. Kyungae Kim of LG Electronics introduced the 2023<a href="https://openchain-project.github.io/OpenChain-KWG/meeting/17th/230328_FOSSLight_2023_%EB%A1%9C%EB%93%9C%EB%A7%B5_%EA%B3%B5%EC%9C%A0.pdf">FOSSLight Roadmap</a>.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_12.png" alt="Untitled"/><p>The FOSSLight Project has a roadmap for 2023 that includes improving security vulnerability features, strengthening SBOM functionality, and improving UX.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_13.png" alt="Untitled"/><h3 id="have-you-tried-olive-lately-kakao-eunkyung-hwang">Have You Tried OLIVE Lately? (Kakao, Eunkyung Hwang)</h3><p><a href="https://olive.kakao.com/">OLIVE Platform</a> 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.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_14.png" alt="Untitled"/><p>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.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_15.png" alt="Untitled"/><h3 id="onot-has-gotten-pretty-usable-kakao-hyeonmin-han">onot Has Gotten Pretty Usable! (Kakao, Hyeonmin Han)</h3><p><a href="https://github.com/sktelecom/onot">onot</a> is an open source project jointly developed by SK telecom and Kakao. It is a tool that automatically converts an SBOM written in the<a href="https://spdx.org/">SPDX</a> format into an open source notice. Hyeonmin Han of Kakao introduced the new features recently added to onot. The presentation materials can be found<a href="https://openchain-project.github.io/OpenChain-KWG/meeting/17th/openchain_kwg_17th_onot.pdf">here</a>.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_16.png" alt="Untitled"/><p>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.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_17.png" alt="Untitled"/><h2 id="closing">Closing</h2><p>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.</p><p><img src="/blog/2023/04/03/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-2-openchain-korea-work-group/Untitled_18.png" alt="Untitled"/><p>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:<a href="https://openchain-project.github.io/OpenChain-KWG/about/subscribe/">How to Join</a></p><p>Lastly, the OpenChain KWG holds regular meetings every quarter. The next meeting is expected to be held at Kakao.</p><p>Until then, happy days to everyone!</p>
]]></content:encoded></item><item><title>Effective Corporate Open Source Management (1): The OpenChain Project for Global Collaboration</title><link>https://haksungjang.github.io/en/blog/2023/03/28/effective-corporate-open-source-management-1-the-openchain-project-for-global-collaboration/</link><pubDate>Tue, 28 Mar 2023 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2023/03/28/effective-corporate-open-source-management-1-the-openchain-project-for-global-collaboration/</guid><description>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&amp;rsquo;s OpenChain Project is a project for carrying out these efforts at the community level, with multiple companies sharing and collaborating together.</description><content:encoded>&lt;![CDATA[<p>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<a href="https://www.synopsys.com/blogs/software-security/open-source-trends-ossra-report/">there are reports</a> 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<a href="https://www.linuxfoundation.org/">Linux Foundation</a>&rsquo;s<a href="openchainproject.org">OpenChain Project</a> is a project for carrying out these efforts at the community level, with multiple companies sharing and collaborating together.</p><p>On March 27, 2023,<a href="https://github.com/shanecoughlan">Shane Coughlan</a>, General Manager of the OpenChain Project, visited SK telecom for a session explaining the OpenChain Project&rsquo;s major activities, international standards related to open source, and global trends.</p><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/Untitled.png" alt="Untitled"/><p>Members of SK telecom&rsquo;s<a href="https://sktelecom.github.io/about/osrb/">OSRB</a> and the SK Group open source council (SK Planet, SK Shieldus, SK Inc., the Supex Council, and others) took part and exchanged various opinions.</p><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/featured_meeting.png" alt="Untitled"/><p>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.</p><h2 id="openchain-project-global-community">OpenChain Project Global Community</h2><p>Multiple global companies collaborate through the OpenChain Project to manage software supply chain issues:<a href="https://www.openchainproject.org/community">https://www.openchainproject.org/community</a></p><h3 id="platinum-members">Platinum Members</h3><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/Untitled_2.png" alt="Untitled"/><h3 id="community-structure">Community Structure</h3><p>The OpenChain Project has<a href="https://www.openchainproject.org/participate">numerous Work Groups</a>, and each Work Group develops standards for open source management and jointly builds automation tools. There are also Work Groups organized by country.</p><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/Untitled_3.png" alt="Untitled"/><h2 id="openchain-standard">OpenChain Standard</h2><h3 id="isoiec-52302020-isoiec-dis-18974">ISO/IEC 5230:2020, ISO/IEC DIS 18974</h3><p>The most visible outcome is the development of the first international standard for open source management. In December 2020,<a href="https://www.iso.org/standard/81039.html">ISO/IEC 5230</a> was registered as the sole international standard for open source compliance.<a href="https://www.iso.org/standard/86450.html">ISO/IEC DIS 18974</a> 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.</p><p>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.</p><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/Untitled_4.png" alt="Untitled"/><h3 id="self-certification">Self-Certification</h3><p>The OpenChain Project also provides a checklist for<a href="https://github.com/OpenChain-Project/Reference-Material/tree/master/Self-Certification">Self-Certification</a>. Companies can raise their level of open source management by working through the checklist items one by one.</p><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/Untitled_5.png" alt="Untitled"/><h3 id="adoption-of-openchain-isoiec-52302020">Adoption of OpenChain ISO/IEC 5230:2020</h3><p>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.</p><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/Untitled_6.png" alt="Untitled"/><h2 id="other-interesting-items">Other Interesting Items</h2><h3 id="online-webinar">Online Webinar</h3><p>The OpenChain Project continues to hold<a href="https://www.openchainproject.org/webinars">online webinars</a> on open source management.</p><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/Untitled_7.png" alt="Untitled"/><h3 id="training-courses">Training Courses</h3><p>A<a href="https://www.openchainproject.org/resources">free training course</a> for open source license compliance is provided, and a badge can also be earned upon completion.</p><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/Untitled_8.png" alt="Untitled"/><p>This training course is put to various uses, such as companies requiring their employees or suppliers to complete it.</p><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/Untitled_9.png" alt="Untitled"/><h2 id="update-on-china-and-japan">Update on China and Japan</h2><h3 id="china">China</h3><p>Collaboration with the OpenChain Project is also active in China. In particular, discussions on collaboration are underway with Chinese government bodies such as<a href="http://www.caict.ac.cn/english/">CAICT</a> and<a href="https://www.cc.cesi.cn/english.aspx">CESI</a>.</p><p>Companies such as Huawei, Honor, and OPPO also actively participate in the OpenChain China Work Group, which has around 250 members.</p><p>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<a href="https://openinventionnetwork.com/">OIN</a> is also said to be restarting.</p><h3 id="japan">Japan</h3><p>The<a href="https://openchain-project.github.io/OpenChain-JWG/">OpenChain Japan Work Group</a> has around 190 participating members. Fujitsu, Hitachi, NEC, Panasonic, Sony, Toshiba, and Toyota provide ongoing support, and community events are held every other month.</p><p>In collaboration with<a href="https://todogroup.org/">TODO Group</a>, OSPO events are also held every two weeks.</p><h2 id="korea-market-challenges-and-opportunities">Korea Market: Challenges and Opportunities</h2><h3 id="current-situation">Current Situation</h3><p>The<a href="https://openchain-project.github.io/OpenChain-KWG/">OpenChain Korea Work Group</a> 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.</p><p>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<a href="https://www.openchainproject.org/community">OpenChain Board</a>.</p><h3 id="opportunities">Opportunities</h3><p>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.</p><p>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.</p><h2 id="closing">Closing</h2><p>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<a href="https://openchain-project.github.io/OpenChain-KWG/">OpenChain Korea Work Group</a> is where companies that share this purpose gather. Nearly 100 open source managers from various companies have joined the OpenChain Korea Work Group&rsquo;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.</p><p>After the meeting session with Shane, we enjoyed a nice lunch sponsored by SK telecom&rsquo;s Tech HR team. (Thank you,<a href="https://kr.linkedin.com/in/ksangki">Sangki</a>~ ^^)</p><p><img src="/blog/2023/03/28/%EA%B8%B0%EC%97%85%EC%9D%98-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9D%B8-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%95%88-1-%EA%B8%80%EB%A1%9C%EB%B2%8C-%ED%98%91%EB%A0%A5%EC%9D%84-%EC%9C%84%ED%95%9C-openchain-project/Untitled_10.png" alt="Untitled"/><p>Thank you.</p>
]]></content:encoded></item><item><title>Buy Anaconda If You Use It. If Not, Use conda-forge!</title><link>https://haksungjang.github.io/en/blog/2023/03/13/buy-anaconda-if-you-use-it.-if-not-use-conda-forge/</link><pubDate>Mon, 13 Mar 2023 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2023/03/13/buy-anaconda-if-you-use-it.-if-not-use-conda-forge/</guid><description>To use Anaconda for commercial purposes, you must purchase a paid version. A developer at a company with 200 or more employees using Anaconda counts as commercial use.</description><content:encoded>&lt;![CDATA[<p>Hello.</p><p>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<a href="https://www.anaconda.com/">homepage</a>.</p><p><img src="/blog/2023/03/13/anaconda-%EA%BC%AD-%EC%82%AC%EC%84%9C-%EC%93%B0%EC%84%B8%EC%9A%94.-%EC%95%84%EB%8B%88%EB%9D%BC%EB%A9%B4-conda-forge/Untitled.png" alt="https://www.anaconda.com/"/><p><a href="https://www.anaconda.com/">https://www.anaconda.com/</a></p><h2 id="but-you-need-to-buy-anaconda-to-use-it">But you need to buy Anaconda to use it.</h2><p>In<a href="https://www.anaconda.com/blog/anaconda-commercial-edition-faq">September 2020</a>, Anaconda changed its Terms of Service to require payment when a company or government organization with 200 or more employees uses the Anaconda Repository.</p><p>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.</p><p><img src="/blog/2023/03/13/anaconda-%EA%BC%AD-%EC%82%AC%EC%84%9C-%EC%93%B0%EC%84%B8%EC%9A%94.-%EC%95%84%EB%8B%88%EB%9D%BC%EB%A9%B4-conda-forge/Untitled%201.png" alt="https://www.anaconda.com/pricing"/><p><a href="https://www.anaconda.com/pricing">https://www.anaconda.com/pricing</a></p><p>Let&rsquo;s look a bit more closely. To install Anaconda, you can typically download the<a href="https://www.anaconda.com/products/distribution">Anaconda Distribution</a> for free from the Anaconda homepage.</p><p><img src="/blog/2023/03/13/anaconda-%EA%BC%AD-%EC%82%AC%EC%84%9C-%EC%93%B0%EC%84%B8%EC%9A%94.-%EC%95%84%EB%8B%88%EB%9D%BC%EB%A9%B4-conda-forge/Untitled%202.png" alt="https://www.anaconda.com/products/distribution"/><p><a href="https://www.anaconda.com/products/distribution">https://www.anaconda.com/products/distribution</a></p><p>Installing it sets up a development environment easily, since the conda package manager, Python, and about 150 packages are installed together.</p><p>Anaconda Inc. hosts the<a href="https://repo.anaconda.com">Anaconda Repository</a>, providing over 8,000 open source packages, and users can reliably install and manage these packages with the<code>conda install PACKAGENAME</code> command.</p><p><img src="/blog/2023/03/13/anaconda-%EA%BC%AD-%EC%82%AC%EC%84%9C-%EC%93%B0%EC%84%B8%EC%9A%94.-%EC%95%84%EB%8B%88%EB%9D%BC%EB%A9%B4-conda-forge/Untitled%203.png" alt="https://repo.anaconda.com/"/><p><a href="https://repo.anaconda.com/">https://repo.anaconda.com/</a></p><p>The<a href="https://legal.anaconda.com/policies/en/?name=terms-of-service">Terms of Service</a> for this very<a href="https://repo.anaconda.com">Anaconda Repository</a> is what changed in September 2020, and free use of the Anaconda Repository is no longer possible for commercial activity.</p><p>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 &ldquo;unintentionally&rdquo; violating Anaconda&rsquo;s Terms of Service, and to avoid this you must purchase Anaconda Pro or higher.</p><p>For reference,<a href="https://docs.conda.io/en/latest/miniconda.html">Miniconda</a> 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.</p><p><img src="/blog/2023/03/13/anaconda-%EA%BC%AD-%EC%82%AC%EC%84%9C-%EC%93%B0%EC%84%B8%EC%9A%94.-%EC%95%84%EB%8B%88%EB%9D%BC%EB%A9%B4-conda-forge/Untitled%204.png" alt="https://docs.conda.io/en/latest/miniconda.html"/><p><a href="https://docs.conda.io/en/latest/miniconda.html">https://docs.conda.io/en/latest/miniconda.html</a></p><p>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&rsquo;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. ^^)</p><h2 id="there-is-an-alternative-conda-forge">There is an alternative: &lsquo;conda-forge&rsquo;</h2><p>Anaconda Inc. publishes and maintains the package manager<a href="https://conda.io/">conda</a> as open source.<a href="https://github.com/conda/conda">conda</a> itself is open source released under the<a href="https://github.com/conda/conda/blob/main/LICENSE.txt">BSD-3-Clause</a> license, so there is no problem with companies using it for free.</p><p><img src="/blog/2023/03/13/anaconda-%EA%BC%AD-%EC%82%AC%EC%84%9C-%EC%93%B0%EC%84%B8%EC%9A%94.-%EC%95%84%EB%8B%88%EB%9D%BC%EB%A9%B4-conda-forge/Untitled%205.png" alt="https://github.com/conda/conda"/><p><a href="https://github.com/conda/conda">https://github.com/conda/conda</a></p><p>conda needs a repository location to find packages to install and manage, and this is called a channel. The default channel is the<a href="https://repo.anaconda.com/">Anaconda Repository</a>. However, there is also a community-based repository:<a href="https://conda-forge.org/">conda-forge</a>.</p><p><img src="/blog/2023/03/13/anaconda-%EA%BC%AD-%EC%82%AC%EC%84%9C-%EC%93%B0%EC%84%B8%EC%9A%94.-%EC%95%84%EB%8B%88%EB%9D%BC%EB%A9%B4-conda-forge/featured_condaforge.png" alt="https://conda-forge.org/"/><p><a href="https://conda-forge.org/">https://conda-forge.org/</a></p><p>You can install conda and add conda-forge as a channel.</p><pre tabindex="0"><code>conda config --add channels conda-forge
conda config --set channel_priority strict</code></pre><p>This way, since you are not using the Anaconda Repository, you can use conda<a href="https://florianwilhelm.info/2021/09/Handling_Anaconda_without_getting_constricted/">without violating</a> the Terms of Service described above.</p><p>Peter Wang, CEO of Anaconda Inc., has<a href="https://www.reddit.com/r/Python/comments/iqsk3y/comment/g4xuabr/">stated</a> directly that downloading Miniconda and changing the conda config to conda-forge allows free use.</p><p><img src="/blog/2023/03/13/anaconda-%EA%BC%AD-%EC%82%AC%EC%84%9C-%EC%93%B0%EC%84%B8%EC%9A%94.-%EC%95%84%EB%8B%88%EB%9D%BC%EB%A9%B4-conda-forge/pwang.png" alt=""/><p><a href="https://www.reddit.com/r/Python/comments/iqsk3y/comment/g4xuabr/">https://www.reddit.com/r/Python/comments/iqsk3y/comment/g4xuabr/</a></p><p>Removing the defaults channel, which points to the Anaconda Repository, entirely can more reliably restrict use of the Anaconda Repository.</p><pre tabindex="0"><code>conda config --remove channels defaults</code></pre><p>You can check whether the channel has changed as intended with the command below.</p><pre tabindex="0"><code>### Before the change
% conda config --show channels
channels:
- defaults
### After the change
% conda config --show channels
channels:
- conda-forge</code></pre><h2 id="miniforge-adds-conda-forge-to-the-channel-at-installation">Miniforge adds conda-forge to the channel at installation.</h2><p>Going a step further,<a href="https://github.com/conda-forge/miniforge">Miniforge</a> 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.</p><p><img src="/blog/2023/03/13/anaconda-%EA%BC%AD-%EC%82%AC%EC%84%9C-%EC%93%B0%EC%84%B8%EC%9A%94.-%EC%95%84%EB%8B%88%EB%9D%BC%EB%A9%B4-conda-forge/Untitled%207.png" alt="https://github.com/conda-forge/miniforge"/><p><a href="https://github.com/conda-forge/miniforge">https://github.com/conda-forge/miniforge</a></p><p>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.</p><p>One interesting point is that operating conda-forge requires substantial hosting costs, which Anaconda Inc. pays. Anaconda Inc. explains that it<a href="https://conda-forge.org/blog/posts/2020-11-20-anaconda-tos/">needed</a> the revenue from changing the Anaconda Repository&rsquo;s Terms of Service in order to keep conda-forge free.</p><p>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.</p><p>Please let me know if there is anything incorrect. ^^</p><p>Thank you.</p>
]]></content:encoded></item><item><title>Akka Is No Longer Open Source.</title><link>https://haksungjang.github.io/en/blog/2022/09/30/akka-is-no-longer-open-source./</link><pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2022/09/30/akka-is-no-longer-open-source./</guid><description>Akka's license, which was Apache-2.0, changed from version 2.7 to the Business Source License, which companies can no longer use for free.</description><content:encoded>&lt;![CDATA[<blockquote><p>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&rsquo;s license to BUSL-1.1 (Business Source License).
Let&rsquo;s take a look at what the Business Source License is, and what the background and impact are of Lightbend changing Akka&rsquo;s license to BSL.</p></blockquote><h2 id="what-is-akka">What is Akka?</h2><p><a href="https://github.com/akka/akka">Akka</a> is a toolkit that simplifies distributed applications, in which multiple threads work concurrently on the JVM, based on the<a href="https://doc.akka.io/docs/akka/current/typed/guide/actors-intro.html">Actor Model</a>. It is reportedly used mainly in backend platforms that require high performance, such as live chatting.</p><p><img src="/blog/2022/09/30/akka%EB%8A%94-%EB%8D%94-%EC%9D%B4%EC%83%81-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4%EA%B0%80-%EC%95%84%EB%8B%99%EB%8B%88%EB%8B%A4./featured_akka.png" alt="Featured image announcing Akka’s license change"/><h2 id="the-license-change">The License Change</h2><p>Lightbend, a US company,<a href="https://akka.io/">changed</a> Akka&rsquo;s license in September 2022.</p><p><img src="/blog/2022/09/30/akka%EB%8A%94-%EB%8D%94-%EC%9D%B4%EC%83%81-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4%EA%B0%80-%EC%95%84%EB%8B%99%EB%8B%88%EB%8B%A4./akka_license_change.png" alt=""/><p>The main points of the license change are as follows.</p><ul><li>Akka, which was open source (Apache-2.0), will be under a new license starting with v2.7.</li><li>The new license is<a href="https://spdx.org/licenses/BUSL-1.1.html">BUSL-1.1</a> (Business Source License).</li><li>It can be used for free for noncommercial purposes, but a license fee must be paid for commercial use.</li></ul><p>Lightbend<a href="https://www.lightbend.com/blog/why-we-are-changing-the-license-for-akka">stated</a> 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.</p><blockquote><p>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.</p></blockquote><p>In the end, Lightbend also gave up sustaining the Apache-2.0 open source model, and instead introduced BUSL-1.1, a &ldquo;Source Available&rdquo; 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&rsquo;s SSPL is a representative example, and Elasticsearch introduced the Elastic License. You can find the details on this in the previous post, &lsquo;<a href="https://devocean.sk.com/opensource/techBoardDetail.do?ID=163055">Elastic License 2.0 (subtitle: The Evolving Open Source License)</a>&rsquo;. It can be inferred that Lightbend also decided to change its license considering this background and profitability.</p><p>BUSL-1.1 had already been applied to several projects that used to be open source, even before Akka.</p><ul><li><a href="https://mariadb.com/bsl-faq-mariadb/">MariaDB</a></li><li><a href="https://www.cockroachlabs.com/blog/oss-relicensing-cockroachdb/">CockroachDB</a></li><li><a href="https://blog.sentry.io/2019/11/06/relicensing-sentry/">Sentry</a></li><li><a href="https://github.com/MaterializeInc/materialize/blob/main/LICENSE">materialize</a></li></ul><h2 id="business-source-license">Business Source License</h2><p>How is<a href="https://spdx.org/licenses/BUSL-1.1.html">BUSL-1.1</a> different from an open source license?</p><h3 id="grants-the-right-to-use-only-for-non-production-use">Grants the right to use only for non-production use</h3><p>Unlike a typical open source license, BUSL-1.1 grants the right to copy, modify, and redistribute only for<code>non-production use</code>.</p><blockquote><p>The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and make non-production use of the Licensed Work.</p></blockquote><p>If your use does not qualify as<code>non-production use</code>, you are required to purchase a commercial license from the Licensor.</p><blockquote><p>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, &hellip;</p></blockquote><p>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<a href="https://www.lightbend.com/akka#pricing">purchase a commercial license</a> from Lightbend.</p><h3 id="change-date-change-license">Change Date, Change License</h3><p>Another characteristic of BUSL-1.1 is the<code>Change Date</code> and<code>Change License</code>. Once the<code>Change Date</code> passes after a version of the software under BUSL-1.1 is released, the<code>Change License</code> applies and BUSL-1.1 no longer applies.</p><blockquote><p>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.</p></blockquote><p>For<a href="https://www.lightbend.com/akka/license">Akka&rsquo;s BUSL-1.1</a>, the<code>Change Date</code> is 3 years after release, and the<code>Change License</code> is Apache-2.0.</p><p><img src="/blog/2022/09/30/akka%EB%8A%94-%EB%8D%94-%EC%9D%B4%EC%83%81-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4%EA%B0%80-%EC%95%84%EB%8B%99%EB%8B%88%EB%8B%A4./akka_busl.png" alt=""/><p>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<code>Change License</code> 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.</p><h3 id="additional-use-grant">Additional Use Grant</h3><p>BUSL-1.1 has an<code>Additional Use Grant</code> provision that allows the Licensor to grant rights to commercial users under certain conditions.</p><blockquote><p>The Licensor may make an Additional Use Grant, above, permitting limited production use.</p></blockquote><p>Therefore, the Licensor can permit users to use the software for commercial purposes as needed. For example, Lightbend<a href="https://www.lightbend.com/akka/license">permitted</a> the use of Akka when developing an application using<a href="https://www.playframework.com/">Play Framework</a> that utilizes akka.</p><blockquote><p>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.</p></blockquote><h2 id="akka-license-faq">Akka License FAQ</h2><p>Lightbend<a href="https://www.lightbend.com/akka/license-faq">provides an FAQ</a> related to the Akka license change, and here are a few of the key points.</p><h3 id="free-for-startup-sized-companies">Free for startup-sized companies</h3><p>First, looking at<a href="https://www.lightbend.com/akka#pricing">Akka&rsquo;s pricing</a>, it is provided for free to startup companies with annual revenue under $25 million.</p><h3 id="can-i-keep-using-older-versions-of-akka">Can I keep using older versions of Akka?</h3><p>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.</p><h3 id="we-use-it-for-production-as-well-as-for-development-testing-and-staging-in-which-cases-do-we-need-a-commercial-license">We use it for production, as well as for development, testing, and staging. In which cases do we need a commercial license?</h3><p>You only need a commercial license for the copies of the software used for production.</p><h3 id="i-work-at-a-government-department-not-related-to-revenue-do-i-need-to-purchase-a-commercial-license">I work at a government department not related to revenue. Do I need to purchase a commercial license?</h3><p>If Akka is used in production rather than for<code>non-production use</code>, a commercial license purchase is required even for government departments.</p><blockquote><p>Government departments using Akka in production will require a commercial license.</p></blockquote><h3 id="can-i-backport-parts-of-busl-11-software-to-an-older-version-under-apache-20">Can I backport parts of BUSL-1.1 software to an older version under Apache-2.0?</h3><p>No. This would violate Lightbend&rsquo;s copyright, as well as Apache-2.0.</p><blockquote><p>No. In this circumstance, you would either violate Lightbend&rsquo;s copyright by re-releasing the code under Open Source, or you would violate the earlier Akka version&rsquo;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).</p></blockquote><h2 id="closing">Closing</h2><p>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.</p><p>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).</p><p>Thank you.</p>
]]></content:encoded></item><item><title>A Quick Look at the SFC v. Vizio Ruling</title><link>https://haksungjang.github.io/en/blog/2022/06/14/a-quick-look-at-the-sfc-v.-vizio-ruling/</link><pubDate>Tue, 14 Jun 2022 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2022/06/14/a-quick-look-at-the-sfc-v.-vizio-ruling/</guid><description>Let's look at the background and issues of the SFC and Vizio GPL lawsuit.</description><content:encoded>&lt;![CDATA[<blockquote><p>Hello, this is<a href="https://haksungjang.github.io/">Haksung Jang</a>.</p><p><a href="https://sfconservancy.org/">SFC</a> (Software Freedom Conservancy) filed suit against<a href="https://www.vizio.com/">Vizio</a>, a US smart TV manufacturer, alleging violations of the GPL. On May 13, 2022, a US federal court issued a<a href="https://storage.courtlistener.com/recap/gov.uscourts.cacd.837808/gov.uscourts.cacd.837808.30.0.pdf">ruling</a> related to this case.</p><p>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<a href="https://github.com/haksungjang/haksungjang.github.io/issues/new">feedback</a>. ^^</p></blockquote><h2 id="references">References</h2><p>First, I would like to disclose the references I consulted while writing this article.</p><ul><li>PROCEEDINGS: (IN CHAMBERS) ORDER GRANTING PLAINTIFF&rsquo;S MOTION TO REMAND:<a href="https://storage.courtlistener.com/recap/gov.uscourts.cacd.837808/gov.uscourts.cacd.837808.30.0.pdf">https://storage.courtlistener.com/recap/gov.uscourts.cacd.837808/gov.uscourts.cacd.837808.30.0.pdf</a></li><li>Software Freedom Conservancy files right-to-repair lawsuit against California TV manufacturer Vizio Inc. for alleged GPL violations:<a href="https://sfconservancy.org/copyleft-compliance/vizio.html">https://sfconservancy.org/copyleft-compliance/vizio.html</a></li><li>SFC Files GPL Enforcement Suit Against Vizio Advancing Novel Legal Theories:<a href="https://heathermeeker.com/2021/11/09/sfc-files-gpl-enforcement-suit-against-vizio-advancing-novel-legal-theories/">https://heathermeeker.com/2021/11/09/sfc-files-gpl-enforcement-suit-against-vizio-advancing-novel-legal-theories/</a></li><li>First Update on the Vizio lawsuit:<a href="https://sfconservancy.org/blog/2021/nov/30/vizio-update-0/">https://sfconservancy.org/blog/2021/nov/30/vizio-update-0/</a></li><li>SFC v. Vizio remanded back to California state courts:<a href="https://lwn.net/Articles/895405/">https://lwn.net/Articles/895405/</a></li><li>Software Freedom Conservancy right-to-repair lawsuit against California TV manufacturer Vizio, Inc. remanded to California State Court:<a href="https://sfconservancy.org/news/2022/may/16/vizio-remand-win/">https://sfconservancy.org/news/2022/may/16/vizio-remand-win/</a></li><li>US court holds &ldquo;GPL is a contract too&rdquo; &hellip; recognizes consumers&rsquo; right to demand code (Korean article):<a href="https://zdnet.co.kr/view/?no=20220518145132">https://zdnet.co.kr/view/?no=20220518145132</a></li><li>Open source license violations and copyright infringement (Korean article):<a href="https://olis.or.kr/library/openSwDetail.do?bbsId=103&amp;bbsNum=26400">https://olis.or.kr/library/openSwDetail.do?bbsId=103&amp;bbsNum=26400</a></li><li>Legal effect of open source licenses (Korean article):<a href="https://www.copyright.or.kr/information-materials/trend/the-copyright/download.do?brdctsno=10231&amp;brdctsfileno=4699">https://www.copyright.or.kr/information-materials/trend/the-copyright/download.do?brdctsno=10231&amp;brdctsfileno=4699</a></li><li>Characteristics of the Federal Court (Korean article):<a href="https://lawandstory.com/%EC%97%B0%EB%B0%A9-%EB%B2%95%EC%9B%90federal-court-%ED%8A%B9%EC%A7%95/">https://lawandstory.com/연방-법원federal-court-특징/</a></li></ul><h2 id="1-background">1. Background</h2><p>On May 18, an article titled &ldquo;<a href="https://zdnet.co.kr/view/?no=20220518145132">US court holds &lsquo;GPL is a contract too&rsquo; &hellip; recognizes consumers&rsquo; right to demand code</a>&rdquo; was published. The following sentence seemed to convey something important, but I did not quite understand exactly what it meant.</p><div class="alert alert-primary" role="alert">
"US District Court Judge Josephine L. Staton stated in her ruling that SFC's argument — that enforcement of the additional contractual promises is a separate and distinct extra element from the rights provided by copyright law under the GPLv2 — is not preempted by federal law, and therefore remanded the case (to a higher court)."</div><p>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.</p><h3 id="1-1-copyright-law-and-contract-law">1-1 Copyright Law and Contract Law</h3><h4 id="copyright-law">Copyright Law</h4><ul><li>A licensee may use a work within the scope of the methods and conditions of use permitted by copyright law.<ul><li>Here, &ldquo;use&rdquo; refers only to acts granted by economic rights under copyright, such as reproduction, public transmission, distribution, and the creation of derivative works; it does not include &ldquo;usage&rdquo; in the ordinary sense.</li><li>If there is a method or condition attached to an act of &ldquo;usage&rdquo; and it is violated, this does not constitute infringement of economic rights under copyright; only liability for breach of contract arises.</li></ul></li><li>If a licensee acts outside the scope of the methods and conditions of use permitted by copyright law, this constitutes copyright infringement.</li><li>If it constitutes copyright infringement, criminal punishment and injunctive relief are possible for violation of copyright law.</li></ul><h4 id="contract-law">Contract Law</h4><ul><li>A contract is generally an agreement between a licensor (in the case of open source, the copyright owner) and a licensee.</li><li>To impose liability under contract law, it is first required that a contract was validly formed between the two parties.</li><li>If a party breaches an obligation it bears by virtue of the contract&rsquo;s (agreement&rsquo;s) effect, only contractual liability for non-performance arises.<ul><li>There is no risk of criminal punishment or injunctive relief, as with copyright infringement, but the agreed-upon amount of damages must be paid.</li><li>Whether a work under an open source license constitutes formation of a contract is disputed depending on jurisdiction.</li></ul></li><li>Damages amounts and remedies are limited.</li></ul><h4 id="examples">Examples</h4><ul><li>Copyright holders of GPL software have filed suit alleging copyright infringement<ul><li>e.g., Harald Welte, Patrick McHardy</li></ul></li><li>Jacobsen v. Katzer precedent<ul><li>If a copyright license imposing license conditions is not complied with, this constitutes copyright infringement.</li><li>If a license provision is a condition, copyright law applies; if it is merely a covenant, contract law applies.</li></ul></li><li>Hancom vs. Artifax<ul><li>Hancom argued that there was no breach of contract because there was no act such as signing a contract or a process of mutual agreement.</li><li>The court ruled that this constituted a breach of contract.</li></ul></li></ul><h3 id="1-2-us-federal-courts-and-state-courts">1-2 US Federal Courts and State Courts</h3><ul><li>The United States has federal courts and state courts, each handling cases of a different character.<ul><li>State courts: generally handle cases affecting the personal lives of residents (family law, probate law, etc.)</li><li>Federal courts<ul><li>Consist of District Courts, Appellate Courts, and the Supreme Court.</li><li>Handle only a limited set of cases: constitutional matters, federal crimes, military law, intellectual property, etc.</li><li>Copyright law (the Copyright Act) is handled in federal court.</li></ul></li></ul></li><li>In the United States, federal courts have exclusive jurisdiction over copyright claims.<ul><li>Accordingly, in the past, nearly all claims in US GPL litigation were brought in federal court, which has exclusive jurisdiction over copyright law.</li></ul></li><li>If a complaint is filed in the wrong court, the case will be dismissed or transferred to another court.<ul><li>That is, an action filed in state court can be removed if it is preempted by federal court jurisdiction.</li></ul></li></ul><h2 id="2-history-of-the-sfc-v-vizio-lawsuit">2. History of the SFC v. Vizio Lawsuit</h2><p>SFC filed suit against Vizio in October 2021. The contents of the suit at the time and the subsequent history are as follows.</p><h3 id="2021-10-19">2021-10-19</h3><ul><li>SFC filed<a href="https://sfconservancy.org/docs/software-freedom-conservancy-v-vizio-complaint-2021-10-19.pdf">suit</a> in state court against Vizio, alleging violations of the GPL and LGPL in connection with<a href="https://www.vizio.com/en/smartcast">SmartCast</a> TVs.<ul><li>plaintiff: Software Freedom Conservancy, Inc. ("<a href="https://sfconservancy.org/">SFC</a>")</li><li>defendant: Vizio, Inc. ("<a href="https://www.vizio.com/">Vizio</a>")</li><li>allege:<ul><li>Vizio uses &ldquo;at least twenty-five programs, including the Linux kernel software&rdquo; in its smart TVs that are covered by the GPL Agreements,</li><li>Vizio does not make the corresponding source code for these programs available to purchasers of its smart TVs.</li></ul></li><li>seek:<ul><li>to enforce SFC&rsquo;s right to have access to the source code corresponding to the executable code resident on Vizio&rsquo;s devices covered by the GPL Agreements.</li><li>as a remedy to its breach of contract claim, SFC seeks to compel Vizio to make the source code available</li></ul></li><li>claim:<ol><li>breach of contract and</li><li>declaratory relief<ul><li>Declaratory relief is a procedure within US civil procedure whereby a judge declares the rights, obligations, and responsibilities of the parties in a civil suit, without ordering any performance, action, or compensation. In patent and similar litigation, it is used by an alleged infringer as a claim or counterclaim against a patent holder to seek a declaration of non-infringement, invalidity, or unenforceability.</li></ul></li></ol></li><li>See: &ldquo;<a href="https://openchain-project.github.io/OpenChain-KWG/meeting/12th/">Recent litigation cases: Stockfish v. ChessBase, SFC v. Vizio (Wonjae Park)</a>&rdquo;</li></ul></li></ul><h3 id="2021-11-29">2021-11-29</h3><p>Vizio responded to this as follows.</p><ul><li>Violating the GPL constitutes copyright infringement.</li><li>Because copyright law is preempted by federal courts, this is not a matter for state courts.</li><li>Under copyright law, only the copyright owner has the right to request source code under the GPL and LGPL, and SFC, as a consumer, has no right to demand source code.</li></ul><p>For this reason, Vizio requested that the case, filed in state court, be handled by federal court instead (<a href="https://storage.courtlistener.com/recap/gov.uscourts.cacd.837808/gov.uscourts.cacd.837808.1.0.pdf">NOTICE of REMOVAL of ACTION to FEDERAL COURT</a>).</p><p>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.</p><h3 id="in-response">In Response,</h3><p>SFC rebutted Vizio&rsquo;s arguments and filed a Motion to Remand with the federal court to have the case sent back to state court.</p><h3 id="2022-05-13">2022-05-13</h3><p>The federal court granted SFC&rsquo;s Motion to Remand<a href="https://storage.courtlistener.com/recap/gov.uscourts.cacd.837808/gov.uscourts.cacd.837808.30.0.pdf">(ORDER GRANTING PLAINTIFF&rsquo;S MOTION TO REMAND)</a> and remanded the case to state court.</p><h2 id="3-points-worth-noting">3. Points Worth Noting</h2><p>This lawsuit has several new aspects compared to prior GPL litigation. Heather Meeker, a US open source attorney,<a href="https://heathermeeker.com/2021/11/09/sfc-files-gpl-enforcement-suit-against-vizio-advancing-novel-legal-theories">explained</a> this as follows.</p><h3 id="3-1-breach-of-contract-and-specific-performance">3-1. Breach of Contract and Specific Performance</h3><ul><li>In the past, nearly all GPL litigation was brought as a claim of copyright infringement.</li><li>However, this lawsuit is a claim under contract law, not copyright law.</li><li>Rather than seeking monetary damages, it seeks to require that all TV purchasers be provided with the technical information required by the copyleft license (disclosure of source code).<ul><li>Rather than compensation for &ldquo;damages,&rdquo; it seeks disclosure of source code: &ldquo;specific performance.&rdquo;</li></ul></li><li>Under contract law, any remedy sought other than monetary damages amounts to a demand for specific performance (specific performance is an unusual remedy under contract law).</li><li>Generally, a plaintiff seeks specific performance instead of compensation from a defendant who breached a contract when the plaintiff wants something that money cannot replace.</li></ul><div class="alert alert-primary" role="alert"><div class="h4 alert-heading" role="heading">specific performance</div>
Fulfilling the requirements of a contract in exactly the way the contract specifies. When most contracts are disputed in court, the plaintiff expects to receive money, that they can use to remedy the harm that the other party caused them in not holding up their side of the deal. When a plaintiff seeks specific performance, they want something that money can't replace.</div><h3 id="3-2-claim-brought-in-state-court">3-2. Claim Brought in State Court</h3><ul><li>In the United States, federal courts have exclusive jurisdiction over copyright claims.</li><li>Accordingly, in the past, nearly all claims in US GPL litigation were brought in federal court, which has exclusive jurisdiction over copyright law.</li><li>However, this lawsuit brought by SFC was filed in state court in Orange County, California.</li><li>State court litigation, compared to federal court, is less predictable, less consistent in outcome, and more likely to produce unexpected views on novel legal theories.</li></ul><h3 id="3-3-no-author-as-plaintiff">3-3. No Author as Plaintiff</h3><ul><li>SFC filed suit as a purchaser of the product.</li><li>In past GPL litigation, the plaintiff was the copyright owner of the GPL software.</li><li>In contrast, the plaintiff in this lawsuit is SFC, filing suit as a consumer who purchased a Vizio TV.</li><li>SFC aims to establish that not only copyright owners but also consumers of a product have the right to receive GPL source code.</li></ul><h3 id="3-4-declaratory-relief">3-4. Declaratory Relief</h3><ul><li>This lawsuit essentially asks the court to declare that the GPL and LGPL are legally enforceable and that Vizio violated them.</li><li>Even treating the GPL as a contract, since a contract is generally an agreement between a licensor (i.e., the code copyright owner) and a licensee, it is difficult to view SFC as a party to the contract.</li><li>For this reason, SFC brought suit under the theory that it, along with all consumers, is a third-party beneficiary of the contract.<ul><li>Third Party Beneficiary: a person who is not a party to a contract but who can sue to enforce the contract — that is, a person who, although not a party to the contract, is directly involved in the benefit of the contract.</li><li>Third-party beneficiaries of the GPL: those who are not parties to the GPL contract, but who can obtain a benefit when the parties to the GPL contract perform it faithfully. One example of such a benefit is receiving the source code of GPL software.</li></ul></li></ul><div class="alert alert-primary" role="alert"><div class="h4 alert-heading" role="heading">third-party beneficiaries of the GPL</div>
People who aren't a party to a GPL agreement, but who would benefit from the contract if the parties to the GPL do as they promise under the agreement. An example of such a benefit might be the receipt of the source code of the GPL'd software. See also General Public License (GPL).</div><h2 id="4-key-contents-of-the-federal-court-ruling-2022-05-13">4. Key Contents of the Federal Court Ruling (2022-05-13)</h2><p>Let&rsquo;s look at what the federal court ruled on May 13, 2022.</p><h3 id="4-1-the-central-question">4-1. The Central Question</h3><p>The court first explained the central question that the federal court needed to decide, as follows.</p><ul><li>The only issue the court needs to decide is whether the federal Copyright Act completely preempts SFC&rsquo;s claims (breach of contract and declaratory relief) so as to create federal jurisdiction.</li><li>If the claims are equivalent to rights within the general scope of copyright covered by federal copyright law (such as the exclusive rights of reproduction, distribution, and display of derivative works), they are preempted by federal copyright law and therefore create federal jurisdiction.</li><li>To argue that a case is not preempted by federal copyright law, the cause of action must protect rights other than those protected by copyright, and there must be an &ldquo;extra element&rdquo; that changes the nature of the suit.</li></ul><h3 id="4-2-relevant-precedent-versata-software-vs-ameriprise">4-2. Relevant Precedent: &ldquo;Versata Software vs. Ameriprise&rdquo;</h3><ul><li>The GPL&rsquo;s requirement to disclose source code for a derivative work is separate from copyright obligations.</li><li>The defendant was not sued for copyright infringement.<ul><li>It was sued by the plaintiff for violating an &ldquo;additional obligation&rdquo; — failure to comply with the source disclosure obligation — regarding a derivative work incorporating an open source program.</li></ul></li><li>In this way, an &ldquo;additional contractual promise&rdquo; that does not correspond to a right provided by copyright law constitutes an &ldquo;extra element.&rdquo;</li></ul><h3 id="4-3-whether-sfcs-claim-is-an-extra-element">4-3. Whether SFC&rsquo;s Claim Is an &ldquo;Extra Element&rdquo;</h3><ul><li>The purpose of copyright protection is the exclusive right to restrict who may reproduce, distribute, and display a work.</li><li>However, copyright law does not grant a right to receive source code. Such a right is, if anything, the opposite of the exclusive rights protected by copyright law.</li><li>SFC&rsquo;s assertion, as a non-copyright-holder, of standing as a third-party beneficiary of the GPL agreement is distinct from rights arising under copyright law.</li><li>In other words, SFC&rsquo;s claim that it is entitled to receive source code as a third-party beneficiary of the GPL agreement is an &ldquo;extra element.&rdquo;</li></ul><h3 id="4-4-whether-vizios-argument-is-valid">4-4. Whether Vizio&rsquo;s Argument Is Valid</h3><ul><li>Vizio argues that violating an open source license is copyright infringement, but SFC did not make a claim of copyright infringement in this lawsuit.<ul><li>There is no reason for the court to rule on a matter the plaintiff did not claim.</li><li>Furthermore, since SFC is not the copyright holder, it could not even make such a claim.</li><li>SFC is not trying to use copyright law to restrict Vizio&rsquo;s ability to reproduce or create derivative works; it is merely requesting that Vizio provide source code.</li></ul></li><li>Vizio argued that since providing source code is a &ldquo;condition&rdquo; of the license, violating it is not a &ldquo;breach of contract&rdquo; but &ldquo;copyright infringement.&rdquo;<ul><li>Accordingly, Vizio argued that SFC&rsquo;s &ldquo;contract claim&rdquo; should be converted into a claim of copyright infringement.</li><li>However, only the violation of a &ldquo;condition&rdquo; — defined as &ldquo;an act or event that must occur before a duty of performance arises&rdquo; — can constitute copyright infringement; violations of all other license terms and covenants can only be litigated under contract law.</li><li>Furthermore, ambiguous contract provisions are interpreted as covenants, not conditions.</li></ul></li></ul><h3 id="4-5-ruling">4-5 Ruling</h3><ul><li>SFC&rsquo;s claims were not completely preempted by copyright law.<ul><li>A GPL agreement functions both as a copyright license and as a contractual agreement.</li></ul></li><li>Accordingly, the federal court lacks jurisdiction, and the Motion to Remand to state court is GRANTED.</li></ul><h2 id="5-implications">5. Implications</h2><p>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<a href="https://sfconservancy.org/news/2022/may/16/vizio-remand-win/">stated</a> 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.</p><p>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.</p><p>Finally,<a href="https://heathermeeker.com/2021/11/09/sfc-files-gpl-enforcement-suit-against-vizio-advancing-novel-legal-theories/">Heather Meeker&rsquo;s commentary</a> on this is a useful reference.</p><ul><li>SFC is trying to establish a new standard for GPL litigation. This is welcome, but there are also concerns about a backlash.<ul><li>Over the past 25 years, many companies that build products using GPL software have not been greatly worried about GPL litigation.</li><li>If SFC prevails in this lawsuit, companies could become burdened in using GPL code, which could become an obstacle to the spread of free software.</li><li>Also, if the general public becomes able to bring GPL litigation, trolls seeking purely financial gain could emerge.</li></ul></li><li>It is also not yet known whether SFC&rsquo;s attempt will succeed.<ul><li>The fact that the federal court did not dismiss the case but instead remanded it to state court can be seen not as fully accepting SFC&rsquo;s arguments, but simply as a determination that the case was not appropriate for federal court and therefore there was no basis for dismissal.</li><li>For now, SFC has gained a foothold to argue that it is entitled, as a third-party beneficiary of the GPL, to demand disclosure of source code from the defendant.</li><li>However, this lawsuit could become complex, prolonged, and costly going forward.</li><li>Most GPL litigation is often resolved quickly through settlement.</li></ul></li></ul><p>With that, I will wrap up this summary and take another look at the<a href="https://zdnet.co.kr/view/?no=20220518145132">domestic article</a> that I had trouble understanding earlier.</p><div class="alert alert-primary" role="alert">
"US District Court Judge Josephine L. Staton stated in her ruling that SFC's argument — that enforcement of the additional contractual promises is a separate and distinct extra element from the rights provided by copyright law under the GPLv2 — is not preempted by federal law, and therefore remanded the case (to a higher court)."</div><p>Now it seems to make sense. However, I still don&rsquo;t understand why it says the case was remanded &ldquo;(to a higher court).&rdquo; A US district court is a federal court, and this case was remanded to state court — so why does it say remanded &ldquo;(to a higher court)&rdquo;? Is it a typo? Do Americans refer to state courts as a &ldquo;higher court&rdquo;? Or am I misunderstanding something? I would welcome an<a href="https://github.com/haksungjang/haksungjang.github.io/issues/new">opinion</a> from a legal expert. :)</p><p>Thank you.</p>
]]></content:encoded></item><item><title>Challenges and Effects of Adopting InnerSource</title><link>https://haksungjang.github.io/en/blog/2022/04/03/challenges-and-effects-of-adopting-innersource/</link><pubDate>Sun, 03 Apr 2022 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2022/04/03/challenges-and-effects-of-adopting-innersource/</guid><description>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.</description><content:encoded>&lt;![CDATA[<p>Hello, this is Haksung Jang.</p><p>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.</p><p>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.</p><ul><li><a href="https://little-canada.org/tmp/books/oreilly/Programming/getting-started-with-innersource.pdf">Getting Started with InnerSource (Keys to collaboration and productivity inside your company) / Andy Oram</a></li></ul><p><img src="/blog/2022/04/03/%EC%9D%B4%EB%84%88%EC%86%8C%EC%8A%A4-%EB%8F%84%EC%9E%85%EC%9D%84-%EC%9C%84%ED%95%9C-%EA%B3%BC%EC%A0%9C%EC%99%80-%ED%9A%A8%EA%B3%BC/featured_innersource.png" alt="InnerSource featured image"/><h2 id="1-key-open-source-practices">1. Key Open Source Practices</h2><p>First, let&rsquo;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.</p><h3 id="1-cross-team-collaboration">(1) Cross-Team Collaboration</h3><ul><li>In open source projects, code is shared with the whole world, so anyone can freely view, learn from, and improve it.</li><li>There are rules for freely creating and merging branches, and tools that make this possible.</li><li>This allows people to work on the same code regardless of their work location.</li></ul><h3 id="2-documentation">(2) Documentation</h3><ul><li>Open source projects document code in as much detail as possible.</li><li>This documentation leads to improvements in software architecture. When explaining something through documentation, you come to empathize with the need to change a complex, unintuitive architecture.</li><li>Well-documented projects also make it easier for new contributors to join.</li></ul><h3 id="3-continuous-test">(3) Continuous Test</h3><ul><li>Open source projects generally build a strict system for objectively testing each contribution. This maintains trust among collaborators and guarantees code quality.</li><li>In other words, there are tools and procedures to verify quality before committing a change.<ul><li>unit test</li><li>continuous integration</li><li>code coverage</li><li>static analysis, etc.</li></ul></li><li>Each developer must write unit tests for their own code.</li></ul><h3 id="4-all-communication-and-decision-making-is-made-transparently-public">(4) All Communication and Decision-Making Is Made Transparently Public</h3><ul><li>In open source projects, all communication is made public and left as a record.</li><li>Decisions are mostly made based on discussions on mailing lists.</li><li>Because all communication is documented and left as a record, anyone can understand the project through the documentation and newly join it.</li></ul><h3 id="5-developers-can-have-their-skills-recognized-and-mentor-other-developers">(5) Developers Can Have Their Skills Recognized, and Mentor Other Developers</h3><ul><li>A developer who has contributed many commits can be regarded as a developer with a deep understanding of the project.</li><li>Such a developer comes to be recognized as a Trusted Committer.</li><li>A Trusted Committer is given the qualification to review / approve other developers&rsquo; work.</li><li>They also play a role in growing contributors into excellent developers by providing them with mentoring.</li></ul><h2 id="2-effects-of-adopting-innersource">2. Effects of Adopting InnerSource</h2><p>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<a href="https://innersourcecommons.org/">InnerSource Commons</a>.</p><p>So what effects can a company expect when it adopts InnerSource?</p><ol><li>Code reuse increases across the organization as a whole.<ul><li>Developers on each team can understand, use, and contribute to modules and architecture developed by other teams.</li></ul></li><li>Code quality improves.<ul><li>Quality improves through unit tests, code coverage, CI (continuous integration), static analysis, code review, and so on.</li></ul></li><li>Development speed increases.<ul><li>As developers learn unit tests, code coverage, and CI (continuous integration), bugs decrease and development speed increases.</li><li>Communicating through written comments may seem to take time at first, but it helps new developers learn the system faster, which further improves development speed.</li></ul></li><li>As developers learn new skills in code design, testing, and documentation, they come to think about code design more comprehensively.</li><li>Developers become better at documentation, which helps other team members understand the project better and make more contributions.</li><li>Empowering developers can increase their intellectual growth and job satisfaction.</li></ol><h2 id="3-challenges-to-adopting-innersource">3. Challenges to Adopting InnerSource</h2><p>Now let&rsquo;s look at the challenges a company must consider when trying to adopt InnerSource.</p><p>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.</p><ol><li>Documentation of all code in the repository</li><li>Providing a collaboration environment and guides, such as GitHub, for collaboration</li><li>Building a test environment and establishing rules: to guarantee the quality of newly incoming code<ul><li>Running a code coverage test on at least 90% of the code before it is committed</li><li>Triggering an automatic build when a commit is made</li></ul></li><li>Defining modular architecture and APIs to encourage contributions from other organizations</li><li>Giving participants pride in the work they have done, and actively encouraging them to present at conferences or contribute blog posts</li></ol><h2 id="4-why-should-developers-participate-in-innersource-projects">4. Why Should Developers Participate in InnerSource Projects?</h2><p>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&rsquo;s code. However, participating in InnerSource projects is helpful for developers&rsquo; own growth.</p><ol><li>By participating in an internal InnerSource project before jumping straight into an external open source project, developers can learn and become familiar with open source practices.<ul><li>In InnerSource, code review, commits, and testing are carried out in the open source way.</li><li>Developers become accustomed to documentation.</li><li>By learning new skills in testing and documentation, they can become excellent developers who think about code design more comprehensively.</li></ul></li><li>Simply observing the communication between a Trusted Committer and a Contributor is itself helpful.</li></ol><p>For why developers should contribute to open source, please also refer to the following blog post: &ldquo;<a href="https://devocean.sk.com/opensource/techBoardDetail.do?ID=159274">Why Developers Should Contribute to Open Source</a>&rdquo;</p><p>Thank you.</p>
]]></content:encoded></item><item><title>Can I Use a Publicly Available Dataset to Build a Commercial AI Service?</title><link>https://haksungjang.github.io/en/blog/2022/02/14/can-i-use-a-publicly-available-dataset-to-build-a-commercial-ai-service/</link><pubDate>Mon, 14 Feb 2022 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2022/02/14/can-i-use-a-publicly-available-dataset-to-build-a-commercial-ai-service/</guid><description>Can I use this publicly available dataset to build commercial AI software?</description><content:encoded>&lt;![CDATA[<p>Hello, I&rsquo;m Haksung Jang.</p><p>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.</p><p>Today, I want to introduce a recently published paper on this topic:<b>Can I use this publicly available dataset to build commercial AI software? &ndash; A Case Study on Publicly Available Image Datasets</b>:<a href="https://arxiv.org/abs/2111.02374">https://arxiv.org/abs/2111.02374</a></p><div class="pageinfo pageinfo-primary"><p>&ldquo;Can I use this publicly available dataset to build commercial AI software? &ndash; A Case Study on Publicly Available Image Datasets&rdquo;</p><p><i>- Gopi Krishnan Rajbahadur, Erika Tuck, Li Zi, Dayi Lin, Boyuan Chen, Zhen Ming (Jack)Jiang, Daniel Morales German</i></p></div><p>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.</p><h2 id="1-intro">1. Intro</h2><p>The paper first explains that, unlike open source licenses, licenses for using publicly available datasets present several difficult problems.</p><div class="alert alert-success" role="alert">
1. It is difficult to identify a complete and accurate license for the dataset.
- For example, the website that provided the dataset may have shut down.
2. It is difficult to confirm whether the license for the dataset is valid.
- Many datasets are created by combining multiple data sources. Each of these data sources may be subject to a different license.
- Moreover, the creators of publicly available datasets rarely document the licenses of the various data sources used to build the dataset.
- For example, the only requirement the [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) website states for using the dataset is a "citation requirement," with nothing else explained.
- However, [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) was created by crawling images from various data sources, such as Google Images and Flickr, that carry licenses which may restrict commercial use of the images.
- In such cases, considering only the license of [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) itself can create a compliance problem.
3. Licenses applied to publicly available datasets are generally ambiguous and do not clearly explain rights and obligations.
- Building commercial AI software using such datasets without license risk is genuinely difficult in practice.
- For example, GitHub Copilot uses a large AI model trained on billions of lines of source code hosted on GitHub.
- However, open source licenses do not clearly define the right to use source code for training an AI model for commercial purposes.
- This ambiguity has led to extensive legal debate over GitHub Copilot's compliance.</div><h3 id="github-copilot">GitHub Copilot</h3><p>Let me briefly touch on the debate surrounding GitHub Copilot here. The U.S.-based Software Freedom Conservancy (SFC) recently published a post titled &ldquo;<a href="https://sfconservancy.org/blog/2022/feb/03/github-copilot-copyleft-gpl/">If Software is My Copilot, Who Programmed My Software?</a>&rdquo; pushing back against the claims made by Microsoft and GitHub.</p><p>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:</p><div class="alert alert-success" role="alert">
1. Using public data to train an ML system is fair use.
2. Output produced by an ML system belongs to the system's operator.</div><p>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&rsquo;s copyright, it is best not to use Copilot.</p><div class="alert alert-success" role="alert">
- GitHub's claim that "the output belongs to the operator" creates a false sense of legal legitimacy.
- The GitHub CEO's statement sidesteps liability toward Copilot users who could face a GPL enforcement action.
- In the end, this means the user must be the one to prepare a "fair use" or "not copyrightable" defense for Copilot's output.</div><p>The SFC further argued that Microsoft and GitHub must prove why training on copylefted code qualifies as &ldquo;fair use&rdquo; and that the trained model is not a &ldquo;work based on GPL&rsquo;d software.&rdquo;</p><h2 id="2-background">2. Background</h2><p>Let&rsquo;s return to today&rsquo;s paper. It explains copyright law and contract law as they relate to datasets.</p><div class="alert alert-success" role="alert"><div class="h4 alert-heading" role="heading">Copyright Law</div>
Basically, copyright-protected data cannot be used commercially or distributed unless the copyright owner explicitly permits it. Publicly available datasets may also contain data that is protected by copyright.
- Using such data to develop commercial AI software can potentially give rise to copyright infringement.
- However, in certain situations or countries, using copyright-protected data for various purposes, including commercial purposes, without the copyright owner's explicit permission may be permitted.
- For example, in the United States, as suggested by the recent lawsuit Authors Guild v. Google, using copyrighted data is permitted under the fair use doctrine when there is no substantial harm to the copyright holder.
- However, this determination of fair use can differ from country to country.
- In the UK and Canada, the fair dealing exception to copyright infringement allows copyright-protected data to be used without the copyright holder's explicit permission, but only for non-commercial purposes.
- In the EU, the Text and Data Mining Law allows copyright-protected material to be used for non-commercial purposes without the copyright holder's explicit permission.
- As such, using publicly available datasets that contain copyright-protected data to build commercial AI software can potentially result in copyright infringement.</div><div class="alert alert-success" role="alert"><div class="h4 alert-heading" role="heading">Contract Law</div>
Under contract law, the copyright owner of a work (e.g., an image or video) can grant a license describing the rights another party may enjoy and the obligations that must be fulfilled to enjoy those rights.
- If the license terms are not respected — that is, if rights not granted by the license are exercised over the data, or if obligations are not fulfilled — this can constitute a (potential) breach of contract.</div><p>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.</p><p>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.</p><p>Now let&rsquo;s look at what rigorous approach the paper proposes for using publicly available datasets in commercial AI services.</p><h2 id="3-approach">3. Approach</h2><p>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.</p><p><img src="/blog/2022/02/14/%EC%83%81%EC%9A%A9-ai-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%97%90-%EA%B3%B5%EA%B0%9C-dataset%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%8F%84-%EB%90%98%EB%82%98%EC%9A%94/featured_procedure.png" alt="Review process for using a public dataset in a commercial AI service"/><p>First, Phase 1 is the process in which the AI engineer confirms the license. The paper explains the details as follows.</p><div class="alert alert-success" role="alert"><div class="h4 alert-heading" role="heading">Phase 1 : License identification</div>
#### (Step 1) License extraction
1. The AI engineer first identifies the license on the website from which the publicly available dataset was downloaded.
2. If no license can be found, the engineer checks whether a license is provided as a separate file within the dataset.
3. If it is still not found, the engineer confirms the license by contacting the dataset's owner directly.
* Taking [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) as an example, the website states the following condition for using the dataset, which can be regarded as its license:<i> Please cite it if you intend to use this dataset. "Learning Multiple Layers of Features from Tiny Images, Alex Krizhevsky, 2009."</i>
#### (Step 2) Provenance extraction
Here, provenance means the original source of the dataset.
- A dataset created by one researcher may later be modified, added to, and redistributed by someone else on a different platform.
- Therefore, it is important for the AI engineer to confirm whether the dataset obtained is identical to the one the original author created.
- In other words, the engineer checks the dataset's original source to confirm whether the license extracted in Step 1 is in fact the correct license for the dataset.
1. (Sub-step 1) First, query a search engine with appropriate search terms to find the dataset's official source (e.g., an official website, research paper, or technical report).
2. (Sub-step 2) Extract the license and metadata from the official source.
* Taking [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) as an example, information about its license and original source can be recorded as follows.
![](./provenance_record.png)
#### (Step 3) Lineage extraction
Many publicly available datasets, including computer vision and NLP datasets, are generally created by collecting data from various sources, such as websites that host data like images or other popular sites. Because the license of these data sources differs from the license of the dataset itself, it must be checked separately.
1. (Sub-step 1) Trace the dataset's creation process.
- Record this separately (see the "Description of the data collection process" field in the table above).
- If it turns out that a data source itself contains another data source, find and record that data source as well (repeat recursively).
- For example, [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) is a subset of another dataset called [80 Million Tiny Images](https://groups.csail.mit.edu/vision/TinyImages/). The paper reveals that this dataset draws on seven data sources: Google, Flickr, Ask, Altavista, Picsearch, Webshots, and Cydral.
![](./datasource.png)
2. (Sub-step 2) Find the official source for each data source (using websites, search engines, etc.).
- For example, the dataset is no longer available on the [80 Million Tiny Images](https://groups.csail.mit.edu/vision/TinyImages/) website. In this case, look for a possible archived version (e.g., [http://web.archive.org/web/20100601000000*/http://groups.csail.mit.edu/vision/TinyImages/](http://web.archive.org/web/20100601000000*/http://groups.csail.mit.edu/vision/TinyImages/))
- Then determine the official website for each of the seven data sources listed above.
3. (Sub-step 3) Confirm which license applies at the relevant point in time.
- Keep in mind that a data source's license may have changed over time.
- That is, confirm the license of the data source as it stood at the time the dataset was created.
- For example, for data originating from Google Images, confirm which license applies among Google's Terms of Service from 2005, and/or 2007, and/or 2012, and so on.
4. (Sub-step 4) Identify the license for each data source.
- Identify the license associated with every data source that contributed to creating the dataset.</div><p>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&rsquo;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.</p><div class="alert alert-success" role="alert"><div class="h4 alert-heading" role="heading">Phase 2 : License compliance assessment</div>
#### (Step 1) License interpretation
Here, the legal professional looks at the license of the dataset and its data and extracts the rights and obligations.
- The extracted rights and obligations are documented in a standard format.
- The paper proposes extending the [Montreal Data License (MDL)](https://arxiv.org/abs/1903.12262) format for this purpose → Enhanced MDL.
- The following can be recorded here:
1. License metadata
- Licensor
- License name
- Dataset name
- Dataset version
- Credic / Attribution Notice
- License validity period
- Liability / Warranty
- Designated third parties
- Additional condition
2. Data (standalone)
- Rights / Obligations
- Access
- Tagging
- Distribute
- Re-represent
3. Data rights in conjunction with model
- Rights / Obligations
- Benchmark
- Research
- Publish
- Internal Use
- Commercialization
- Output
- Model
- Model Reverse Engineer
![](./enhanced_mdl.png)
#### (Step 2) License compatibility analysis
Based on the information in the Enhanced MDL, the legal professional performs a risk assessment to decide whether the dataset can be used commercially.
- Take note of cases where, even if the dataset's license permits something, the data source's license restricts that use case.
- For example, with CIFAR-10, what the dataset's license permits and what the data source's license permits sometimes differ.
- In the table above, a red mark (x) indicates that the data source's license imposes a restriction (as with the licenses of Google and Flickr, for example).
In summary, CIFAR-10's license grants all rights to the dataset as long as the paper is cited, but the data sources' licenses are more restrictive. As a result, using this dataset to train an AI model, or for commercial purposes including modifying or distributing the dataset itself, carries a potential risk of license compliance violation.</div><p>Going through Phase 2, we&rsquo;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&rsquo;s license but also the licenses of its data sources matters, because if a data source&rsquo;s license restricts commercial use, using the dataset commercially carries risk as well.</p><p>Using this same approach, the paper conducted case studies on other datasets as well. Let&rsquo;s look at what it found.</p><h2 id="4-case-study-details">4. Case Study Details</h2><div class="alert alert-success" role="alert">
For the case study, six image datasets were selected based on popularity and the likelihood of commercial use.
1. [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) : Alex Krizhevsky, Geoffrey Hinton, et al. 2009. Learning Multiple Layers of Features from Tiny Images. Technical Report. University of Toronto.
2. [ImageNet](https://www.image-net.org/) : Olga Russakovsky, Jia Deng, Hao Su, Jonathan Krause, Sanjeev Satheesh, Sean Ma, Zhiheng Huang, Andrej Karpathy, Aditya Khosla, Michael Bernstein, et al. 2015. Imagenet large scale visual recognition challenge. International journal of computer vision 115 (2015), 211–252
3. [Cityscapes](https://www.cityscapes-dataset.com/) : Marius Cordts, Mohamed Omran, Sebastian Ramos, Timo Scharwächter, Markus Enzweiler, Rodrigo Benenson, Uwe Franke, Stefan Roth, and Bernt Schiele. 2015. The Cityscapes Dataset. In Proceedings of the 2015 CVPR Workshop on the Future of Datasets in Vision, Boston, MA, USA, June 11.
4. [FFHQ](https://github.com/NVlabs/ffhq-dataset) : Tero Karras, Samuli Laine, and Timo Aila. 2019. A style-based generator architecture for generative adversarial networks. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 4401–4410
5. [VGGFace2](https://paperswithcode.com/dataset/vggface2-1) : Georgia M Kapitsaki, Frederik Kramer, and Nikolaos D Tselikas. 2017. Automating the License Compatibility Process in Open Source Software with SPDX. Journal of Systems and Software 131 (2017), 386–401.
6. [MS COCO](https://cocodataset.org/) : Tsung-Yi Lin, Michael Maire, Serge Belongie, James Hays, Pietro Perona, Deva Ramanan, Piotr Dollár, and C Lawrence Zitnick. 2014. Microsoft coco: Common objects in context. In European conference on computer vision. Springer, 740–755.</div><p>All six of these datasets are image datasets, and their licenses have the following characteristics.</p><table><thead><tr><th>Dataset</th><th>Dataset license</th><th>Data Source</th></tr></thead><tbody><tr><td>CIFAR-10</td><td>No license stated (citation only required)</td><td>Multiple data sources</td></tr><tr><td>ImageNet</td><td>custom license</td><td>Multiple data sources</td></tr><tr><td>Cityscapes</td><td>custom license</td><td>One data source</td></tr><tr><td>FFHQ</td><td>CC-NC-SA-4.0</td><td>Multiple data sources</td></tr><tr><td>VGGFaces2</td><td>CC-NC-SA-4.0</td><td>Multiple data sources</td></tr><tr><td>MS COCO</td><td>CC 4.0</td><td>Multiple data sources</td></tr></tbody></table><p>Now let&rsquo;s look at the results of the paper&rsquo;s research on these six datasets.</p><div class="alert alert-success" role="alert">
The most common usage scenarios for image datasets can be seen as the following three:
1. Distributing the dataset itself commercially (DD : Distribute Datasets)
2. Training an AI model with the dataset and releasing an embedded product that includes the model (RPEAI : Release Product with Embedded AI Model)
3. Training an AI model with the dataset and commercializing the model's output (CAI : Commercialize the Model)
The research results for each dataset against these usage scenarios are as follows.
![](./scenario.png)
- A - Provide a link to license CC-BY-NC 4.0
- B - Provide a link to the license CC-BY 4.0
- C - Provide a link to license CC-By-NC-SA 4.0
- D - Remove infringing content as soon as possible when an infringement is detected
- E- Indicate changes
### 1. Distributing the dataset together with commercial AI software --> can potentially cause a license compliance violation (3 of 6)
- Distribution is not permitted for CIFAR-10, ImageNet, and Cityscapes
- Despite this restriction, many platforms distribute these datasets. (e.g., [https://deepai.org/datasets](https://deepai.org/datasets) - distributes ImageNet and CIFAR-10) This can cause problems.
- The other 3 datasets can only be used if obligations such as distributing them under the same license are complied with.
### 2. Using the dataset to train commercial AI software --> can potentially cause a license compliance violation (5 of 6)
- Except for MS COCO, none of the datasets explicitly grants the right to commercialize an AI model trained on the dataset
- For MS COCO, when the dataset is used to build commercial AI software, it requires
- Providing a link to the license
- Not using the dataset to warrant a product
### 3. For 3 of the 6, modifying the dataset can potentially cause a license compliance violation
- Datasets are often modified or augmented to improve an AI model's performance
- For CIFAR-10, ImageNet, and Cityscapes, modifying the dataset can potentially cause a license compliance violation
- The other datasets also must comply with the obligation to indicate the exact changes made, as required by their licenses
As such, publicly available datasets may not be well suited for building commercial AI software.</div><p>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.</p><h2 id="5-threats-to-validity">5. THREATS TO VALIDITY</h2><div class="alert alert-success" role="alert">
### External validity
This paper studied only the license violation aspect.
- Factors such as privacy protection and ethical concerns are also important when building AI software using a dataset.
- The paper did not address cases where a dataset is used for internal research or academic purposes.
- It also did not address whether use is permissible under fair use, fair dealing, or other similar legal doctrines.
- This study covered only image datasets. Other types of datasets, such as video or text, may raise different issues, so further research is needed.
### Internal validity
This study considered licenses only down to the data source level and did not consider the license associated with each individual data point (e.g., each individual image).
- Individual images may also carry their own copyright.
- However, each data source contains thousands or tens of thousands of data points, and extracting the license for each of these is practically impossible.
- Therefore, this remains a threat to validity.
### Construct validity
The provenance or lineage confirmed in this study for each dataset may not be accurate.
- It is impossible to determine exactly when and where a dataset was created.
- In cases such as ImageNet, the exact data sources may not even be knowable.
- The best that can be done is to infer the data sources, and thereby the license, from whatever related documentation is available.</div><p>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.</p><ul><li>Under<a href="https://glaw.scourt.go.kr/wsjo/lawod/sjo192.do?contId=2135829&amp;jomunNo=35&amp;jomunGajiNo=2">Article 35-2 of the Copyright Act</a>, temporary reproduction of a work on a computer is permitted. Based on this, there is room to argue that temporarily copying a publicly available dataset into memory during machine learning training is likewise permitted.</li><li><a href="https://glaw.scourt.go.kr/wsjo/lawod/sjo192.do?contId=2135829&amp;jomunNo=35&amp;jomunGajiNo=3">Article 35-3 of the Copyright Act</a> permits the use of a work as fair use when the use does not conflict with the work&rsquo;s normal exploitation and does not unreasonably prejudice the legitimate interests of the author. Using a publicly available dataset made up of image data solely for machine learning training does not conflict with the normal way pictures or photographs are exploited and does not harm the author&rsquo;s interests, so it could be argued that this qualifies as fair use.</li></ul><p>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. ^^)</p><p>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&rsquo;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.</p><p>Thank you.</p>
]]></content:encoded></item><item><title>Is Open Source Compliance Necessary Even When Providing a Service as SaaS?</title><link>https://haksungjang.github.io/en/blog/2021/12/20/is-open-source-compliance-necessary-even-when-providing-a-service-as-saas/</link><pubDate>Mon, 20 Dec 2021 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2021/12/20/is-open-source-compliance-necessary-even-when-providing-a-service-as-saas/</guid><description>Open Source Compliance for SaaS Vendors</description><content:encoded>&lt;![CDATA[<p>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, &ldquo;distribution&rdquo; 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.</p><p>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.</p><p>Heather Meeker, a well-known open source attorney in the United States, published a post titled<a href="https://heathermeeker.com/2021/11/23/open-source-compliance-for-saas-vendors/">Open Source Compliance for SaaS Vendors</a>, explaining the open source compliance issues SaaS vendors need to watch for. Today I&rsquo;d like to introduce this content.</p><hr><h2 id="1-consider-the-software-distributed-to-the-client-side">1. Consider the software distributed to the client side.</h2><p>Heather first discussed client-side software. On a SaaS platform, most of the software resides on the vendor&rsquo;s server side, but some software is delivered to and runs on the user&rsquo;s computer (&ldquo;client-side&rdquo;).</p><p>Heather used<a href="https://wordpress.com/">WordPress</a>, 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&rsquo;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<a href="http://WordPress.com">WordPress.com</a>&rsquo;s servers).</p><p>This client-side code mainly consists of simple logic, such as checking whether values like a date or address entered into a web page&rsquo;s input &ldquo;form&rdquo; are valid. There&rsquo;s no need to spend time coordinating with the server for these small tasks. This client-side code is mostly &ldquo;scripting language&rdquo; code, typically HTML, JavaScript, and CSS. What&rsquo;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&rsquo;s no need to separately provide the source code.</p><h3 id="how-should-notice-content-be-provided">How should notice content be provided?</h3><p>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.</p><blockquote><p><a href="https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">LGPL-2.1</a></p><ol><li>&hellip;<em>and distribute a copy of this License along with the Library.</em></li></ol></blockquote><p>So how should the full text of the LGPL license be delivered while delivering LGPL-licensed JavaScript code to the client side?</p><p>One approach Heather suggests is to create a page for open source notices within a screen such as the SaaS system&rsquo;s dashboard, and include a link there showing the full license text.</p><p>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.</p><p>MIT also requires the following.</p><blockquote><p><a href="https://opensource.org/licenses/MIT">MIT</a></p><p><em>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</em></p></blockquote><p>Given this clause, one could argue that providing the license notice on a separate web page within the SaaS system isn&rsquo;t sufficient either. Of course, providing it this way is still much better than not providing it at all.</p><h3 id="is-minified-javascript-an-appropriate-way-to-disclose-source-code">Is minified JavaScript an appropriate way to disclose source code?</h3><p>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 &ldquo;white space,&rdquo; among other minification steps.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-jsx" data-lang="jsx"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">&lt;</span><span style="color:#204a87;font-weight:bold">script</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#a40000">’</span><span style="color:#c4a000">wp</span><span style="color:#a40000">-</span><span style="color:#c4a000">media</span><span style="color:#a40000">-</span><span style="color:#c4a000">utils</span><span style="color:#a40000">-</span><span style="color:#c4a000">js</span><span style="color:#a40000">-</span><span style="color:#c4a000">translations</span><span style="color:#a40000">’</span><span style="color:#000;font-weight:bold">&gt;</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">(</span><span style="color:#204a87;font-weight:bold">function</span><span style="color:#000;font-weight:bold">(</span><span style="color:#000">domain</span><span style="color:#000;font-weight:bold">,</span><span style="color:#000">translations</span><span style="color:#000;font-weight:bold">)</span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">var</span><span style="color:#000">localeData</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">translations</span><span style="color:#000;font-weight:bold">.</span><span style="color:#000">locale_data</span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">domain</span><span style="color:#000;font-weight:bold">]</span><span style="color:#ce5c00;font-weight:bold">||</span></span></span><span style="display:flex;"><span><span style="color:#000">translations</span><span style="color:#000;font-weight:bold">.</span><span style="color:#000">locale_data</span><span style="color:#000;font-weight:bold">.</span><span style="color:#000">messages</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span><span style="color:#000">localeData</span><span style="color:#000;font-weight:bold">[</span><span style="color:#a40000">“”</span><span style="color:#000;font-weight:bold">].</span><span style="color:#000">domain</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">domain</span><span style="color:#000;font-weight:bold">;</span></span></span><span style="display:flex;"><span><span style="color:#000">wp</span><span style="color:#000;font-weight:bold">.</span><span style="color:#000">i18n</span><span style="color:#000;font-weight:bold">.</span><span style="color:#000">setLocaleData</span><span style="color:#000;font-weight:bold">(</span><span style="color:#000">localeData</span><span style="color:#000;font-weight:bold">,</span><span style="color:#000">domain</span><span style="color:#000;font-weight:bold">);</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span><span style="color:#000;font-weight:bold">)(</span><span style="color:#a40000">“</span><span style="color:#204a87;font-weight:bold">default</span><span style="color:#a40000">”</span><span style="color:#000;font-weight:bold">,</span><span style="color:#000;font-weight:bold">{</span><span style="color:#a40000">“</span><span style="color:#000">locale_data</span><span style="color:#a40000">”</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#a40000">“</span><span style="color:#000">messages</span><span style="color:#a40000">”</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#a40000">“”</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{}</span><span style="color:#000;font-weight:bold">}</span><span style="color:#000;font-weight:bold">}</span><span style="color:#000;font-weight:bold">}</span><span style="color:#000;font-weight:bold">);</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">&lt;/</span><span style="color:#204a87;font-weight:bold">script</span><span style="color:#000;font-weight:bold">&gt;</span></span></span></code></pre></div><p>For example, minifying the code above converts it into the following, and readability naturally suffers.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-jsx" data-lang="jsx"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">&lt;</span><span style="color:#204a87;font-weight:bold">scriptid</span><span style="color:#a40000">=’</span><span style="color:#c4a000">wp</span><span style="color:#a40000">-</span><span style="color:#c4a000">media</span><span style="color:#a40000">-</span><span style="color:#c4a000">utils</span><span style="color:#a40000">-</span><span style="color:#c4a000">js</span><span style="color:#a40000">-</span><span style="color:#c4a000">translations</span><span style="color:#a40000">’</span><span style="color:#000;font-weight:bold">&gt;(</span><span style="color:#204a87;font-weight:bold">function</span><span style="color:#000;font-weight:bold">(</span><span style="color:#000">domain</span><span style="color:#000;font-weight:bold">,</span><span style="color:#000">translations</span><span style="color:#000;font-weight:bold">){</span><span style="color:#000">varlocaleData</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">translations</span><span style="color:#000;font-weight:bold">.</span><span style="color:#000">locale_data</span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">domain</span><span style="color:#000;font-weight:bold">]</span><span style="color:#ce5c00;font-weight:bold">||</span><span style="color:#000">translations</span><span style="color:#000;font-weight:bold">.</span><span style="color:#000">locale_data</span><span style="color:#000;font-weight:bold">.</span><span style="color:#000">messages</span><span style="color:#000;font-weight:bold">;</span><span style="color:#000">localeData</span><span style="color:#000;font-weight:bold">[</span><span style="color:#a40000">“”</span><span style="color:#000;font-weight:bold">].</span><span style="color:#000">domain</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">domain</span><span style="color:#000;font-weight:bold">;</span><span style="color:#000">wp</span><span style="color:#000;font-weight:bold">.</span><span style="color:#000">i18n</span><span style="color:#000;font-weight:bold">.</span><span style="color:#000">setLocaleData</span><span style="color:#000;font-weight:bold">(</span><span style="color:#000">localeData</span><span style="color:#000;font-weight:bold">,</span><span style="color:#000">domain</span><span style="color:#000;font-weight:bold">);})(</span><span style="color:#a40000">“</span><span style="color:#204a87;font-weight:bold">default</span><span style="color:#a40000">”</span><span style="color:#000;font-weight:bold">,{</span><span style="color:#a40000">“</span><span style="color:#000">locale_data</span><span style="color:#a40000">”</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#a40000">“</span><span style="color:#000">messages</span><span style="color:#a40000">”</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#a40000">“”</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{}}}});&lt;/</span><span style="color:#204a87;font-weight:bold">script</span><span style="color:#000;font-weight:bold">&gt;</span></span></span></code></pre></div><p>Now, open source licenses that require source code disclosure define &ldquo;source code&rdquo; as a form that is convenient to modify.</p><blockquote><p><a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GPL-2.0</a></p><p><em>3. &hellip;
The source code for a work means the preferred form of the work for making modifications to it.</em></p></blockquote><p>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&rsquo;t a separately readable, unminified version of the code be provided?</p><p>On this point, Heather says it isn&rsquo;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 &ldquo;the preferred form of the work for making modifications,&rdquo; which is what GPL and LGPL require as the definition of source code.</p><h2 id="2-watch-out-for-network-copyleft-licenses">2. Watch out for network copyleft licenses.</h2><p>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 &ldquo;network copyleft licenses.&rdquo; AGPL-3.0, a representative network copyleft license, defines the obligation regarding remote network interaction in Section 13 as follows.</p><blockquote><p>AGPL-3.0</p><ol start="13"><li>Remote Network Interaction; Use with the GNU General Public License.</li></ol><p><em>&hellip; 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.</em></p></blockquote><p>In other words, if AGPL software is used in the following two ways, you must provide the source code:</p><ol><li>You modify the software, and</li><li>Users interact with the software over a network</li></ol><p>One might then ask, isn&rsquo;t it perfectly fine to just use it without modification? Even if a developer doesn&rsquo;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 &ldquo;no one will modify this AGPL-3.0 open source, so there&rsquo;s no need to worry about license compliance&rdquo; may sound plausible for now, it can&rsquo;t account for the possibility of future changes.</p><p>For reference, Google created an &ldquo;<a href="https://opensource.google/docs/using/agpl-policy/">AGPL Policy</a>&rdquo; to make clear that code under AGPL cannot be used at Google.</p><blockquote><p><a href="https://opensource.google/docs/using/agpl-policy/">Google’s AGPL Policy</a></p><p>*<strong>WARNING:</strong> Code licensed under the GNU Affero General Public License (<a href="https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License">AGPL</a>) MUST NOT be used at Google.</p><p>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.<strong>The risks heavily outweigh the benefits.</strong>*</p></blockquote><p>Google explains that it created the AGPL Policy for the following reasons.</p><ul><li>AGPL requires that anything that links with AGPL software also be licensed under AGPL. → a &ldquo;viral&rdquo; effect</li><li>This viral effect is triggered not only when the software is distributed, but also when a user accesses a product or service through a remote network interface.</li><li>Because Google&rsquo;s core products (Search, Gmail, Maps, YouTube, etc.) are services that users interact with through a remote network interface, the situation becomes serious if engineers depend on AGPL software when developing such services.</li><li>Given this, Google finds it very difficult to comply with AGPL&rsquo;s requirements for software used over a network.</li></ul><p>Heather explains that, besides AGPL-3.0, there are several other licenses that include network provisions like this.</p><ul><li>Server Side Public License</li><li>Open Software License</li><li>Non-Profit Open Source License</li><li>Artistic 2.0</li><li>Apple Public Source License</li><li>RealNetworks Public Source License</li><li>Reciprocal Public License</li><li>Honest Public License</li><li>Academic Free License<em><strong>[Note: this license is permissive. The others are copyleft.]</strong></em></li></ul><p>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.</p><p>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&rsquo;t be modified even years down the line, even if it isn&rsquo;t modified when it&rsquo;s first introduced, I can no longer be so sure it won&rsquo;t ever be modified. So, like Google, I think it&rsquo;s reasonable, from a license management perspective, to adopt a default policy that restricts the use of AGPL-3.0 open source.</p><h2 id="3-consider-that-saas-code-may-need-to-be-distributed-someday">3. Consider that SaaS code may need to be distributed someday.</h2><p>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.</p><ul><li>Sale of the organization responsible for the SaaS</li><li>Migration of the SaaS server to a customer&rsquo;s server<ul><li>Server migration due to requirements from heavily regulated industries such as finance or health</li><li>Server migration due to security issues</li><li>Server migration to prevent privacy problems arising from cross-border data movement, etc.</li></ul></li><li>Productization of an internal SaaS tool, etc.</li></ul><p>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.</p><p>Some may see this as an overly cautious policy, but I think it&rsquo;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.</p><hr><p>In the past, some companies&rsquo; 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.</p><div class="pageinfo pageinfo-primary"><p>This paper was translated by Haksung Jang from the English version available at this<a href="https://heathermeeker.com/2021/11/23/open-source-compliance-for-saas-vendors/">white paper</a>. The original author,<a href="https://heathermeeker.com/about-me/">Heather Meeker</a>, has not reviewed this translation.</p></div>
]]></content:encoded></item><item><title>China's First GPL Lawsuit Case: VirtualApp</title><link>https://haksungjang.github.io/en/blog/2021/11/15/chinas-first-gpl-lawsuit-case-virtualapp/</link><pubDate>Mon, 15 Nov 2021 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2021/11/15/chinas-first-gpl-lawsuit-case-virtualapp/</guid><description>Defendant ordered to pay the plaintiff RMB 500,000 in damages for violating the GPL</description><content:encoded>&lt;![CDATA[<blockquote><p><i>Hello, this is Haksung Jang.</p><p>In September 2021, it was reported through a<a href="https://www.oschina.net/news/159435">Chinese news article</a> that the first GPL-related ruling in China had been handed down. I&rsquo;ve summarized what I understood of it using a translation tool.
Please keep in mind that, since I&rsquo;m not a lawyer and don&rsquo;t know Chinese, there may be errors in the content. :)
If you find any errors, I&rsquo;d be grateful if you&rsquo;d let me know at any time (<a href="mailto:haksung@sk.com">haksung@sk.com</a>).</p><p>(Thanks to<a href="https://www.linkedin.com/in/jin-young-choi-20174b44">Jin-Young Choi</a>, Center Director at the Korea Copyright Commission, for helping review this. ^^)</i></p></blockquote><div class="pageinfo pageinfo-primary"><p>Source: &ldquo;首例！违反 GPL 协议致侵权，被判赔偿 50 万元&rdquo; -<a href="https://www.oschina.net/news/159435">https://www.oschina.net/news/159435</a></p></div><h2 id="summary">Summary</h2><p>In April 2021, a first-instance civil<a href="https://www.iphouse.cn/cases/detail/woznd0v9pek4jx35ovdj8y5gxrm371q2.html?keyword=GPL">ruling</a> 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&rsquo;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).</p><h2 id="parties-to-the-dispute">Parties to the Dispute</h2><p>The plaintiff, the defendants, and the software at issue in this dispute are as follows.</p><h3 id="plaintiff">Plaintiff</h3><p>The plaintiff is<strong>Jining Luohe Network Technology Co., Ltd</strong>, the copyright holder of VirtualApp.</p><h3 id="defendants">Defendants</h3><p>There are three defendant companies in total.</p><ol><li><strong>Fujian Fengling Chuangjing Technology Co., Ltd.</strong><ul><li>Copyright holder of Dim Sum Desktop</li><li>Operates the official Dim Sum Desktop website</li></ul></li><li><strong>Beijing Fengling Chuangjing Technology Co., Ltd.</strong> (parent company of Fujian Fengling)<ul><li>Listed as the developer of Dim Sum Desktop</li></ul></li><li><strong>Shenzhen Tencent Computer System Co., Ltd.</strong><ul><li>Operates &ldquo;Application Bao&rdquo; (a service for downloading, installing, and running Dim Sum Desktop)</li></ul></li></ol><h2 id="software-at-issue">Software at Issue</h2><h3 id="1-virtualapp-plaintiffs-software">1. VirtualApp (plaintiff&rsquo;s software)</h3><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 210px"><img class="card-img-top" src="/blog/2021/11/15/%EC%A4%91%EA%B5%AD-%EC%B2%AB-gpl-%EC%86%8C%EC%86%A1-%EC%82%AC%EB%A1%80-virtualapp/featured_va_logo_hu_cca4d1636eea6ea8.png" width="200" height="103"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"/></figcaption></figure><p>The plaintiff developed and distributed VirtualApp, software that provides a virtual Android environment.</p><ul><li>Gitee:<a href="https://gitee.com/mirrors/VirtualApp">https://gitee.com/mirrors/VirtualApp</a></li><li>GitHub:<a href="https://github.com/asLody/VirtualApp">https://github.com/asLody/VirtualApp</a></li></ul><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 610px"><img class="card-img-top" src="/blog/2021/11/15/%EC%A4%91%EA%B5%AD-%EC%B2%AB-gpl-%EC%86%8C%EC%86%A1-%EC%82%AC%EB%A1%80-virtualapp/virtualapp_hu_f34eb89f79959f6e.png" width="600" height="532"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text">
http://www.downcc.com/soft/359746.html</p></figcaption></figure><p>Let&rsquo;s take a closer look at the history.</p><ol><li>Lody, one of the plaintiff company&rsquo;s founders and the original contributor of VirtualApp,<a href="https://github.com/asLody/VirtualApp/commit/136fdba24e8770b009882369a778d468ce600bed">published VirtualApp on GitHub</a> on July 7, 2016.</li><li>On July 8, 2016,<a href="https://github.com/asLody/VirtualApp/commit/7a610f0abf1852c5cc8134134b44f11de6d2b566">LGPL-3.0 was applied</a>, and</li><li>On August 12, 2016,<a href="https://github.com/asLody/VirtualApp/commit/38cc2086ea88dd69009093d4d28fe2d11ee445b9">the license was changed to GPL-3.0</a>.<ul><li>Looking at<a href="https://github.com/asLody/VirtualApp/tree/38cc2086ea88dd69009093d4d28fe2d11ee445b9">the code at that point in time</a>, you can confirm that a copy of the GPL-3.0 license was included in the repository, and the license information in the README also explicitly stated &ldquo;GPL-3.0&rdquo;.</li></ul></li><li>Then, on January 24, 2017, a notice was suddenly added stating &ldquo;<a href="https://github.com/asLody/VirtualApp/commit/7c8bfa40b2b301828cbaafefca122a3b5fc141d9">you do not have permission to use this project for free</a>&rdquo;.<ul><li>After that, from March through July 2017, notices stating that a commercial license was required to use this project commercially were added repeatedly on several occasions.</li><li>Regarding this change in licensing policy, one Chinese attorney speculated that Lody had initially released VirtualApp for free under an open source license during early development, but later changed his mind and decided to try to profit from it.</li><li>However, adding conditions like this to open source software already released under GPL is not permitted under GPL, and the Chinese attorney noted that Lody appeared to have attempted a licensing policy that violated GPL-3.0 because he didn&rsquo;t fully understand open source licensing.</li></ul></li><li>In August 2017, Lody founded VirtualApp (the plaintiff). In other words, he was now formally going into business with VirtualApp.</li><li>And Lody ultimately<a href="https://github.com/asLody/VirtualApp/commit/44529892fc2e6198928196c80c5766e6453bf81e">removed the open source license</a> from GitHub on October 29, 2017.<ul><li><a href="https://github.com/asLody/VirtualApp/commit/00f152f98a922ced0d858c31e1a9c2f0afb53ab6">https://github.com/asLody/VirtualApp/commit/00f152f98a922ced0d858c31e1a9c2f0afb53ab6</a><br><img src="/blog/2021/11/15/%EC%A4%91%EA%B5%AD-%EC%B2%AB-gpl-%EC%86%8C%EC%86%A1-%EC%82%AC%EB%A1%80-virtualapp/github_delete.png" alt="github_delete"/></ul></li><li>On November 8, 2017, the plaintiff registered a software copyright for VirtualApp v1.0, obtained a registration certificate, and sought to hold all rights to the software copyright.</li><li>On December 30, 2017, the plaintiff announced that<a href="https://github.com/asLody/VirtualApp/commit/8e6d9cd925af55b53a7e93046c469dd69676c38b">a commercial license must be purchased</a> in order to use VirtualApp commercially, as shown below, and after that no longer updated the source code in the GitHub repo.</li></ol><pre tabindex="0"><code>"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."</code></pre><p>For reference, Lody was the primary contributor to VirtualApp, with about 30 additional developers contributing afterward.</p><h3 id="2-dim-sum-desktop-defendants-software">2. Dim Sum Desktop (defendant&rsquo;s software)</h3><p>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.</p><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 610px"><img class="card-img-top" src="/blog/2021/11/15/%EC%A4%91%EA%B5%AD-%EC%B2%AB-gpl-%EC%86%8C%EC%86%A1-%EC%82%AC%EB%A1%80-virtualapp/dimsum_hu_cbdbc772e23274b6.png" width="600" height="488"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text">
http://www.appchina.com/app/com.dianxinos.dxhome</p></figcaption></figure><p>While developing Dim Sum Desktop, the defendant obtained and included the<a href="https://github.com/asLody/VirtualApp/tree/13808a689e0da48d31bdba4b8724891a1dbf84e1">August 16, 2017 version of VirtualApp published on GitHub</a>. This version was under GPL-3.0 while also (inconsistently) including language prohibiting commercial use.</p><p>In September 2018, the plaintiff confirmed that &ldquo;Dim Sum Desktop v6.5.8&rdquo; was using code from VirtualApp V1.0.</p><ul><li>Of 421 comparable pieces of code between the two programs, the following similarities were found.<ul><li>308 codes - substantial similarity</li><li>27 codes - high similarity</li><li>78 codes - general similarity</li></ul></li></ul><h2 id="relief-sought">Relief Sought</h2><p>In 2019, the plaintiff filed suit seeking the following relief.</p><ol><li>Defendants Fujian Fengling Company and Beijing Fengling Company shall immediately cease infringing the plaintiff&rsquo;s computer software copyright.<ul><li>That is, they must immediately stop providing all services for downloading, installing, and running any version of the &ldquo;Dim Sum Desktop&rdquo; software over the internet.</li></ul></li><li>Defendants Fujian Fengling Company and Beijing Fengling Company shall pay the plaintiff<strong>RMB 20 million</strong> in economic damages.</li><li>Defendants Fujian Fengling Company and Beijing Fengling Company shall compensate the plaintiff for a reasonable fee of<strong>RMB 500,000</strong> for the infringement<sub>compensate the plaintiff for a reasonable fee of 500,000 yuan for stopping the infringement</sub>.</li><li>Defendants Fujian Fengling Company and Beijing Fengling Company shall bear the litigation costs of this case.</li></ol><h2 id="court-ruling">Court Ruling</h2><p>In April 2021, the court<a href="https://www.iphouse.cn/cases/detail/woznd0v9pek4jx35ovdj8y5gxrm371q2.html?keyword=GPL">ruled</a> 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.</p><p><img src="/blog/2021/11/15/%EC%A4%91%EA%B5%AD-%EC%B2%AB-gpl-%EC%86%8C%EC%86%A1-%EC%82%AC%EB%A1%80-virtualapp/china_judegement.png" alt="china_judegement"/><h3 id="issue-1-whether-gpl-30-has-legal-effect">Issue 1. Whether GPL-3.0 has legal effect</h3><p>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&rsquo;s &ldquo;Contract Law&rdquo;. It further explained tort liability for GPL-3.0 violations as follows.</p><h4 id="tort-liability-for-violation-of-gpl-30">Tort liability for violation of GPL-3.0</h4><ul><li>Copyright law protects the exclusive rights of the copyright holder.<ul><li>The rights of reproduction, modification, and distribution belong solely to the copyright holder (anyone other than the copyright holder may only use the work within the scope of &ldquo;fair use&rdquo;).</li><li>Anyone who performs these acts without permission commits infringement.</li></ul></li><li><a href="https://www.gnu.org/licenses/gpl-3.0.html">GPL-3.0</a> 8. Termination<ul><li>If the terms of use of GPL-3.0 are violated, the rights obtained through GPL-3.0 are automatically terminated.</li><li>&ldquo;You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License&rdquo;</li></ul></li><li>Article 158 of the General Provisions of the Civil Law of China<ul><li>Provides that &ldquo;a civil juristic act may have conditions attached&hellip; a civil juristic act with a condition subsequent becomes void once the condition is fulfilled.&rdquo;</li></ul></li><li>Given the nature of open source software, the conditions of use specified in GPL-3.0 (source code disclosure, copyright/modification notices, etc.) are a precondition set by the licensor for allowing the user to use the software.<ul><li>If the user violates this precondition of use, the GPL-3.0 agreement between the licensor and the user is automatically terminated.</li><li>The user&rsquo;s license under the contract is immediately terminated.</li><li>Any subsequent acts of reproduction, modification, or distribution performed by the user constitute infringement due to the loss of rights.</li></ul></li></ul><h3 id="issue-2-whether-the-plaintiff-has-standing-to-bring-this-lawsuit">Issue 2. Whether the plaintiff has standing to bring this lawsuit</h3><p>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.</p><ol><li>Based on the upload records and authentication history on the code hosting website, it can be proven that the plaintiff is the copyright holder of VirtualApp.</li><li>The plaintiff has the right to bring suit without the consent or approval of contributors.<ul><li>Lody, a shareholder of the plaintiff, published a total of 31,097 lines of the initial version of VirtualApp&rsquo;s source code on GitHub as the project owner, which forms the basis of the plaintiff&rsquo;s claim.</li><li>Contributors uploaded their own source code to the VirtualApp project and granted a license under GPL-3.0.<ul><li>This is regarded as their consent to grant a license for their contributions to the project owner and other users.</li></ul></li><li>If unanimous consent or approval from all contributors were required, it would in practice be impossible even to begin taking rights-protection measures. This would not help protect the litigation rights of open source projects.</li><li>In other words, the plaintiff does not need the consent or approval of contributors in order to initiate the lawsuit.</li></ul></li><li>GPL-3.0 only restricts the licensor from asserting patent rights against the user; it does not restrict the licensor from asserting copyright claims against a user who violates the license agreement.<ul><li>Therefore, the plaintiff&rsquo;s lawsuit can be seen as not violating the GPL-3.0 agreement regarding dispute resolution methods.</li></ul></li></ol><p>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.</p><h3 id="issue-3-whether-the-defendants-conduct-infringed-the-plaintiffs-copyright">Issue 3. Whether the defendant&rsquo;s conduct infringed the plaintiff&rsquo;s copyright</h3><p>The court pointed out that VirtualApp&rsquo;s &ldquo;prohibition on commercial use&rdquo; 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.</p><ol><li>The plaintiff split VirtualApp into an open source version and a commercial version, and removed the &ldquo;GPL-3.0&rdquo; license from subsequent open source versions.<ul><li>Separately from this, the plaintiff asserted its rights based on the open source version of VirtualApp. Therefore, there is no need to determine the relationship and effect between VirtualApp&rsquo;s open source version and commercial version.</li><li>Under GPL-3.0, files bound by GPL-3.0 in an earlier version remain bound by GPL-3.0 even in subsequent versions.</li></ul></li><li>GPL-3.0 allows users to make commercial use, and the licensor cannot restrict this.<ul><li>Accordingly, the court did<strong>not</strong> support the plaintiff&rsquo;s following argument: &ldquo;Is commercializing Dim Sum Desktop a violation of GPL-3.0?&rdquo;</li></ul></li><li>Although the &ldquo;Dim Sum Desktop&rdquo; app (V6.5.8) was required to freely disclose its source code under GPL-3.0, defendant Fujian Fengling Company failed to comply with this.<ul><li>Accordingly, under Section 8 of GPL-3.0 and Article 158 of the General Provisions of the Civil Law of China, the rights obtained by defendant Fujian Fengling Company were automatically terminated.</li><li>Therefore, defendant Fujian Fengling Company&rsquo;s copying, modification, and distribution of VirtualApp constitute infringement due to the loss of the source of its rights.</li></ul></li></ol><p>However, the court made no mention of the &ldquo;license reinstatement clause&rdquo; 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 &ldquo;Did the plaintiff notify the defendant of the violation beforehand?&rdquo;, &ldquo;Did the plaintiff file suit directly without prior notice?&rdquo;, and &ldquo;If so, does the opportunity for &lsquo;permanent reinstatement of the license upon cure within 30 days&rsquo; still remain available?&rdquo; (Shouldn&rsquo;t filing the lawsuit itself be regarded as constituting notice?)</p><h3 id="issue-4-scope-of-the-defendants-legal-liability-upon-confirmation-of-infringement">Issue 4. Scope of the defendant&rsquo;s legal liability upon confirmation of infringement</h3><p>The plaintiff requested that damages be calculated based on the defendant&rsquo;s profits. However, the court appears to have determined the damages based on statutory damages.</p><ul><li>As the developer, operator, and publisher of the &ldquo;Dim Sum Desktop&rdquo; app (V6.5.8), defendant Fujian Fengling Company is liable under law to cease its infringement of VirtualApp&rsquo;s copyright.<ul><li>Given that defendant Fujian Fengling Company is a wholly owned subsidiary of defendant Beijing Fengling Company, the plaintiff&rsquo;s claim that the two defendants jointly bear tort liability is lawful and is supported by the court.</li></ul></li><li>Defendant Tencent established relevant rules and a complaint channel for potential infringement on the &ldquo;AppBao official website&rdquo; and promptly removed the accused software upon complaint.<ul><li>The plaintiff also did not file any specific complaint against defendant Tencent.</li><li>Accordingly, defendant Tencent is not required to bear legal liability.</li></ul></li><li>Compensation issue<ul><li>The plaintiff claimed that it calculated damages based on the infringement profits of defendants Fujian Fengling Company and Beijing Fengling Company.</li><li>The court set the damages amount at RMB 500,000.</li></ul></li></ul><p>RMB 500,000 is reportedly<a href="https://www.copyright.or.kr/kcc/koreacopyright/info/download.do?brdctsno=44122&amp;brdctsfileno=15650">close to the maximum level of statutory damages for copyright infringement</a>.</p><h2 id="closing-thoughts">Closing Thoughts</h2><p>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.</p><p>It is reported that the defendant has appealed the case to the Supreme Court. I&rsquo;m curious to see what arguments the defendant will make on appeal. :)</p>
]]></content:encoded></item><item><title>Does GPLv2 Also Require Installation Information?</title><link>https://haksungjang.github.io/en/blog/2021/08/01/does-gplv2-also-require-installation-information/</link><pubDate>Sun, 01 Aug 2021 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Original author - P. McCoy Smith, Translation - Haksung Jang</dc:creator><guid>https://haksungjang.github.io/en/blog/2021/08/01/does-gplv2-also-require-installation-information/</guid><description>Explains the author's analysis of whether GPLv2 also requires installation information.</description><content:encoded>&lt;![CDATA[<blockquote><p><i>Hello.</p><p>P. McCoy Smith, a well-known open source license attorney in the United States, recently published an article titled<a href="https://jolts.world/index.php/jolts/article/view/149">Does GPLv2 Require &lsquo;Installation Information&rsquo;</a> in JOLTS (Journal of Open Law, Technology &amp; Society) (<a href="https://jolts.world/">JOLTS</a>).</p><p>In March 2021, the SFC (Software Freedom Conservancy) (<a href="https://sfconservancy.org/">SFC</a>)<a href="https://sfconservancy.org/blog/">blog</a> published a post titled &ldquo;<a href="https://sfconservancy.org/blog/2021/mar/25/install-gplv2/">Understanding Installation Requirements in GPLv2</a>,&rdquo; arguing that GPLv2 also requires the provision of installation information. This article analyzes that claim and explains, with detailed grounds,<b>the view that GPLv3&rsquo;s &lsquo;Installation Information&rsquo; requirement does not apply to GPLv2</b>.</p><p>This translation renders the original text while adding background explanations wherever possible to improve readability and help readers understand the content.</p><p>If you find any errors or have additional comments, please feel free to contact me at<a href="mailto:haksung@sk.com">haksung@sk.com</a>.</p><p>Thank you. :)</i></p></blockquote><div class="pageinfo pageinfo-primary"><p>This paper was translated by Haksung Jang from the English version available at this<a href="https://jolts.world/index.php/jolts/article/view/149/270">article</a>. The original author,<a href="https://www.linkedin.com/in/mccoysmith">P. McCoy Smith</a>, has not reviewed this translation.</p></div><h3 id="abstract">Abstract</h3><p>One of the key features added in GPLv3 (GNU General Public License version 3) is the requirement to provide &lsquo;Installation Information&rsquo; in addition to source code when distributing software. This was newly added to GPLv3 to address a loophole in GPLv2 (<a href="https://opensource.stackexchange.com/questions/7020/what-exactly-is-tivoization-and-why-did-linus-torvalds-not-like-it-in-gplv3">Tivoization</a>). Recently, however, a claim has been raised that this installation information requirement should be considered to apply to GPLv2 as well.</p><p>This article reviews the historical basis for including the &lsquo;Installation Information&rsquo; 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.</p><h2 id="1-introduction">1. Introduction</h2><p>GPLv2 (GNU General Public License, version 2)<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, 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 &ldquo;free,&rdquo; a view still widely held today<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>. Here, &ldquo;free&rdquo; means the following<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>.</p><ul><li>The freedom to share modifications</li><li>The freedom regarding what users can do with the code</li><li>The freedom for users to modify the code as they wish</li></ul><p>Nevertheless, in 2005 the FSF recognized the need to revise the license to address legal<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup> and technical<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup> issues that had not been considered<sup id="fnref:6"><a href="#fn:6" class="footnote-ref" role="doc-noteref">6</a></sup> when GPLv2 was released. Accordingly, the FSF began a large-scale, multinational collaborative effort from 2006<sup id="fnref:7"><a href="#fn:7" class="footnote-ref" role="doc-noteref">7</a></sup> through 2007 to create a new version of the GPL, and released GPLv3 on June 29, 2007<sup id="fnref:8"><a href="#fn:8" class="footnote-ref" role="doc-noteref">8</a></sup>.</p><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 310px"><img class="card-img-top" src="/blog/2021/08/01/gplv2%EB%8F%84-%EC%84%A4%EC%B9%98%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%9A%94%EA%B5%AC%ED%95%9C%EB%8B%A4%EA%B3%A0/featured_gplv3_hu_24a70687ebb4ac17.png" width="300" height="149"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"/></figcaption></figure><h2 id="2-gplv3s-installation-information-requirement">2. GPLv3&rsquo;s &lsquo;Installation Information&rsquo; Requirement</h2><p>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 controversial<sup id="fnref:9"><a href="#fn:9" class="footnote-ref" role="doc-noteref">9</a></sup>) are (1) the provision defining &lsquo;Installation Information&rsquo; and (2) the provision specifying the circumstances under which installation information must be provided when &lsquo;conveying&rsquo;<sup id="fnref:10"><a href="#fn:10" class="footnote-ref" role="doc-noteref">10</a></sup> software licensed under GPLv3. Understanding the extent to which GPLv3&rsquo;s &lsquo;Installation Information&rsquo; requirement includes, and does not include, elements required under GPLv2 requires a detailed review of the language and history of both licenses.</p><p>GPLv3, Section 6<sup id="fnref:11"><a href="#fn:11" class="footnote-ref" role="doc-noteref">11</a></sup> (which specifies the obligations that apply when GPLv3 code is &ldquo;conveyed in Non-Source Form&rdquo;) defines the disclosure obligations specific to &lsquo;Installation Information&rsquo;.</p><pre tabindex="0"><code>“‘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.”</code></pre><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 610px"><img class="card-img-top" src="/blog/2021/08/01/gplv2%EB%8F%84-%EC%84%A4%EC%B9%98%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%9A%94%EA%B5%AC%ED%95%9C%EB%8B%A4%EA%B3%A0/installationinformation_hu_3265d6769f0a6899.jpg" width="600" height="493"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"/></figcaption></figure><p>What is notable about GPLv3&rsquo;s definition of &lsquo;Installation Information&rsquo; is that it specifically mentions &lsquo;authorization keys&rsquo; and &lsquo;other information&rsquo;. This was included to address specific instances of abuse of GPLv2 software that concerned the FSF when the process of creating GPLv3 began<sup id="fnref:12"><a href="#fn:12" class="footnote-ref" role="doc-noteref">12</a></sup>.</p><p>The detailed requirements of GPLv3&rsquo;s &lsquo;Installation Information&rsquo; obligation, and how and when GPLv3 requires the provision of installation information, are beyond the scope of this article<sup id="fnref:13"><a href="#fn:13" class="footnote-ref" role="doc-noteref">13</a></sup>. 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 &lsquo;Installation Information&rsquo; obligation to GPLv3, the specific language added to GPLv3, and how that language differs from the obligations stated in GPLv2.</p><h2 id="3-historical-background-of-the-installation-information-requirement-tivoization">3. Historical Background of the &lsquo;Installation Information&rsquo; Requirement: &lsquo;Tivoization&rsquo;</h2><p>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 &lsquo;software freedom&rsquo;. The FSF named this practice &lsquo;Tivoization&rsquo;<sup id="fnref:14"><a href="#fn:14" class="footnote-ref" role="doc-noteref">14</a></sup>, and at the time, the FSF considered that TiVo, a DVR (digital video recorder) company, was infringing on users&rsquo; freedom.</p><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 460px"><img class="card-img-top" src="/blog/2021/08/01/gplv2%EB%8F%84-%EC%84%A4%EC%B9%98%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%9A%94%EA%B5%AC%ED%95%9C%EB%8B%A4%EA%B3%A0/tivo_hu_bd6ec548470434af.jpeg" width="450" height="392"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text">
https://blog.codinghorror.com/tivoization-and-the-gpl/</p></figcaption></figure><p>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 hash<sup id="fnref:15"><a href="#fn:15" class="footnote-ref" role="doc-noteref">15</a></sup> 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 executed<sup id="fnref:16"><a href="#fn:16" class="footnote-ref" role="doc-noteref">16</a></sup>.</p><p>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.</p><blockquote><p>      <i>“A<b>tyrant</b> 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.”</i><sup id="fnref:17"><a href="#fn:17" class="footnote-ref" role="doc-noteref">17</a></sup></p></blockquote><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 310px"><img class="card-img-top" src="/blog/2021/08/01/gplv2%EB%8F%84-%EC%84%A4%EC%B9%98%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%9A%94%EA%B5%AC%ED%95%9C%EB%8B%A4%EA%B3%A0/rms_hu_3fb0372c6fc5854c.jpeg" width="300" height="333"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text">
https://fsfe.org/activities/gplv3/brussels-rms-transcript.en.html</p></figcaption></figure><h2 id="4-historical-analysis-the-relationship-between-gplv3s-installation-information-obligation-and-gplv2">4. Historical Analysis: The Relationship Between GPLv3&rsquo;s &lsquo;Installation Information&rsquo; Obligation and GPLv2</h2><p>Although the FSF had long opposed the practice of &lsquo;Tivoization&rsquo; (preventing the reinstallation of modified binaries), during the drafting of GPLv3, statements by the FSF&rsquo;s President, General Counsel, and Executive Director also made clear that this practice could be permitted under GPLv2.</p><blockquote><p>      <i>“[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,<b>the Tivo company does obey GPL version 2</b>. … [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.”</i><sup id="fnref:18"><a href="#fn:18" class="footnote-ref" role="doc-noteref">18</a></sup></p><p>      <i>“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&rsquo;t run software if you modify the box … is not user-respecting conduct.<b>(TiVo) complied with GPL 2 by the skin of its teeth.”</b></i><sup id="fnref:19"><a href="#fn:19" class="footnote-ref" role="doc-noteref">19</a></sup></p><p>      <i>“TiVoization is described by Peter Brown [Executive Director of FSF in 2006-07 during drafting of GPLv3] as circumventing GPL2 ‘in spirit,<b>not technically.</b>’”</i><sup id="fnref:20"><a href="#fn:20" class="footnote-ref" role="doc-noteref">20</a></sup></p></blockquote><p>This difference (between GPLv3, which prohibits &lsquo;Tivoization&rsquo;, 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 &lsquo;GPLv2 only&rsquo;.</p><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 460px"><img class="card-img-top" src="/blog/2021/08/01/gplv2%EB%8F%84-%EC%84%A4%EC%B9%98%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%9A%94%EA%B5%AC%ED%95%9C%EB%8B%A4%EA%B3%A0/torvalds_hu_44134ce259034e1.jpeg" width="450" height="338"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text">
https://www.youtube.com/watch?v=bV3cKq26nKQ</p></figcaption></figure><blockquote><p>      <i>“’The FSF is trying to make some things<b>no longer permissible under the GPLv3 that the GPLv2 left open</b>, and I just happen to think that those things were better off being left open.’”</i><sup id="fnref:21"><a href="#fn:21" class="footnote-ref" role="doc-noteref">21</a></sup></p><p>      <i>“‘I don&rsquo;t think the GPL v3 conversion is going to happen for the kernel, since I personally don&rsquo;t want to convert any of my code.’ … ‘<b>I think it&rsquo;s insane to require people to make their private signing keys available</b>, for example. I wouldn&rsquo;t do it,’ [Torvalds] said.”</i><sup id="fnref:22"><a href="#fn:22" class="footnote-ref" role="doc-noteref">22</a></sup></p><p>      <i>“[If] you can not<b>install</b> or<b>run</b> 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.<b>That requirement has always been there, even with plain GPLv2</b>. You have the source. The difference? The hardware may only run signed kernels. The fact that the hardware is closed is a<b>hardware</b> 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. …<b>[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.</b>”</i><sup id="fnref:23"><a href="#fn:23" class="footnote-ref" role="doc-noteref">23</a></sup></p></blockquote><p>Torvalds&rsquo;s view on GPLv3&rsquo;s &lsquo;Installation Information&rsquo; requirement was shared by several major kernel developers, as shown below<sup id="fnref:24"><a href="#fn:24" class="footnote-ref" role="doc-noteref">24</a></sup>. Torvalds maintained a consistent position even a decade later, which is one of the reasons the Linux kernel continues to maintain a &lsquo;GPLv2 only&rsquo; license to this day<sup id="fnref:25"><a href="#fn:25" class="footnote-ref" role="doc-noteref">25</a></sup>.</p><blockquote><p>      <i>“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. …<b>Version 3 extended that in ways that I personally am really uncomfortable with.</b> 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,<b>but to me it’s not the same license at all</b>. So I was very upset, and made it very clear, and this was months before version 3 was actually published.”</i><sup id="fnref:26"><a href="#fn:26" class="footnote-ref" role="doc-noteref">26</a></sup></p></blockquote><p>In the process of creating and releasing GPLv3, the FSF made clear that, unlike GPLv2, GPLv3 was adding content that could prevent &lsquo;Tivoization&rsquo;.</p><blockquote><p>      <i>“There are several primary areas<b>where version 3 is different from version 2. One is in regard to [T]ivoisation.</b>"<sup id="fnref:27"><a href="#fn:27" class="footnote-ref" role="doc-noteref">27</a></sup></p><p>      “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&rsquo;t run, period. Because, it does a check sum of the software and it verifies that it&rsquo;s a version from them and if it&rsquo;s your version, it won&rsquo;t run at all.<b>So this is what we are forbidding, with the text we have written for GPL version three</b>. It says that the<b>source code they must give you includes whatever signature keys, or codes that are necessary to make your modified version run.</b>”</i><sup id="fnref:28"><a href="#fn:28" class="footnote-ref" role="doc-noteref">28</a></sup></p></blockquote><p>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 &lsquo;Installation Information&rsquo; requirement that is broader than any requirement contained in GPLv2.</p><blockquote><p>      <i>“<b>GPLv2 did not address the use of technical measures to take back the rights that &hellip; GPL[v2] granted</b>, 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. …<b>GPLv3 must address these issues: free software is ever more widely embedded in devices that impose technical limitations on the user&rsquo;s freedom to change it.</b>”</i><sup id="fnref:29"><a href="#fn:29" class="footnote-ref" role="doc-noteref">29</a></sup></p><p>      <i>“Does GPLv2 have a requirement about delivering installation information?&hellip;</i></p><p>      <i>“GPLv3 explicitly requires redistribution to include the full necessary ‘Installation Information.’ GPLv2 doesn&rsquo;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.<b>This covers part, but not all, of what GPLv3 calls ‘Installation Information.’ Thus, GPLv3&rsquo;s requirement about installation information is stronger.</b>”</i><sup id="fnref:30"><a href="#fn:30" class="footnote-ref" role="doc-noteref">30</a></sup></p></blockquote><p>Richard Stallman appealed to software developers to &ldquo;upgrade&rdquo; 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.</p><blockquote><p>      <i>““Keeping a program under GPLv2 won&rsquo;t create problems.<b>The reason to migrate is because of the existing problems which GPLv3 will address.</b></i></p><p>      <i>“One major danger that GPLv3 will block is tivoization. Tivoization means computers (called “appliances”) contain GPL-covered software that you can&rsquo;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&rsquo;t like. The manufacturers of these computers take advantage of the freedom that free software provides, but they don&rsquo;t let you do likewise.</i><sup id="fnref:31"><a href="#fn:31" class="footnote-ref" role="doc-noteref">31</a></sup></p></blockquote><h2 id="5-gplv2s-source-code-disclosure-obligation">5. GPLv2&rsquo;s Source Code Disclosure Obligation</h2><p>One of the most notable features of a Copyleft license such as GPLv2, released in 1991, is that any individual or entity that distributes<sup id="fnref:32"><a href="#fn:32" class="footnote-ref" role="doc-noteref">32</a></sup> code licensed under the terms of GPLv2 has an obligation to provide the &lsquo;source code&rsquo;<sup id="fnref:33"><a href="#fn:33" class="footnote-ref" role="doc-noteref">33</a></sup>. GPLv2&rsquo;s Section 3 specifically defines the components of &lsquo;source code&rsquo; that must be provided when code under GPLv2 is distributed in object or executable code form<sup id="fnref:34"><a href="#fn:34" class="footnote-ref" role="doc-noteref">34</a></sup>.</p><pre tabindex="0"><code>“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.”</code></pre><p>The explanation of the obligation to provide source code can generally be understood in connection with common knowledge of what &lsquo;source code&rsquo; means in computer programming.</p><blockquote><p>      <i>“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.”</i><sup id="fnref:35"><a href="#fn:35" class="footnote-ref" role="doc-noteref">35</a></sup></p></blockquote><p>GPLv2 also includes two other items that fall within the license&rsquo;s definition of &lsquo;source code&rsquo;.</p><ul><li>‘associated interface definition files’</li><li>‘scripts used to control compilation and installation of the executable&rsquo;</li></ul><p>To understand how GPLv2&rsquo;s disclosure obligation differs from GPLv3&rsquo;s disclosure obligation, it is necessary to review the meaning of these provisions.</p><h2 id="6-textual-analysis-gplv3s-installation-information-obligation-and-gplv2s-source-code-obligation">6. Textual Analysis: GPLv3&rsquo;s &lsquo;Installation Information&rsquo; Obligation and GPLv2&rsquo;s Source Code Obligation</h2><p>As discussed above, GPLv3&rsquo;s disclosure obligation for distributing executable code includes both &lsquo;Corresponding Source&rsquo;<sup id="fnref:36"><a href="#fn:36" class="footnote-ref" role="doc-noteref">36</a></sup> and &lsquo;Installation Information&rsquo;<sup id="fnref:37"><a href="#fn:37" class="footnote-ref" role="doc-noteref">37</a></sup>.</p><pre tabindex="0"><code>“[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.”</code></pre><pre tabindex="0"><code>“[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.”</code></pre><p>GPLv3&rsquo;s original draft included the obligation to provide authorization keys within the definition of &ldquo;Corresponding Source&rdquo;<sup id="fnref:38"><a href="#fn:38" class="footnote-ref" role="doc-noteref">38</a></sup>. 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.</p><blockquote><p>      <i>“We have moved the technical restrictions provisions from section 1, where they formed part of the definition of Corresponding Source, to section 6,<b>where they are presented as a condition on the right to convey object code works</b>. Some critics of the provisions in our earlier drafts focused on what they regarded as<b>an inappropriate equation of cryptographic keys with source code</b>. Placing the requirements in section 6 should make their purpose and reasonableness more evident.”</i><sup id="fnref:39"><a href="#fn:39" class="footnote-ref" role="doc-noteref">39</a></sup></p></blockquote><p>Thus, during the draft revision stage of GPLv3, the FSF recognized and acknowledged that the &lsquo;Installation Information&rsquo; requirement is a separate obligation beyond the &lsquo;Corresponding Source Code&rsquo; obligation that existed in GPLv2 and was also included in GPLv3.</p><p>GPLv2&rsquo;s source code disclosure obligation is as follows<sup id="fnref:40"><a href="#fn:40" class="footnote-ref" role="doc-noteref">40</a></sup>.</p><pre tabindex="0"><code>“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.”</code></pre><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 610px"><img class="card-img-top" src="/blog/2021/08/01/gplv2%EB%8F%84-%EC%84%A4%EC%B9%98%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%9A%94%EA%B5%AC%ED%95%9C%EB%8B%A4%EA%B3%A0/sourcecode_hu_e9a87e59036e1d66.jpeg" width="600" height="422"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"/></figcaption></figure><p>To the extent that anything within GPLv2&rsquo;s &lsquo;corresponding source code&rsquo; requirement resembles GPLv3&rsquo;s &lsquo;Installation Information&rsquo; requirement, it would be the two separately specified items below.</p><ul><li>‘any associated interface definition files’</li><li>‘scripts used to control compilation and installation of the executables.’</li></ul><p>&lsquo;Interface definition file&rsquo; 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&rsquo;s programming interface<sup id="fnref:41"><a href="#fn:41" class="footnote-ref" role="doc-noteref">41</a></sup>. 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).</p><p>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 &lsquo;script&rsquo; itself, in the sense commonly understood in computing.</p><blockquote><p>      <i>“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.”</i><sup id="fnref:42"><a href="#fn:42" class="footnote-ref" role="doc-noteref">42</a></sup></p><p>      <i>“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).”</i><sup id="fnref:43"><a href="#fn:43" class="footnote-ref" role="doc-noteref">43</a></sup></p></blockquote><p>An installation script<sup id="fnref:44"><a href="#fn:44" class="footnote-ref" role="doc-noteref">44</a></sup> is generally a small, simple program used to automate the process of installing a particular program on a particular device<sup id="fnref:45"><a href="#fn:45" class="footnote-ref" role="doc-noteref">45</a></sup>.</p><p>Therefore, from the standpoint of textual interpretation, there appears to be no doubt that GPLv2&rsquo;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 &lsquo;script&rsquo;.</p><p>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&rsquo;s ‘scripts used to … installation of the executable’ requirement.</p><h2 id="7-backporting-the-installation-information-requirement-to-gplv2">7. Backporting the Installation Information Requirement to GPLv2</h2><p>Some attempt to backport the entirety of GPLv3&rsquo;s &lsquo;Installation Information&rsquo; definition into GPLv2&rsquo;s source code obligation, but such an effort produces results that are historically and textually incorrect. Suppose the complete &lsquo;Installation Information&rsquo; definition were included in GPLv2&rsquo;s Section 3. The moment one does so, a dilemma arises. GPLv3&rsquo;s &lsquo;Installation Information&rsquo; requirement is limited in its application to a specific type of product, namely a &lsquo;User Product&rsquo;<sup id="fnref:46"><a href="#fn:46" class="footnote-ref" role="doc-noteref">46</a></sup>. The obligation to provide &lsquo;Installation Information&rsquo; under GPLv3 applies only to &lsquo;User Products&rsquo; and does not apply to other products<sup id="fnref:47"><a href="#fn:47" class="footnote-ref" role="doc-noteref">47</a></sup>.</p><pre tabindex="0"><code>“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.”</code></pre><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 610px"><img class="card-img-top" src="/blog/2021/08/01/gplv2%EB%8F%84-%EC%84%A4%EC%B9%98%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%9A%94%EA%B5%AC%ED%95%9C%EB%8B%A4%EA%B3%A0/userproduct_hu_6fb58d7fd9850805.jpeg" width="600" height="591"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"/></figcaption></figure><p>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 &lsquo;User Product&rsquo; or not. Therefore, if GPLv3&rsquo;s complete definition of the &lsquo;Installation Information&rsquo; obligation were merely a restatement or clarification of GPLv2&rsquo;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 &lsquo;software freedom&rsquo;. This interpretation is the exact opposite of what GPLv3 was originally intended to achieve.</p><blockquote><p>      <i> “As a free software license &hellip; 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&rsquo;s intent. We wish courts all over the world to understand that our intent [in creating GPLv3]<b>is to maximise freedom</b>, not to restrict it, and that everything should be so understood when effect is given to its terms”</i><sup id="fnref:48"><a href="#fn:48" class="footnote-ref" role="doc-noteref">48</a></sup></p></blockquote><p>Stated differently, GPLv3 can maximize freedom in line with its original intent only if the &lsquo;Installation Information&rsquo; obligation itself extends &lsquo;freedom&rsquo; beyond GPLv2&rsquo;s disclosure obligation. Otherwise, since GPLv2&rsquo;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 &lsquo;freedom&rsquo;.</p><h2 id="8-gplv2s-textual-and-historical-revisionism">8. GPLv2&rsquo;s Textual and Historical Revisionism</h2><p>As explained in detail above, textual analysis and a review of the historical record make it clear that GPLv3&rsquo;s &lsquo;Installation Information&rsquo; obligation does not exist within GPLv2&rsquo;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&rsquo;s requirements so as to equate GPLv2&rsquo;s source code obligation with GPLv3&rsquo;s &lsquo;Installation Information&rsquo; requirement.</p><blockquote><p>      <i> “GPLv2 §3 requires that the source code include ‘meta-material’ like scripts, interface definitions,<b>and other material that is used to ‘control compilation and installation’</b> of the binaries.”</i><sup id="fnref:49"><a href="#fn:49" class="footnote-ref" role="doc-noteref">49</a></sup></p><p>      <i> “GPLv2 included a clear obligation to provide ‘the scripts used to control … installation’ that function for the GPLv2&rsquo;d works. GPLv2 assures, to the purchaser of an embedded product, their absolute right to receive the<b>information necessary to install a modified version of the GPLv2&rsquo;d works.</b> … 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,<b>but can also be merely a recipe and/or guidance — written instructions that explain how to succeed at install.</b>”</i><sup id="fnref:50"><a href="#fn:50" class="footnote-ref" role="doc-noteref">50</a></sup></p></blockquote><p>As shown in these statements, an effort is currently underway to fold GPLv3&rsquo;s concept of the &lsquo;Installation Information&rsquo; requirement (information, recipes, guides, instructions, etc. for installing and executing an executable) into GPLv2, so that GPLv2 would also require the provision of a &lsquo;script&rsquo; for installation. All such efforts are not only counter-textual to GPLv2&rsquo;s actual requirements but also ahistorical. Again, GPLv2&rsquo;s drafters acknowledged that GPLv2 could not require TiVo to provide the information necessary to reinstall a modified executable on a TiVo device<sup id="fnref:51"><a href="#fn:51" class="footnote-ref" role="doc-noteref">51</a></sup>.</p><h2 id="9-conclusion">9. Conclusion</h2><ul><li>The text of GPLv3 and the historical record make clear that GPLv3 was specifically designed to add the provision of &lsquo;Installation Information&rsquo; — a new requirement not found in GPLv2.</li><li>This historical record also makes clear that, under GPLv2, distribution without providing installation information (such as authorization keys or other hardware-embedded information that could prevent the installation of a modified version of GPLv2 code) was entirely permitted, and that GPLv2 required only a narrow category of information (installation scripts).</li><li>All efforts to backport GPLv3&rsquo;s &lsquo;Installation Information&rsquo; requirement to GPLv2 are ahistorical and produce the counterintuitive result of making GPLv3 more restrictive of &lsquo;freedom&rsquo; than GPLv2. This was never the purpose for which GPLv3 was created in the first place.</li><li>Those who assert this counterintuitive result would in effect be advising developers who love software freedom to prefer GPLv2 over GPLv3, a result contrary to every purpose for which GPLv3 was created and released.</li></ul><p>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&rsquo;s source code obligation.</p><h3 id="about-the-author">About the author</h3><p><i><b>P. McCoy Smith</b> is Founding Attorney at Lex Pan Law (<a href="http://www.lexpan.law/">www.lexpan.law</a>), 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 (<a href="http://www.opsequ.io/">www.opsequ.io</a>), an software licence compliance consultancy. As a member of<a href="http://gplv3.fsf.org/discussion-committees/B/memberlist">GPLv3 Discussion Committee B</a>, he was an active participant in the debate over, and revision of, the ‘Installation Information’ requirement in that licence.</i></p><div class="pageinfo pageinfo-primary"><p><b>Licence and Attribution</b></p><p>This paper was published in the Journal of Open Law, Technology, &amp; Society, Volume 12, Issue 1 (April 2021). It originally appeared online at<a href="https://www.jolts.world">https://www.jolts.world</a></p><p>This article should be cited as follows:</p><p>Smith, P. McCoy (2021) &lsquo;Does GPLv2 Include an “Installation Information” Obligation? A Textual &amp; Historical Analysis&rsquo;, Journal of Open Law, Technology &amp; Society, 12(1), pp 21 – 31</p><p>DOI:<a href="https://doi.org/10.5033/jolts.v12i1.149">10.5033/jolts.v12i1.149ㅊㅊ</a></p><p>Copyright © 2021 P. McCoy Smith.</p><p>This article is licensed under a Creative Commons Attribution 4.0 CC-BY available at</p><p><a href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</a></p><p><img src="/blog/2021/08/01/gplv2%EB%8F%84-%EC%84%A4%EC%B9%98%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%9A%94%EA%B5%AC%ED%95%9C%EB%8B%A4%EA%B3%A0/cc-by.png" alt="ccby"/></div><div class="footnotes" role="doc-endnotes"><hr><ol><li id="fn:1"><p>GNU Operating System, ‘GNU Library General Public License, version 2.0,’ (June, 1991)<a href="https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html">https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html</a> (accessed March 8, 2021).&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:2"><p>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)<a href="https://resources.whitesourcesoftware.com/blog-whitesource/open-source-licenses-trends-and-predictions">https://resources.whitesourcesoftware.com/blog-whitesource/open-source-licenses-trends-and-predictions</a> (accessed March 30, 2021).&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:3"><p>See GNU Operating System, ‘What is free software? The Free Software Definition,’<a href="https://www.gnu.org/philosophy/free-sw.en.html">https://www.gnu.org/philosophy/free-sw.en.html</a> (accessed March 8, 2021).&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:4"><p>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 &rsquo;technological protection measures&rsquo;, See WCT Article 11; 17 U.S.C. § 1201 (1998). GPLv3, § 3 directly addresses these additions to copyright law.&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:5"><p>The technology in TiVo&rsquo;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).&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:6"><p>Free Software Foundation, ‘Rationale for 1st discussion draft,’<a href="http://gplv3.fsf.org/gpl-rationale-2006-01-16.html">http://gplv3.fsf.org/gpl-rationale-2006-01-16.html</a> (accessed March 22, 2021).&#160;<a href="#fnref:6" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:7"><p>Irish Free Software Organization, ‘Transcript of Opening session of first international GPLv3 conference,’ (January 16th 2006)<a href="http://www.ifso.ie/documents/gplv3-launch-2006-01-16.html">http://www.ifso.ie/documents/gplv3-launch-2006-01-16.html</a> (accessed March 22, 2021).&#160;<a href="#fnref:7" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:8"><p>GNU Operating System, ‘GNU General Public License, version 3,’ (‘GPLv3’) (June 29, 2007)<a href="https://www.gnu.org/licenses/gpl-3.0.html">https://www.gnu.org/licenses/gpl-3.0.html</a> (accessed March 22, 2021).&#160;<a href="#fnref:8" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:9"><p>Burnette, Ed, ‘Tivo and GPL: Beauty and the Beast?,’ ZDNet, (October 2, 2006)<a href="https://www.zdnet.com/article/tivo-and-gpl-beauty-and-the-beast/">https://www.zdnet.com/article/tivo-and-gpl-beauty-and-the-beast/</a> (accessed March 29, 2021).&#160;<a href="#fnref:9" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:10"><p>‘Convey’ is the activity defined in GPLv3 as triggering source code disclosure obligations. GPLv3, n. 6, §§ 4-6.&#160;<a href="#fnref:10" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:11"><p>GPLv3, n. 6 above, § 6.&#160;<a href="#fnref:11" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:12"><p>See ‘Transcript of Opening Session of First International GPLv3 Conference,’ (January 16th 2006)<a href="http://www.ifso.ie/documents/gplv3-launch-2006-01-16.html">http://www.ifso.ie/documents/gplv3-launch-2006-01-16.html</a> (accessed May 5, 2021) at 0h 03m 59s&#160;<a href="#fnref:12" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:13"><p>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.&#160;<a href="#fnref:13" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:14"><p>The Computer Language Company, ‘Tivoization,’ The Free Dictionary by Farlex<a href="https://encyclopedia2.thefreedictionary.com/Tivoization">https://encyclopedia2.thefreedictionary.com/Tivoization</a> (accessed April 2, 2021).&#160;<a href="#fnref:14" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:15"><p>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)<a href="https://www.lifewire.com/what-does-checksum-mean-2625825">https://www.lifewire.com/what-does-checksum-mean-2625825</a> (accessed June 14, 2021).&#160;<a href="#fnref:15" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:16"><p>Miller, Todd, ‘Using large disks with TiVo,’ Sudo Project (2008)<a href="https://web.archive.org/web/20120206023943/http://www.gratisoft.us/tivo/bigdisk.html">https://web.archive.org/web/20120206023943/http://www.gratisoft.us/tivo/bigdisk.html</a> (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 &amp; Webster, Behan, ‘Safely Copylefted Cars: Reexamining GPLv3 Installation Information Requirements,’ Linux Foundation Events (2017) at 13<a href="https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Safely-Copylefted-Cars-Reexamining-GPLv3-Installation-Information-Requirements-ALS-Bradley-Kuhn-Behan-Webster-1.pdf">https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Safely-Copylefted-Cars-Reexamining-GPLv3-Installation-Information-Requirements-ALS-Bradley-Kuhn-Behan-Webster-1.pdf</a> (accessed April 9, 2021)&#160;<a href="#fnref:16" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:17"><p>GNU Operating System, ‘Proprietary Tyrants,’<a href="https://www.gnu.org/proprietary/proprietary-tyrants.html">https://www.gnu.org/proprietary/proprietary-tyrants.html</a> (accessed April 2, 2021).&#160;<a href="#fnref:17" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:18"><p>Stallman, Richard, ‘Transcript of Richard Stallman at the 5th international GPLv3 conference,’ (November 21, 2006)<a href="https://fsfe.org/activities/gplv3/tokyo-rms-transcript#tivoisation">https://fsfe.org/activities/gplv3/tokyo-rms-transcript#tivoisation</a> (accessed April 2, 2021).&#160;<a href="#fnref:18" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:19"><p>Shankland, Stephen, ‘Defender of the GPL,’ CNet (January 19, 2006)<a href="https://www.cnet.com/news/defender-of-the-gpl/">https://www.cnet.com/news/defender-of-the-gpl/</a> (accessed April 2, 2021).&#160;<a href="#fnref:19" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:20"><p>Byfield, Bruce, ‘GPLv2 or GPLv3?: Inside the Debate,’ Datamation (June 17, 2007)<a href="https://www.datamation.com/trends/gplv2-or-gplv3-inside-the-debate/">https://www.datamation.com/trends/gplv2-or-gplv3-inside-the-debate/</a> (accessed April 9, 2021).&#160;<a href="#fnref:20" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:21"><p>Bennett, Amy, ‘Linux creator Torvalds still no fan of GPLv3,’ Computerworld (July 28, 2006)<a href="https://www.computerworld.com/article/2820022/linux-creator-torvalds-still-no-fan-of-gplv3.html">https://www.computerworld.com/article/2820022/linux-creator-torvalds-still-no-fan-of-gplv3.html</a> (accessed April 7, 2021).&#160;<a href="#fnref:21" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:22"><p>Shankland, Stephen, ‘Torvalds rules out GPL3 for Linux,’ ZDNet UK (January 27, 2006)<a href="https://web.archive.org/web/20080424051024/http:/news.zdnet.co.uk/software/0,1000000121,39249370,00.htm">https://web.archive.org/web/20080424051024/http:/news.zdnet.co.uk/software/0,1000000121,39249370,00.htm</a> (accessed April 7, 2021).&#160;<a href="#fnref:22" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:23"><p>Barr, Joe, ‘Torvalds versus GPLv3 DRM restrictions,’ Linux.com (February 2, 2006)<a href="https://www.linux.com/news/torvalds-versus-gplv3-drm-restrictions/">https://www.linux.com/news/torvalds-versus-gplv3-drm-restrictions/</a> (accessed April 8, 2021).&#160;<a href="#fnref:23" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:24"><p>Bottomley, James, et al., ‘Kernel developers&rsquo; position on GPLv3,’ LWN.net (September 22, 2006)<a href="https://lwn.net/Articles/200422/">https://lwn.net/Articles/200422/</a> (accessed April 8, 2021). See also Bottomley, James, et al., &lsquo;The Dangers and Problems with GPLv3,&rsquo; (September 15, 2006)<a href="https://lore.kernel.org/lkml/1158941750.3445.31.camel@mulgrave.il.steeleye.com">https://lore.kernel.org/lkml/1158941750.3445.31.camel@mulgrave.il.steeleye.com</a> (accessed May 27, 2021).&#160;<a href="#fnref:24" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:25"><p>Linux kernel licensing notice,<a href="https://elixir.bootlin.com/linux/latest/source/COPYING">https://elixir.bootlin.com/linux/latest/source/COPYING</a> (accessed April 8, 2021).&#160;<a href="#fnref:25" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:26"><p>Deb Conf, ‘Linus Torvalds says GPL v3 violates everything that GPLv2 stood for,’ YOUTUBE (accessed May 5, 2021, at 0h 0m 34s)<a href="https://www.youtube.com/watch?v=PaKIZ7gJlRU">https://www.youtube.com/watch?v=PaKIZ7gJlRU</a>.&#160;<a href="#fnref:26" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:27"><p>Stallman, Richard, ‘Transcript of Richard Stallman at the 3rd international GPLv3 conference,’ (June 22, 2006)<a href="https://fsfe.org/activities/gplv3/barcelona-rms-transcript.en.html#tivoisation">https://fsfe.org/activities/gplv3/barcelona-rms-transcript.en.html#tivoisation</a> (accessed April 2, 2021).&#160;<a href="#fnref:27" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:28"><p>Stallman, Richard, ‘Transcript of Richard Stallman speaking on GPLv3 in Torino,’ (March 18, 2006)<a href="https://fsfe.org/activities/gplv3/torino-rms-transcript.en.html#drm">https://fsfe.org/activities/gplv3/torino-rms-transcript.en.html#drm</a> (accessed April 2, 2021).&#160;<a href="#fnref:28" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:29"><p>Free Software Foundation, ‘Opinion on Digital Restrictions Management,’ (August, 2006)<a href="http://gplv3.fsf.org/drm-dd2.html">http://gplv3.fsf.org/drm-dd2.html</a> (accessed March 17, 2021).&#160;<a href="#fnref:29" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:30"><p>GNU Project, ‘Frequently Asked Questions About the GNU Licenses,’<a href="https://www.gnu.org/licenses/gpl-faq.html#InstInfo">https://www.gnu.org/licenses/gpl-faq.html#InstInfo</a> (accessed April 7, 2021)&#160;<a href="#fnref:30" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:31"><p>Stallman, Richard M. ‘Why Upgrade to GPL Version 3,’ (May 31, 2007)<a href="http://gplv3.fsf.org/rms-why.html">http://gplv3.fsf.org/rms-why.html</a> (accessed May 6, 2021).&#160;<a href="#fnref:31" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:32"><p>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,’<a href="https://www.gnu.org/licenses/gpl-faq.html#ConveyVsDistribute">https://www.gnu.org/licenses/gpl-faq.html#ConveyVsDistribute</a> (accessed March 29, 2021).&#160;<a href="#fnref:32" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:33"><p>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).&#160;<a href="#fnref:33" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:34"><p>GPLv2, n. 1 above, § 3.&#160;<a href="#fnref:34" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:35"><p>‘Source Code,’ Computer Dictionary of Information Technology<a href="https://www.computer-dictionary-online.org/definitions-s/source-code.html">https://www.computer-dictionary-online.org/definitions-s/source-code.html</a> (accessed March 30, 2021).&#160;<a href="#fnref:35" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:36"><p>GPLv3, n. 6 above, § 1.&#160;<a href="#fnref:36" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:37"><p>GPLv3, n. 6 above, § 6.&#160;<a href="#fnref:37" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:38"><p>Free Software Foundation, ‘GPLv3 First Discussion Draft,’ §1 (January 16, 2006)<a href="http://gplv3.fsf.org/gpl-draft-2006-01-16.html">http://gplv3.fsf.org/gpl-draft-2006-01-16.html</a> (accessed June 14, 2021).&#160;<a href="#fnref:38" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:39"><p>Free Software Foundation, ‘GPLv3 Third Discussion Draft Rationale,’ (March 28, 2007)<a href="http://gplv3.fsf.org/gpl3-dd3-rationale.pdf/download">http://gplv3.fsf.org/gpl3-dd3-rationale.pdf/download</a> (accessed June 14, 2021).&#160;<a href="#fnref:39" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:40"><p>GPLv2, n. 1 above, § 3.&#160;<a href="#fnref:40" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:41"><p>E.g., Microsoft, ‘Interface Definition (IDL) File,’ Windows Developer Documentation (May 31, 2018)<a href="https://docs.microsoft.com/en-us/windows/win32/midl/interface-definition-idl-file">https://docs.microsoft.com/en-us/windows/win32/midl/interface-definition-idl-file</a> (accessed April 8, 2021);
de St. Germain, H. James, ‘Interfaces in Object Oriented Programming Languages,’ University of Utah Computing Department<a href="https://www.cs.utah.edu/~germain/PPS/Topics/interfaces.html">https://www.cs.utah.edu/~germain/PPS/Topics/interfaces.html</a> (accessed April 8, 2021).&#160;<a href="#fnref:41" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:42"><p>Christensson, Per, ‘Script Definition,’" TechTerms. (2006)<a href="https://techterms.com/definition/script">https://techterms.com/definition/script</a> (accessed April 8, 2021).&#160;<a href="#fnref:42" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:43"><p>‘Script,’ Merriam-Webster.com Dictionary, Merriam-Webster<a href="https://www.merriam-webster.com/dictionary/script">https://www.merriam-webster.com/dictionary/script</a> (accessed April 8, 2021).&#160;<a href="#fnref:43" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:44"><p>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.&#160;<a href="#fnref:44" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:45"><p>Arthur, Ty, ‘How to Write a Simple Script to Install a Program,’ Techwalla<a href="https://www.techwalla.com/articles/how-to-write-a-simple-script-to-install-a-program">https://www.techwalla.com/articles/how-to-write-a-simple-script-to-install-a-program</a> (accessed April 8, 2021)&#160;<a href="#fnref:45" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:46"><p>‘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.&#160;<a href="#fnref:46" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:47"><p>GPLv3, n. 6 above, at Section 6.&#160;<a href="#fnref:47" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:48"><p>Transcript of Opening Session of First International GPLv3 Conference, see n.10 above, at 0h 23m 30s.&#160;<a href="#fnref:48" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:49"><p>Kuhn, Bradley, et al., ‘Copyleft and the GNU General Public License: A Comprehensive Tutorial and Guide,’ Copyleft.org at § 5.2 (2003-2018)<a href="https://copyleft.org/guide/comprehensive-gpl-guidech6.html#x9-460005.2">https://copyleft.org/guide/comprehensive-gpl-guidech6.html#x9-460005.2</a> (accessed April 9, 2021).&#160;<a href="#fnref:49" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:50"><p>Gingerich, Denver, ‘Understanding Installation Requirements in GPLv2,’ Software Freedom Conservancy (March 25, 2021)<a href="https://sfconservancy.org/blog/2021/mar/25/install-gplv2/">https://sfconservancy.org/blog/2021/mar/25/install-gplv2/</a> (accessed April 9, 2021).&#160;<a href="#fnref:50" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li><li id="fn:51"><p>See above nn. 17 and 22-23.&#160;<a href="#fnref:51" class="footnote-backref" role="doc-backlink">&#8617;&#xfe0e;</a></p></li></ol></div>
]]></content:encoded></item><item><title>Distribution of Dockerfiles: Who Is Responsible for Compliance?</title><link>https://haksungjang.github.io/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/</link><pubDate>Tue, 04 May 2021 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang ([@haksungjang](https://haksungjang.github.io/))</dc:creator><guid>https://haksungjang.github.io/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/</guid><description>Distribution of Dockerfiles: Who is responsible for FOSS Licence Compliance?</description><content:encoded>&lt;![CDATA[<blockquote><p>Hello!</p><p>In April 2021, Till Jaeger, a well-known German open source lawyer,<a href="https://jolts.world/index.php/jolts/article/view/147">published</a> 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.</p><p>This is a Korean translation of Till&rsquo;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).</p><ul><li>If you find translation errors or have questions, please contact me by email at<a href="mailto:haksung@sk.com">haksung@sk.com</a></li><li>I am deeply grateful to<a href="https://www.linkedin.com/in/%EC%98%81%ED%99%98-%EA%B9%80-4069b5135/">Sean</a> of Kakao for his help reviewing this translation. ^^</li></ul></blockquote><br><hr><blockquote><p>This paper was translated by Haksung Jang from the English version available at the<a href="https://jolts.world/index.php/jolts/article/view/147">Distribution of Dockerfiles</a>. The original document is licensed under<a href="https://creativecommons.org/licenses/by/4.0/">CC-BY-4.0</a>. The original author, Till Jaeger, has not reviewed this translation.</p></blockquote><hr><br>
> **Abstract**
>
> Container technology enables integrated software distribution regardless of the target system. Because of this advantage, distributions using Docker are becoming more and more popular. This, however, raises a new question about FOSS license compliance. In a Docker environment, it is possible not only to distribute the entire software in the form of a "Docker image," but also to distribute only a Dockerfile. A Dockerfile, similar to a script file, contains only a kind of instructions that cause software to be downloaded from an external repository. This form of decentralized distribution raises the question of who is responsible for license compliance. This article explains the concept of "distribution" under European copyright law as a starting point for discussing free licenses. The research reveals that distribution in the sense of copyright law does not always have to be physical distribution.
>
> This article is funded by [OSADL](https://www.osadl.org/) (Open Source Automation Development Lab) and was co-authored.<h2 id="1-introduction-and-the-problem">1. Introduction and the Problem</h2><p>FOSS license compliance issues related to Docker technology have been a major subject of research in recent years. In particular, Armijn Hemel&rsquo;s white paper, &ldquo;<a href="https://www.linuxfoundation.org/wp-content/uploads/Docker-Containers-for-Legal-Professionals-Whitepaper_042420.pdf">Docker Containers for Legal Professionals</a>"<sup><a name="footnote_1_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_1">1</a></sup>, 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.</p><p>Almost all FOSS licenses tie compliance with license obligations to &ldquo;distribution&rdquo; (or, in the case of GPL-3.0, &ldquo;conveying&rdquo;). Because most licenses do not further define what &ldquo;distribution&rdquo; or &ldquo;conveying&rdquo; means within the license itself, the definition of &ldquo;distribution&rdquo; must be determined by reference to the applicable copyright law<sup><a name="footnote_2_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_2">2</a></sup>.</p><hr><blockquote><p>Most open source licenses require compliance with license obligations at the point when open source software is &ldquo;redistributed.&rdquo; In other words, if the open source software is not redistributed, compliance with license obligations is not required.
How far the scope of &ldquo;distribution&rdquo; extends must be interpreted according to the copyright law applicable in the relevant jurisdiction.</p></blockquote><hr><p>Because of its importance to license compliance, the term &ldquo;distribution&rdquo; continues to be the subject of legal analysis. Heather Meeker wrote about<a href="http://dx.doi.org/10.5033/ifosslr.v4i1.66">distribution in open source licenses</a> from the perspective of U.S. copyright law<sup><a name="footnote_3_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_3">3</a></sup>. 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 &ldquo;distribution&rdquo; elaborated by the CJEU.</p><p>This article first provides an overview of the technical fundamentals of Docker and an interpretation of the term &ldquo;distribution&rdquo; under European copyright law. It then discusses who should be responsible for license compliance when distributing a Dockerfile.</p><h2 id="2-technical-background-of-docker">2. Technical Background of Docker</h2><p>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&rsquo;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.</p><h3 id="docker-image">Docker image</h3><p>A preconfigured container can be distributed as a &ldquo;Docker image,&rdquo; 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 &ldquo;Docker Hub.&rdquo; The same applies to what is known as a &ldquo;Base Image,&rdquo; 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 &ldquo;layers&rdquo; that are built on top of one another to form a complete Docker image.</p><figure class="image"><img src="./image-layer.png" alt="image-layer" width="600"><figcaption><i>Layer storage method: https://cultivo-hy.github.io/docker/image/usage/2019/03/14/Docker정리/</i><figcaption/><h3 id="dockerfile">Dockerfile</h3><p>A &ldquo;Dockerfile&rdquo; 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.</p><figure class="image"><img src="./featured-dockerfile-ex.png" alt="featured-dockerfile-ex.png" width="600"><figcaption><i>Dockerfile : https://www.slideshare.net/vincenzoferme/using-docker-containers-to-improve-reproducibility-in-software-and-web-engineering</i></figcaption></figure><h3 id="the-docker-engine">The Docker Engine</h3><p>The &ldquo;Docker Engine,&rdquo; 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.</p><figure class="image"><img src="./docker.jpg" alt="docker.jpg" width="600"><figcaption><i>https://cultivatehq.com/posts/docker/</i></figcaption></figure><p>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.</p><h2 id="3-legal-background---the-right-of-distribution-under-eu-law">3. Legal Background - The Right of Distribution under EU Law</h2><p>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 &ldquo;distribution&rdquo; within the license itself (for example, GPL-3.0 includes a definition of the term &ldquo;convey&rdquo;), 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 &ldquo;<code>Verbreitung</code>&rdquo; and defines distribution as &ldquo;any form of distributing the original or copies of a computer program (including rental).&rdquo; Here, &ldquo;<code>Verbreitung</code>&rdquo; can be understood, as in §17 (1) UrhG, as granting the right to make use of a work generally, not only a computer program.</p><hr><blockquote><p><i>&ldquo;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."</i></p></blockquote><hr><p>This was interpreted in light of Article 4 of the<a href="https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32009L0024">Directive 2009/24/EG</a> of the European Parliament and of the Council on the legal protection of computer programs<sup><a name="footnote_4_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_4">4</a></sup>. 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.</p><h2 id="4-distribution-of-dockerfiles---analysis">4. Distribution of Dockerfiles - Analysis</h2><p>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.</p><h3 id="41-is-distribution-only-the-physical-distribution-of-program-code">4.1 Is Distribution Only the Physical Distribution of Program Code?</h3><p>Not only in the first case below, but also in the second case, responsibility for &ldquo;distribution&rdquo; lies with the Dockerfile provider.</p><ul><li>The &ldquo;physical&rdquo; distribution of a program copy, the concept of distribution as defined in copyright law</li><li>Any other act that causes a third party to obtain a copy of the program</li></ul><p>Note that the highest German and EU courts have frequently held that both of the following must be considered.</p><ul><li>The physical act</li><li>A third party who physically performs an act that is legally relevant to reproduction or distribution is regarded merely as a &ldquo;tool&rdquo; of the party concerned</li></ul><p>This aspect includes, in particular, the organizational control that the CJEU calls an &ldquo;essential role&rdquo;<sup><a name="footnote_5_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_5">5</a></sup>. One example is the BGH&rsquo;s judgment on an &ldquo;internet radio music recording service.&rdquo; 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 follows<sup><a name="footnote_6_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_6">6</a></sup>:</p><hr><blockquote><p><strong>BGH, judgment of 2020-03-05</strong></p><p><i>&ldquo;In this context, the decisive factor is whether the manufacturer is limited to &rsquo;taking the place of the reproduction device&rsquo; and acting as a &rsquo;necessary tool&rsquo; 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."</i></p></blockquote><hr><blockquote><p>For more details on the internet radio music recording service, see the Korea Copyright Commission&rsquo;s 2019 material,<a href="http://www.copyright.or.kr/information-materials/trend/the-copyright/download.do?brdctsno=44381&amp;brdctsfileno=15929">&ldquo;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.&rdquo;</a></p><p>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.</p><p>The German court ruled that, because the defendant&rsquo;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&rsquo;s reproduction right and right of communication to the public.</p></blockquote><hr><p>The CJEU relied on several determinations as to who performed the &ldquo;essential role&rdquo; in relation to acts of copyright infringement. This is particularly evident in §17 UrhG (German Copyright Act). The UrhG designates a mere &ldquo;offer,&rdquo; that is, a preparatory act of a physical distribution, as itself an act of distribution<sup><a name="footnote_7_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_7">7</a></sup>.</p><hr><blockquote><p><strong>CJEU of 2015-05-13</strong></p><p><i>&ldquo;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."</i></p></blockquote><hr><p>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 &ldquo;essential role&rdquo; 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&rsquo;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.</p><p>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 &ldquo;makes it available to the public,&rdquo; respectively<sup><a name="footnote_8_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_8">8</a></sup>. 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).</p><h3 id="42-patches">4.2 Patches</h3><p>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 &ldquo;essential role,&rdquo; because the modifications to be applied are defined in the Dockerfile. Accordingly, the Dockerfile provider must comply with the license obligations for the modifications.</p><p>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 version<sup><a name="footnote_9_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_9">9</a></sup>. The same is true even where the program is removed by a new layer but remains physically included in the Docker image.</p><h3 id="43-system-requirements-and-the-base-image">4.3 System Requirements and the Base Image</h3><h4 id="system-requirements">System Requirements</h4><p>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 &ldquo;system requirements.&rdquo; 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.</p><hr><blockquote><p>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.</p><p><i>&ldquo;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."</i></p><p><a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">https://www.gnu.org/licenses/old-licenses/gpl-2.0.html</a></p></blockquote><hr><h4 id="base-image">Base image</h4><p>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&rsquo;s control. The situation is similar for patches, but patches and system requirements must be treated differently.</p><p>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.</p><p>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 point<sup><a name="footnote_10_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_10">10</a></sup>. 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&rsquo;s desire to better harmonize the legal situation regarding internet copyright.</p><p>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.</p><p>The interpretation described above is the legal opinion of this article&rsquo;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).</p><p>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 license<sup><a name="footnote_11_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_11">11</a></sup>.</p><p>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 clearly<sup><a name="footnote_12_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_12">12</a></sup>. 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).</p><h3 id="44-program-libraries">4.4 Program Libraries</h3><p>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 program<sup><a name="footnote_13_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_13">13</a></sup>. In this context, a distinction can be made as follows.</p><ul><li>System libraries</li><li>Non-system libraries linked with GPL and AGPL applications</li><li>Non-system libraries linked with applications under licenses other than GPL and AGPL</li></ul><p>GPL-2.0 Section 3 and GPL-3.0 Section 1(3) include a provision exempting &ldquo;System Libraries&rdquo; from the scope of the obligation to provide source code among the license obligations<sup><a name="footnote_14_return"/><a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_14">14</a></sup>. 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.</p><p>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&rsquo;s source code must be provided (cf. section 1 GPL-3.0: &ldquo;Corresponding Source includes &hellip;, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, &hellip;&rdquo;). The same applies equally under GPL-2.0. As in the case of the library&rsquo;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.</p><p>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.</p><h3 id="45-updates">4.5 Updates</h3><p>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&rsquo;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 &ldquo;latest version&rdquo;), 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.</p><h3 id="46-when-license-obligations-must-be-fulfilled">4.6 When License Obligations Must Be Fulfilled</h3><p>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 &ldquo;latest.&rdquo;</p><p>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).</p><h2 id="5-conclusion">5. Conclusion</h2><ul><li>The Dockerfile provider is responsible for compliance with the license terms of the FOSS included in the Docker container during the process of building/running the Dockerfile. Even where the Dockerfile&rsquo;s recipient downloads the software from an external public repository, this does not relieve the Dockerfile provider of responsibility.</li><li>Case law of the Court of Justice of the European Union shows that providing a Dockerfile constitutes a preparatory act, and that this is included within &ldquo;distribution.&rdquo;</li><li>However, in light of the particular nature of the interaction between computer programs, the Dockerfile provider is not responsible for license compliance with respect to &ldquo;system requirements&rdquo; such as the operating system and the web server.</li><li>That said, if a Docker layer is provided from a repository in a state that does not comply with the FOSS license, this also creates risk for the Dockerfile provider who references it.</li><li>Accordingly, FOSS license compliance is a matter for which the Dockerfile provider and the distributor who published the Docker layer to the public repository are jointly responsible.</li></ul><hr><blockquote><p><strong>About the author</strong></p><p><i><b>Till Jaeger</b> has been a partner at JBB Rechtsanwälte since 2001 (<a href="https://www.jbb.de">www.jbb.de</a>). 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.</p><p>One particular focus of Till Jaeger&rsquo;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 &amp; Open Source Software, ifrOSS (<a href="https://www.ifross.org">www.ifross.org</a>), contributing to its work with academic publications, lectures and seminars in the fields of software law and copyright law.</p><p>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.</p><p>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.</i></p></blockquote><hr><blockquote><p><b>Licence and Attribution</b></p><p>This paper was published in the Journal of Open Law, Technology, &amp; Society, Volume 12, Issue 1 (April 2021). It originally appeared online at<a href="http://www.jolts.world">http://www.jolts.world</a></p><p>This article should be cited as follows:</p><p>Jaeger, Till (2021) &lsquo;Distribution of Dockerfiles: Who is responsible for FOSS License Compliance?&rsquo;, Journal of Open Law, Technology, &amp; Society, 12(1), pp 13 – 20
DOI: 10.5033/jolts.v12i1.147</p><p>Copyright © 2021 Till Jaeger</p><p>This article is licensed under a Creative Commons Attribution 4.0 CC-BY available at</p><p><a href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</a></p><p><img src="/blog/2021/05/04/dockerfile-%EB%B0%B0%ED%8F%AC-%EC%8B%9C-%EC%BB%B4%ED%94%8C%EB%9D%BC%EC%9D%B4%EC%96%B8%EC%8A%A4-%EC%B1%85%EC%9E%84%EC%9D%80-%EB%88%84%EA%B5%AC%EC%97%90%EA%B2%8C/cc.png" alt="cc"/></blockquote><hr><p><a name="footnote_1">1</a>: Hemel, Armijn, (2020), ‘Docker Containers for Legal Professionals,’ [pdf] Available at:<a href="https://www.linuxfoundation.org/wp-content/uploads/Docker-Containers-for-Legal-Professionals-Whitepaper_042420.pdf">https://www.linuxfoundation.org/wp-content/uploads/Docker-Containers-for-Legal-Professionals-Whitepaper_042420.pdf</a> [Accessed 16 February 2021]. See also Peterson, Scott, (2020), ‘Making compliance scalable in a container world.’ Available at:<a href="https://opensource.com/article/20/7/compliance-containers">https://opensource.com/article/20/7/compliance-containers</a> [Accessed 16 February 2021].<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_1_return">⏎</a></p><p><a name="footnote_2">2</a>: Sec. 0 GPL-3.0 provides as follows: “To ‘convey&rsquo;‘ 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.”<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_2_return">⏎</a></p><p><a name="footnote_3">3</a>: 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].<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_3_return">⏎</a></p><p><a name="footnote_4">4</a>: Directive 2009/24/EC on the legal protection of computer programs (codified version). Available at:<a href="https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32009L0024">https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32009L0024</a> [Accessed 16 February 2021].<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_4_return">⏎</a></p><p><a name="footnote_5">5</a>: 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:<a href="https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:62018CC0682">https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:62018CC0682</a> [Accessed 16 February 2021].<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_5_return">⏎</a></p><p><a name="footnote_6">6</a>: BGH (German Federal Court of Justice), judgment of 2020-03-05 - I ZR 32/19 – Internet radio recorder. Available at:<a href="https://openjur.de/u/2202077.html">https://openjur.de/u/2202077.html</a> [Accessed 16 February 2021].<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_6_return">⏎</a></p><p><a name="footnote_7">7</a>: CJEU of 2015-05-13, C-516/13 – Dimensione Direct Sales and Labianca. Available at:<a href="https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:62013CJ0516&amp;qid=1607613372933&amp;from=EN">https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:62013CJ0516&qid=1607613372933&from=EN</a> [Accessed 16 February 2021].<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_7_return">⏎</a></p><p><a name="footnote_8">8</a>: 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:<a href="https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32001L0029">https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32001L0029</a> [Accessed 16 February 2021].<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_8_return">⏎</a></p><p><a name="footnote_9">9</a>: See Hemel Armijn, ibid n. 1, p. 19.<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_9_return">⏎</a></p><p><a name="footnote_10">10</a>: 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:<a href="http://curia.europa.eu/juris/liste.jsf?language=en&amp;T,F&amp;num=c-610-15">http://curia.europa.eu/juris/liste.jsf?language=en&T,F&num=c-610-15</a> [Accessed 16 February 2021].<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_10_return">⏎</a></p><p><a name="footnote_11">11</a>: For efforts of Red Hat to improve the situation see Peterson, S., ibid.<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_11_return">⏎</a></p><p><a name="footnote_12">12</a>: &ldquo;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.&rdquo;<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_12_return">⏎</a></p><p><a name="footnote_13">13</a>: 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:<a href="https://www.ifosslr.org/public/LinkingDocument.odt">https://www.ifosslr.org/public/LinkingDocument.odt</a> [Accessed 16 February 2021].<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_13_return">⏎</a></p><p><a name="footnote_14">14</a>: 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.”<a href="/en/blog/2021/05/04/distribution-of-dockerfiles-who-is-responsible-for-compliance/#footnote_14_return">⏎</a></p><hr>
]]></content:encoded></item><item><title>What Is an OSPO?</title><link>https://haksungjang.github.io/en/blog/2021/04/18/what-is-an-ospo/</link><pubDate>Sun, 18 Apr 2021 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang ([@haksungjang](https://haksungjang.github.io/))</dc:creator><guid>https://haksungjang.github.io/en/blog/2021/04/18/what-is-an-ospo/</guid><description>The definition and guide for the OSPOOpen Source Program Office</description><content:encoded>&lt;![CDATA[<blockquote><p>This paper was translated by Haksung Jang from the English version available at the<a href="https://github.com/todogroup/ospodefinition.org">OSPO Definition</a>. The original document is licensed under<a href="https://github.com/todogroup/ospodefinition.org/blob/master/LICENSE">CC-BY-SA-4.0</a>.</p></blockquote><hr><blockquote><p>Hello!</p><p><a href="https://todogroup.org/">TODO Group</a> is a<a href="https://todogroup.org/members/">group</a> 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<a href="https://todogroup.org/guides/">guides</a>,<a href="https://github.com/todogroup/repolinter">tools</a>, and more, making them available to anyone interested in open source.</p><p>For an organization such as a company to effectively manage and use open source, it is said that establishing an OSPO<sub>Open Source Program Office</sub> 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<a href="https://todogroup.org/blog/ospo-definition/">article defining</a> what an OSPO is and what role it plays, as written by TODO Group.</p></blockquote><hr><figure class="image"><img src="./featured-todogroup.png" alt="image-layer"><figcaption><i>TODO group : https://todogroup.org/</i><figcaption/><ul><li><a href="/en/blog/2021/04/18/what-is-an-ospo/#definition-of-an-ospo">Definition of an OSPO</a><ul><li><a href="/en/blog/2021/04/18/what-is-an-ospo/#legal-risk-mitigation">Legal Risk Mitigation</a></li><li><a href="/en/blog/2021/04/18/what-is-an-ospo/#improving-engineers-practices">Improving Engineers&rsquo; Practices</a></li><li><a href="/en/blog/2021/04/18/what-is-an-ospo/#enabling-financial-benefits">Enabling Financial Benefits</a></li></ul></li><li><a href="/en/blog/2021/04/18/what-is-an-ospo/#ospo-guides">OSPO Guides</a></li><li><a href="/en/blog/2021/04/18/what-is-an-ospo/#ospo-examples">OSPO Examples</a></li></ul><h2 id="definition-of-an-ospo">Definition of an OSPO</h2><p>An OSPO<sub>Open Source Program Office</sub> is designed to concentrate an organization&rsquo;s capabilities centrally for the organization&rsquo;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.</p><p>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.</p><ol><li>Legal Risk Mitigation</li><li>Improving Engineers&rsquo; Practices</li><li>Enabling Financial Benefits</li></ol><p>Classifying them into these three categories brings to mind Fear, Love, and Money, respectively.</p><h3 id="legal-risk-mitigation">Legal Risk Mitigation</h3><p>A company&rsquo;s primary concern is legal compliance. Accordingly, the OSPO builds and manages the company&rsquo;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.</p><p>For legal risk management, the OSPO holds the following responsibilities.</p><ul><li>Overseeing open source license compliance management</li><li>Running a review process for the use of inbound code<sub>note: code obtained from external sources such as open source</sub></li><li>Ensuring effective contribution to open source projects</li></ul><h3 id="improving-engineers-practices">Improving Engineers&rsquo; Practices</h3><p>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.</p><p>The OSPO&rsquo;s responsibilities in this area are as follows.</p><ul><li>Clearly communicating the company&rsquo;s open source strategy both inside and outside the company</li><li>Fostering an open source culture within the organization</li><li>Ensuring that high-quality code is released to open source communities frequently</li></ul><h3 id="enabling-financial-benefits">Enabling Financial Benefits</h3><p>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.</p><p>The OSPO&rsquo;s responsibilities in this area are as follows.</p><ul><li>Ownership and oversight of strategy execution</li><li>Promoting the effective use of open source in commercial products and services</li><li>Collaborating with the developer community to encourage adoption of strategic open source projects</li></ul><hr><p><i>In this way, each OSPO is structured to fit the company&rsquo;s business, products, and goals.</i></p><h2 id="ospo-guides">OSPO Guides</h2><blockquote><p>TODO Group provides guides for companies to establish and operate an OSPO.</p></blockquote><ul><li><a href="https://todogroup.org/guides/create-program">How to Create an Open Source Program</a></li><li><a href="https://todogroup.org/guides/measuring">Measuring Your Open Source Program</a></li><li><a href="https://todogroup.org/guides/management-tools">Tools for Managing Your Open Source Program</a></li></ul><h2 id="ospo-examples">OSPO Examples</h2><blockquote><p>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.</p></blockquote><ul><li><a href="https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/casestudies/autodesk.md">Autodesk</a></li><li><a href="https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/casestudies/capitalone.md">Capital One</a></li><li><a href="https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/casestudies/comcast.md">Comcast</a></li><li><a href="https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/casestudies/facebook.md">Facebook</a></li><li><a href="https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/casestudies/microsoft.md">Microsoft</a></li><li><a href="https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/casestudies/redhat.md">Red Hat</a></li><li><a href="https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/casestudies/salesforce.md">Salesforce</a></li><li><a href="https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/casestudies/sap.md">SAP</a></li><li><a href="https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/casestudies/uber.md">Uber</a></li><li><a href="https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/casestudies/oath.md">Yahoo/Verizon Media</a></li></ul><hr><blockquote><p>I close this article by introducing SK telecom&rsquo;s OSPO:<a href="https://sktelecom.github.io/about/ospo/">SK telecom OSPO</a></p><p>Thank you.</p></blockquote>
]]></content:encoded></item><item><title>Elastic License 2.0 and the Evolution of Open Source Licensing</title><link>https://haksungjang.github.io/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/</link><pubDate>Sun, 28 Mar 2021 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang ([@haksungjang](https://haksungjang.github.io/))</dc:creator><guid>https://haksungjang.github.io/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/</guid><description>Explains the background behind the drafting of Elastic License 2.0</description><content:encoded>&lt;![CDATA[<blockquote><p>This paper was translated by Haksung Jang from the English version available at this<a href="https://www.coss.community/coss/elastic-license-2-0-and-the-evolution-of-open-source-licensing-3jb3">white paper</a>. The original author,<a href="https://heathermeeker.com/about-me/">Heather Meeker</a>, has not reviewed this translation.</p></blockquote><hr><blockquote><p>Hello.</p><p>This article is based on a<a href="https://www.coss.community/coss/elastic-license-2-0-and-the-evolution-of-open-source-licensing-3jb3">white paper</a> about the Elastic License published on March 11, 2021 by<a href="https://heathermeeker.com/about-me/">Heather Meeker</a>, 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.</p><p>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.</p><blockquote><p>(A bit of digging turned up that Heather Meeker<a href="https://www.elastic.co/blog/elastic-license-v2">wrote Elastic License 2.0</a> herself.)</p></blockquote><p>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<a href="https://haksungjang.github.io/">contact me</a> at any time. :-)</p><ul><li>My deep thanks to<a href="https://www.linkedin.com/in/%EC%98%81%ED%99%98-%EA%B9%80-4069b5135/">Sean</a> and<a href="https://www.linkedin.com/in/hwang-minho/">Robin</a> of Kakao, and<a href="https://www.linkedin.com/in/kyoungae-kim-597a1630">Kyoungae Kim</a> of LG Electronics, for their help reviewing this article.</li></ul></blockquote><hr><ul><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#unix-linux-free-software-and-open-source">Unix, Linux, Free Software, and Open Source</a></li><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#the-advent-of-the-cloud-and-agpl">The Advent of the Cloud and AGPL</a></li><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#agpl-and-dual-licensing">AGPL and Dual Licensing</a></li><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#strip-mining">Strip-mining</a></li><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#sspl-and-source-available-licensing">SSPL and Source-Available Licensing</a><ul><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#sspl">SSPL</a></li><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#source-available-licenses-with-restrictions">Source-Available Licenses with Restrictions</a></li></ul></li><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#elastic-license-20">Elastic License 2.0</a></li><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#why-use-dual-licensing">Why Use Dual Licensing?</a></li><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#elastic-license-20-and-modern-licensing-techniques">Elastic License 2.0 and Modern Licensing Techniques</a></li><li><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#building-a-better-license">Building a Better License</a></li></ul><p>Recently, in February 2021,<a href="https://www.elastic.co/">Elastic</a> introduced a new license called<a href="https://www.elastic.co/licensing/elastic-license">Elastic License 2.0</a> for its software products. This licensing model was applied to major software products such as Elasticsearch and Kibana. Let&rsquo;s look at the purpose of this change and what it means.</p><p>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.</p><p><img src="/blog/2021/03/28/elastic-license-2.0-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%A7%84%ED%99%94%ED%95%98%EB%8A%94-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EB%9D%BC%EC%9D%B4%EC%84%A0%EC%8A%A4/featured-scale.png" alt="scale"/><br><h2 id="unix-linux-free-software-and-open-source">Unix, Linux, Free Software, and Open Source</h2><p>To understand the trend toward new licenses like Elastic License 2.0, it helps to look at how the open source licensing movement grew.</p><p>The open source and Free Software movements began out of developers&rsquo; concerns about the privatization of software. The spark for these concerns was Unix, the most popular operating system of the time. AT&amp;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,<sup><a name="footnote_1_return"/><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#footnote_1">1</a></sup> 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&amp;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.</p><p>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 &ldquo;free&rdquo; (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<a href="https://en.wikipedia.org/wiki/GNU_General_Public_License">GNU General Public License</a> (GPL), under which distributors of binaries must share the corresponding source code.</p><p>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.</p><br><h2 id="the-advent-of-the-cloud-and-agpl">The Advent of the Cloud and AGPL</h2><p>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 &ldquo;private copy,&rdquo; 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.</p><p>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 &ldquo;Google Loophole.&rdquo; In response, the Free Software community created the<a href="https://www.gnu.org/licenses/agpl-3.0.en.html">Affero GPL</a> (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.</p><pre tabindex="0"><code>[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….</code></pre><p>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.</p><br><h2 id="agpl-and-dual-licensing">AGPL and Dual Licensing</h2><p>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 &ldquo;loophole&rdquo; 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.<a href="https://en.wikipedia.org/wiki/MongoDB">MongoDB</a>, a highly popular distributed database product, is the AGPL&rsquo;s one and only &ldquo;killer app.&rdquo; 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.</p><hr><blockquote><p>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.</p></blockquote><hr><p>MongoDB used the AGPL under a &ldquo;<a href="http://monty-says.blogspot.com/2009/08/thoughts-about-dual-licensing-open.html">dual licensing</a>&rdquo; 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&rsquo;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 &ldquo;<a href="http://ebb.org/bkuhn/blog/">toxic shakedown</a>.&rdquo; In any case, even the AGPL&rsquo;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.</p><br><h2 id="strip-mining">Strip-mining</h2><p>Just as cloud adoption had &ldquo;broken&rdquo; 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 &ldquo;feature&rdquo; 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<a href="https://www.gnu.org/licenses/gpl-faq.en.html#MereAggregation">GPL FAQ</a>.</p><p>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 &ldquo;plug and play&rdquo; 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.</p><p>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 &ldquo;platform software,&rdquo; 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.</p><p>This gave rise to criticism in the business world of how cloud providers used open source software. In 2018, Salil Deshpande of Bain Capital<a href="https://techcrunch.com/2018/09/07/commons-clause-stops-open-source-abuse/">said</a>, &ldquo;It is clearly not illegal. But we think it is wrong, and does not do right by the open-source community.&rdquo; Another expert<a href="https://onezero.medium.com/open-source-betrayed-industry-leaders-accuse-amazon-of-playing-a-rigged-game-with-aws-67177bc748b7">said</a>, &ldquo;AWS is exploiting open source&rsquo;s Achilles heel: taking someone else&rsquo;s creation for free and building a business by renting out access to it.&rdquo; The problem is that none of the major open source licenses prevent software from being used this way.</p><hr><blockquote><p>When the major open source licenses were drafted, there was no such thing as an AWS-style &ldquo;program as a service,&rdquo; so their terms could not have accounted for it.</p><p>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&rsquo;s easy to imagine this had a negative effect on both the business and development sides.</p><p>A representative example would be cloud providers offering MongoDB as<a href="https://aws.amazon.com/ko/documentdb/">Amazon DocumentDB</a> or<a href="https://docs.microsoft.com/ko-kr/azure/cosmos-db/introduction">Azure Cosmos DB</a> to win over customers.</p></blockquote><hr><p>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 &ldquo;sticky&rdquo; 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&rsquo;s service was superior, customers turned away because using a new service, unlike simply &ldquo;checking a box&rdquo; to add a software product within an existing cloud account, carried a transaction cost.</p><br><h2 id="sspl-and-source-available-licensing">SSPL and Source-Available Licensing</h2><p>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.</p><p>Open source vendors<a href="https://techcrunch.com/2018/11/29/the-crusade-against-open-source-abuse/">responded to the strip-mining problem</a> through two different paths.</p><ol><li>An ultra-strong network copyleft license</li><li>Source-available licensing with restrictions</li></ol><p>Both of these categories were previously undefined. Both were intended to support a dual licensing model, as with MySQL and MongoDB.</p><br><h3 id="sspl">SSPL</h3><p>The ultra-strong copyleft approach was attempted by MongoDB, which created the<a href="https://www.mongodb.com/licensing/server-side-public-license">SSPL</a> (Server Side Public License) in 2018.</p><pre tabindex="0"><code>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].</code></pre><p>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&rsquo;s requirement even for distributed software. MongoDB applied a dual licensing model under which its software could be used under<a href="https://www.mongodb.com/community/licensing">either the SSPL or a commercial license</a>.</p><p>MongoDB submitted the SSPL to the<a href="https://opensource.org/approval">OSI</a> (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<a href="https://opensource.org/osd">Open Source Definition</a> 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 &ldquo;<a href="https://opensource.org/approval">ensure software freedom</a>.&rdquo;</p><br><h3 id="source-available-licenses-with-restrictions">Source-Available Licenses with Restrictions</h3><p>Others followed a different path. Some companies adopted the<a href="https://commonsclause.com/">Commons Clause</a>, led by Salil Deshpande, while others created their own licenses, such as<a href="https://redislabs.com/legal/licenses/">Redis</a>,<a href="https://www.confluent.io/confluent-community-license">Confluent</a>, and<a href="https://www.cockroachlabs.com/cockroachdb-community-license/">CockroachDB</a>, 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.</p><p>Why did these two paths diverge? It has to do with<a href="https://www.gnu.org/philosophy/free-sw.en.html">Freedom Zero</a>, &ldquo;the freedom to run the program as you wish, for any purpose."<sup><a name="footnote_2_return"/><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#footnote_2">2</a></sup></p><p>A key feature of open source or Free Software licenses is that they carry no licensing constraints or restrictions.<sup><a name="footnote_3_return"/><a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#footnote_3">3</a></sup> 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.</p><p>In other words, any licensing restriction at all takes a license outside the open source category.</p><p>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.</p><br><h2 id="elastic-license-20">Elastic License 2.0</h2><p>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<a href="https://www.elastic.co/licensing/elastic-license">Elastic License 2.0</a> (ELv2).</p><p>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.</p><p>It has two main restrictions.</p><pre tabindex="0"><code>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.</code></pre><p>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.</p><p>The second restriction is meant to prohibit hacking the software&rsquo;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.</p><p>The license&rsquo;s other provisions are very straightforward and will be familiar to anyone who has read an open source license.</p><br><h2 id="why-use-dual-licensing">Why Use Dual Licensing?</h2><p>Elasticsearch took the unusual path of letting users choose between the SSPL and the Elastic License. Many companies today use an &ldquo;open core&rdquo; 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.</p><p>Elastic&rsquo;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.</p><hr><blockquote><p>Elastic License 2.0 appears to reflect a resolve to prevent just one thing: cloud service providers offering Elasticsearch as their own cloud service.</p><p>In the end, AWS<a href="https://aws.amazon.com/ko/blogs/opensource/stepping-up-for-a-truly-open-source-elasticsearch/">forked</a> Elasticsearch to keep offering its Elasticsearch service, naming it<a href="https://opendistro.github.io/for-elasticsearch/">Open Distro for Elasticsearch</a>, applying the Apache License 2.0, and setting out to grow its own community.</p><p>Who, then, is actually contributing to the sustainability and advancement of open source?</p></blockquote><hr><br><h2 id="elastic-license-20-and-modern-licensing-techniques">Elastic License 2.0 and Modern Licensing Techniques</h2><p>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.</p><p>As summarized in the<a href="https://www.elastic.co/licensing/elastic-license/faq">FAQ on the license change</a>, Elastic&rsquo;s license change is not expected to affect the number of customers or community users. Most users build applications on top of Elastic&rsquo;s software, which is not a business of &ldquo;providing [the software] to third parties as a hosted or managed service.&rdquo;</p><br><h2 id="building-a-better-license">Building a Better License</h2><p>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.</p><p>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.</p><p>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<a href="https://en.wikipedia.org/wiki/HumancentiPad">nobody reads them at all</a>. 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.</p><p>Not only is Elastic License 2.0 short, simple, and easy to understand, but people can also<a href="https://www.elastic.co/blog/elastic-license-v2">use it as a template</a>. 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.</p><p>This space has been popularized by<a href="https://faircode.io/">Fair Code</a>, which has established a standard for it. Fair Code states the following.</p><pre tabindex="0"><code>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</code></pre><p>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 &ldquo;<a href="https://monetize.substack.com/p/open-source-eras">post-open-source era</a>.&rdquo; 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.</p><p>There is also another standardized licensing option. In 2020, a group of attorneys launched the<a href="http://www.polyformproject.org/">PolyForm Project</a> 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<a href="https://creativecommons.org/">Creative Commons</a> 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.</p><p>If you have questions or would like to learn more, refer to the following resources.</p><p><strong>&ldquo;The rise of open source IPOs&rdquo;</strong><a href="https://coss.media/rise-of-the-open-source-ipo/">https://coss.media/rise-of-the-open-source-ipo/</a>. This article tracks some of the spectacular business successes of open source companies.</p><p><strong>&ldquo;The After Open Source Era Has Started&rdquo;</strong><a href="https://monetize.substack.com/p/open-source-eras">https://monetize.substack.com/p/open-source-eras</a> . This article discusses the sea change represented by companies moving to source available licenses.</p><p><strong>US House of Representatives Committee on the Judiciary&rsquo;s report on investigation into competition in digital markets, spearheaded by the Subcommittee on Antitrust, Commercial and Administrative Law.</strong><a href="https://www.documentcloud.org/documents/7222836-Investigation-of-Competition-in-Digital-Markets.html">https://www.documentcloud.org/documents/7222836-Investigation-of-Competition-in-Digital-Markets.html</a>. Note the mention of Elasticsearch on page 326.</p><hr><p><a name="footnote_1">1</a>: &ldquo;Modification of Final Judgment,&rdquo; 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<a href="http://web.archive.org/web/20060827191354/members.cox.net/hwilkerson/documents/AT&amp;T_Consent_Decree.pdf">web.archive.org/web/20060827191354/members.cox</a>.<a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#footnote_1_return">⏎</a></p><p><a name="footnote_2">2</a>: The Free Software Definition is similar to the Open Source Definition, but shorter and clearer.<a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#footnote_2_return">⏎</a></p><p><a name="footnote_3">3</a>: 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.<a href="/en/blog/2021/03/28/elastic-license-2.0-and-the-evolution-of-open-source-licensing/#footnote_3_return">⏎</a></p>
]]></content:encoded></item><item><title>How to Write Copyright Statements in Source Code</title><link>https://haksungjang.github.io/en/blog/2020/08/12/how-to-write-copyright-statements-in-source-code/</link><pubDate>Wed, 12 Aug 2020 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang (@[haksungjang](https://haksungjang.github.io/))</dc:creator><guid>https://haksungjang.github.io/en/blog/2020/08/12/how-to-write-copyright-statements-in-source-code/</guid><description>Introduces why copyright statements are needed in source code and how to write them correctly.</description><content:encoded>&lt;![CDATA[<blockquote><p>Hello.</p><p><a href="https://matija.suklje.name/">Matija Šuklje</a>, a well-known attorney in the open source field, recently<a href="https://matija.suklje.name/how-and-why-to-properly-write-copyright-statements-in-your-code">introduced</a> why copyright statements are needed in source code and how to write them correctly.</p><p>The post below is based on the original article above. Most of it is translated directly from the original so that the author&rsquo;s intent is faithfully conveyed.</p></blockquote><hr><p>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&rsquo;t easy. In the end, I decided to write a new one.</p><p>I tried to strike a balance while keeping the following points in mind.</p><ol><li>For developers who simply want a quick answer for what to do</li><li>For FOSS compliance staff and lawyers who want to understand not just the best practices but also the reasoning behind them</li></ol><p>If you are extremely short on time, check the minimal guide in<a href="/en/blog/2020/08/12/how-to-write-copyright-statements-in-source-code/#tldr">TL;DR</a>. If you have about 2 minutes, read the<a href="/en/blog/2020/08/12/how-to-write-copyright-statements-in-source-code/#the-correct-way-to-write-a-copyright-statement-and-license-notice">actual HowTo a bit lower below</a>.</p><p>Of course, if you have about 20 minutes, the best option is to read it from start to finish.</p><h2 id="tldr">TL;DR</h2><p>Add a copyright and license statement in the following format to every source code file you write.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">SPDX-FileCopyrightText</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">© {$year_of_file_creation} {$name_of_copyright_holder} &lt;{$contact}&gt;</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">SPDX-License-Identifier</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/>{<span style="color:#000">$SPDX_license_name}</span><span style="color:#f8f8f8"/></span></span></code></pre></div><p>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.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">SPDX-FileCopyrightText</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">© 2020 Matija Šuklje &lt;matija@suklje.name&gt;</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">SPDX-License-Identifier</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">BSD-3-Clause</span><span style="color:#f8f8f8"/></span></span></code></pre></div><p>For reference, following the [REUSE.software][reuse] project&rsquo;s guide lets you verify that every file has been marked appropriately.</p><h2 id="what-is-copyright">What is Copyright?</h2><p><strong>Copyright</strong> is (following the [Berne Convention][berne])<strong>automatically generated</strong> 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 &ldquo;permission granted by a competent authority to exercise a certain right,&rdquo; and exercising that right without such permission constitutes an unlawful act such as copyright infringement.</p><p>Likewise, if you want to copy, modify, or otherwise work with someone else&rsquo;s source code, you<strong>must be granted the necessary permission</strong>. 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.</p><p>In any case, you must comply with the basic requirements of copyright law, and at minimum this requires the following two things.</p><ul><li><p><strong>Attribution</strong>: Identify the copyright holder and/or author. (Especially in jurisdictions that recognize moral rights)</p></li><li><p><strong>License</strong>: Since a license is the only way to grant someone other than the copyright holder permission to use the code, it&rsquo;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).</p></li></ul><blockquote><p><strong>Inbound vs. Outbound Licenses</strong></p><p>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&rsquo;t need to go out of their way to add it themselves.</p></blockquote><h2 id="why-should-you-add-a-copyright-statement">Why Should You Add a Copyright Statement?</h2><p>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.</p><blockquote><p>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.</p></blockquote><p>A copyright statement is practically necessary for the following reasons.</p><ol><li>Most licenses require a copyright statement.</li><li>Even where a license does not require it, the copyright law of most jurisdictions does.</li><li>(Even without such a requirement) a user may want to contact the original author for legal or technical reasons.</li></ol><p>Therefore, it makes sense to include the author&rsquo;s name and contact information in a work.</p><h2 id="the-correct-way-to-write-a-copyright-statement-and-license-notice">The Correct Way to Write a Copyright Statement and License Notice</h2><h3 id="copyright-statement">Copyright Statement</h3><p>A good copyright statement should consist of the following information.</p><ul><li><p>​<a href="https://haksung.gitbook.io/oss/research/license/copyright-statements#c">the © symbol</a>​</p></li><li><p>Year: the year the source code file was first written. Once written,<a href="https://haksung.gitbook.io/oss/research/license/copyright-statements#undefined-6">do not modify it further</a>.</p></li><li><p>Copyright holder name: usually the author, but it may be the author&rsquo;s employer. It could also be a different legal entity or individual under a CLA.</p></li><li><p><a href="https://haksung.gitbook.io/oss/research/license/copyright-statements#undefined-8">a valid contact</a>: information for contacting the copyright holder</p></li></ul><p>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.</p><pre tabindex="0"><code>© 2020 Matija Šuklje &lt;matija@suklje.name&gt;</code></pre><h3 id="license-notice">License Notice</h3><p>It&rsquo;s also very important to state the license under which the code is released. Using an<a href="https://spdx.org/ids">SPDX ID</a> lets you clearly identify the license of the code. If the license notice isn&rsquo;t clear, it can cause confusion for the users who see it.</p><h3 id="reusesoftware">REUSE.software</h3><p>The<a href="https://reuse.software/">REUSE.software</a> project provides a best practice for writing copyright statements and license notices using SPDX tags.</p><ul><li><p>Copyright statement tag: SPDX-FileCopyrightText</p></li><li><p>License notice tag: SPDX-License-Identifier</p></li></ul><p>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.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">SPDX-FileCopyrightText</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">© 2020 Matija Šuklje &lt;matija@suklje.name&gt;</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">SPDX-License-Identifier</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">BSD-3-Clause</span><span style="color:#f8f8f8"/></span></span></code></pre></div><p>Now check that every source code file you have written includes this comment!</p><h2 id="faq">FAQ</h2><h3 id="why-should-the-year-be-included">Why should the year be included?</h3><p>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.</p><p>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.</p><p>Taking these considerations into account, Liferay&rsquo;s new policy is to record the year the file was created and not change the year afterward.</p><h3 id="why-shouldnt-you-keep-changing-the-year">Why shouldn&rsquo;t you keep changing the year?</h3><p>You&rsquo;ve probably seen copyright statements like this:</p><pre tabindex="0"><code>Copyright (C) 1992, 1995, 2000, 2001, 2003 CompanyX Inc.</code></pre><p>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.</p><p>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.</p><p>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&rsquo;t keep adding years to the copyright statement, is very low.</p><p>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.</p><blockquote><p><strong>Don&rsquo;t pollute your Git/VCS history</strong></p><p>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&rsquo;re looking for genuinely important information.</p></blockquote><h3 id="what-about-expressing-the-year-as-a-range">What about expressing the year as a range?</h3><p>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.</p><p>In some cases, a range is specified in a form like &lsquo;{$year}-present&rsquo;. This too is largely subject to the points mentioned above, and it can add further confusion. What &lsquo;present&rsquo; means is abstract. What does &lsquo;present&rsquo; refer to?</p><ul><li><p>The time the file was last modified?</p></li><li><p>The time the package was released?</p></li><li><p>The time it was first downloaded?</p></li><li><p>The time it was last run?</p></li><li><p>Or right now, this very moment?</p></li></ul><p>As you can see, &lsquo;present&rsquo; isn&rsquo;t a helpful marker at all.</p><h3 id="isnt-gitmercurial-better-for-tracking-copyright-information">Isn&rsquo;t Git/Mercurial better for tracking copyright information?</h3><p>Not always. Git (and other VCSs) is excellent at managing metadata, but you should be cautious about relying on it entirely.</p><p>First, Git has an &lsquo;Author&rsquo; field separate from the &lsquo;Committer&rsquo; field. Not only does each contributor put different kinds of values into the &lsquo;Author&rsquo; field, but even if you assume the person entered in the &lsquo;Author&rsquo; field is actually the author, that author may not be the copyright holder.</p><p>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.</p><p>These issues are resolved by including copyright and license information directly in every file. The<a href="https://reuse.software/">REUSE.software</a> best practice handles this very well.</p><h3 id="why-use-the--symbol">Why use the © symbol?</h3><p>Someone might argue that the English word &ldquo;Copyright&rdquo; is used more often and that many people are already familiar with it, but if you actually look at copyright law, you&rsquo;ll find that using &ldquo;©&rdquo; (the Copyright Sign) is not the only way to make a copyright statement.</p><blockquote><p>As one example from the EU, Article 175(1) of Slovenia&rsquo;s ZASP states that an exclusive copyright holder may mark their work with &ldquo;(c)&rdquo; or &ldquo;©&rdquo;.
Meanwhile, in the United States, 17 U.S. Code § 401(b)(1) specifies the way to mark a work as follows:
&ldquo;the symbol © (the letter C in a circle), or the word “Copyright”, or the abbreviation “Copr.”&rdquo;</p></blockquote><p>Also, using © is reasonable because it is the &ldquo;common global denominator.&rdquo;</p><p>Whether or not people like the © symbol may be a matter of taste, but from a practical standpoint it isn&rsquo;t actually all that important. As explained above, since copyright is generated automatically, the symbol you use doesn&rsquo;t change the legal risk.</p><h3 id="why-should-you-leave-a-contact-address-what-if-there-are-two-or-more-authors">Why should you leave a contact address? What if there are two or more authors?</h3><p>Contact information isn&rsquo;t required by copyright law, but it&rsquo;s very useful for practical reasons.</p><p>A user may want to contact the code&rsquo;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.</p><ul><li><p>Since email is still a commonly used contact method today, providing the copyright holder&rsquo;s email address is the best option.</p></li><li><p>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&rsquo;s or the entity&rsquo;s homepage.</p></li><li><p>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.</p></li></ul><h3 id="what-is-public-domain">What is Public Domain?</h3><p>Public Domain generally refers to a work whose copyright term has expired, but it&rsquo;s a tricky concept that requires care.</p><p>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&rsquo;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.</p><p>For this reason, open source compliance professionals who take copyright and licensing seriously are very wary of a &ldquo;this is public domain&rdquo; label.</p><p>Copyright holders can mitigate this problem in the following two ways.</p><ul><li><p>If you want to waive your copyright in your own work and dedicate it, use a very permissive license such as<a href="https://spdx.org/licenses/CC0-1.0">CC0-1.0</a> instead of the phrase &ldquo;public domain.&rdquo;</p></li><li><p>Leave your name and contact information in the &ldquo;SPDX-FileCopyrightText:&rdquo; field. This lets a user who is curious about the copyright holder&rsquo;s intent, or who runs into any ambiguity, reach out to resolve the issue.</p></li></ul><h3 id="how-should-copyright-be-handled-in-minified-javascript">How should copyright be handled in minified JavaScript?</h3><p>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.</p><blockquote><p>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.</p></blockquote><h3 id="whats-the-problem-with-an-all-rights-reserved-statement">What&rsquo;s the problem with an &ldquo;All rights reserved&rdquo; statement?</h3><p>You&rsquo;ve probably seen the phrase &ldquo;All rights reserved&rdquo; in copyright statements before. Copyright law doesn&rsquo;t require this expression. I suspect it&rsquo;s simply copied from something people saw used on a music CD or in a book. But in open source, this expression causes confusion.</p><p>&ldquo;All rights reserved&rdquo; clearly contradicts an open source license. An open source license grants everyone the right to use, study, share, and improve the code. &ldquo;All rights reserved,&rdquo; on the other hand, states that all of these rights are granted solely to the copyright holder.</p><p>&ldquo;All rights reserved&rdquo; only brings problems like this, without offering any benefit, so it should not be used in open source.</p>
]]></content:encoded></item><item><title>OSS Supply Chain Security</title><link>https://haksungjang.github.io/en/blog/2020/03/01/oss-supply-chain-security/</link><pubDate>Sun, 01 Mar 2020 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang ([@haksungjang](https://haksungjang.github.io/))</dc:creator><guid>https://haksungjang.github.io/en/blog/2020/03/01/oss-supply-chain-security/</guid><description>A Publication of The Linux Foundation</description><content:encoded>&lt;![CDATA[<hr><blockquote><p>Hello.</p><p>In February 2020, the Linux Foundation published an article about<a href="https://www.linuxfoundation.org/publications/2020/02/open-source-software-supply-chain-security/">security risks in the Open Source Software Supply Chain</a>, and this post summarizes that content.</p></blockquote><hr><h2 id="introduction">Introduction</h2><p>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.</p><p>The &ldquo;Software Supply Chain&rdquo; is already highly complex. Whereas software used to be delivered to customers on physical media such as CDs, today&rsquo;s software (both OSS and proprietary software alike) is stored in &ldquo;repositories&rdquo; and distributed remotely on demand through a Project Dependency Manager (PDM) or Package Manager.</p><p><img src="https://t1.daumcdn.net/thumb/R1280x0.fpng/?fname=http://t1.daumcdn.net/brunch/service/user/9399/image/UFqIj_ywPKiBf0csdt91M6rzRSU.png" alt=""/><p>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.</p><h3 id="xcode-repackaging-for-malware-distribution-in-2015">Xcode Repackaging for Malware Distribution in 2015</h3><p>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 &ldquo;repackaged&rdquo; version of Xcode, Apple&rsquo;s official development platform.</p><p>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.</p><blockquote><p>Apple scrambles after 40 malicious “XcodeGhost” apps haunt App Store, Dan Goodin, ArsTechnica (Sep. 25, 2015),<a href="https://arstechnica.com/information-technology/2015/09/apple-scrambles-after-40-malicious-xcodeghost-apps-haunt-app-store/">https://arstechnica.com/information-technology/2015/09/apple-scrambles-after-40-malicious-xcodeghost-apps-haunt-app-store/</a></p></blockquote><h3 id="the-left-pad-dependency-incident-of-2016">The &ldquo;left-pad&rdquo; Dependency Incident of 2016</h3><p>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: &ldquo;left-pad.&rdquo;</p><p>&ldquo;left-pad,&rdquo; an incredibly simple package, right-aligns text to produce more readable text output. However, because a large number of important downstream packages depended on &ldquo;left-pad,&rdquo; 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.</p><p>This incident starkly highlighted the risk developers face when depending on upstream packages over which they have little control, and it exposed a broader &ldquo;dependency&rdquo; problem: because the package was embedded as an upstream dependency, even developers who had no intention of depending on &ldquo;left-pad&rdquo; were affected.</p><p>The &ldquo;left-pad&rdquo; incident occurred three years ago, but problems like this remain.</p><blockquote><p>Rage-quit: Coder unpublished 17 lines of JavaScript and “broke the Internet”, Sean Gallagher, ArsTechnica (March 24, 2016),<a href="https://arstechnica.com/information-technology/2016/03/rage-quit-coder-unpublished-17-lines-of-javascript-and-broke-the-internet/">https://arstechnica.com/information-technology/2016/03/rage-quit-coder-unpublished-17-lines-of-javascript-and-broke-the-internet/</a> .</p></blockquote><h3 id="python-package-pypi-hijacking-in-2017">Python Package (PyPI) Hijacking in 2017</h3><p>In 2017, attackers created malicious libraries whose names were made to look &ldquo;very similar&rdquo; 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.</p><blockquote><p>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.<a href="https://arstechnica.com/information-technology/2017/09/devs-unknowingly-use-malicious-modules-put-into-official-python-repository/">https://arstechnica.com/information-technology/2017/09/devs-unknowingly-use-malicious-modules-put-into-official-python-repository/</a></p></blockquote><h3 id="python-package-hijacking-in-2018">Python Package Hijacking in 2018</h3><p>In 2018, a cryptocurrency-stealing package called &ldquo;Colourama&rdquo; was discovered in the Python Software Repository. Its name was deliberately made to resemble &ldquo;Colorama,&rdquo; 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.</p><blockquote><p>Two new supply-chain attacks come to light in less than a week, Dan Goodin, ArsTechnica (October, 23, 2018),<a href="https://arstechnica.com/information-technology/2018/10/two-new-supply-chain-attacks-come-to-light-in-less-than-a-week/">https://arstechnica.com/information-technology/2018/10/two-new-supply-chain-attacks-come-to-light-in-less-than-a-week/</a>.</p></blockquote><h3 id="backdoor-in-the-event-stream-library-in-2018">Backdoor in the &ldquo;event-stream&rdquo; Library in 2018</h3><p>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).</p><p>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).</p><p>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.</p><blockquote><p>Widely used open source software contained bitcoin-stealing backdoor, Dan Goodin, ArsTechnica (November 26, 2018),<a href="https://arstechnica.com/information-technology/2018/11/hacker-backdoors-widely-used-open-source-software-to-steal-bitcoin/">https://arstechnica.com/information-technology/2018/11/hacker-backdoors-widely-used-open-source-software-to-steal-bitcoin/</a></p></blockquote><h3 id="account-takeover-of-a-popular-rubygems-package-in-july-2019">Account Takeover of a Popular RubyGems Package in July 2019</h3><p>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.</p><p>The developer notified the package&rsquo;s original maintainer, who discovered that his Ruby repository account had been compromised. The malicious actor had taken over the maintainer&rsquo;s account, changed the package&rsquo;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&rsquo;s account is highly valuable. Attacks like this will only increase.</p><blockquote><p>strong_password v0.0.7 rubygem hijacked, Tute Costa (July 3, 2019),<a href="https://withatwist.dev/strong-password-rubygem-hijacked.html">https://withatwist.dev/strong-password-rubygem-hijacked.html</a></p></blockquote><h3 id="the-webmin-compromise-of-2018-2019">The Webmin Compromise of 2018-2019</h3><p>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.</p><p>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.</p><p>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.</p><blockquote><p>The year-long rash of supply chain attacks against open source is getting worse, Dan Goodin, Ars Technica (August 21, 2019)<a href="https://arstechnica.com/information-technology/2019/08/the-year-long-rash-of-supply-chain-attacks-against-open-source-is-gettingworse/">https://arstechnica.com/information-technology/2019/08/the-year-long-rash-of-supply-chain-attacks-against-open-source-is-gettingworse/</a>; Webmin page explaining exploit, Webmin,<a href="http://www.webmin.com/exploit.html">http://www.webmin.com/exploit.html</a>.</p></blockquote><h3 id="discovery-of-11-backdoored-rubygems-libraries-in-august-2019">Discovery of 11 Backdoored RubyGems Libraries in August 2019</h3><p>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.</p><p>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&rsquo;s account had been compromised. That account had been using a previously cracked password and was not protected by 2FA or MFA.</p><p>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.</p><p>Finally, there is one more element that stands apart from the software supply chain but is nonetheless indispensable: the &ldquo;Vulnerability Database.&rdquo;</p><p>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.</p><h2 id="examining-the-software-supply-chain">Examining the Software Supply Chain</h2><h3 id="developer-practices">Developer Practices</h3><p>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&rsquo;s customers will purchase. In other words, developers are the single most indispensable member of the software supply chain.</p><p>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 &ldquo;best practice&rdquo; 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.</p><p>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.</p><ul><li>Using two-factor or multi-factor (2FA or MFA) authentication for developer accounts and other critical accounts involved in the design, construction, and maintenance of a given project</li><li>Requiring that the project support change control tracking (including who made a change and when) throughout the development process</li><li>Ensuring that the project has a unique version identifier for each release, so that downstream users can track new releases and build mechanisms to control and verify them</li><li>Integrating testing into the project&rsquo;s development lifecycle to check not only for common bugs and unexpected behavior, but also for malicious changes made without the developer&rsquo;s knowledge</li><li>Using tools or other mechanisms that ensure the project&rsquo;s dependencies are documented and communicated so downstream users can easily consume them</li><li>Using tools that properly track, analyze, and manage dependencies</li><li>Presenting cryptographic signing or other demonstrable evidence of the project&rsquo;s integrity</li><li>Tracking and remediating vulnerabilities in both newly developed code and OSS dependencies incorporated into the project</li></ul><p>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.</p><h3 id="repository">Repository</h3><p>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 &ldquo;repositories,&rdquo; to build their software.</p><p>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&rsquo;s collection, keeping packages current based on upstream software package releases and, when necessary, fixing reported security and other bugs in those packages.</p><p>Beginning with Perl and continuing as interpreted programming languages grew, it became advantageous to provide users with an expanded repository of &ldquo;helper&rdquo; 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&rsquo;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.</p><p>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:</p><ul><li>Few language repositories provide a mechanism to check that the code they store is what it purports to be, which increases consumer confusion and, in some cases, enables malicious activity.</li><li>Few language repositories systematically check the stored code or deprecated packages for vulnerabilities.</li><li>No language repository currently provides a mechanism for consumers to check whether one piece of stored code was derived from another, which limits their ability to determine whether a vulnerability or other problem carries over from a dependency.</li><li>In most language repositories, weak or missing authentication and publisher verification mechanisms create uncertainty and risk regarding the origin of stored code.</li><li>Some language repositories do not offer two-factor or multi-factor (2FA or MFA) authentication for developer accounts, and often neither require nor encourage it, signaling to others that developer accounts (and the packages they control) are weakly protected.</li><li>Many language repositories offer code signing, but few provide or enable a robust mechanism for verifying the validity of those signatures.</li><li>Some language repositories include an End User License Agreement (EULA) that restricts conscientious consumers from performing their own security and quality analysis of the stored code.</li><li>Many language repositories do not verify that a generated package was produced from the expected, publicly available source that others could inspect, nor do they make it easy for other users to check this themselves.</li></ul><p>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 &ldquo;commercialized&rdquo; the repository itself, offering these capabilities only to customers who pay for a &ldquo;premium&rdquo; service. As a result, the security and quality controls that should be provided as a baseline remain out of reach for many everyday consumers.</p><h3 id="project-dependency-manager-package-manager">Project Dependency Manager (&ldquo;Package Manager&rdquo;)</h3><p>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 &ldquo;package manager.&rdquo; 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 &ldquo;project/application dependency managers&rdquo; (PDM) are frequently used.</p><p>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.</p><p>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.</p><ul><li>Whether the software has known security or reliability issues</li><li>Whether it contains unexpected or malicious behavior</li><li>Whether it has a misleading package name (&ldquo;typosquatting&rdquo; and/or a name resembling that of a built-in library)</li></ul><blockquote><p>Vaidya et al, “Security Issues in Language-based Software Ecosystems, March 6, 2019,<a href="https://arxiv.org/abs/1903.02613">https://arxiv.org/abs/1903.02613</a></p></blockquote><p>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.</p><h3 id="vulnerability-database">Vulnerability Database</h3><p>As discussed above, modern software is composed of many software packages assembled together. These &ldquo;building block&rdquo; 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.</p><p>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.</p><p>These two programs have existed for more than 20 years and have become the foundation for many modern cybersecurity tools, products, and practices.</p><blockquote><p>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,<a href="https://duo.com/decipher/government-shutdown-impacts-enterprise-security"><strong>https://duo.com/decipher/government-shutdown-impacts-enterprise-security</strong></a></p></blockquote><p>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.</p><ul><li>Vulnerabilities being missed or rejected, resulting in incomplete NVD coverage (Over 6,000 vulnerabilities went unassigned by MITRE’s CVE project in 2015, Steve Ragan, CSO Online (Sep. 22, 2016),<a href="https://www.csoonline.com/article/3122460/over-6000-vulnerabilities-went-unassigned-by-mitres-cve-project-in-2015.html">https://www.csoonline.com/article/3122460/over-6000-vulnerabilities-went-unassigned-by-mitres-cve-project-in-2015.html</a>.)</li><li>Severe delays in assigning vulnerability identifiers, exposing unaware downstream parties to risk</li><li>Insufficient descriptions of vulnerabilities, making remediation and management more difficult</li><li>Vulnerability scores that are inflated or understated, leading to misallocated resources and, in some cases, &ldquo;vulnerability fatigue&rdquo;</li><li>Abuse by developers who inflate their vulnerability counts to pad their resumes</li><li>Difficulty rescinding a vulnerability once it is assigned and later found to be invalid, causing confusion and a lack of trust in the program as a whole</li><li>Abuse by engineers at organizations who treat a CVE assignment as a way to bypass a difficult administrative process that would otherwise prevent a routine software upgrade</li><li>Discomfort with the fact that the CVE program itself is administered by a U.S. federal agency</li><li>An inability to handle persistent, complex vulnerabilities that require multiple packages to be fixed multiple times over an extended period</li></ul><p>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.</p><h3 id="end-user-practices">End User Practices</h3><p>Given their position at the very end of the software supply chain, end users would seem to have the least control over security.</p><p><img src="https://t1.daumcdn.net/thumb/R1280x0.fpng/?fname=http://t1.daumcdn.net/brunch/service/user/9399/image/FO95cqN6sfQpgXkxjSfHnZnJRog.png" alt=""/><p>However, the picture changes if you think of the supply chain as a loop.</p><p><img src="https://t1.daumcdn.net/thumb/R1280x0.fpng/?fname=http://t1.daumcdn.net/brunch/service/user/9399/image/uG9Vz6BGSxxkyT2FHCYrJATMwbM.png" alt=""/><p>End users will typically use a technology vendor&rsquo;s solution, and in that case, they cannot make decisions about the choice of PDM or OSS packages. However, end users do control &ldquo;acquisition requirements&rdquo; (although many users do not make full use of this leverage).</p><p>The best practice here is for end users to add the following requirements to the contract when negotiating with a technology provider.</p><ul><li>A dependency list, Software BOM (bill of materials), or a similar component tracking mechanism is provided in a highly robust and transparent manner.</li><li>Vulnerabilities within the product must be remediated within a specified period.</li><li>All developer accounts involved in development must use 2FA or MFA.</li></ul><p>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 &ldquo;acquisition requirement&rdquo; 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.</p><p>Even so, the following facts remain.</p><ul><li>There is no agreed-upon understanding of what it actually means for software to be &ldquo;trustworthy,&rdquo; and no effective tools exist, making it difficult to determine whether a given piece of software can be trusted.</li><li>Similarly, it is difficult to determine whether a download location, such as the repositories discussed above, can be trusted.</li><li>Users often find it difficult to verify whether the software they requested is the package they trust, or whether it is malicious, fraudulent, or incorrect.</li><li>Likewise, users are unable to confirm that the software they received is the software they wanted, for example by checking a digital signature. And some users run the code the moment they receive the software, without any check of its security, quality, or otherwise.</li></ul><p>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.</p><h2 id="conclusion">Conclusion</h2><p>Modern software development relies on a &ldquo;supply chain&rdquo; 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.</p><p>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.</p>
]]></content:encoded></item><item><title>2019 FOSS Legal Issue Top 10</title><link>https://haksungjang.github.io/en/blog/2020/01/30/2019-foss-legal-issue-top-10/</link><pubDate>Thu, 30 Jan 2020 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Haksung Jang ([@haksungjang](https://haksungjang.github.io/))</dc:creator><guid>https://haksungjang.github.io/en/blog/2020/01/30/2019-foss-legal-issue-top-10/</guid><description>Top 10 FOSS legal developments in 2019</description><content:encoded>&lt;![CDATA[<hr><blockquote><p>Hello.</p><p>Mark Radcliffe, an IP attorney at DLA Piper, recently contributed an article titled &ldquo;<a href="https://www-synopsys-com.cdn.ampproject.org/c/s/www.synopsys.com/blogs/software-security/top-10-open-source-legal-issues-2019/amp/">Top 10 FOSS legal developments in 2019</a>.&rdquo; 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.)</p></blockquote><hr><h2 id="1-mchardy-linux-system-copyright-troll-germany-adopts-a-new-strategy">1. McHardy (Linux system copyright troll, Germany) adopts a new strategy</h2><p>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<a href="https://www.jolts.world/index.php/jolts/article/view/128">Geniatech case</a>, which McHardy filed in 2017, the appellate court judge in 2018 responded skeptically to McHardy&rsquo;s copyright claims alleging GPLv2 violations, and McHardy ultimately withdrew the suit.</p><p>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).</p><h2 id="2-richard-stallman-resigns-from-gnu-mit-and-the-free-software-foundation">2. Richard Stallman resigns from GNU, MIT, and the Free Software Foundation</h2><p>Richard Stallman<a href="https://www.fsf.org/news/richard-m-stallman-resigns">resigned</a> as President and board member of the Free Software Foundation. The Free Software (and Open Source) movement owes a great deal to Richard Stallman&rsquo;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.</p><p>He also resigned from MIT, and the maintainers of the GNU operating system removed him. While acknowledging his contributions, they<a href="https://guix.gnu.org/blog/2019/joint-statement-on-the-gnu-project/">stated</a> the following: &ldquo;However, it must be recognized that over the years Stallman&rsquo;s conduct has undermined the interests of<a href="https://www.gnu.org/gnu/manifesto.html#benefit">all computer users</a>, a core value of the GNU project. GNU cannot properly carry out its mission when a leader&rsquo;s conduct diverges from the values we aim to reach.&rdquo;</p><p>It is not yet clear who will take up the leadership role in the Free Software movement going forward.</p><p>(Related domestic article:<a href="http://www.zdnet.co.kr/view/?no=20190918173513">http://www.zdnet.co.kr/view/?no=2019091817351</a>)</p><h2 id="3-the-trade-war-reaches-oss">3. The trade war reaches OSS</h2><p>In May 2019, the US Bureau of Industry and Security (BIS)<a href="https://www.federalregister.gov/documents/2019/05/21/2019-10616/addition-of-entities-to-the-entity-list">placed</a> 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).</p><p>Google immediately<a href="https://www.theverge.com/2019/5/19/18631558/google-huawei-android-suspension">cut off</a> 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<a href="https://www.engadget.com/2019/08/09/huawei-harmony-os-hongmeng-android/">announced</a> that it is developing a version that could replace Android and may ship it with its next phone. This suspension of Huawei&rsquo;s access to Google&rsquo;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.</p><h2 id="4-ethical-restrictions-in-oss-licenses">4. Ethical restrictions in OSS licenses</h2><p>There have been repeated attempts to condition OSS use on ethical grounds. This year saw several examples of &ldquo;Ethical Licenses.&rdquo; In one case, developer Seth Vargo<a href="https://www.wired.com/story/developer-deletes-code-protest-ice/">deleted</a> 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.</p><p>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&rsquo;s CEO said Chef would continue to provide services to ICE, but four days later the CEO<a href="https://www.businessinsider.com/chef-ice-contract-expires-next-year-2019-9">announced</a> 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).</p><p>Activist Coraline Ada Ehmke created the<a href="https://firstdonoharm.dev/">Hippocratic License</a>. She says this license &ldquo;adds ethics to Open Source projects.&rdquo; The Hippocratic License adds the following clause to the MIT License:</p><p>&ldquo;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<a href="https://www.un.org/en/universal-declaration-human-rights/">United Nations Universal Declaration of Human Rights</a>.&rdquo;</p><p>OSI promptly<a href="https://perens.com/2019/09/23/sorry-ms-ehmke-the-hippocratic-license-cant-work/">stated</a> that the Hippocratic License is not an &ldquo;open source&rdquo; license. Unfortunately, this additional clause makes the license very difficult to interpret.</p><h2 id="5-foss-strategies-of-blockchain-projects">5. FOSS strategies of blockchain projects</h2><p>Many<a href="https://www.synopsys.com/glossary/what-is-blockchain.html">blockchain</a> 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<a href="https://github.com/algorand/go-algorand/blob/master/COPYING_FAQ">AGPLv3</a>. Many companies&rsquo; 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.</p><h2 id="6-the-oracle-v-google-war">6. The Oracle v. Google war</h2><p>The Court of Appeals for the Federal Circuit (CAFC)<a href="http://www.cafc.uscourts.gov/sites/default/files/opinions-orders/17-1118.Opinion.3-26-2018.1.PDF">issued</a> its second decision in Oracle v. Google, ruling that Google&rsquo;s unauthorized use of 37 packages of Oracle&rsquo;s Java Application Programming Interface (API) in the Android operating system infringed Oracle&rsquo;s copyright. In 2014, the CAFC reversed the district court&rsquo;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&rsquo;s favor on the ground that Google&rsquo;s use of the API constituted Fair Use, and Oracle appealed. In March 2019, the CAFC once again reversed the district court&rsquo;s ruling, holding that Google&rsquo;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.</p><p>(Related domestic article:<a href="https://byline.network/2020/02/11-94/">https://byline.network/2020/02/11-94/</a>)</p><h2 id="7-the-german-hellwigvmware-case-concludes">7. The German Hellwig/VMware case concludes</h2><p>In March 2015, Christoph Hellwig, a core Linux kernel developer,<a href="https://www.theregister.co.uk/2015/03/05/vmware_sued_for_gpl_violation_by_linux_kernel_developer/">sued VMware</a> in the Hamburg Regional Court in Germany. Hellwig claimed that VMware violated the terms of GPLv2 by (1) combining Linux with VMware&rsquo;s proprietary code, called &ldquo;vmkernel,&rdquo; 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 &ldquo;kernel&rdquo; of the VMware ESXi operating system, manages the hardware and software resources of the physical server.</p><p>VMware responded that vmkernel is not a derivative work of Linux but merely communicates with Linux through the VMK API. VMware also<a href="http://vmware.com/company/news/vmware-update-to-mr-hellwigs-legal-proceedings.html">stated</a> that the drivers that operate with vmkernel need not be Linux drivers, and that &ldquo;a compatibility alternative called &lsquo;vmklinux&rsquo; (interoperating with any Linux driver) via a loadable kernel module is loaded by vmkernel and interfaces with vmkernel through the VMK API.&rdquo; Because the complaint and court filings are kept confidential under German court rules, the facts underlying the dispute cannot be confirmed.</p><p>The Hamburg court dismissed Hellwig&rsquo;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.</p><p>In response to these rulings, VMware<a href="https://www.vmware.com/company/news/updates/march-2019-hellwig-legal-proceedings.html">stated</a>, &ldquo;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.&rdquo;</p><h2 id="8-oss-business-models-and-licensing">8. OSS business models and licensing</h2><p>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<a href="https://www.cockroachlabs.com/blog/oss-relicensing-cockroachdb/">adopted the BSL (Business Source License)</a>, first developed for MariaDB by Bruce Perens, one of the founders of the Open Source movement. CockroachDB&rsquo;s CEO said the following: &ldquo;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.<strong>The one and only restriction is that CockroachDB cannot be offered as a commercial service without purchasing a license.</strong>&rdquo;</p><p>In November, Sentry also<a href="https://blog.sentry.io/2019/11/06/relicensing-sentry/">adopted the BSL</a>. 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,<a href="https://redislabs.com/blog/redis-labs-modules-license-changes/">adopting the Redis Source Available License</a> for RediSearch, RedisGraph, RedisJSON, Redis-ML, and RedisBloom. Other companies adopted similar licenses.</p><h2 id="9-conflicts-over-rand-patent-licensing-between-foss-governed-and-standards-body-governed-projects">9. Conflicts over RAND patent licensing between FOSS-governed and standards-body-governed projects</h2><p>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 (<a href="http://www.stlr.org/download/volumes/volume20/kappos.pdf">here</a> and<a href="http://stlr.org/2019/03/04/oss-and-frand-complementary-models-for-innovation-and-development/">here</a>).</p><p>David Kappos, the former Director of the US Patent and Trademark Office,<a href="http://stlr.org/2018/10/15/the-truth-about-oss-frand-by-all-indications-compatible-models-in-standards-settings/">stated</a> the following: &ldquo;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.&rdquo;</p><p>Van Lindberg, on the other hand,<a href="http://stlr.org/2019/03/04/oss-and-frand-complementary-models-for-innovation-and-development/">responded</a> as follows: &ldquo;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.&rdquo;</p><p>&ldquo;It&rsquo;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.&rdquo;</p><p>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 &ldquo;open source&rdquo; is. This issue does not appear likely to be resolved anytime soon.</p><h2 id="10-open-source-licensing-expands-into-data-and-cryptography-issues">10. Open source licensing expands into data and cryptography issues</h2><p>Data has been called the &ldquo;new oil.&rdquo; The concept of open source has been applied to data licensing (see the Linux Foundation&rsquo;s<a href="https://cdla.io/">Community Data License Agreement</a> from 2017). This year, however, it was applied to data and cybersecurity. For example, the<a href="https://github.com/holochain/cryptographic-autonomy-license">Cryptographic Autonomy License</a> (CAL) was developed by Van Lindberg, an open source lawyer well known from his work with Holochain. Holochain<a href="https://medium.com/holochain/understanding-the-cryptographic-autonomy-license-172ac920966d">explained</a> this license as follows: &ldquo;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.&rdquo;</p><p>The CAL<a href="https://github.com/holochain/cryptographic-autonomy-license/blob/master/README.md">provides</a> the following obligation with respect to user data: &ldquo;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&rsquo;s User Data in your possession, to the extent that such User Data is available to You for use in conjunction with the Work.&rdquo;</p><p>The license also allows a delay in providing source code when addressing a security flaw, which is a new and welcome approach: &ldquo;You may delay providing the Source Code corresponding to a particular modification of the Work for up to ninety (90) days (the &lsquo;Embargo Period&rsquo;) 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.&rdquo;</p><p>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.</p>
]]></content:encoded></item></channel></rss>