<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lizenzkonformität Archives - Freigiebigkeit</title>
	<atom:link href="https://karsten-reincke.de/category/compliance/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>(Fach-) Informatik vom Dorf</description>
	<lastBuildDate>Sat, 10 Jan 2026 09:51:18 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Ein sauberes Cookie-Management — mit bootScore</title>
		<link>https://karsten-reincke.de/sauberes-cookie-management/</link>
					<comments>https://karsten-reincke.de/sauberes-cookie-management/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Tue, 26 Sep 2023 08:41:00 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=9979</guid>

					<description><![CDATA[<p>Einen adäquaten Cookie-Dialog einzublenden ist das eine. Ihm eine echte Bedeutung zu geben, das andere. Denn die Abfrage allein reicht nicht. Wir müssen die Antworten unserer Leserinnen auch auswerten. Wir dürfen ausschließlich solche Cookies auf deren Rechnern ablegen, die zu schreiben sie oder das Gesetz uns erlaubt haben. Ein JavaScript-Funktion, die das gewährleistet, implementiert die [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/sauberes-cookie-management/">Ein sauberes Cookie-Management — mit bootScore</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Einen adäquaten Cookie-Dialog einzublenden ist das eine. Ihm eine echte Bedeutung zu geben, das andere. Denn die Abfrage allein reicht nicht. Wir müssen die Antworten unserer Leserinnen auch auswerten. Wir dürfen ausschließlich solche Cookies auf deren Rechnern ablegen, die zu schreiben sie oder das Gesetz uns erlaubt haben. Ein JavaScript-Funktion, die das gewährleistet, implementiert die Semantik des Cookie-Dialogs und etabliert ein sauberes Cookie-Management.<span id="more-9979"></span></p>



<p>Das Plugin <a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">bs-Cookie-Settings</a> selbst liefert nur die Cookie-Abfrage. <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Wie man die aktiviert</a>, hatte ich bereits beschrieben. Die entsprechende Semantik zu implementieren, sieht <a href="https://bootscore.me/">bootScore</a> als <a href="https://github.com/orgs/bootscore/discussions/559">Aufgabe der jeweiligen Web-Designerin</a>. Hier eine Variante,  die gern allgemein wiederverwendet werden darf:</p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="https://fodina.de/properly-managed-cookies">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>Lade die <a href="https://github.com/js-cookie/js-cookie">JS-Cookie-Bibliothek</a> von z.B. cdnpkg.com herunter und lege sie (entpackt) unter dem Namen   <code>js/js.cookie.min.js</code> in Deinem Child-Theme-Ordner ab.</li>



<li>Erweitere in Deiner Datei <code>functions.php</code> die Funktion  <code>bootscore_child_enqueue_styles()</code> um den Eintrag</li>
</ul>



<pre class="wp-block-code"><code>wp_enqueue_script('js-cookie',get_stylesheet_directory_uri().'/js/js-cookie-min.js',false, '', true););</code></pre>



<ul class="wp-block-list">
<li>Erweitere die Datei <code>js/custom.js</code> Deines Child-Themes so:</li>
</ul>



<pre class="wp-block-code"><code>jQuery(function ($) {

  $(document).ready(function(){
    const bsCookieSettings='bs_cookie_settings';
    const analytics = 'analytics';
    const advertising = 'advertising';
    const analyticDemoCookie='bsAnalyticCookie';
    const advertisingDemoCookie='bsAdvertisingCookie';
    const necessaryDemoCookie='bsNecessaryCookie';
    const demoCookieValue='demo-cookie';

    // alert("adding cookie writing algorithm");
    const bsv=Cookies.get(bsCookieSettings);
    if (bsv) {
      const allowedCookies=JSON.parse(bsv);
      // alert(allowedCookies.level);

      if (allowedCookies.level.includes(analytics)) {
        // alert("writing analytic cookies");
        if (!(Cookies.get(analyticDemoCookie))) { 
          Cookies.set(analyticDemoCookie, demoCookieValue, { expires: 100, path: '/' });
        };
      };
      if (allowedCookies.level.includes(advertising)) { 
        // alert("writing advertising cookies"); 
        if (!(Cookies.get(advertisingDemoCookie))) { 
          Cookies.set(advertisingDemoCookie, demoCookieValue, { expires: 10, path: '/' });
        };
      };
      // alert("writing necessary cookies"); 
      if (!(Cookies.get(necessaryDemoCookie))) { 
        Cookies.set(necessaryDemoCookie, demoCookieValue, { expires: 14, path: '/' });
      };
    };
  });

  // Do your other stuff here

}); // jQuery End</code></pre>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p>Cookies könnten wir <a href="https://www.w3schools.com/js/js_cookies.asp">mit nativem Javascript setzen</a> und evaluieren. Mit fertigen Bibliotheken geht es einfacher. WordPress bringt <a href="https://wpengine.com/resources/how-to-add-jquery-wordpress-theme/">jQuery bereits mit</a>. Und <em>bootScore </em>hat dies schon aktiviert und uns eine Möglichkeit geschaffen, eigene JavaScript-/JQuery-Funktionen in unser <a href="https://bootscore.me/documentation/bootscore-child/#JavaScript">bootScore-Childtheme</a> einzubauen.</p>



<p>Früher gab es für das Cookie-Management ein echtes <a href="https://plugins.jquery.com/cookie">jQuery-cookie</a> Plugin. Das ist mittlerweile archiviert und in eine von jQuery unabhängige Javascript-Bibliothek <a href="https://github.com/js-cookie/js-cookie">js-cookie</a> überführt worden. Um die zu nutzen, laden wir Datei js-cookie-min.js herunter und legen sie im JavaScript-Ordner unseres Child-Themes ab. Außerdem erweitern wir die Funktion <code>bootscore_child_enqueue_styles()</code> in unser Datei <code>functions.php</code> so, dass die Bibliothek <code>js/js.cookie.min.js</code> auch geladen wird.</p>



<p>Den Algorithmus zur Evaluation der Cookie-Settings implementieren wir danach in der Datei <code>js/custom.js</code>. Er wirkt so:</p>



<ul class="wp-block-list">
<li>Zuerst versuchen wir den vom bs-Cookie-Plugin unter dem Namen <code>bs_cookie_settings</code> abgelegten Cookie zu lesen.</li>



<li>Wenn es ihn noch nicht gibt, hat unsere Leserin der Nutzung von Cookies noch nicht zugestimmt. Also dürfen wir noch keine schreiben.((Übrigens auch die technisch notwendigen nicht. Die dürfen wir zwar von gesetzeswegen ablegen, wir müssen unsere Leserin aber zuvor informieren, dass wir das tun. Und dass wir das getan haben, können wir wiederum anhand des Cookies  <code>bs_cookie_settings</code> ‘belegen’. ))</li>



<li>Sobald unsere Leserin den Cookie-Dialog in welchem Umfang auch immer ‘bestätigt’ hat, legt das bs-Cookie-Plugin den Cookie  <code>bs_cookie_settings</code> ab. Sein Wert enthält ein JSON-Objekt: </li>
</ul>



<pre class="wp-block-code"><code>{  "level": 
    [   "necessary",
        "analytics",
        "advertising"
    ],
    "revision":0,
    "data":null,
    "rfc_cookie":false
}</code></pre>



<ul class="wp-block-list">
<li>Das müssen wir also erst parsen lassen, bevor wir — auf JavaScript-Ebene — auf die Liste der erlaubten Cookie-Gruppen via <code>allowedCookies.level</code> zugreifen und über die Methode <code>includes</code> eines Listenobjektes abfragen können, welche der Cookie-Gruppen <em>necessary</em>, <em>analytics</em> und /oder <em>advertising</em> uns unsere Leserin zu schreiben erlaubt hat.</li>



<li>Und zu jeder zugelassen Gruppen schreiben wir dann die entsprechenden Cookies.((wobei wir uns bei den technisch notwendigen Cookies auf die gesetzliche Erlaubnis berufen.))</li>
</ul>



<p>Und ein letzter Tipp noch: JavaScript erzeugt Seiten dynamisch. Gecacht werden die Ergebnisse. Deshalb müssen wir gelengtlich den Cache löschen, um die Ergebnisse unserer Veränderungen sehen zu können. </p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang … </h5>
  <p class="myPageContext">… steht das mit unserer <a href="https://karsten-reincke.de/bootscore-migration/">Migration</a> 
  zu <a href="https://bootscore.me/">bootScore</a>? Nun, zuletzt muss die Web-Designerin 
  <a href="https://karsten-reincke.de/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> auch 
  rechtliche Vorgaben beachten, seien es die der
  <a href="https://karsten-reincke.de/datenschutz-dsgvo/">DSGVO</a>, die für eine
  <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Cookie-Zustimmung</a> und deren
  <a href="https://karsten-reincke.de/sauberes-cookie-management/">Beachtung</a> oder die zur 
  <a href="https://karsten-reincke.de//">Erstellungen</a> einer
  <a href="https://karsten-reincke.de/datenschutz/">Datenschutzerklärung</a>.
  In diesen Kontext gehören dann auch die Fragen nach dem 
  <a href="https://karsten-reincke.de/bilderverzeichnis/">Zweck</a> eines 
  <a href="https://karsten-reincke.de/bildnachweise/">Bildverzeichnisses</a>, nach einem
  <a href="https://karsten-reincke.de/impressum/">adäquaten Impressum</a> oder nach einer hinreichenden
  <a href="https://karsten-reincke.de/license-compliance/">Open-Source-Lizenzerfüllung</a>.
  Dies ins rechte Licht zu rücken, will auch dieser Post unterstützen.</p> 
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="https://karsten-reincke.de/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="https://karsten-reincke.de/genderismus/">mitgemeint</a>.</p>
<p>The post <a href="https://karsten-reincke.de/sauberes-cookie-management/">Ein sauberes Cookie-Management — mit bootScore</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/sauberes-cookie-management/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ein sauberer Cookie-Dialog — mit bootScore</title>
		<link>https://karsten-reincke.de/saubere-cookie-nutzung/</link>
					<comments>https://karsten-reincke.de/saubere-cookie-nutzung/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Fri, 15 Sep 2023 11:44:35 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=9887</guid>

					<description><![CDATA[<p>Wir dürfen Cookies nicht einfach so auf die Festplatte einer Leserin schreiben (lassen). Denn die gehört ihr, nicht uns. Für die Cookies, die technisch notwendig sind, hat sie mit dem Abruf unserer Seite zwar konkludent ihr Einverständnis gegeben. Denn sie wollte unseren Blogbeitrag ja lesen. Die anderen Cookies dürfen wir jedoch nur dann auf ihrem [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Ein sauberer Cookie-Dialog — mit bootScore</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="https://www.e-recht24.de/tracking-cookies/8451-hinweispflicht-fuer-cookies.html">Wir dürfen Cookies nicht einfach so auf die Festplatte einer Leserin schreiben (lassen)</a>. Denn die gehört ihr, nicht uns. Für die Cookies, die technisch notwendig sind, hat sie mit dem Abruf unserer Seite zwar konkludent ihr Einverständnis gegeben. Denn sie wollte unseren Blogbeitrag ja lesen. Die anderen Cookies dürfen wir jedoch nur dann auf ihrem Rechner speichern, wenn unsere Leserin es uns explizit erlaubt hat. Und bevor sie das tut, muss sie abfragen können, was die Cookies tun. Dazu dient uns ein sauberer Cookie-Dialog.<span id="more-9887"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="https://fodina.de/properly-used-cookies">en</a> ]</div></div></div></div>



<p>Den brauchen wirt nicht selbst zu entwickeln . Denn <a href="https://bootscore.me/">bootScore</a> liefert uns mit seinem Plugin <a href="https://bootscore.me/#download">bsCookie</a> einen <a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">konfigurierbaren Dialog</a> auf der Höhe der Zeit:</p>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>Lade <a href="https://bootscore.me/#download">bsCookie</a> herunter.</li>



<li>Installiere die Zip-Datei über das Plugin-Management Deines WordPress-Backends.</li>



<li>Ermittle die Cookies, die Du auf dem Rechner Deiner Leserin installieren willst.((Wir müssen dabei bedenken, dass auch unsere Plugins Cookies ablegen lassen können. Es reicht also nicht, nur nach den entsprechenden JavaScript-Befehlen in unseren eigenen Posts und Pages zu suchen.))</li>



<li>Ordne jeden dieser Cookies der Gruppe ’<em>necessary</em>’((Cookies, die wir dieser Gruppe zuordnen, werden zuletzt auch ohne explizite Zustimmung auf der Festplatte unserer Leserin abgelegt, eben weil sie technisch notwendig sind. So müssen wir notfalls auch beweisen können, dass diese Cookies tatsächlich technisch notwendig sind.)), ‘<em>advertising</em>’ oder ‘<em>analytics</em>’ zu.</li>



<li>Ziehe im Dialog ‘Appearance/Widgets’ ein Widget ‘Customer HTML’ in die Widget-Gruppe <em>Footer‑4</em></li>



<li>Trage dort die Scriptzeilen ein, wie sie die <a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">bsCookie-Dokumentation</a> offeriert.</li>



<li>Erzeuge für jedes Deiner Plugins in der entsprechenden Sektion einen Eintrag.</li>



<li>Verlinke Deine Datenschutzseite in den Dialog, indem Du <em>#yourprivacypolicy</em> entsprechend ersetzt.</li>



<li>Übersetze die Texte in die Sprache Deiner Site (bzw. erzeuge einen zusätzlichen Eintrag gemäß Deiner Mehrsprachigkeitsstrategie)</li>
</ul>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p>Das Schreiben der Cookies über einen Dialog erlauben zu lassen, ist nur die eine Seite der Medaille. Denn Cookies können auch (personen-bezogene) (Wiedererkennungs-) Daten speichern, die auf Serverseite akkumuliert und an externe Stellen weitergereicht werden. Deshalb müssen wir solche Cookies außerdem in unserem <a href="https://karsten-reincke.de/datenschutz/">Datenschutzkonzept</a> erwähnen. Damit unsere Leserin dies auch direkt aus dem Cookie-Zustimmugsdialog heraus ausrufen kann, bietet der <em>bsCookie</em>-Dialogtext einen Link, dessen Wert <em>#yourprivacypolice</em> wir entsprechend (um)setzen dürfen.</p>



<p>Es ist mittlerweile gute Tradition, Cookies funktionsbezogen zu gruppieren und für die Gruppen als solche zu fragen, ob die ihr zugeordneten Cookies lokal abgelegt werden dürfen. Rechtlich notwendig ist so ein Clustern nicht. Wir könnten unsere Leserin die Nutzung von Cookies auch ganz generell erlauben oder ablehnen lassen.((Eine stärkere Granularität liegt aber in unserem Interesse. Denn möchte eine Leserin das eine nicht — z.B. Advertising -, könnte sie das andere — z.B. Analytics — immer noch erlauben. Damit würden wir wenigstens noch einen Teil dessen erfahren, was wir insgesamt zu erfahren hofften.)) Oder wir könnten  jeden einzelnen Cookie an- oder abwählbar machen — und den Dialog damit überfrachten.</p>



<p>Wie dem auch sei: Erstmal müssen wir natürlich wissen, welche Cookies unsere Site schreibt und was diese tatsächlich tun. Welche es sind, können wir uns über die Browser anzeigen lassen. Etwa mittels seines ‘Privacy and Security’-Dialoges. Oder mit Hilfe eines Browser-Plugins((z.B. mit dem <a href="https://cookie-editor.cgagnier.ca/">Cookie Editor</a>)), das direkt für jede aufgerufene Site/Seite anzeigt, welche Cookies von ihr geschrieben worden sind. Was unsere Cookies tun, müssen wir dagegen gesondert ermitteln.</p>



<p>Haben wir diese Cookies dann funktional sortiert, brauchen wir im bsCookie-Dialog nur noch die entsprechenden Gruppen als Sektionen anzulegen und in diese für jedes zugehörige Cookie einen Eintrag zu erzeugen. Für die drei gängigen Gruppen ’necessary’, ‘advertising’ und ‘analytics’ bringt <em>bsCookie</em> die nötigen Codegruppen immer schon mit. Hier reicht es mithin, die Cookies in und mit den Einzeleinträgen zu beschreiben. Gesetzt, wir wollten die drei Cookies <em>bsNec­es­saryCook­ie</em>, <em>bsAdver­tis­ing­Cook­ie</em>, und <em>bsAnal­iz­ing­BCook­ie</em> gesetzeskonform ablegen lassen, müsste der Code für den <em>bsCookie-Dialog</em> so aussehen:</p>



<pre class="wp-block-code"><code>&lt;script&gt;
  // Init
  window.addEventListener('load', function () {

    // obtain plugin
    var cc = initCookieConsent();

    // run plugin with your configuration
    cc.run({
      current_lang: 'de',
      autoclear_cookies: true,
      page_scripts: true,

      languages: {
        'de': {
          consent_modal: {
            title: 'Cookie-Zumstimmung:',
            description: 'Wir nutzen Cookies, um Deine Entscheidungen bei zukünftigen Besuche wiederzuverwenden. Wenn Du auf "Alle akzeptieren" klickst, dürfen wir alle Cookies verwenden, die technisch notwendigen und die funktionell hilfreichen. Wenn Du auf "nur notwendige" klickst, untersagst Du uns, die  funktionell hilfreichen Cookies zu verwenden. Eine feinere Auswahl bieten Dir unsere expliziten &lt;a data-bs-toggle="modal" href="#bs-cookie-modal"&gt;Cookie-Einstellungen&lt;/a&gt;.',
            primary_btn: {
              text: 'alle akzeptieren',
              role: 'accept_all'
            },
            secondary_btn: {
              text: 'nur notwendige',
              role: 'accept_necessary'
            }
          },

          settings_modal: {
            title: 'Cookie-Einstellungen',
            save_settings_btn: 'Auswahl sichern',
            accept_all_btn: 'alle akzeptieren',
            reject_all_btn: 'nur notwendige',
            close_btn_label: 'schließen',
            cookie_table_headers: [
              { col1: 'Name' },
              { col2: 'Domain' },
              { col3: 'Verfall' },
              { col4: 'Beschreibung' }
            ],
            blocks: [
              {
                title: 'Cookie-Nutzung',
                description: 
'Wir verwenden Cookies, um zentrale Funktionen unserer Website bereitzustellen und Dein Leseerlebnis zu verbessern. Du kannst für jede Cookie-Gruppe entscheiden, ob Du sie zulässt oder nicht. Weitere Einzelheiten zu Cookies und anderen sensiblen Daten findest Du in unserem &lt;a href="http://karsten-reincke.de/datenschutz"&gt;Datenschutzkonzept&lt;/a&gt;.'
              }, {
                title: 'Notwendige',
                description: 
'Diese Cookies sind essentiell für unsere Website. Ohne sie würde die Site nicht richtig funktionieren.',
                toggle: {
                  value: 'necessary',
                  enabled: true,
                  readonly: true          // cookie categories with readonly=true are all treated as "necessary cookies"
                },
                cookie_table: [
                  {
                    col1: 'bs_cookie_settings',
                    col2: 'bootScore.me',
                    col3: 'wird gelöscht wenn Deine Session beendet wird',
                    col4: 
'Darin speichert bootScore bzw. das Plugin "bsCookies" Deine Cookie-Einstellungen',
                    is_regex: false
                  },
                  {
                    col1: 'bsNec­es­saryCook­ie', 
                    col2: 'http://karsten-reincke.de/',
                    col3: 'nach 100 Tagen',
                    col4: 'Demo-Cookie für "pimp your BootScore"',
                    is_regex: false
                  },                 
                ]
              }, {
                title: 'Analytics',
                description: 
'Diese Art der Cookies erlaubt es uns, Deine Entscheidungen beim nächsten Mal wiederzuverwenden.',
                toggle: {
                  value: 'analytics',     // your cookie category
                  enabled: false,
                  readonly: false
                },
                cookie_table: [           // list of all expected cookies
                  {
                    col1: 'bsAnal­iz­ing­Cook­ie',         
                    col2: 'http://karsten-reincke.de/',
                    col3: 'nach 10 Tagen',
                    col4: 'Demo-Cookie für "pimp your BootScore"',
                    is_regex: false
                  }
                ]
              }, {
                title: 'Advertising',
                description: 
'Solche Cookies vermerken, wie Du unsere Website verwendest, welche Seiten Du besuchts und welche Links Du anklickst. Alle Informationen sind anonymiziert und können nicht benutzt werden, um Dich zu identifizieren.',
                toggle: {
                  value: 'advertising',
                  enabled: false,
                  readonly: false
                },
                cookie_table: [             // list of all expected cookies
                  {
                    col1: 'bsAdver­tis­ing­Cook­ie',
                    col2: 'http://karsten-reincke.de/',
                    col3: '2 Wochen',
                    col4: 'Demo-Cookie für "pimp your BootScore"',
                    is_regex: false
                  }
                ]
              }, {
                title: 'Weitere Informationen',
                description: 
'Bei weiteren Fragen zu unserem Daten-Management, kontaktiere &lt;a href="http://karsten-reincke.de/impressum"&gt;uns&lt;/a&gt; einfach.',
              },

            ]
          }

        }
      }

    });
  });
&lt;/script&gt;</code></pre>



<p>Die Informationen in den Cookie-Zustimmungsdialogs einzubauen, ist das eine. Seinen Code zu aktivieren, das andere. Den angepassten <em><a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">bs-cookie-settings</a></em>-JavaScript-Code tragen wir dazu in ein <em>Custom-HTML-Element</em> ein, das wir dem Widget <em>Footer 4</em> hinzugefügt haben. Prinzipiell könnten wir das <em>Custom-HTML-Element</em> auch in andere Widgets einbetten. <em>bsCookie</em> schlägt <em>Footer 4</em> vor, weil der JavaScript-Code so eher am Ende einer Seite eingebettet und damit direkt ausgeführt wird. Wie auch immer, der Cookie-Zustimmungsdialog wird dann beim Aufruf all der Seiten angezeigt, deren Templates den <em>Footer 4</em> verwenden. Das Problem der ‘Deep-Links’((Es reicht nicht aus, nur unsere Einstiegsseite den Zustimmungsdialog anzeigen zu lassen. Denn gelegentlich reichen unsere Leserinnen auch Links auf tiefer eingebettete Seiten herum. Unsere Site muss auch in deisen Fällen erst um Erlaubnis bitten, bevor sie die Cookies ablegt.)) ist also gelöst, wenn jede Seite ein Template verwendet, das den entsprechenden JavaScript-Code enthält.</p>



<p>Blieben uns noch drei letzte Aufgaben:</p>



<ul class="wp-block-list">
<li>Zum ersten werden wir unseren Zustimmungsdialog oft auch sprachlich anpassen wollen. Auch das geht über die ‘Umprogrammierung’ des erwähnten JavaScript-Codes.</li>



<li>Über <a href="https://karsten-reincke.de/farbkonzept/">das funktionalen Farbkonzept von Bootscore/bootStrap</a> ist der Cookie-Dialog auf ‘Warning’ eingestellt. Wer ihn dennoch anders gestalten will, kann das in ihrer Datei <code>_bscore_custom.scss</code> so tun: <pre class="wp-block-code"><code>// design the bsCookie-Dialog<br>#c-inr {<br>  border-color: darkblue;<br>  border-width: 2px;<br>  border-style: solid;<br>  background-color: #eef;<br>  color: blue($color: #000000);<br>  padding: 5px;<br>}<br><br>#c-p-bn {<br>  border-color: darkblue;<br>}<br><br>#c-s-bn {<br>  border-color: darkblue;<br>}<br></code></pre></li>



<li>Zum dritten müssen wir die <a href="https://karsten-reincke.de/ein-sauberes-cookiemanagement-mit-bootscore/">Semantik des Cookie-Zustimmungsdialoges implementieren</a>. Wenn wir mehr als nur reden wollen, müssen wir unseren ‘Schreibe-Cookie-JavaScript-Code’ so anlegen, dass er ohne Zustimmung nur die technischen notwendigen Cookies schreibt und dass er ansonsten nur die Cookies aus den Gruppen ablegt, für die eine Zustimmung vorliegt.</li>
</ul>



<p>Diesen letzten Punkt werde ich <a href="https://karsten-reincke.de/ein-sauberes-cookiemanagement-mit-bootscore/">in einem gesonderten Post aufgreifen</a> …</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang … </h5>
  <p class="myPageContext">… steht das mit unserer <a href="https://karsten-reincke.de/bootscore-migration/">Migration</a> 
  zu <a href="https://bootscore.me/">bootScore</a>? Nun, zuletzt muss die Web-Designerin 
  <a href="https://karsten-reincke.de/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> auch 
  rechtliche Vorgaben beachten, seien es die der
  <a href="https://karsten-reincke.de/datenschutz-dsgvo/">DSGVO</a>, die für eine
  <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Cookie-Zustimmung</a> und deren
  <a href="https://karsten-reincke.de/sauberes-cookie-management/">Beachtung</a> oder die zur 
  <a href="https://karsten-reincke.de//">Erstellungen</a> einer
  <a href="https://karsten-reincke.de/datenschutz/">Datenschutzerklärung</a>.
  In diesen Kontext gehören dann auch die Fragen nach dem 
  <a href="https://karsten-reincke.de/bilderverzeichnis/">Zweck</a> eines 
  <a href="https://karsten-reincke.de/bildnachweise/">Bildverzeichnisses</a>, nach einem
  <a href="https://karsten-reincke.de/impressum/">adäquaten Impressum</a> oder nach einer hinreichenden
  <a href="https://karsten-reincke.de/license-compliance/">Open-Source-Lizenzerfüllung</a>.
  Dies ins rechte Licht zu rücken, will auch dieser Post unterstützen.</p> 
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="https://karsten-reincke.de/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="https://karsten-reincke.de/genderismus/">mitgemeint</a>.</p>
<p>The post <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Ein sauberer Cookie-Dialog — mit bootScore</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/saubere-cookie-nutzung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Lizenzkonformes Javascript</title>
		<link>https://karsten-reincke.de/lizenzkonformes-javascript/</link>
					<comments>https://karsten-reincke.de/lizenzkonformes-javascript/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 17 May 2023 07:27:52 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=7247</guid>

					<description><![CDATA[<p>Um die Übertragung im Netz zu beschleunigen, betten Web-Sites JavaScript-Bibliotheken üblicherweise ‘minified’ ein, in komprimierter Form also. Leerzeichen, Zeilenvorschübe und Kommentare sind daraus entfernt worden. Daher enthalten die Bibliotheken nur noch rudimentäre Lizenzinformationen — jedenfalls nicht den Lizenztext selbst. Aber alle FOSS-Lizenzen verlangen von uns, dass wir einige Compliance-Artefakte mit dem Code zusammen ausliefern — [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/lizenzkonformes-javascript/">Lizenzkonformes Javascript</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Um die Übertragung im Netz zu beschleunigen, betten Web-Sites JavaScript-Bibliotheken üblicherweise ‘<a href="https://kinsta.com/blog/minify-javascript/">minified</a>’ ein, in komprimierter Form also. Leerzeichen, Zeilenvorschübe und Kommentare sind daraus  entfernt worden. Daher enthalten die Bibliotheken nur noch rudimentäre Lizenzinformationen — jedenfalls nicht den Lizenztext selbst. Aber alle FOSS-Lizenzen verlangen von uns, dass wir einige Compliance-Artefakte mit dem Code zusammen ausliefern — insbesondere den Lizenztext. Lizenzkonformes Javascript ist mithin eine Herausforderung für Sites — in und mit <em>bootScore</em>, <em>WordPress</em> und anderswo.<span id="more-7247"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="https://fodina.de/license-compliant-javascript">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>Verwende die JavaScript-Bibliothek <em>Bootstrap</em> so, wie sie von <em>bootScore</em> bereitgestellt wird</li>



<li>Verwende die JavaScript-Bibliotheken so, wie sie von <em>WordPress</em> geliefert werden</li>



<li>Erstelle eine Tabelle mit den Informationen zur JavaScript-Konformität</li>



<li>Erstelle für jede von <em>bootScore</em> oder <em>WordPress</em> gelieferte JavaScript-Bibliothek eine entsprechende Zeile in der JS-Tabelle.</li>



<li>Binde diese Tabelle in Deine <em>Open Source Compliance Page</em> ein.</li>



<li>Mache die <em>Open Source Compliance Page</em> über den ‘Footer’ Deiner Seiten zugänglich</li>
</ul>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p><a href="https://github.com/bootscore/bootscore">bootSCore</a> enthält einige JS-Komponenten. Zum Beispiel seine eigenen entfalteten JavaScript-Bibliotheken((vgl. <code>./bootscore/js/theme.js</code>)) — implizit lizenziert unter der MIT, aber ohne explizites Lizenzierungsstatement — und die minifizierte Bootstrap JavaScript-Bibliothek((vgl. <code>./bootscore/js/lib/bootstrap.bundle.min.js</code>)) — durch ein entsprechendes Lizenzierungsstatement explizit unter der MIT-Lizenz gestellt. Aber keine davon enthält den Lizenztext selbst. Auch WordPress bringt einige eigene und einige minimierte JavaScript-Bibliotheken von Drittanbietern mit((vgl. <a href="https://codex.wordpress.org/Javascript_Reference">https://codex.wordpress.org/Javascript_Reference</a> bzw. <code>./wp-includes/js</code>)), wie z.B. die jQuery-Bibliothek<sup><a href="https://karsten-reincke.de/lizenzkonformes-javascript/#footnote_1_7247" id="identifier_1_7247" class="footnote-link footnote-identifier-link" title="vgl. wp-includes/js/jquery/">1</a></sup>, die ebenfalls unter der MIT lizenziert ist und ein entsprechendes Lizenzstatement enthält, aber nicht den Lizenztext. Unabhängig davon, von wem die Website-Besitzerin diese Bibliotheken erhalten hat — von <em>bootScore</em> oder <em>WordPress</em> -, ist sie es letztendlich, die die Lizenzanforderungen erfüllen muss. Denn es ist ja ihr System ist, das die JavaScript-Bibliotheken an ihre Leser weitergibt.</p>



<p>Aber worin besteht denn nun eigentlich die Herausforderung?</p>


<div class="wp-block-image"><figure class="alignright size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/05/js.jpg" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/05/js-300x300.jpg" alt="JS Logo" width="120"></a></figure></div>



<p>Wie die JavaScript-Bibliotheken von <em>Bootstrap</em> und <em>jQuery</em> auch, sind die meisten JS-Bibliotheken MIT lizenziert. Diese FOSS-Lizenz verlangt, dass beides — die Copyright-Zeile und der Lizenztext — zusammen mit dem Open-Source-Programm verteilt wird. <em>“The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.”</em>((cf. <a href="https://opensource.org/license/mit/">MIT License</a>))</p>



<p>Für (L|A)GPL-lizenzierte JavaScript-Bibliotheken gilt fast dasselbe: Diese Lizenzen erlauben die Weitergabe des Quellcodes, <em>“[…] provided that one conspicuously and appropriately publishes on each copy an appropriate copyright notice and disclaimer of warranty […] and gives any other recipients of the Program a copy of this License along with the Program”</em>.((pars pro toto vgl. <a href="https://opensource.org/license/gpl-2-0/">GPL‑2.0</a>. Zusätzlich verlangt die (A)GPL, dass jeder Code, der die (A)GPL-lizenzierte Bibliothek usw. verwendet, ebenfalls unter der (A)GPL lizenziert ist (Copyleft-Effekt). Aber darum geht es in diesem Zusammenhang nicht.))</p>



<p>Wir haben hier also einen Widerspruch: Auf der einen Seite lädt ein Browser nicht nur den Seitentext (HTML) herunter, sondern auch die JavaScript-Bibliothek. Dieser Download verbreitet den Code und löst damit die Notwendigkeit aus, die Anforderungen der Open-Source-Lizenz zu erfüllen. Auf der anderen Seite enthalten die komprimierten Bibliotheken — selbst wenn sie als Paket von den Autorinnen angeboten werden — in der Regel nicht mehr die notwendigen Lizenzinformationen. Denn je kleiner die Bibliotheken sind, desto schneller erscheinen die Seiten auf den Rechnern der Leser angezeigt.</p>



<p>Der Website-Betreiberin bieten sich zwei Möglichkeiten, mit dieser Herausforderung umzugehen: Entweder sie heilt die implizit von WordPress und <em>bootScore</em> übernommenen Pakete nachträglich (und (halb)manuell). Oder sie verwendet sie so, wie sie sie bekommen hat. Es ist klar: Heilen würde bedeuten, dass wir diese Aufgabe jedes Mal wiederholen müssten, wenn wir <em>WordPress</em> oder <em>bootScore</em> aktualisieren. Also wäre der andere Weg weniger aufwendig. Also besser — sofern es eine Option gäbe, die Idee und die Anforderungen freier Softwarelizenzen dabei (doch) nicht zu verletzen.</p>



<p>Die Lösung ist dies:</p>



<p>Geben Entwickler ihre JavaScript-Bibliotheken als ‘minified’ Versionen weiter, gehen sie davon aus, dass ihre JS-Bibliothek auch in dieser Version verwendet wird. Daraus schließen wir, dass die Copyright-Owner diese Art der Nutzung implizit (konkludent) zulassen. Auch, wenn die Bibliotheken dabei gegen die von den Entwicklern selbst gewählte Lizenz verstößt. Trotzdem sollten wir unseren Benutzern eine andere Möglichkeit anbieten, diese Informationen zu erhalten. Wir zeigen damit, dass wir die FOSS-Idee verstanden haben und respektieren. Außerdem müssen wir darauf achten, nur die minifizierten JavaScript-Bibliotheken in unsere Site einzubinden. Also nur die Form, die die Entwicklerin selbst zur Verfügung gestellt hat. Sonst unterliefen wir ja unsere Argumentation. Im Falle der <em>Bootstrap</em>-JS-Lib in <em>bootScore</em> und der <em>jQuery</em>-JS-Lib etc. in <em>WordPress</em> dürfen wir davon ausgehen, dass sie dies getan haben.</p>



<p>Wir haben so im Falle eines Rechtsstreits um die Lizenzerfüllung bei JS-Bibliotheken((Ich habe noch nie von solch einem Disput gehört!)) ein starkes Argument für die Legalität unseres Vorgehens. Und wir befinden uns in sehr guter Gesellschaft: Die Sekundärliteratur diskutiert es in diesem Sinne((vgl. <a href="https://www.iusmentis.com/computerprograms/opensourcesoftware/license-notices-web-applications/">https://www.iusmentis.com/computerprograms/opensourcesoftware/license-notices-web-applications/</a>)) und sogar die FSF schlägt vor, so vorzugehen.((vgl. <a href="https://www.gnu.org/licenses/javascript-labels.en.html">https://www.gnu.org/licenses/javascript-labels.en.html</a>  und <a href="https://www.gnu.org/licenses/javascript-labels-rationale.html">https://www.gnu.org/licenses/javascript-labels-rationale.html</a>)) Und die hat nun wirklich nicht den Ruf, die Einhaltung von Lizenzen auf die leichte Schulter zu nehmen.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang …</h5>
  <p class="myPageContext">… steht das mit einer systematischen <i class="fa-brands fa-osi"></i> Erfüllung
  von <i class="fa-brands fa-linux"></i> FOSS-Lizenzen? Nun, dazu müssen wir halt auch 
  <a href="https://karsten-reincke.de/open-source-diversity/">politische Konnotationen</a> bedenken, 
  <a href="https://karsten-reincke.de/unechte-open-source-software/">konzeptionelle</a> und 
  <a href="https://karsten-reincke.de/die-sache-mit-der-milch/">kontextuelle</a> Aspekte analysieren — 
  <a href="https://karsten-reincke.de/jniz/">einzeln</a> oder <a href="https://karsten-reincke.de/foss-con-korea-2013/">gemeinsam 
  auf Konferenzen</a>. Wir müssen <a href="https://karsten-reincke.de/yocto-iot-gplv3/">konkrete Fälle</a> und allgemeine 
  <a href="https://karsten-reincke.de/lilypond-gpl/">Nebenwirkungen</a> durchdenken, für 
  <a href="https://karsten-reincke.de/lizenzkonformes-javascript/">Software</a>, 
  <a href="https://karsten-reincke.de/bilder-datenbanken/">Bilder</a> oder Dokumente. Wir müssen 
  <a href="https://karsten-reincke.de/cc-by-trolls/">Trends</a> benennen und <a href="https://karsten-reincke.de/bosl-3-0/">Leitfäden</a> erstellen. 
  Vornehmlich aber müssen wir die <a href="https://karsten-reincke.de/tdosca/">Automatisierung der Lizenzerfüllung</a> 
  vorantreiben, unser <a href="https://karsten-reincke.de/oslic/">Lizenzwissen frei zur Verfügung stellen</a>,  
  es in <a href="https://karsten-reincke.de/oscad/">kleinere Tools</a> gießen und in <a href="https://karsten-reincke.de/oscake/">
  größere Systeme</a> einbringen: Denn FOSS lebt von der Freiheit durch Lizenzerfüllung, im Großen und im Kleinen.</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="https://karsten-reincke.de/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="https://karsten-reincke.de/genderismus/">mitgemeint</a>.</p>
<ol class="footnotes"><li id="footnote_1_7247" class="footnote">vgl. <code>wp-includes/js/jquery/</code></li></ol><p>The post <a href="https://karsten-reincke.de/lizenzkonformes-javascript/">Lizenzkonformes Javascript</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/lizenzkonformes-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Datenschutz, DSGVO und Cookies</title>
		<link>https://karsten-reincke.de/datenschutz-dsgvo/</link>
					<comments>https://karsten-reincke.de/datenschutz-dsgvo/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Fri, 21 Apr 2023 09:17:38 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=6392</guid>

					<description><![CDATA[<p>Datenschutz sei komplex und müsse von Expertinnen organisiert werden, wird der WEB-Site-Betreiberin gerne bedeutet. Was aber, wenn sie das Geld dafür nicht hat? Wenn es irgendwie unsinnig erscheint, mit der Kanone eines bezahlten Expertinnenteams auf einen Spatzenblog zu schießen? Dann wird sie sich vielleicht via Google irgendein gerne genutztes WordPress-Plugin für Datenschutz und/oder Cookies organisieren [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/datenschutz-dsgvo/">Datenschutz, DSGVO und Cookies</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="https://karsten-reincke.de/datenschutz/">Datenschutz</a> sei komplex und müsse von Expertinnen organisiert werden, wird der WEB-Site-Betreiberin gerne bedeutet. Was aber, wenn sie das Geld dafür nicht hat? Wenn es irgendwie unsinnig erscheint, mit der Kanone eines bezahlten Expertinnenteams auf einen Spatzenblog zu schießen? Dann wird sie sich vielleicht via Google irgendein gerne genutztes WordPress-Plugin für Datenschutz und/oder Cookies organisieren — und hoffen, dass alles gut geht. Oder sie wird dem genauer nachgehen. Und sich am Ende vielleicht auch Daumenregeln für das Thema ‘Datenschutz und DSGVO’ zusammenstellen, aus und mit denen sich wenigstens ein gut gangbarer Weg ergibt. Hier meine 3.7 Faustregeln:<span id="more-6392"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="https://fodina.de/privacy-dsgvo">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>I. Verwende nur die personenbezogenen Daten, die Du für das Funktionieren Deines Systems wirklich benötigst.</li>



<li>II. Wenn Du personenbezogene Daten erhebst, dann sage den Besitzerinnen,
<ul class="wp-block-list">
<li>dass Du das tust,</li>



<li>zu welchem Zweck Du die Daten verwendest,</li>



<li>welche Rechtsgrundlage Dich dazu berechtigt,</li>



<li>an wen Du die Daten weitergibst,</li>



<li>wie lange Du sie bei Dir speicherst,</li>



<li>wie sie bei der erfragen können, welche Daten Du über die Zeit gespeichert hast</li>



<li>wie sie die Daten wieder löschen lassen können.</li>
</ul>
</li>



<li>III. Wenn Du Daten auf dem Rechner Deiner Nutzerinnen speicherst, die sie nicht direkt oder indirekt angefordert haben (könnten), frage sie vorher um Erlaubnis.</li>
</ul>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p>Gehe ich danach vor — so mache ich immer wieder glauben — werde ich meine Sites so gestalten, dass ich die gröbsten Fallen<sup><a href="https://karsten-reincke.de/datenschutz-dsgvo/#footnote_1_6392" id="identifier_1_6392" class="footnote-link footnote-identifier-link" title="vgl. https://www.e-recht24.de/artikel/datenschutz/8451-hinweispflicht-fuer-cookies.html">1</a></sup> und Fehler<sup><a href="https://karsten-reincke.de/datenschutz-dsgvo/#footnote_2_6392" id="identifier_2_6392" class="footnote-link footnote-identifier-link" title="vgl. https://www.ihk.de/halle/recht/datenschutz/sonstige-rechtsinformationen/cookie-banner-fuenf-fehler-die-sie-vermeiden-sollten--4854218">2</a></sup> vermeide. Denn eines habe ich immer im Kopf: mit einem bloßen Cookie-Banner ist es nicht getan:</p>



<ol class="wp-block-list">
<li>Als Erstes überlege ich mir, wo mein Blog als System personenbezogene Daten erhebt. Die, die ich in und mit Formularen explizit abfrage, fallen mir am leichtesten auf und ein. Bei denen weiß ich — ‘qua Amt’ -, wofür ich sie nutze und an wen ich sie weitergebe etc.</li>



<li>Außerdem ist mir klar, dass auch IP-Adressen als personenbezogenen Daten gelten — obwohl das Internet ohne sie gar nicht funktionieren würde.</li>



<li>Zudem können WordPress, die von mir aktivierten Plugins, Javascript-Bibliotheken, Google-Fonts u.Ä.m.  Daten erheben, notieren und an Dritte versenden.</li>



<li>Schließlich werden meine Kommentatorinnen üblicherweise über das gängige Gravatar-System wiedererkennbar gemacht.</li>
</ol>



<p>Dieses Gemenge muss ich ordnen:</p>



<ul class="wp-block-list">
<li>Regel (I) sagt mir, dass Weniger im Mehr ist: Je weniger Daten ich erfrage, je weniger Plugins ich verwende, desto schlanker wird mein Datenschutzkonzept. Also miste ich hier aus, z.B., in dem ich Produktiv- und Developsytsem unterschiedlich behandele.</li>



<li>Regel (II) sagt mir, dass ich die verbleibenden Datensets aber auch tatsächlich im Datenschutzkonzept beschreiben muss. Also ermittle ich nach bestem Wissen und Gewissen, welche Daten meine Plugins, Font-Requests und andere technische Komponenten erheben, wie sie sie speichern und wohin sie sie weitergeben.</li>



<li>Regel (III) sagt mir, dass ich es ich es mir erlauben lassen muss, Dateien, will sagen: Cookies auf den Rechner meiner Nutzerin schreiben zu dürfen, sei es — wie bei technisch notwendigen Cookies — gesetzlich, sei es — wie bei den anderen — per Zustimmung durch meiner Nutzerin. Und um die gewährt zu bekommen, ist es hilfreich, Zweck und Auswirkung anzugeben.</li>
</ul>



<p>Weitere Posts beschreiben, wie ich das konkret umgesetzt habe.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang … </h5>
  <p class="myPageContext">… steht das mit unserer <a href="https://karsten-reincke.de/bootscore-migration/">Migration</a> 
  zu <a href="https://bootscore.me/">bootScore</a>? Nun, zuletzt muss die Web-Designerin 
  <a href="https://karsten-reincke.de/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> auch 
  rechtliche Vorgaben beachten, seien es die der
  <a href="https://karsten-reincke.de/datenschutz-dsgvo/">DSGVO</a>, die für eine
  <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Cookie-Zustimmung</a> und deren
  <a href="https://karsten-reincke.de/sauberes-cookie-management/">Beachtung</a> oder die zur 
  <a href="https://karsten-reincke.de//">Erstellungen</a> einer
  <a href="https://karsten-reincke.de/datenschutz/">Datenschutzerklärung</a>.
  In diesen Kontext gehören dann auch die Fragen nach dem 
  <a href="https://karsten-reincke.de/bilderverzeichnis/">Zweck</a> eines 
  <a href="https://karsten-reincke.de/bildnachweise/">Bildverzeichnisses</a>, nach einem
  <a href="https://karsten-reincke.de/impressum/">adäquaten Impressum</a> oder nach einer hinreichenden
  <a href="https://karsten-reincke.de/license-compliance/">Open-Source-Lizenzerfüllung</a>.
  Dies ins rechte Licht zu rücken, will auch dieser Post unterstützen.</p> 
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="https://karsten-reincke.de/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="https://karsten-reincke.de/genderismus/">mitgemeint</a>.</p>
<ol class="footnotes"><li id="footnote_1_6392" class="footnote">vgl. <a href="https://www.e-recht24.de/artikel/datenschutz/8451-hinweispflicht-fuer-cookies.html">https://www.e‑recht24.de/artikel/datenschutz/8451-hinweispflicht-fuer-cookies.html</a></li><li id="footnote_2_6392" class="footnote">vgl. <a href="https://www.ihk.de/halle/recht/datenschutz/sonstige-rechtsinformationen/cookie-banner-fuenf-fehler-die-sie-vermeiden-sollten--4854218">https://www.ihk.de/halle/recht/datenschutz/sonstige-rechtsinformationen/cookie-banner-fuenf-fehler-die-sie-vermeiden-sollten–4854218</a></li></ol><p>The post <a href="https://karsten-reincke.de/datenschutz-dsgvo/">Datenschutz, DSGVO und Cookies</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/datenschutz-dsgvo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Der Bitkom Open Source Leitfaden 3.0</title>
		<link>https://karsten-reincke.de/bosl-3-0/</link>
					<comments>https://karsten-reincke.de/bosl-3-0/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Mon, 11 Jul 2022 13:57:29 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Lizenzierung]]></category>
		<guid isPermaLink="false">http://127.0.0.1/kr/?p=4265</guid>

					<description><![CDATA[<p>Über 6 Jahre war der Bitkom Open Source Leitfaden 2.0 eine Quelle für die rechtskonforme Nutzung von Open-Source-Software, ein Benchmark. Doch der ist gealtert. Gut, dass der Bitkom und sein Arbeitskreis ‘Open Source’ nun seit Juni 2022 offiziell einen thematisch erweiterten und verfeinerten Bitkom Open Source Leitfaden 3.0 herausgeben — wiederum als Richtschnur, als Benchmark [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/bosl-3-0/">Der Bitkom Open Source Leitfaden 3.0</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="alignleft size-full is-resized"><img fetchpriority="high" decoding="async" width="792" height="446" src="https://karsten-reincke.de/wp-content/uploads/2023/06/bosl-edited.png" alt class="wp-image-7838" style="width:166px;height:93px" srcset="https://karsten-reincke.de/wp-content/uploads/2023/06/bosl-edited.png 792w, https://karsten-reincke.de/wp-content/uploads/2023/06/bosl-edited-300x169.png 300w, https://karsten-reincke.de/wp-content/uploads/2023/06/bosl-edited-768x432.png 768w, https://karsten-reincke.de/wp-content/uploads/2023/06/bosl-edited-560x315.png 560w" sizes="(max-width: 792px) 100vw, 792px"></figure>
</div>


<p>Über 6 Jahre war der <a href="https://www.bitkom.org/sites/default/files/file/import/FirstSpirit-1498131485664160229-OSS-Open-Source-Software.pdf">Bitkom Open Source Leitfaden 2.0</a> eine Quelle für die rechtskonforme Nutzung von Open-Source-Software, ein Benchmark. Doch der ist gealtert. Gut, dass der <a href="https://www.bitkom.org/">Bitkom</a> und sein <a href="https://www.bitkom.org/Bitkom/Organisation/Gremien/Open-Source.html">Arbeitskreis ‘Open Source’</a> nun seit Juni 2022 <a href="https://www.bitkom.org/Bitkom/Publikationen/Open-Source-Leitfaden-Praxisempfehlungen-fuer-Open-Source-Software-Version-30">offiziell</a> einen thematisch erweiterten und verfeinerten <a href="https://www.bitkom.org/sites/main/files/2022-06/220624-Bitkom-Leitfaden-Open%20Source-3.0_0.pdf">Bitkom Open Source Leitfaden 3.0</a> herausgeben — wiederum als Richtschnur, als Benchmark und als Handbuch.<span id="more-4265"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="https://fodina.de/bosl-3-0">en</a> ]</div></div></div></div>



<div style="height:21px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Schon erstaunlich, dass der Bitkom mit diesem Leitfaden zum ersten Mal eine ‘Handreichung’ unter einer Open-Source-Lizenz veröffentlicht hat. Die Wahl fiel auf die Creative Commons Lizenz (CC BY-ND 3.0 DE). Offensichtlich rückt die Idee einer ‘Allmende’ und der Gedanke eines frei zugänglichen Services auch beim Bitkom in den Vordergrund. Das verleiht seiner Stimme noch mehr Gewicht. Dass er eine Bearbeitung durch Dritte dabei nicht zulässt (ND = Non Derivation), ist verständlich. Immerhin soll die Qualität und Verlässlichkeit bewahrt bleiben. Aber jede andere Art der Verwendung durch Dritte ist ausdrücklich erlaubt, ja erwünscht, auch die kommerzielle. So wird sich der Bitkom zukünftig gewiss dazu durchringen, auch die Quellen allgemein zugänglich zu machen. Anstatt ’nur’ in einer ‘geschlossenen’ GitHub-Organisation.</p>



<p>Außerdem hat der Bitkom hat seinen Autoren dabei gestattet, sich über und mit GitHub zu organisieren. Jeder konnte mitmachen. Jeder konnte Mitglied der Organisation werden und damit auf das GitHub-Repository mit den (Teil)Ergebnissen zugreifen. So hat der Bitkom — wiederum erstmals und erfolgreich — ein Buch mit den Mitteln der Open-Source-Softwareentwicklung erarbeitet. Die Kapitel des Bitkom-Open-Source-Leitfadens wurden in Markdown geschrieben, als Snippets ins Repository eingecheckt und mit Incidents und Pullrequests zu einem Ganzen geformt. Und das, obwohl mitnichten alle Autoren von Anfang an mit GitHub vertraut waren. Auch das weist über sich hinaus: <a href="https://git-scm.com/">Git</a>, <a href="https://github.com/">GitHub</a> oder <a href="https://gitlab.com/">GitLab</a> können die (firmenübergreifende) Kooperation und Kollaboration deutlich vereinfachen.</p>


<div class="wp-block-image"><figure class="alignright size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/05/bosl.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/05/bosl-212x300.png" alt="BOSL 3.0" width="120"></a></figure></div>



<p>Und das dritte Erstaunliche ist die Wandlung des Inhalts. War der Leitfaden 2.0 noch auf die nutzungsrechtlichen Aspekte fokussiert, ist der neue <strong><a href="https://www.bitkom.org/sites/main/files/2022-06/220624-Bitkom-Leitfaden-Open%20Source-3.0_0.pdf">Bitkom Open Source Leitfaden 3.0</a></strong> deutlich breiter und ausgewogener aufgestellt: Er behandelt den Nutzen von FOSS ebenso, wie deren Programmierung. Er beleuchtet gleichermaßen die Einbindung in Geschäftsmodelle und Firmenstrategien, die Open-Source-Compliance und die FOSS-Geschichte — auf jeweils nahezu gleich vielen Seiten. Hier ist das FOSS-Umfeld nicht mehr nur Anhängsel zur Compliance, sondern es werden die Bedingungen zur erfolgreichen Nutzung von Open-Source-Software ausgeglichen in den Blick genommen, ohne dass der Abschnitt zur Lizenzkonformität verliert. Und jeder Abschnitt hat mit seinen 10–20 Seiten einen Umfang, der es erlaubt, sich auch auf die Schnelle zu orientieren.</p>



<p>Damit ist der Bitkom-Opensource-Leitaden‑3.0 zu einer Informationsquelle geworden, die man auch firmenintern gut einfach mal so als erste Orientierung weitergeben kann.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang …</h5>
  <p class="myPageContext">… steht das mit einer systematischen <i class="fa-brands fa-osi"></i> Erfüllung
  von <i class="fa-brands fa-linux"></i> FOSS-Lizenzen? Nun, dazu müssen wir halt auch 
  <a href="https://karsten-reincke.de/open-source-diversity/">politische Konnotationen</a> bedenken, 
  <a href="https://karsten-reincke.de/unechte-open-source-software/">konzeptionelle</a> und 
  <a href="https://karsten-reincke.de/die-sache-mit-der-milch/">kontextuelle</a> Aspekte analysieren — 
  <a href="https://karsten-reincke.de/jniz/">einzeln</a> oder <a href="https://karsten-reincke.de/foss-con-korea-2013/">gemeinsam 
  auf Konferenzen</a>. Wir müssen <a href="https://karsten-reincke.de/yocto-iot-gplv3/">konkrete Fälle</a> und allgemeine 
  <a href="https://karsten-reincke.de/lilypond-gpl/">Nebenwirkungen</a> durchdenken, für 
  <a href="https://karsten-reincke.de/lizenzkonformes-javascript/">Software</a>, 
  <a href="https://karsten-reincke.de/bilder-datenbanken/">Bilder</a> oder Dokumente. Wir müssen 
  <a href="https://karsten-reincke.de/cc-by-trolls/">Trends</a> benennen und <a href="https://karsten-reincke.de/bosl-3-0/">Leitfäden</a> erstellen. 
  Vornehmlich aber müssen wir die <a href="https://karsten-reincke.de/tdosca/">Automatisierung der Lizenzerfüllung</a> 
  vorantreiben, unser <a href="https://karsten-reincke.de/oslic/">Lizenzwissen frei zur Verfügung stellen</a>,  
  es in <a href="https://karsten-reincke.de/oscad/">kleinere Tools</a> gießen und in <a href="https://karsten-reincke.de/oscake/">
  größere Systeme</a> einbringen: Denn FOSS lebt von der Freiheit durch Lizenzerfüllung, im Großen und im Kleinen.</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="https://karsten-reincke.de/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="https://karsten-reincke.de/genderismus/">mitgemeint</a>.</p>
<p>The post <a href="https://karsten-reincke.de/bosl-3-0/">Der Bitkom Open Source Leitfaden 3.0</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/bosl-3-0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CC-BY Bildertrolle</title>
		<link>https://karsten-reincke.de/cc-by-trolls/</link>
					<comments>https://karsten-reincke.de/cc-by-trolls/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Sat, 26 Feb 2022 14:31:53 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Bilder]]></category>
		<category><![CDATA[FOSS]]></category>
		<guid isPermaLink="false">http://127.0.0.1/kr/?p=3987</guid>

					<description><![CDATA[<p>Präsentationen ohne Bilder nerven. Darum bedienen wir uns so gern aus dem Internet mit seinen vielen schönen Fotos. Nur ist es eben nicht einfach, fremde Bilder legal in die eigene Präsentation einzufügen. Und auf die Verletzung solcher Pflichten bei freien Bildern zielt ein neuer Typ von Troll, der Bildertroll. Wenn wir Bilder aus dem Internet [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/cc-by-trolls/">CC-BY Bildertrolle</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image"><figure class="alignleft size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/06/troll-600x337-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/06/troll-600x337-1-300x169.png" alt="A Troll" width="120"></a></figure></div>



<p>Präsentationen ohne Bilder nerven. Darum bedienen wir uns so gern <a href="https://karsten-reincke.de/bilder-datenbanken/">aus dem Internet</a> mit seinen vielen schönen Fotos. Nur ist es eben nicht einfach, fremde Bilder legal in die eigene Präsentation einzufügen. Und auf die Verletzung solcher Pflichten bei freien Bildern zielt ein neuer Typ von Troll, der <em>Bildertroll</em>.<span id="more-3987"></span></p>


<div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="https://fodina.de/cc-by-trolls">en</a> ]</div></div></div></div>



<div style="height:17px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Wenn wir Bilder aus dem Internet nutzen, müssen wir die Urheberrechte der Malerinnen und Fotografinnen beachten. Genau, wie wir sonst Lizenzgebühren an die Patentinhaberinnen zahlen müssen, deren Erfindungen wir nutzen. Oder wie wir die in den Lizenzen genannten Bedingungen tatsächlich umsetzen müssen, wenn wir Open-Source-Software nutzen. Nun ist — nach den Patent- und Open-Source-Trollen — jüngst einer neuer Typ entstanden, der ‘copyleft-’ oder ‘Bildertroll’.[<a href="#FN147">1</a>] Es ist gut zu wissen, wie solche Trolls arbeiten und wie wir uns vor ihnen schützen können.</p>



<p>Oft werden freie Bilder unter einer <em>Creative-Commons-Lizenz</em> veröffentlicht. Diese ähneln den <em>Open-Source-Lizenzen</em>: Beide folgen dem Prinzip ‘Paying by Doing’. Anstatt Geld dafür zu bezahlen, die Nutzungsrechte zu bekommen, muss frau hier bestimmte Dinge tun. Welche Rechte sie bekommt und was genau sie dafür tun muss, hängt von der jeweiligen Lizenz ab. Im <em>Creative Commons</em> Bereich gibt es ein recht komplexes System verschiedener Lizenzen[<a href="#FN2">2</a>]. Aber nahezu jede davon hat eine ‘BY’-Klausel, die festlegt, dass die Nutzerin den Namen der Malerin oder Fotografin und die Lizenz angeben und einen Downloadlink zum Photo und zum Lizenztext mitliefern muss.[<a href="#FN3">3</a>]</p>



<p>Diese BY-Bedingungen seien — wie der Entdecker der <em>Bildertrolle</em> sagt — ein “set of administrative requirements that are easy to get wrong”.[<a href="#FN147">4</a>] Und genau das ist die erste Zutat, die ein gewinnbringender Troll benötigt: je leichter es ist, solche Bedingungen zu verfehlen, desto größer die Zahl potentieller Opfer.</p>



<p>Die zweite Zutat besteht darin, dass frühere Versionen der CC-Lizenzgebühren — wie etwa die <em>CC-BY 2.0</em>- oder die <em>CC-BY 3.0</em>-Lizenz — eine “Termination”-Klausel enthalten: “This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License.”[<a href="#FN5">5</a>] Das besagt, dass Du in dem Moment die Nutzungsrechte verlierst, wo Du eine der gestellten Bedingungen unzureichend erfüllst.</p>



<p>Man kann die Brisanz dieser Klausel schon daran erkennen, dass die <em>CC-BY 4.0</em>-Lizenz zwar auch eine solche “Termination”-Klausel enthält, dass sie aber zusätzlich die Möglichkeit eröffnet, Lizenzverletzungen innerhalb eines bestimmten Zeitraums auszubessern: Diese Lizenz sagt nämlich, dass die abgesprochenen Rechte “[…] reinstates automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation […]”.[<a href="#FN6">6</a>]</p>



<p>Als dritte Zutat für sein legales, aber unangenehmes Geschäft benötigt der ‘Bildertroll’ eine Methode, im großen Stil die Nutzerinnen seiner Bilder zu finden und deren missglückte Kennzeichnungen zu analysieren. Die automatisierte Bildersuche im Internet ist eine solche mittlerweile gut etablierte Technik.</p>



<p>Und als vierte Zutat benötigt der <em>Bildertroll</em> einen Rechtsraum, der ihm große Ausgleichszahlungen für die Verletzung von Nutzungsrechten garantiert — was wenigstens in den USA gang und gäbe ist.</p>





<p>Wie also nutzt ein <em>Bildertroll</em> diese Zutaten? Er muss eigentlich nur hübsche Bilder fotografieren und sie in einer gern genutzten Bilddatenbank unter einer CC-Lizenz mit ‘Termination’-Klausel veröffentlichen. Damit ist der “honeypot” angerichtet. Denn nun braucht der <em>Bildertroll</em> nur noch im Netz nach seinen eigenen Bildern zu crawlen und dort, wo er sie findet, zu analysieren, ob die Nutzerinnen die Nutzungsbedingung richtig erfüllt haben. Wenn nicht, kann er ein juristisches Verfahren gegen sie eröffnen. Und zumindest in den USA sprechen wir hier von einem gesetzlichen Schadenersatz (“statutory damages”) bis zu $150.000,–.[<a href="#FN147">7</a>]</p>





<p>Was können wir also tun, um uns vor Angriffen schützen, die zwar legal sind, aber irgendwie auch dem Geist freier Kultur und freier Software entgegenstehen?</p>



<ul class="wp-block-list">
<li>Der beste Weg zum gelungenen Selbstschutz ist zu wissen, unter welcher Lizenz ein Bild veröffentlicht ist, was sie als Gegenleistung erwartet, und diese Bedingungen dann gewissenhaft zu erfüllen.</li>



<li>Eine gute Strategie ist auch, sich auf CC0 lizenzierte Bilder[<a href="#FN8">8</a>] zu fokussieren, wie sie etwa unter pxhere.com[<a href="#FN9">9</a>] angeboten werden. Denn eine Lizenz, die expressis verbis nichts fordert, kann auch nicht dazu missbraucht werden, Dich juristisch zu bedrängen.</li>



<li>Eine etwas schwächere Absicherung bietet der Weg, vorrangig CC-BY-xyz 4.0 lizenzierte Bilder weiter zu verwerten.[<a href="#FNA">A</a>] Zwar muss frau die Bedingungen auch hier gründlich und vollständig erfüllen, aber sie hat doch wenigstens die Möglichkeit, nachzubessern, bevor sie in einen Rechtsstreit verwickelt wird.</li>



<li>Und wenn frau doch CC-BY-xyz 3.0 oder früher lizenzierte Bilder verwerten will — und es gibt viele gute so veröffentlichte Bilder -, dann muss sie die Forderungen der Lizenz selbst lesen und erfüllen, nicht nur die kondensierte Zusammenfassung, die die Creative Commons Organisation anbietet.</li>
</ul>



<p>Bildurheberrechte jedoch komplett zu ignorieren und etwas aus dem Internet einfach so zu abzugreifen, ist der sicherste Weg, in einen Rechtsstreit verwickelt zu werden — genauso wie die Verwendung von Open-Source-Software ohne Erfüllung der Lizenzanforderungen oder die Verwendung patentierter Techniken ohne Zahlung der Lizenzgebühren.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang …</h5>
  <p class="myPageContext">… steht das mit einer systematischen <i class="fa-brands fa-osi"></i> Erfüllung
  von <i class="fa-brands fa-linux"></i> FOSS-Lizenzen? Nun, dazu müssen wir halt auch 
  <a href="https://karsten-reincke.de/open-source-diversity/">politische Konnotationen</a> bedenken, 
  <a href="https://karsten-reincke.de/unechte-open-source-software/">konzeptionelle</a> und 
  <a href="https://karsten-reincke.de/die-sache-mit-der-milch/">kontextuelle</a> Aspekte analysieren — 
  <a href="https://karsten-reincke.de/jniz/">einzeln</a> oder <a href="https://karsten-reincke.de/foss-con-korea-2013/">gemeinsam 
  auf Konferenzen</a>. Wir müssen <a href="https://karsten-reincke.de/yocto-iot-gplv3/">konkrete Fälle</a> und allgemeine 
  <a href="https://karsten-reincke.de/lilypond-gpl/">Nebenwirkungen</a> durchdenken, für 
  <a href="https://karsten-reincke.de/lizenzkonformes-javascript/">Software</a>, 
  <a href="https://karsten-reincke.de/bilder-datenbanken/">Bilder</a> oder Dokumente. Wir müssen 
  <a href="https://karsten-reincke.de/cc-by-trolls/">Trends</a> benennen und <a href="https://karsten-reincke.de/bosl-3-0/">Leitfäden</a> erstellen. 
  Vornehmlich aber müssen wir die <a href="https://karsten-reincke.de/tdosca/">Automatisierung der Lizenzerfüllung</a> 
  vorantreiben, unser <a href="https://karsten-reincke.de/oslic/">Lizenzwissen frei zur Verfügung stellen</a>,  
  es in <a href="https://karsten-reincke.de/oscad/">kleinere Tools</a> gießen und in <a href="https://karsten-reincke.de/oscake/">
  größere Systeme</a> einbringen: Denn FOSS lebt von der Freiheit durch Lizenzerfüllung, im Großen und im Kleinen.</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="https://karsten-reincke.de/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="https://karsten-reincke.de/genderismus/">mitgemeint</a>.</p>



<ul class="wp-block-list">
<li><a name="FN147"></a>[1], [4], [7]:  cf. <a href="https://doctorow.medium.com/a-bug-in-early-creative-commons-licenses-has-enabled-a-new-breed-of-superpredator-5f6360713299">https://doctorow.medium.com/a‑bug-in-early-creative-commons-licenses-has-enabled-a-new-breed-of-superpredator-5f6360713299</a>. This article reports on aspects that <em>Cory Doctorow</em> has outlined first. He talks about ‘copyleft trolls’ probably for indicating, that other than pictures can be used to establish such an attack. But I think that using pictures inadequately is the most danger.</li>



<li><a name="FN2"></a>[2]: cf. <a href="https://creativecommons.org/about/cclicenses/">https://creativecommons.org/about/cclicenses/</a></li>



<li><a name="FN3"></a>[3]: cf. <a href="https://creativecommons.org/licenses/by/4.0/legalcode">https://creativecommons.org/licenses/by/4.0/legalcode</a>, Section 3 Attribution. It is worth to know the CC organization provide summaries that condense these conditions to the one sentence ‘Credit must be given to the creator’ (cf. <a href="https://creativecommons.org/licenses/by/3.0/">https://creativecommons.org/licenses/by/3.0/</a>). Hence, you are not free to acknowledge the author just as you want.</li>



<li><a name="FN5"></a>[5]: cf. <a href="https://creativecommons.org/licenses/by/2.0/legalcode">https://creativecommons.org/licenses/by/2.0/legalcode</a> or <a href="https://creativecommons.org/licenses/by/3.0/legalcode">https://creativecommons.org/licenses/by/3.0/legalcode</a></li>



<li><a name="FN6"></a>[6]: cf. <a href="https://creativecommons.org/licenses/by/4.0/legalcode">https://creativecommons.org/licenses/by/4.0/legalcode</a></li>



<li><a name="FN8"></a>[8]: cf. <a href="https://creativecommons.org/publicdomain/zero/1.0/">https://creativecommons.org/publicdomain/zero/1.0/</a></li>



<li><a name="FN9"></a>[9]: cf. <a href="https://pxhere.com/en/license">https://pxhere.com/en/license</a></li>



<li><a name="FNA"></a>[A]: cf. <a href="https://creativecommons.org/licenses/by/4.0">https://creativecommons.org/licenses/by/4.0</a></li>
</ul>
<p>The post <a href="https://karsten-reincke.de/cc-by-trolls/">CC-BY Bildertrolle</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/cc-by-trolls/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TDOSCA &#038; OSCake: FOSS Compliance automatisieren</title>
		<link>https://karsten-reincke.de/tdosca/</link>
					<comments>https://karsten-reincke.de/tdosca/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Sat, 28 Nov 2020 10:14:48 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[OSCake]]></category>
		<category><![CDATA[Programmierung]]></category>
		<guid isPermaLink="false">http://127.0.0.1/kr/?p=3106</guid>

					<description><![CDATA[<p>Mit dem Open Source License Compendium und dem Open Source Compliance Advisor hat die Deutsche Telekom das Thema ‘Open-Source-Compliance’ bereits vorangebracht. Am BOSL‑3.0 durfte ich in ihrem Namen mitschreiben. Allerdings bietet die DT mittlerweile so viele komplexe Produkte mit Open-Source-Anteil an, dass es zu teuer wird, die notwendigen Compliance-Artefakte manuell zu erzeugen. Notwendig ist eine [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/tdosca/">TDOSCA &amp; OSCake: FOSS Compliance automatisieren</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="alignleft size-full is-resized"><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/05/oscake-logo-400x482-1.png" alt class="wp-image-6910" width="96" height="116" srcset="https://karsten-reincke.de/wp-content/uploads/2023/05/oscake-logo-400x482-1.png 400w, https://karsten-reincke.de/wp-content/uploads/2023/05/oscake-logo-400x482-1-249x300.png 249w" sizes="(max-width: 96px) 100vw, 96px"></figure>
</div>


<p>Mit dem <a href="https://karsten-reincke.de/oslic/">Open Source License Compendium</a> und dem <a href="https://karsten-reincke.de/oscad/">Open Source Compliance Advisor</a> hat die <span style="color: #e20074;">Deutsche Telekom</span> das Thema ‘Open-Source-Compliance’ bereits vorangebracht. Am <a href="https://karsten-reincke.de/bosl-3-0/">BOSL‑3.0</a> durfte ich in ihrem Namen mitschreiben. Allerdings bietet die <span style="color: #e20074;">DT</span> mittlerweile so viele komplexe Produkte mit Open-Source-Anteil an, dass es zu teuer wird, die notwendigen Compliance-Artefakte manuell zu erzeugen. Notwendig ist eine praktisch nutzbare automatisierte ‘Toolchain’. Dieser Artikel disuktiert eine neue Methodik (<a href="https://github.com/Open-Source-Compliance/tdosca">TDOSCA</a>) und einen neues Tool (<a href="https://karsten-reincke.de/oscake/">OSCake</a>), die die <span style="color: #e20074;">DT</span> unter dem Dach des Open Chain Projekts öffentlich umsetzt.<span id="more-3106"></span></p>


<div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="https://fodina.de/tdosca">en</a> ]</div></div></div></div>



<div style="height:21px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">3 einfache Fragen an Open Source Compliance Tools</h2>



<p>Es gibt ohne Zweifel bereits eine Reihe von Open-Source-Compliance tools. Die <a href="http://oss-compliance-tooling.org/Tooling-Landscape/OSS-Based-License-Compliance-Tools/.">Open-Chain-Reference-Tooling-Work-Group</a> hat eine entsprechende Liste zusammengestellt. Die kann noch weiter gruppiert werden:</p>


<div class="wp-block-image"><figure class="alignright size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/06/a-3questions.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/06/a-3questions-300x207.png" alt="TDOSCA architecture" width="160"></a></figure></div>



<ul class="wp-block-list">
<li>Einige der Tools werden von Organisationen wie die Apache-Foundation, SPDX, Eclipse der der About-Code-Initiative angeboten.</li>



<li>Andere stehen insofern etwas abseits, als sie einen speziellen Fokus haben oder gar keine richtige Tools sind.</li>



<li>Und wieder andere bilden eine Gruppe, weil sie eher Services sind, als Tools.</li>
</ul>



<p>Die <span style="color: #e20074;"><strong>Deutsche Telekom</strong></span> hat dabei einen recht einfachen Blickwinkel. Wann immer ihr ein FOSS-Compliance-Tool begegnet, fragt sie deren Entwicklerinnen und Vertreterinnen:</p>



<ul class="wp-block-list">
<li>Liefert dieses Tool der Firma die FOSS-Compliance-Artefakte, die sie wirklich benötigt? Und wenn nicht,
<ul class="wp-block-list">
<li>Welchen Teil davon könnte es ihr liefern?</li>



<li>Wieviel Handarbeit fällt dann noch auf Seiten der Telekom an?</li>
</ul>
</li>
</ul>



<p>Die <span style="color: #e20074;"><strong>Deutsche Telekom</strong></span> hat viel Erfahrung darin, angebotene FOSS-Compliance-Tools zu sichten. Ihren Mitarbeiterinnen sind exzellente Tools und brilliante Expertinnen begegnet, die oft völlig davon überzeugt waren, dass sie der Firma umfassend helfen könnten. Am Ende der Gespräche fühlte es sich aber oft so an, dass die Anbieterinnen nicht wirklich verstanden hatten, was die <span style="color: #e20074;"><strong>DT</strong></span> benötigte (und noch immer benötigt). Um den Punkt zu verdeutlichen: Wer lange Listen gefundener FOSS-Komponenten anbietet und dann sagt, dass die Firma nun jeden Eintrag mit ihren Juristinnen durchgehen müsse, hilft ihr nicht wirklich.</p>



<p>Und dennoch, auch die <span style="color: #e20074;"><strong>Deutsche Telekom AG</strong></span> muss mit solchen langen Listen umgehen. Die Open Source Compliance ist keine Frage der Lust oder Unlust: Entweder wir nutzen die Open-Source-Komponenten und erfüllen die Lizenzbedingungen, oder wir nutzen die Komponenten nicht. Deshalb kann <span style="color: #e20074;"><strong>Telekom</strong></span> auch nicht länger warten. Die Komplexität ihrer Produkte zwingt sie, die Automation von Open-Source-Compliance selbst voranzutreiben. Allerdings wird sie dazu nicht den nächsten Greenfield-Ansatz verfolgen, sondern sich im Geiste von Open-Source-Entwicklungen in bestehende Projekte einbringen. </p>



<h2 class="wp-block-heading">Eine Test-Driven Entwicklung von Tools zur Erzeugung von <span style="color: #e20074;">O</span>pen <span style="color: #e20074;">S</span>ource <span style="color: #e20074;">C</span>ompliance <span style="color: #e20074;">A</span>rtefakten</h2>



<p><span style="color: #e20074;"><strong>DT</strong></span>s erster Schritt zielte auf die Verbesserung ihrer eigenen Kommunikation. Sie wollte — ausgehend vom Standpunkt einer großen Firma mit vielen komplexen Softwarestacks — einfacher klarstellen, was sie wirklich benötigt und von Tools erwartet. Zu diesem Zweck hat die <span style="color: #e20074;"><strong>Telekom</strong></span> den Ansatz einer ‘Test Driven Software Entwicklung’ auf die Programmierung der Compliance-Tools übertragen:</p>



<ul class="wp-block-list">
<li>Einerseits sollen die Testcases wirklich nutzbare Software enthalten, und zwar zusammen mit den Angaben über Lizensierungen und Abhängigkeiten und eingebettet in Paketmanager, wie sie auch in ‘richtigen’ Open-Source-Projekten verwendet werden.</li>



<li>Andererseits sollen diese Testcases als Refeenzdaten auch schon alle Compliance-Artefakte enthalten, die es — wären sie dem Softwarepaket beigelegt — erlauben würden, die paketierte Software lizenzkonform zu verteilen. </li>
</ul>



<p>Außerdem meint die <span style="color: #e20074;"><strong>DT</strong></span>,</p>



<ul class="wp-block-list">
<li>dass <em>existierende Open-Source-Projekte in der Regel zu komplex seien, um um sie zu Testcases zu machen. </em></li>



<li>dass <em>‘künstlich’ erzeugte  Software sich besser auf einzelnen Compliance-Aspekte fokussieren lasse.</em></li>



<li>dass die <em>Referenz-Software</em> auf der einen Seite <em>funktional einfache </em>Hello- World <em>Programme sein sollten</em>,</li>



<li>die auf der anderen Seite auch solche ausgefeilten Compliance-Fallen enthalten müsse, wie frau sie in richtigen Open-Source-Projekten findet..</li>
</ul>



<p>Anhand solcher Test-Cases sollten die Community, die Tools und beteiligte Firmen verifizieren und kommunizieren können,</p>



<ul class="wp-block-list">
<li>welche Compliance-Fallen ein Tool schon erfolgreich bewältigt,</li>



<li>welche Artefakte ein Tool schon liefert (und welche nicht),</li>



<li>wo es noch offenen Herausforderungen gibt</li>



<li>und wo abweichend Ergebnisse nur eine Frage der Interpretation sind.</li>
</ul>



<h2 class="wp-block-heading">Die ‘Hello World’ Open-Source-Compliance-Testcases</h2>



<p>Alle TDOSCA-Testcases werden unter dem Dach der GitHub-Organization <a href="https://github.com/Open-Source-Compliance/">Open-Source-Compliance</a> gehostet und anhand des Prefixes <em><a href="https://github.com/Open-Source-Compliance/tdosca">tdosca</a> </em>gruppiert. Die README-Datei des Hauptrepositories <em><a href="https://github.com/Open-Source-Compliance/tdosca/blob/master/README.md">tdosca</a> </em>beschreibt die allgemeine Systematik: Frau darf erwarten, dass jeder Testcase dieselbe Struktur  mitbringt. Die kann gut anhand des Testcases <a title="https://github.com/Open-Source-Compliance/tdosca-tc06-plainhw" href="https://github.com/Open-Source-Compliance/tdosca-tc06-plainhw"><em>tdosca-tc06-plainhw</em></a> erläutert werden:</p>



<ul class="wp-block-list">
<li> Auf der obersten Ebene beschreibt eine spezifische <a href="https://github.com/Open-Source-Compliance/tdosca-tc06-plainhw">README</a>-Datei die Intentionen des Testcases. </li>



<li>Im Ordner <em><a href="https://github.com/Open-Source-Compliance/tdosca-tc06-plainhw/tree/master/input-sources">input-sources</a> </em>befindet sich die Software
<ul class="wp-block-list">
<li>samt der Lizenz und Lizensierungsinformation, die analog zu ‘echten’ Projekten arrangiert sind </li>



<li>in einer Form, dass sie mit den Standardtechniken kompiliert und installiert werden könnte (hier also mit java + maven). </li>
</ul>
</li>



<li> Auf der obersten Ebene beschreibt außerdem eine ‘<a href="https://github.com/Open-Source-Compliance/tdosca-tc06-plainhw/blob/master/compliance-traps.md">Compliance-Trap Datei’</a> die Herausforderungen, die in und mit diesem Testcases implementiert worden sind und mit denen ein Tool umgehen sollte. </li>



<li>In dem Ordner <a href="https://github.com/Open-Source-Compliance/tdosca-tc06-plainhw/tree/master/reference-compliance-artifacts"><em>reference-compliance-artifacts</em></a> befinden sich dann die Compliance-Artifakte, die ein Tool idealerweise liefern sollte:
<ul class="wp-block-list">
<li>eine BOM-Datei, die die enthaltenen Komponenten auflistet</li>



<li>eine Liste der Pakete, die auf dem Zielsystem vorinstalliert sein müssen </li>



<li>die eine <em>Open-Source-Compliance-Datei, </em>die — sofern frau sie dem Paket als Ganzes hinzufügt — daraus ein lizenzkonform distribuierbares Softwarepaket macht. </li>
</ul>
</li>
</ul>



<p>Die einzelnen Testcases  sind in den speziellen Repositories<strong><em> tdosca-tc01</em></strong> … <em><strong>tdosca-tc0n</strong></em> abgelegt.</p>



<p>Zentrales Element der Referenzartefakte ist die Datei <em><strong>O</strong>pen <strong>S</strong>ource <strong>C</strong>ompliance <strong>F</strong>ile</em>: Zu ihrem Format hat sich die Deutsche Telekom von einer Datei inspieren lassen, die Cisco  OSCF dem Jabber-Client beilegt: https://www.cisco.com/c/dam/en_us/about/doing_business/open_source/ docs/CiscoJabberforWindows-128–1578365187.pdf. Diese Datei ist nicht perfekt. Aber zeigt gut, wie frau mit dem Thema umgehen könnte. Im Rahmen von TDOSCA bietet die <a href="https://github.com/Open-Source-Compliance/tdosca-tc06-plainhw/blob/master/reference-compliance-artifacts/oscf.pdf">OSCF-Datei des 6. Testcases</a> einen guten Einblick.</p>



<h2 class="wp-block-heading">Ein Zwischenfazit und ein Zusatz:</h2>



<p>Im allgemeinen nutzen die TDOSCA-Testcases also die folgende Struktur:</p>


<div class="wp-block-image"><figure class="alignleft size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/07/c-tc-structure.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/07/c-tc-structure-300x206.png" alt="C Test architecture" width="240"></a></figure></div>



<p>Die TDOSCA-Intiative — gehosted unter dem Schutz des <strong><a href="https://www.openchainproject.org/">Open-Chain-Projektes</a></strong> der <a href="https://www.linuxfoundation.org/projects/"><strong>Linux-Foundation</strong></a> und betreut unter dem Dach der <strong><a href="http://oss-compliance-tooling.org/">OpenChain Reference Tooling Work Group</a></strong> — sollte der Community eine gute Möglichkeit bieten, ihre Arbeit systematisch zu evaluieren.</p>



<p>Trotzdem bliebe eine ‘Geschmäckle’, wenn die <span style="color: #e20074;"><strong>Deutsche Telekom</strong></span> nur diesem Ansatz folgte. Sie würde leicht in die Rolle einer Polizistin oder Richterin rutschen. Das ist nicht das, was die <span style="color: #e20074;"><strong>Telekom</strong></span> sein möchte. Sie möchte Community auch praktisch voranbringen. Darum hat sie bereits existierende Tools anhand von TDOSCA-Testcases evaluiert, hat Erfahrungen gemacht und Konsequenzen gezogen:</p>



<h2 class="wp-block-heading">TDOSCA und ORT … </h2>



<p>Als erstes hat sich die <span style="color: #e20074;"><strong>DT</strong></span> dem <a href="https://github.com/oss-review-toolkit/ort">Open Source Review Toolkit</a> zugewendet, um eine Durchstichsversion zu erzeugen, die den Testcase-Input nimmt und automatisiert die Compliance-Dateien erzeugt:</p>


<div class="wp-block-image"><figure class="alignright size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/07/d-ort.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/07/d-ort-300x210.png" alt="ORT System" width="240"></a></figure></div>



<p>Hier die </p>



<ul class="wp-block-list">
<li>die 5 Komponenten, die ORT in seinem README als seine Bestandteile erähnt,</li>



<li>die Art der Datenj, die sie generieren und</li>



<li>die Weise, wie sie den Inhalt ihrer Vorgänger weiterverarbeiten.</li>
</ul>



<p>Ausgehend von dieser Skizze kann frau nun erläutern, …</p>



<h2 class="wp-block-heading">… welche Erfahrung mit ORT</h2>


<div class="wp-block-image"><figure class="alignright size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/07/e-ort-experiences.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/07/e-ort-experiences-300x210.png" alt="ORT Experiences" width="240"></a></figure></div>



<p>aufgelaufen sind:</p>



<ul class="wp-block-list">
<li> Zunächst musste die <span style="color: #e20074;"><strong>DT</strong></span> akzeptieren,  dass der ORT den ersten und einfachsten Test-Case nicht hat verwerten können, weil der ‘Paketmanager’ <em>GNU autotools</em> noch nicht in das ORT integriert war. </li>



<li> Dann musste die <span style="color: #e20074;"><strong>DT</strong></span> lernen, dass ORT bei der Auswertung der Daten des Paketmanagers  <em>gradle</em>, <em>ORT</em> — momentan- noch nicht entscheiden kann, welches die Default-Lizenz ist. </li>



<li> Und schließlich musste die <span style="color: #e20074;"><strong>DT</strong></span> konstatieren, das die im ORT-Reader eingebauten Standard-Templates dem Prinzip der Übererfüllung der Lizenzbedingungen folgen. </li>
</ul>



<p>Was heißt das? Gibt frau ein komplett unter der MIT lizenzisiertes Paket weiter, muss sie nur diesen einen Lizenztext einschließlich des einen mit ihr verbundenen Copyrightstatements beilegen, um es lizenzkonform zu distribuieren. Tools, die dem<em> Prinzip der Überfüllung</em> folgen, fügen dem aber z.B. auch noch die Copyrightlines hinzu, die sie mit der GPL orientierten Suchtechnik in den Quellen gefunden haben.</p>



<p>Das ist ein vielfach verwendeter Ansatz. Dem <em><em>Prinzip der Lizenz-Überfüllung</em></em> zu folgen, ist jedoch eine problematische Strategie:</p>



<ul class="wp-block-list">
<li>Zum einen werden Fehler, die in den beigelegten Compliance-Artefakten gemacht werden, den Distributoren auch dann zugerechnet, wenn diese Teile gar nicht hätten mitgeliefert werden müssen.</li>



<li>Zum anderen können die zusätzlich mitgelieferten Compliance-Artefakte diejenigen überschreiben oder aushebeln, die der Lizenz nach mitgeliefert werden müssen.</li>
</ul>



<p>Glücklicherweise ist ORT modular aufgebaut und macht ihre Bestandteile konfigurierbar, was der <span style="color: #e20074;"><strong>DT</strong></span> erlaubt, das Tool entsprechend anzupassen:</p>



<h2 class="wp-block-heading">Konsequenz 1: das ORT erweitern</h2>



<ul class="wp-block-list">
<li>Die <span style="color: #e20074;"><strong>Deutsche Telekom</strong></span> plant eine Evaluierung der <em>GNU autotools</em> zu implementieren und an das ORT Team zurückzugeben. </li>



<li>Außerdem wird sie eine Heuristik entwickeln und upstream geben, die immer die Defaultlizenz ausweist. </li>
</ul>



<h2 class="wp-block-heading">Konsequenz 2: die Testcases komplettieren</h2>


<div class="wp-block-image"><figure class="alignleft size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/07/f-multi-dim-tc.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/07/f-multi-dim-tc-300x208.png" alt="multidimensionale Testcases" width="60"></a></figure></div>



<p>Die <span style="color: #e20074;"><strong>DT</strong></span> wird ferner zusätzliche Testcase implementieren, sodass der multi-dimensionale Raum aus Complexity x Programmiersprache x Paketmanager besser abgedeckt wird..</p>



<h2 class="wp-block-heading">Konsequenz 3: eine intelligente <span style="color: #e20074;"><strong>O</strong></span>pen <span style="color: #e20074;"><strong>S</strong></span>ource <span style="color: #e20074;"><strong>C</strong></span>ompliance <span style="color: #e20074;"><strong>a</strong></span>rtifact <span style="color: #e20074;"><strong>k</strong></span>nowledge <span style="color: #e20074;"><strong>e</strong></span>ngine entwickeln</h2>



<ul class="wp-block-list">
<li>Die <span style="color: #e20074;"><strong>Deutsche Telekom AG</strong></span> wird schließlich eine intelligente Komponente entwickeln, in die das Wissen um Open Source Lizenzbedingungen deklarativ eingebettet ist, so dass sie es automatisiert anwenden kann. Dazu wird sie
<ul class="wp-block-list">
<li>ihren eigenen ‘Writer’ ins ORT einbetten</li>



<li>mittels Eclipse und XText eine Domainen-spezischen Sprache in Sachen Open-Source-Lizenzen entwickeln</li>



<li>und mittels Eclipse und XTend eine entsprechenden Artifact-Composer implementieren</li>
</ul>
</li>
</ul>


<div class="wp-block-image"><figure class="alignleft size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/07/g-oscake.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/07/g-oscake-300x210.png" alt="OSCake Einbettung" width="240"></a></figure></div>



<p>Diese neue Komponente, die auch für anderen <em>Open Source Compliance Chains</em> nutzbar sein soll, wird  <span style="color: #e20074;"><strong>OSCake</strong></span> genannt und unter der Eclipse Public License 2.0 entwickelt. Die Abkürzung steht für <em><span style="color: #e20074;"><strong>O</strong></span>pen <span style="color: #e20074;"><strong>S</strong></span>ource <span style="color: #e20074;"><strong>C</strong></span>ompliance <span style="color: #e20074;"><strong>a</strong></span>rtifact <span style="color: #e20074;"><strong>k</strong></span>nowledge <span style="color: #e20074;"><strong>e</strong></span>ngine</em>.</p>


<div class="wp-block-image"><figure class="alignright size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/07/h-oscake-structure.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/07/h-oscake-structure-300x209.png" alt="OSCake Structure" width="240"></a></figure></div>



<p><span style="color: #e20074;"><strong>OSCake</strong></span> soll die Lücke schließend, die Open Source Scanner haben, die nach dem Prinzip der Lizenzüberfüllung arbeiten. Es wird  Open-Source-Compliance-Collections nehmen und Open-Source-Compliance-Files liefern, die die Forderungen der Lizenzen genau erfüllen. OSCake wird eine agnostische Wissensmaschine werden, und nicht von einem spezifischen Scanning-Tool abhängen, sondern nur von einem fehlertoleranten Inputformat. Um das zu erreichen, wird OSCake mit einer bipolaren inneren Struktur arbeiten:</p>



<h2 class="wp-block-heading">Fazit</h2>



<p>TDOSCA und OSCake sind interessante Arbeitsziele, für die <span style="color: #e20074;"><strong>Deutsche Telekom AG</strong></span> selbst, für die Community und für andere kommerzielle Ansätze:</p>



<ul class="wp-block-list">
<li><span style="color: #e20074;"><strong>DT</strong></span> will in der Tat eine praktisch verwendbare FOSS-Compliance-Tool-Chain aufsetzen, die automatisiert passende Compliance-Artefakte ableitet.</li>



<li><span style="color: #e20074;"><strong>DT</strong></span> will den manuellen Aufwand so weit als möglich reduzieren.</li>



<li>Und <span style="color: #e20074;"><strong>DT</strong></span> wird seine Komponenten unter der Kontrolle TDOSCA verwirklichen: der Initiative zur Entwicklung von <em>Test Driven Open Source Compliance Artifact Gatherers und Compiler</em>s </li>
</ul>



<p>Und es ist ein besonders guter Aspekt dieser Arbeit, dass sie öffentlich passiert, unter dem Dach von <strong><a href="https://www.openchainproject.org/">Open-Chain</a> </strong>und dessen <a href="http://oss-compliance-tooling.org/"><strong>Open Chain ReferenceTooling Workgroup</strong></a>.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang …</h5>
  <p class="myPageContext">… steht das mit einer systematischen <i class="fa-brands fa-osi"></i> Erfüllung
  von <i class="fa-brands fa-linux"></i> FOSS-Lizenzen? Nun, dazu müssen wir halt auch 
  <a href="https://karsten-reincke.de/open-source-diversity/">politische Konnotationen</a> bedenken, 
  <a href="https://karsten-reincke.de/unechte-open-source-software/">konzeptionelle</a> und 
  <a href="https://karsten-reincke.de/die-sache-mit-der-milch/">kontextuelle</a> Aspekte analysieren — 
  <a href="https://karsten-reincke.de/jniz/">einzeln</a> oder <a href="https://karsten-reincke.de/foss-con-korea-2013/">gemeinsam 
  auf Konferenzen</a>. Wir müssen <a href="https://karsten-reincke.de/yocto-iot-gplv3/">konkrete Fälle</a> und allgemeine 
  <a href="https://karsten-reincke.de/lilypond-gpl/">Nebenwirkungen</a> durchdenken, für 
  <a href="https://karsten-reincke.de/lizenzkonformes-javascript/">Software</a>, 
  <a href="https://karsten-reincke.de/bilder-datenbanken/">Bilder</a> oder Dokumente. Wir müssen 
  <a href="https://karsten-reincke.de/cc-by-trolls/">Trends</a> benennen und <a href="https://karsten-reincke.de/bosl-3-0/">Leitfäden</a> erstellen. 
  Vornehmlich aber müssen wir die <a href="https://karsten-reincke.de/tdosca/">Automatisierung der Lizenzerfüllung</a> 
  vorantreiben, unser <a href="https://karsten-reincke.de/oslic/">Lizenzwissen frei zur Verfügung stellen</a>,  
  es in <a href="https://karsten-reincke.de/oscad/">kleinere Tools</a> gießen und in <a href="https://karsten-reincke.de/oscake/">
  größere Systeme</a> einbringen: Denn FOSS lebt von der Freiheit durch Lizenzerfüllung, im Großen und im Kleinen.</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="https://karsten-reincke.de/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="https://karsten-reincke.de/genderismus/">mitgemeint</a>.</p>



<ul class="wp-block-list">
<li><span><span style="color: #e20074;"><strong>OSLiC</strong></span> sources: <a href="https://github.com/telekom/oslic">https://github.com/telekom/oslic</a></span></li>



<li><span><span style="color: #e20074;"><strong>OSLiC</strong></span> homepage: <a href="http://telekom.github.io/oslic/" title="http://telekom.github.io/oslic/">http://telekom.github.io/oslic/</a></span></li>



<li><span><span style="color: #e20074;"><strong>OSLiC</strong></span> version 1.0.2: <a href="https://telekom.github.io/oslic/releases/oslic.pdf" title="https://telekom.github.io/oslic/releases/oslic.pdf">https://telekom.github.io/oslic/releases/oslic.pdf</a></span></li>



<li><span><span style="color: #e20074;"><strong>OSCAd</strong></span> sources: <a href="https://github.com/telekom/oscad" title="https://github.com/telekom/oscad">https://github.com/telekom/oscad</a></span></li>



<li><span><span style="color: #e20074;"><strong>OSCAd</strong></span> homepage: <a href="https://telekom.github.io/oscad/" title="https://telekom.github.io/oscad/">https://telekom.github.io/oscad/</a></span></li>



<li><span><span style="color: #e20074;"><strong>OSCAd</strong></span> instance: <a href="http://oscad.fodina.de/" title="http://oscad.fodina.de/">http://oscad.fodina.de/</a></span></li>



<li>OpenChain homepage: <a href="https://www.openchainproject.org/" title="https://www.openchainproject.org/">https://www.openchainproject.org/</a></li>



<li>Respective Linux Foundation project page: <a href="https://www.linuxfoundation.org/" title="https://www.linuxfoundation.org/projects/security-compliance/">https://www.linuxfoundation.org/projects/security-compliance/</a></li>



<li>Introduction into the Open Chain Reference Tooling Work Group: <a href="https://www.openchainproject.org/news/2020/03/15/openchain-reference-tooling-work-group-in-2020" title="https://www.openchainproject.org/news/2020/03/15/openchain-reference-tooling-work-group-in-2020">https://www.openchainproject.org/news/2020/03/15/openchain-reference-tooling-work-group-in-2020</a></li>



<li>Open Chain Reference Tooling Work Group homepage: <a href="http://oss-compliance-tooling.org/" title="http://oss-compliance-tooling.org/">http://oss-compliance-tooling.org/</a></li>



<li>Existing Open Source license compliance tools: <a href="http://oss-compliance-tooling.org/Tooling-Landscape/OSS-Based-License-Compliance-Tools/" title="http://oss-compliance-tooling.org/Tooling-Landscape/OSS-Based-License-Compliance-Tools/">http://oss-compliance-tooling.org/Tooling-Landscape/OSS-Based-License-Compliance-Tools/</a></li>



<li><span style="color: #1bada2;"><strong>O</strong></span>pen-source <span style="color: #1bada2;"><strong>R</strong></span>eview <span style="color: #1bada2;"><strong>T</strong></span>oolkit: <a href="https://github.com/oss-review-toolkit/ort" title="https://github.com/oss-review-toolkit/ort">https://github.com/oss-review-toolkit/ort</a></li>



<li><span style="color: #e20074;"><strong>T</strong></span>est <span style="color: #e20074;"><strong>D</strong></span>riven <span style="color: #e20074;"><strong>O</strong></span>pen <span style="color: #e20074;"><strong>S</strong></span>ource <span style="color: #e20074;"><strong>C</strong></span>ompliance <span style="color: #e20074;"><strong>I</strong></span>nitiative: <a href="https://github.com/Open-Source-Compliance/tdosca" title="https://github.com/Open-Source-Compliance/tdosca">https://github.com/Open-Source-Compliance/tdosca</a></li>



<li><span style="color: #e20074;"><strong>O</strong></span>pen <span style="color: #e20074;"><strong>S</strong></span>ource <span style="color: #e20074;"><strong>C</strong></span>ompliance <span style="color: #e20074;"><strong>a</strong></span>rtifact <span style="color: #e20074;"><strong>k</strong></span>nowledge <span style="color: #e20074;"><strong><span>e</span></strong></span>ngine: <a href="https://github.com/Open-Source-Compliance/OSCake" title="https://github.com/Open-Source-Compliance/OSCake">https://github.com/Open-Source-Compliance/OSCake</a></li>



<li>Open Compliance Summit 2020: <a href="https://events.linuxfoundation.org/open-compliance-summit/program/schedule/" title="https://events.linuxfoundation.org/open-compliance-summit/program/schedule/">https://events.linuxfoundation.org/open-compliance-summit/program/schedule/</a></li>
</ul>
<p>The post <a href="https://karsten-reincke.de/tdosca/">TDOSCA &amp; OSCake: FOSS Compliance automatisieren</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/tdosca/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GPL lizenzierte LilyPond-Snippets — und ihre Nebenwirkungen</title>
		<link>https://karsten-reincke.de/lilypond-gpl/</link>
					<comments>https://karsten-reincke.de/lilypond-gpl/#comments</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Tue, 29 Oct 2019 19:32:43 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Musikwissenschaft]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Lizenzierung]]></category>
		<guid isPermaLink="false">http://127.0.0.1/kr/?p=2405</guid>

					<description><![CDATA[<p>Dieser Artikel geht ungewollten Seiteneffekten nach: Er beschreibt, warum es suboptimal ist, GPL lizenzierte LilyPond-Snippets zu distribuieren, selbst wenn man — wie ich es tue — gerne Freie- und Open-Source-Software erstellt, verteilt und verwendet. Der Seiteneffekt ist überraschenderweise der Copyleft-Effekt der GPL: Beginnen wir mit einigen hoffentlich unbestrittenen Punkten: Das Programm ‘LilyPond’ ist unter der [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/lilypond-gpl/">GPL lizenzierte LilyPond-Snippets — und ihre Nebenwirkungen</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="alignleft size-full is-resized"><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/05/harmonyli-ly-logo-160x160-1.png" alt class="wp-image-6811" width="122" height="122" srcset="https://karsten-reincke.de/wp-content/uploads/2023/05/harmonyli-ly-logo-160x160-1.png 160w, https://karsten-reincke.de/wp-content/uploads/2023/05/harmonyli-ly-logo-160x160-1-150x150.png 150w" sizes="(max-width: 122px) 100vw, 122px"></figure>
</div>


<p>Dieser Artikel geht ungewollten Seiteneffekten nach: Er beschreibt, warum es suboptimal ist, <a href="https://karsten-reincke.de/harmonyli-ly/">GPL lizenzierte LilyPond-Snippets</a> zu distribuieren, selbst wenn man — wie ich es tue — gerne Freie- und Open-Source-Software erstellt, verteilt und verwendet. Der Seiteneffekt ist überraschenderweise der Copyleft-Effekt der GPL:<span id="more-2405"></span></p>


<div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="https://fodina.de/lilypond-gpl">en</a> ]</div></div></div></div>



<div style="height:21px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Beginnen wir mit einigen hoffentlich unbestrittenen Punkten: Das Programm ‘LilyPond’ ist unter der GPLv3 lizenziert [⇒ 1]. Es will “schöne Noten erstellen” [⇒ 2]. Zu diesem Zweck nimmt es eine Datei, die die darzustellenden Noten beschreibt, und zwar in einer LilyPond spezifischen Beschreibungssprache. Und es erzeugt daraus den eigentlichen Notentext — als PDF, PNG etc:</p>


<div class="wp-block-image"><figure class="aligncenter size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/05/tristan-chord.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/05/tristan-chord.png" alt="Tristan Chord" width="360"></a></figure></div>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>LilyPond is a compiled system: it is run on a text file describing the music. The resulting output is viewed on-screen or printed. In some ways, LilyPond is more similar to a programming language than graphical score editing software. [⇒ 3]</p>
</blockquote>



<p>Die LilyPond-Beschreibungssprache ist also eine Programmiersprache (ausgeführt und interpretiert vom Programm LilyPond). Das Schreiben von Musik für LilyPond ist Programmierung. LilyPond ist ein Programmiersystem wie PHP‑, PYTHON- oder BASH: Der Interpreter (die PHP‑, Python‑, Bash- oder eben die LilyPond-Engine) nimmt ihren Eingabecode und erzeugt daraus eine neue Ausgabe. Solche (Open Source-basierten) Engines werden häufig unter anderen Lizenzen freigegeben als der Programmiercode, den sie ausführen. Beispielsweise ist PHP unter der PHP-Lizenz lizenziert, es gibt jedoch viele PHP-Programme, die unter der MIT‑, der BSD- oder sogar der LGPL-Lizenz lizenziert sind.</p>



<p>Dass dem auch bei LilyPond so ist, zeigt das LilyPond-Repository  [⇒ 4]:</p>



<ul class="wp-block-list">
<li> Es enthält die Datei COPYING, die eine Kopie der GPLv3 ist.</li>



<li>Es enthält eine Datei mit dem Namen LICENSE, die besagt, dass LilyPond unter der GPLv3 lizenziert sei.</li>



<li>Es enthält eine Datei mit dem Namen LICENSE.Documentation, aus der hervorgeht, dass alle Dokumenteingaben unter die GNU Free Documentation License fallen, allerdings mit Ausnahme der Dateien im Verzeichnis ’snippets’, diese seien ‘Public Domain’.</li>
</ul>



<p>Daraus können wir Folgendes ableiten:</p>



<ol class="wp-block-list">
<li>LilyPond selbst ist unter den Bedingungen der GPL lizenziert: Sie dürfen es ausführen, untersuchen, modifizieren und weitergeben. Wenn Sie jedoch eine (geänderte) Instanz weitergeben, müssen Sie ihrem ‘Paket’ den Lizenztext, eine Liste der Urheberrechtsinhaber, den Quellcode und einige andere Compliance Artefakte hinzufügen.</li>



<li>Die GPLv2/v3 sagt nirgendwo, dass die Eingabedateien (in unserem Fall: die LilyPond encodierten Noten) oder die Ausgabedateien (in unserem Fall: pdf, png, …) ebenfalls unter den Bedingungen der GPLv3 verteilt werden müssen.</li>



<li>Außerdem verlangen die LilyPond-Urheberrechtsinhaber an keiner Stelle, dass die Eingabe- und Ausgabedateien auch unter der GPL freizugeben sind (was sie — dem Vorbild einiger Codegeneratoren folgend — hätten tun könnten).</li>



<li>Darüber hinaus wissen und akzeptieren die Urheberrechtsinhaber von LilyPond nachweisbar, dass die LilyPond-Eingabedateien nicht automatisch durch den “Starken Copyleft Effekt” der GPL erfasst werden. Andernfalls hätten sie keine Snippets in ihr Repository einbetten und zugleich sagen sagen können, dass diese Public Domain seien.</li>
</ol>



<p>So können wir allgemein folgern, dass die LilyPond-Eingabe- und Ausgabedateien aus der Sicht von LilyPond und seinen Entwicklern anders lizensiert werden dürfen, als LilyPond selbst.</p>



<p>Welche Lizenz sollte man also für seine LilyPond-Schnipsel wählen? Es gibt zwei Vorbilder:</p>



<ol class="wp-block-list">
<li>In  einem LilyPond Snippets Repository werden bereits wiederverwendbare Snippets gehostet. Laut LSR fallen all diese Snippets in die ‘Public Domain’ [⇒ 5] </li>



<li>Angeboten wird ferner eine ‘Open LilyPond Library’. [⇒ 6] Deren Homepage  ist größtenteils ein Website-Skelett. Es heißt dort nur, “openLilyLib” sei eine Erweiterungsbibliothek für die Musiknotationssoftware GNU LilyPond. [⇒ 7]  Unter der Github Organisation “openlilylib” findet man dann das zentrale Repository “oll-core”, das sich als “the heart of openLilyLib” vorstellt und allgemeine Funktionen anbietet, die jedes “openLilyLib”-Paket verwenden müsse. [⇒ 8]</li>
</ol>



<p>Obwohl dieses openLilyLib Repository keine Datei mit dem Namen COPYING (mit dem Text der GPL als Inhalt) und auch keine Datei LICENSE oder LICENSING enthält, sagt der Header der zentralen Quellcodedatei package.ily klar, dass “openLilyLib’ freie Software sei und unter den Bedingungen der GNU General Public License weitergegeben und / oder modifiziert werden könne [⇒ 9]. Dies drückt den Willen der Entwickler und der Copyright Owner aus, der von allen Benutzern der openLilyLib  respektiert werden muss.</p>



<p><strong>Leider hat das Model, GPLv3 lizensierte LilyPond-Schnipsel anzubieten, hat einige sehr unattraktive und schmerzhafte Folgen</strong>:</p>



<p>Wir wissen bereits, dass der LilyPond-Code selbst Software ist. Solche Schnipsel werden mit dem Befehl <code>include "ABC.ly"</code> in den Hauptcode eingebunden. Oder sie werden in den eigenen LilyPond-Musikcode hineinkopiert. Beides triggert den  Starken Copyleft-Effekt der GPL [⇒ A, §5]: Wenn ich einen Teil des GPL-lizenzierten Codes mittels eines Funktionsaufrufes von meinem Code aus verwende (anstatt diesen Code selbst zu schreiben) oder wenn meine Datei den Fremdcode gar selbst enthält, dann hängt meine Arbeit von dieser GPL-lizenzierten Vorarbeit ab und ich muss meinen Code auch unter den Bedingungen der GPL verbreiten, unabhängig davon, ob ich meine Arbeit als Quellcode [⇒ A, §5] oder in Form von kompilierten Ergebnissen [⇒ A, §6] verbreite.</p>



<p>Jetzt kann man die unangenehmen Konsequenzen geradezu riechen. Wenn ich meine Musiknoten mit der LilyPond-Sprache beschreibe und dabei ein GPL-lizenziertes Snippet verwende, muss ich meine Musiknoten auch unter den Bedingungen der GPL verbreiten, und zwar unabhängig davon, ob ich sie als Bilder / PDFs oder LilyPond-Code weitergebe. Durch die Verteilung unter der GPL gewähre ich dann konsequenterweise jedem, der meine Ergebnisse bekommt, das Recht, sie zu verwenden, zu studieren, zu modifizieren und neu zu verteilen. Und was bedeutet es, Musiknoten zu verwenden? Natürlich! Es bedeutet insbesondere auch, die Musik zu spielen.</p>



<p>Wenn Sie also ein GPL-lizenziertes LilyPond-Snippet zum Erstellen Ihrer eigenen LilyPond-Musikdatei verwenden — sei es als ‘inkludierte’ Datei, sei per Copy&amp;Past -, haben all diejenigen, die Ihre Noten erhalten — egal, in welcher Form -, das Recht, Ihre Musik zu spielen (oder sonst wie zu verwenden) — ohne weitere Nachfrage und zu jedem Zweck.</p>



<p>Um es klar zusagen: Natürlich hat jeder Autor das Recht, seine Arbeit unter eine beliebige Lizenz zu stellen. Und die Benutzer seiner Arbeit müssen die Anforderungen der gewählten Lizenz erfüllen. Das ist unstrittig und der Kern der ganzen <em>Free Software World.</em> Kein Zweifel.</p>



<p>Die Frage ist allerdings, was dann diejenigen tun können, die ihre Nutzer nicht solch radikale Konsequenzen aufbürden wollen?</p>



<ul class="wp-block-list">
<li>Sie könnten ihre Snippets / Libs zum ersten unter den Bedingungen der LGPL verbreiten. [⇒ B] Aufgrund des Schwachen Copyleft-Effekts der LGPL [⇒ B, §2/§4] dürfen die Benutzer dann ihren eigenen Code / ihre eigene Musik unter den ihnen gemäßen Bedingungen verbreiten.</li>
</ul>



<p>Das hat aber auch einen — wahrscheinlich unerwünschten — Nebeneffekt: Wenn ich ein Musikstück auf Basis eines LGPL-lizenzierten Snippets geschrieben habe, muss ich — auch wenn ich meinen Notentext nur als Bild oder PDF verteile- zusätzlich auch den Code, den Lizenztext selbst, eine Liste der Urheberrechtsinhaber [⇒ B, §4]  und einige andere Compliance-Artefakte verteilen — und zwar zusammen mit meinem Notentext . Eine einfache Verteilung meiner Arbeit ohne diese Compliance-Artefakte wäre schlicht ein Lizenzverstoß. Egal wie sinnig oder unsinnig man den Mehraufwand einschätzte!</p>



<ul class="wp-block-list">
<li>Alternativ könnten Sie in dem Dokument, mit dem Sie Ihr Snippet lizensieren, ausdrücklich darauf hinweisen, dass die Verbreitung der Musik in Form von Bildern / PDFs NICHT die Anforderungen der LGPL entsprechen müsse (also den Copyleft-Effekt nicht triggere). </li>
</ul>



<p>Die Lizenz durch Exzeptions ‘aufzuweichen’, ist mittlerweile üblich. Es ist jedoch immer besser, eine sprachlich passende Lizenz zu verwenden, als hinzuzufügen, dass der Lizenztext in gewisser Hinsicht nicht meine, wie er besage.</p>



<ul class="wp-block-list">
<li>Ferner könnten Sie den LilyPond-Code unter jeder anderen zulässigen Open Source-Lizenz verteilen. </li>
</ul>



<p>Aber auch diese Lizenzen zwingen uns, Compliance-Artefakte zusammen mit unserer Musik zu verbreiten (im Falle der Apache‑2.0‑Lizenz zum Beispiel wäre das z.B. der Lizenztext selbst und die NOTICE-Datei des Pakets [⇒ C §4].</p>



<ul class="wp-block-list">
<li>Schließlich könnten Sie die Snippets unter den Bedingungen einer der Creative Commons-Lizenzen verbreiten. [⇒ D]</li>
</ul>



<p>Je nach Wahl der Attribute würden Sie selbst festlegen, wie die Nutzer Ihnen Respekt zollen sollten (BY), welche Rechte er übernehmen muss (SA) oder ob er womöglich gar nichts tun muss (CC0).</p>



<ul class="wp-block-list">
<li>Schließlich könnten Sie Ihre Snippets zu ‘Public Domain Software erklären’. </li>
</ul>



<p>Dann gäben Sie aber Ihre Urheberrechte vollständig auf. Ihre Arbeit dürfte formal nicht einmal mehr auf Sie als Copyrightowner bzw. Autor verweisen. Diesen Weg wählt der LSR [⇒ 5]. Leider taugt dieses Verfahren nur im anglo-amerikanischen Rechtsraum, im europäischen gibt es keine “public domain”.</p>



<p>Was also sollen wir als Autoren tun, die wir mit unseren Snippets anderen die Arbeit mit LilyPond erleichtern wollen? Es gibt drei Wege:</p>



<ul class="wp-block-list">
<li>Ich denke, der beste Weg besteht darin, diese Snippets unter den Bedingungen der MIT-Lizenz zu verbreiten<strong>. </strong>Diese permissive Lizenz ist so klein, dass sie zusammen mit der Copyright-Zeile buchstäblich in den Quellcode integriert werden kann, sodass er literal bereits alle Compliance-Artefakte enthält: “The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.” [⇒ E]</li>



<li>Die zweite fast gleichwertige Methode bestünde darin, die Snippets unter einer Creative Commons Lizenz zu verteilen. Allerdings bürdet nur die CC0 dem Nutzer keine ‘lästigen’ Pflichten auf  [⇒ F].</li>



<li>Der dritte Weg ist der, den ich bei <a href="https://karsten-reincke.de/harmonyli-ly/">harmonyli.ly</a> verwendet habe: die Duallizenzierung</li>
</ul>



<p>Allerdings: wenn wir so vorgehen, können wir nicht mehr erzwingen, dass unsere Nutzer ihre Verbesserungen mit der Community teilen. Aber seien wir ehrlich: Sind unsere Snippets so wichtig, dass wir sie besonders schützen müssen? Ich denke, dass es manchmal besser ist, einfach so zu geben, ohne etwas zurückzufordern. Denn das kommt dann meist so, ganz von allein und freiwillig.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang …</h5>
  <p class="myPageContext">… steht das mit einer systematischen <i class="fa-brands fa-osi"></i> Erfüllung
  von <i class="fa-brands fa-linux"></i> FOSS-Lizenzen? Nun, dazu müssen wir halt auch 
  <a href="https://karsten-reincke.de/open-source-diversity/">politische Konnotationen</a> bedenken, 
  <a href="https://karsten-reincke.de/unechte-open-source-software/">konzeptionelle</a> und 
  <a href="https://karsten-reincke.de/die-sache-mit-der-milch/">kontextuelle</a> Aspekte analysieren — 
  <a href="https://karsten-reincke.de/jniz/">einzeln</a> oder <a href="https://karsten-reincke.de/foss-con-korea-2013/">gemeinsam 
  auf Konferenzen</a>. Wir müssen <a href="https://karsten-reincke.de/yocto-iot-gplv3/">konkrete Fälle</a> und allgemeine 
  <a href="https://karsten-reincke.de/lilypond-gpl/">Nebenwirkungen</a> durchdenken, für 
  <a href="https://karsten-reincke.de/lizenzkonformes-javascript/">Software</a>, 
  <a href="https://karsten-reincke.de/bilder-datenbanken/">Bilder</a> oder Dokumente. Wir müssen 
  <a href="https://karsten-reincke.de/cc-by-trolls/">Trends</a> benennen und <a href="https://karsten-reincke.de/bosl-3-0/">Leitfäden</a> erstellen. 
  Vornehmlich aber müssen wir die <a href="https://karsten-reincke.de/tdosca/">Automatisierung der Lizenzerfüllung</a> 
  vorantreiben, unser <a href="https://karsten-reincke.de/oslic/">Lizenzwissen frei zur Verfügung stellen</a>,  
  es in <a href="https://karsten-reincke.de/oscad/">kleinere Tools</a> gießen und in <a href="https://karsten-reincke.de/oscake/">
  größere Systeme</a> einbringen: Denn FOSS lebt von der Freiheit durch Lizenzerfüllung, im Großen und im Kleinen.</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="https://karsten-reincke.de/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="https://karsten-reincke.de/genderismus/">mitgemeint</a>.</p>



<ul class="wp-block-list">
<li>[1] <a href="http://LilyPond.org/gpl.html">http://LilyPond.org/gpl.html</a></li>



<li>[2] <a href="http://LilyPond.org/introduction.html">http://LilyPond.org/introduction.html</a></li>



<li>[3] <a href="http://LilyPond.org/text-input.html">http://LilyPond.org/text-input.html</a></li>



<li>[4] <a href="https://github.com/LilyPond/LilyPond">https://github.com/LilyPond/LilyPond</a></li>



<li>[5] <a href="http://lsr.di.unimi.it/LSR/html/whatsthis.html">http://lsr.di.unimi.it/LSR/html/whatsthis.html</a></li>



<li>[6] <a href="https://github.com/openlilylib/">https://github.com/openlilylib/</a> </li>



<li>[7] <a href="https://openlilylib.org/">https://openlilylib.org/</a></li>



<li>[8] <a href="https://github.com/openlilylib/oll-core">https://github.com/openlilylib/oll-core</a></li>



<li>[9] <a href="https://github.com/openlilylib/oll-core/blob/master/package.ily">https://github.com/openlilylib/oll-core/blob/master/package.ily</a></li>



<li>[A] <a href="https://opensource.org/licenses/GPL-3.0">https://opensource.org/licenses/GPL‑3.0</a></li>



<li>[B] <a href="https://opensource.org/licenses/LGPL-3.0">https://opensource.org/licenses/LGPL‑3.0</a></li>



<li>[C] <a href="https://opensource.org/licenses/Apache-2.0">https://opensource.org/licenses/Apache‑2.0</a></li>



<li>[D] <a href="https://creativecommons.org/share-your-work/licensing-types-examples/">https://creativecommons.org/share-your-work/licensing-types-examples/</a></li>



<li>[E] <a href="https://opensource.org/licenses/MIT">https://opensource.org/licenses/MIT</a></li>



<li>[F] <a href="https://creativecommons.org/publicdomain/zero/1.0/">https://creativecommons.org/publicdomain/zero/1.0/</a></li>
</ul>
<p>The post <a href="https://karsten-reincke.de/lilypond-gpl/">GPL lizenzierte LilyPond-Snippets — und ihre Nebenwirkungen</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/lilypond-gpl/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>YOCTO, IOT und die GPLv3</title>
		<link>https://karsten-reincke.de/yocto-iot-gplv3/</link>
					<comments>https://karsten-reincke.de/yocto-iot-gplv3/#comments</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Sun, 30 Jun 2019 16:24:24 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Lizenzierung]]></category>
		<guid isPermaLink="false">http://127.0.0.1/kr/?p=2067</guid>

					<description><![CDATA[<p>IOT-Geräte bieten meist nur eingeschränkte Möglichkeiten, die darin verwendete Software zu untersuchen oder gar zu verändern. YOCTO möchte Software ganz spezifisch für IOT-Geräte zusammenstellen. Die GPLv3 erfordert aber, dass man so lizenzierte Software ersetzen können muss. Wie also stehen sie wirklich zueinander, YOCTO, IOT und die GPLv3? Das “open source collaboration project” YOCTO bewirbt sich [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/yocto-iot-gplv3/">YOCTO, IOT und die GPLv3</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>IOT-Geräte bieten meist nur eingeschränkte Möglichkeiten, die darin verwendete Software zu untersuchen oder gar zu verändern. YOCTO möchte Software ganz spezifisch für IOT-Geräte zusammenstellen. Die GPLv3 erfordert aber, dass man so lizenzierte Software ersetzen können muss. Wie also stehen sie wirklich zueinander, YOCTO, IOT und die GPLv3? <span id="more-2067"></span> </p>


<div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="https://fodina.de/yocto-iot-gplv3">en</a> ]</div></div></div></div>



<div style="height:22px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Das “open source collaboration project” YOCTO bewirbt sich mit dem Slogan “it’s not an embedded Linux Distribution, it creates a custom one for you” (→ [7]): Man sammelt und kompiliert genau die Software, die man benötigt. So  kann auch die ausführende IOT-Hardware  einfach gehalten werden. Das ist der YOCTO-Ansatz. Allerdings: die  technische Struktur der Geräte beeinflusst auch die Erfüllbarkeit der Lizenzen. Und da kann haarig werden!</p>



<p>Grundsätzlich weiß YOCTO um die Komplexität der FOSS Compliance und unterstützt die Produzenten schon während des Kompilationsprozesses. Es listet z.B. alle Pakete und alle in das Image eingeflossene Lizenzen auf (→ [8] 3.5). Außerdem erlaubt es, automatisiert auch die Lizenztexte in den Build zu integrieren (→ [8] 5.20.2). Und es bietet die Option, auch den korrespondierenden Quellcode als Paket zusammenzustellen (→ [8] 5.20.1). Das sind wichtige Vorarbeiten. [Nur der Vollständigkeit halber: diese Vorarbeiten sind notwendig, aber nicht hinreichend. Allerdings ist das jetzt nicht unser Thema.]</p>



<p>Nun fordert jede (A|L)GPLv lizenzierte Software mehr als nur die Mitgabe der Lizenz. Oder die Nennung der Copyright-Owner und die Mitgabe des Disclaimers und (auf Anfrage) die Übersendung des Codes. Zusätzlich muss dem Empfänger die Möglichkeit gegeben werden, selbst eine verbesserte oder verschlechterte Version auf der Hardware installieren zu können. (→ [1,2,3] §3) Wenn das IOT-Gerät den Zugriff auf die interne Platte erlaubt — sei es über ein USB-Interface oder sonst wie — ist das kein Problem: der Nutzer speichert seine Version der zu ersetzenden Software darauf ab und legt den Link um. Bingo. Was aber, wenn das Gerät kein solches Interface hat? Oder wenn der Hersteller nicht möchte, dass seine Kunden dieses Recht ausüben, sei es, um gesetzliche Sicherheitsstandards nicht zu unterlaufen, sei es um seinen Betreuungsaufwand gering zu halten?</p>



<p>Dann — so die einfache Antwort —  darf der Hersteller keine GPLv3, keine LGPLv3 und keine AGPLv3 lizenzierte Software in seinem Softwarestack verwenden. Denn über die Lizenz verspricht er, die Benutzung oder Modifikation der genutzten Software nicht zu beschränken (→ [1] §3):  Entweder man erfüllt die Lizenzen oder man verwendet die Software nicht. So einfach und binär ist das ganz generell mit der FOSS Compliance.</p>



<p>Glücklicherweise unterstützt YOCTO den Produktmanager auch bei der Einhaltung dieser Maxime. Man kann im “recipe” zur Erzeugung des Images die Variable INCOMPATIBLE_LICENSE mit Lizenzidentifikatoren belegen kann. (→ [9] Chapter 10) Der Kompilationsvorgang bricht dann ab, wenn Entwickler trotzdem so lizensierte Software einbauen. Allerdings hat das funktionelle Nebeneffekte: YOCTO warnt sogar mehrfach, dass mit dieser Option nur sehr rudimentäre Images erzeugt werden können, (→ [9] pars pro toto: Chapter 10), eben weil so viele gute Software mittlerweile unter der GNU Lizenzen V3 veröffentlicht werden. Aber immerhin, es geht in Grenzen.</p>



<p>So weit, so gut. Leider stößt man damit auf ein Kernproblem, das sich viel stärker auswirkt:</p>



<p>Einige Standardbibliotheken — wie eben die libstdc++ — stehen in akzeptabler Reife nur noch unter den Bedingungen der GPLv3 zur Verfügung. Wenn überhaupt ist es nur sehr schwer möglich, sie zu ersetzen. Und so integriert YOCTO die libstdc++ — fast, als wolle das Projekt dies unterstreichen — in sein Image, auch wenn die Belegung der Variable INCOMPATIBLE_LICENSE dies eigentlich verhindern müsste. Es scheint also, als würde YOCTO nicht-Lizenz-konforme Images erzeugen. Betrachtet man die Lage genauer, erkennt man, dass YOCTO dennoch auf dem richtigen Weg ist:</p>



<p>Standardbibliotheken haben eine besondere Stellung. Sie stellen die Basisfunktionen bereit, über die ein Programm mit dem ausführenden Kernel kommuniziert und über die es erst ausführbar gemacht wird. Sie sind unumgehbar. Wird eine Standardbibliothek unter einer Lizenz mit starkem Copyleft (AGPL|GPL) veröffentlicht, ergibt sich so unmittelbar, dass jede ‘höher liegende’ Bibliothek und jedes Programm unter derselben Lizenz veröffentlich werden müsste. Die “GNU Standard C++ Library v3” — kurz libstdc++ — ist eine solche Bibliothek: Sie sieht sich als ein “ongoing project to implement the ISO 14882” (→ [5] 1.1), sie versteht sich als Teil der “GNU compiler collection” (→ [5] 1.2) [4] und ist unter der GPLv3 lizensiert (→ [4]).</p>



<p>Trotzdem verneint die Libstdc++-FAQ die Frage ganz klar, ob jedes Programm, das die libstdc++ nutze, unter die GPL falle: “No. The special exception permits use of the library in proprietary applications. ” (→ [5] 2.2) Wie ist das möglich?</p>



<p>Die libstdc++ ist nicht nur unter der GPLv3 allein lizenziert: “The source code is distributed under the GNU General Public License version 3, with the addition under section 7 of an exception described in the ‘GCC Runtime Library Exception, version 3.1’ as follows” (→ [4]). Und diese GCC-Runtime Library Exception sagt unter §1:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>You have permission to propagate a work of Target Code formed by combining the Runtime Library with Independent Modules, even if such propagation would otherwise violate the terms of GPLv3, provided that all Target Code was generated by Eligible Compilation Processes. You may then convey such a combination under terms of your choice, consistent  with the licensing of the Independent Modules.</em> (→ [4] §1) </p>
</blockquote>



<p>Das klingt erst einmal kryptisch. Aber das Erratische löst sich auf, wenn man auch die unter §0 hinzugefügten Definitionen berücksichtigt:</p>



<p>Der “Target Code” bezeichnet jeden “[…] Output from any compiler for a real or virtual target processor architecture, in executable form or suitable for input to an assembler, loader, linker and/or execution phase”. Die “Runtime Library” meint eben die Bibliothek, für die Ausnahme gilt, hier also die libstdc++. Und “Independent Modules” sind die Dateien, zu deren Ausführung in kompilierter Form die Runtime Library notwendig ist. (→ [4] §0) Oder anders gesagt: Es sind die Dateien, die Funktionsaufrufe in die libstdc++ enthalten, die deren Objekt und Methoden nutzen oder deren Inline-Funktionen über libstdc++ aufgelöst werden.</p>



<p>Also erlaubt uns der Erste der oben zitierten Sätze, sein kompiliertes Programm auch unter Bedingungen zu verteilen, die die GPLv3 verletzten. Vorausgesetzt wird nur, man hat sein ganzes Produkt über einen <em>Eligible Compilation Process</em> generiert.</p>



<p>Ein<em> Compilation Process</em> wiederum ist jedes Verfahren, dass menschlich lesbaren Softwarecode oder JAVA-Byte-Code in den  <em>Target Code</em> überführt. Und <em>Eligble</em> ist ein solcher <em>Compilation Process</em> dann und nur dann, “[…] if it is done using GCC, alone or with other GPL-compatible software, or if it is done without using any work based on GCC.” (→ [4]) Entweder ganz GCC oder gar nicht — aber kein Mischmasch. Darum geht es.</p>



<p>Der erste Satz von §1 besagt also, dass man seine gegen die libstdc++ kompilierten eigenen Programme auch dann verteilen darf, wenn man durch die Art der Verteilung die GPLv3 verletzen würde, vorausgesetzt, man hat alle Teile komplett mit dem GCC kompiliert (oder keines). Der erste Satz hebt also den starken Copyleft-Effekt unter bestimmten Bedingungen auf.</p>



<p>In unserem Kontext von IoT-Geräten ohne Interface zum Ersetzen der Software ist das aber nicht genug! Die Frage bleibt ja, ob man die libstdc++ selbst unter Verletzung der GPLv3 vertreiben dürfte. Um diese Frage zu beantworten, benötigen wir den 2. Satz von §1. Er besagt, </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>You may then [= unter den zuvor genannten Bedingungen] convey [= propagate = distribute] such a combination under terms of your choice, consistent with the licensing of the Independent Modules.</em> (→ [4] §1) </p>
</blockquote>



<p>Die genannte Kombination kann dann nichts anderes sein als die libstdc++ plus die gegen sie kompilierten unabhängigen Module und Programme. Wir dürfen das ganze Konglomerat unter den Bedingungen vertreiben, die zu den Bedingungen der unabhängigen Module passen, also auch unter Verletzung der GPLv3 — eben mit Rückgriff auf die Runtime Exception selbst. Und das gilt mithin auch für die libstdc++.</p>



<p>Bingo! Wirklich? Leider noch nicht ganz.</p>



<p>Im Urheberrecht kommt es nicht nur darauf an, die wörtliche Bedeutung eines Vertragstextes, einer Lizenz zu ermitteln. Stattdessen muss man auch berücksichtigen, was die Urheber gemeint haben. Glücklicherweise kann man das in diesem Fall recht einfach ermitteln:</p>



<p>Der Copyright-Owner der GNU Compiler Collection ist die FSF. Und die hat in einer libstdc++-FAQ erläutert, wie sie die GCC Runtime Exception im Kontext der libstdc++ verstanden haben möchte (→ [5]) : </p>



<p>Einerseits fragt die FSF ob “[…] any program which uses libstdc++ falls under the GPL?”. Und antwortet kurz und knapp: “No. The special exception permits use of the library in proprietary applications.” (→ [5] 2.1) Auf der anderen Seite erläutert des FSF in dieser FAQ, dass die libstdc++ ganz generell nicht so einfach ersetzt werden könne, wie es bei anderen Bibliotheken möglich sei, weil “much of the library consists of inline functions and templates, which are expanded inside the code that uses the library” and replacing the library would also require to recompiling the using program. (→ [5] 2.3)</p>



<p>Also dürfen wir auch aus der FAQ schließen, dass die FSF nicht nur den starken Copylefteffekt unter den genannten Bedingungen aufgehoben sehen will, sondern auch die Bedingung der Ersetzbarkeit.</p>



<p>Unglücklicherweise gibt es ein drittes Dokument, was diesem Schluss zu widersprechen scheint. Die libstdc++ ist nicht die einzige Bibliothek, die unter der Runtime Library Exception veröffentlicht ist. Deshalb hat die FSF unter dem Titel “GCC Runtime Library Exception Rationale and FAQ” auch eine generelle Einführung veröffentlich. (→ [6])  Dieses Dokument erklärt zuerst, warum man diese Technik der Ausnahmeregelungen ab der Version 3 generell einführt. Im 2. Abschnitt erläutert es, wie die Technik funktioniert. Und endet hier in dem jetzt bereits bekannten Satz “As long as you use an Eligible Compilation Process, then you have permission to take the Target Code that GCC generates and propagate it ‘under terms of your choice.’” (→ [6]) </p>



<p>Die Frage, ob auch die libstdc++ unter den Ausnahmebedingungen der Runtime Library Exception vertrieben werden darf, stellt der Text jedoch nicht. Im Kontext einer Frage nach der Nutzung einer komplett proprietären Kompilerkette wird allerdings herausgehoben, dass man auch dann die Vorteile der Runtime Exception nutzen kann, allerdings müsse man die libstdc++ selbst unter den Bedingungen der GPLv3 weitergeben.</p>



<p>Diesen Zusatz könnte man generell sehen wollen. Allerdings gibt es zwei starke Gründe, die das verbieten. Zum ersten ist er im spezifischen Kontext dieser Frage eingefügt worden, also nicht generalisiert worden. Und zum zweiten würde eine generelle Geltung die Runtime Exception im durch die FSF dargestellten Sinne unterlaufen. Wenn auf der einen Seite der starke Copylefteffekt der GPLv3 für die eigenen Programme über die GCC Runtime Exception aufgehoben werden soll und wenn andererseits die Art der Bibliothek trotzdem die Offenlegung des nutzenden Codes erzwingen würde, damit man die Bedingung der Ersetzbarkeit überhaupt erfüllen kann, dann hätte die FSF etwas Selbst-widersprüchliches im Sinn gehabt. Und davon ist nicht auszugehen.</p>



<p>So liegt die Sache nunmehr klar auf dem Tisch:</p>



<p>YOCTO darf die libstdc++ Bibliothek auch dann in seine Images integrieren, wenn die Nutzung von GPLv3 Software eigentlich ausgeschlossen sein soll. Es entsteht auch damit ein lizenzkonformes Image. Denn der starke Copylefteffekt ist durch die Runtime Exception ebenso aufgehoben, wie die Forderung nach der Ersetzbarkeit der libstdc++.</p>



<p>Allerdings gilt dies nur für die libstdc++. Auf andere Libraries können wir es nicht so einfach übertragen. Die Möglichkeit, die libstdc++ auch — wie es in der GCC Runtime Library Exception heißt — unter Verletzung der GPLv3 zu vertreiben, hängt von der Lizenzierung der libstdcc unter der GPLv3 mit GCC Runtime Library Exception ebenso ab, wie von ihrer immanenten Natur als c++-Bibliothek.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang …</h5>
  <p class="myPageContext">… steht das mit einer systematischen <i class="fa-brands fa-osi"></i> Erfüllung
  von <i class="fa-brands fa-linux"></i> FOSS-Lizenzen? Nun, dazu müssen wir halt auch 
  <a href="https://karsten-reincke.de/open-source-diversity/">politische Konnotationen</a> bedenken, 
  <a href="https://karsten-reincke.de/unechte-open-source-software/">konzeptionelle</a> und 
  <a href="https://karsten-reincke.de/die-sache-mit-der-milch/">kontextuelle</a> Aspekte analysieren — 
  <a href="https://karsten-reincke.de/jniz/">einzeln</a> oder <a href="https://karsten-reincke.de/foss-con-korea-2013/">gemeinsam 
  auf Konferenzen</a>. Wir müssen <a href="https://karsten-reincke.de/yocto-iot-gplv3/">konkrete Fälle</a> und allgemeine 
  <a href="https://karsten-reincke.de/lilypond-gpl/">Nebenwirkungen</a> durchdenken, für 
  <a href="https://karsten-reincke.de/lizenzkonformes-javascript/">Software</a>, 
  <a href="https://karsten-reincke.de/bilder-datenbanken/">Bilder</a> oder Dokumente. Wir müssen 
  <a href="https://karsten-reincke.de/cc-by-trolls/">Trends</a> benennen und <a href="https://karsten-reincke.de/bosl-3-0/">Leitfäden</a> erstellen. 
  Vornehmlich aber müssen wir die <a href="https://karsten-reincke.de/tdosca/">Automatisierung der Lizenzerfüllung</a> 
  vorantreiben, unser <a href="https://karsten-reincke.de/oslic/">Lizenzwissen frei zur Verfügung stellen</a>,  
  es in <a href="https://karsten-reincke.de/oscad/">kleinere Tools</a> gießen und in <a href="https://karsten-reincke.de/oscake/">
  größere Systeme</a> einbringen: Denn FOSS lebt von der Freiheit durch Lizenzerfüllung, im Großen und im Kleinen.</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="https://karsten-reincke.de/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="https://karsten-reincke.de/genderismus/">mitgemeint</a>.</p>



<ul class="wp-block-list">
<li>[1] GPLv3 :- <a href="https://opensource.org/licenses/GPL-3.0">https://opensource.org/licenses/GPL‑3.0</a></li>



<li>[2] AGPLv3 :- <a href="https://opensource.org/licenses/AGPL-3.0">https://opensource.org/licenses/AGPL‑3.0</a></li>



<li>[3] LGPLv3 :- <a href="https://opensource.org/licenses/LGPL-3.0">https://opensource.org/licenses/LGPL‑3.0</a></li>



<li>[4] libstdc++ licensing document containing the libstdc++ GCC RUNTIME LIBRARY EXCEPTION :- <a href="https://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html">https://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html</a></li>



<li>[5] libstdc++ FAQ :- <a href="https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.license.any_program">https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.license.any_program</a></li>



<li>[6] General GCC Runtime Library Exception Rationale and FAQ :- <a href="https://www.gnu.org/licenses/gcc-exception-3.1-faq.en.html">https://www.gnu.org/licenses/gcc-exception‑3.1‑faq.en.html</a></li>



<li>[7] YOCTO project page :- <a href="https://www.yoctoproject.org/">https://www.yoctoproject.org/</a></li>



<li>[8] YOCTO project development manual :- <a href="https://www.yoctoproject.org/docs/1.6.1/dev-manual/dev-manual.html">https://www.yoctoproject.org/docs/1.6.1/dev-manual/dev-manual.html</a></li>



<li>[9] YOCTO project reference manual :- <a href="https://www.yoctoproject.org/docs/1.9/ref-manual/ref-manual.html">https://www.yoctoproject.org/docs/1.9/ref-manual/ref-manual.html</a></li>



<li>[A] YOCTO Howto :- <a href="https://wiki.yoctoproject.org/wiki/How_do_I">https://wiki.yoctoproject.org/wiki/How_do_I</a></li>
</ul>
<p>The post <a href="https://karsten-reincke.de/yocto-iot-gplv3/">YOCTO, IOT und die GPLv3</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/yocto-iot-gplv3/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
