<?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/categories/blog/</link><description>Haksung Jang — Open Source Program Manager at SK telecom</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Fri, 20 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://haksungjang.github.io/en/categories/blog/index.xml" rel="self" type="application/rss+xml"/><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></channel></rss>