<?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>Open-Source Archives - Freigiebigkeit</title>
	<atom:link href="https://karsten-reincke.de/category/foss/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>(Fach-) Informatik vom Dorf</description>
	<lastBuildDate>Sun, 15 Mar 2026 21:26:12 +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>Lehrmittelfreiheit 2.0: proTirone</title>
		<link>https://karsten-reincke.de/lehrmittelfreiheit/</link>
					<comments>https://karsten-reincke.de/lehrmittelfreiheit/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Sun, 08 Jun 2025 07:06:06 +0000</pubDate>
				<category><![CDATA[Fachinformatik]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Berufsschule]]></category>
		<category><![CDATA[Gewerbliche Schulen Dillenburg]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=11261</guid>

					<description><![CDATA[<p>Die Lehrmittelfreiheit ist in. Nicht nur in Hessen. So auch in der Aus­bil­dung zur Fach­in­for­ma­ti­ke­rin: Nur ‘zau­bert’ hier zuletzt doch jede Berufs­schul­leh­re­rin ihr eige­nes Stun­den­kon­zept. Und ihre eigenen Materialien. Aber wieso? Warum so? Jede für sich ist doch doof. Hat uns das als Gesellschaft je weitergebracht? Lehrmittelfreiheit ist zunächst nur eine pekuniäre Freiheit.1 Von der [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/lehrmittelfreiheit/">Lehrmittelfreiheit 2.0: proTirone</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Die Lehrmittelfreiheit ist in. Nicht nur in <a href="https://verwaltungsportal.hessen.de/leistung?leistung_id=L100001_345405651">Hessen</a>. So auch in der Aus­bil­dung zur Fach­in­for­ma­ti­ke­rin: Nur ‘zau­bert’ hier zuletzt doch jede Berufs­schul­leh­re­rin ihr eige­nes Stun­den­kon­zept. Und ihre eigenen Materialien. Aber wieso? Warum so? Jede für sich ist doch doof. <a href="https://www.linux-community.de/ausgaben/linuxuser/2012/12/von-der-freien-software-zur-freien-gesellschaft">Hat uns das als Gesellschaft je weitergebracht</a>? <span id="more-11261"></span></p>



<p>Lehrmittelfreiheit ist zunächst nur eine pekuniäre Freiheit.<sup><a href="https://karsten-reincke.de/lehrmittelfreiheit/#footnote_1_11261" id="identifier_1_11261" class="footnote-link footnote-identifier-link" title="vgl. https://kultus.hessen.de/schulsystem/lernmittelfreiheit">1</a></sup> Von der “Freiheit”, die Lehr- und Lernmittel “[…], zu kopieren, zu verbreiten, zu untersuchen, zu ändern und zu verbessern“<sup><a href="https://karsten-reincke.de/lehrmittelfreiheit/#footnote_2_11261" id="identifier_2_11261" class="footnote-link footnote-identifier-link" title="vgl. https://www.gnu.org/philosophy/free-sw.de.html">2</a></sup>, ist nicht die Rede. So auch in der Ausbildung zur Fachinformatikerin: hier ‘zaubert’ zuletzt doch jede Berufsschullehrerin ihr eigenes Stundenkonzept. Natürlich abgestimmt auf Rahmenlehrplan<sup><a href="https://karsten-reincke.de/lehrmittelfreiheit/#footnote_3_11261" id="identifier_3_11261" class="footnote-link footnote-identifier-link" title="vgl. https://www.kmk.org/fileadmin/Dateien/pdf/Bildung/BeruflicheBildung/rlp/Fachinformatiker_19-12-13_EL.pdf">3</a></sup> und Prüfungskataloge<sup><a href="https://karsten-reincke.de/lehrmittelfreiheit/#footnote_4_11261" id="identifier_4_11261" class="footnote-link footnote-identifier-link" title="Die Prüfungskataloge werden von der Zentralstelle für Prüfungsaufgaben der Industrie- und Handelskammern herausgegeben. Sie bricht die Vorgaben des Rahmenlehrplans auf einen etwas konkreteren Level herunter. Der uform-Verlag macht die Kataloge kommerziell zugänglich. vgl. https://www.u-form-shop.de/">4</a></sup>. Und mit Verweis auf Fachbücher, um die Stoffwiederholung zu vereinfachen. Aber wieso? Warum so? Jede für sich ist doch doof. Und hat uns als Gesellschaft<sup><a href="https://karsten-reincke.de/lehrmittelfreiheit/#footnote_5_11261" id="identifier_5_11261" class="footnote-link footnote-identifier-link" title="vgl. https://www.linux-community.de/ausgaben/linuxuser/2012/12/von-der-freien-software-zur-freien-gesellschaft/">5</a></sup> noch nie weitergebracht.</p>



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



<p>Läge es da nicht nahe, wenn sich auch die Fachinformatiklehrerinnen ein Biotop an wirklich freien Materialien schüfen? Was wäre, wenn sie ihre Arbeit mit anderen Lehrerinnen und Schülerinnen unter einer Creative-Commons-Lizenz teilten? Was, wenn sie sie&nbsp;– wie in der Open-Source-Welt üblich — kollaborativ entwickelten?</p>



<p>Wäre es nicht ein Gewinn für alle, wenn die einzelne Lehrerin für ihr Spezialgebiet Stundenfolgen bereitstellte und sich für die anderen bei den Arbeiten der anderen bedienen dürfte — ohne urheberrechtliche Bedenken haben zu müssen? Sollte es nicht die Qualität erhöhen, wenn eine Community von Lehrerinnen und Schülerinnen über Issues auf Fehler hinweisen und mit Pull-Requests Verbesserungen direkt einbringen könnte?</p>



<p>Eben ganz so, wie auch Open-Source-Software entwickelt wird? </p>



<p>Den allgemeinen Kontext dafür setzt die <a href="https://www.unesco.org/en/open-educational-resources">UNESCO</a> mit ihrem Begriff der <a href="https://www.unesco.de/themen/bildung/bildungsqualitaet/weltbildungsempfehlung/global-citizenship-education/friedens-und-menschen/open-educational-resources/">Open-Educational-Resources</a>. In Deutschland wird das <a href="https://open-educational-resources.de/">von der OERinfo – der Informationsstelle Open Educational Resources – vorangebracht</a> und <a href="https://www.oer-strategie.de/">vom Bundesministerium für Bildung, Familie, Senioren, Frauen und Jugend strategisch gefördert</a>.</p>



<p>Genau darauf zielt das Projekt <a href="https://github.com/protirone/">proTirone</a>:</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/2025/06/logo-protirone.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2025/06/logo-protirone-300x300.png" alt="proTirone Logo" width="128"></a></figure></div>



<p><span style="font-family: 'Arima Madurai'; font-style: italic; font-weight: bold;"><span style="font-weight: bold; color: #008;">pro</span><span style="font-weight: bold; color: #800;">Tirone</span><span style="font-weight: bold; color: #008;">Computatri</span> stellt freie Lehr- und Lernmaterialien für die Ausbildung zur <a href="https://karsten-reincke.de/genderismus/">Fachinformatikerin</a> zur Verfügung — will sagen: Creative-Commons- bzw. FOSS-lizenzierte Dokumente und Skripte, die dem Rahmenlehrplan und den Prüfungskatalogen gerecht werden und deren Systematik der Lernfelder widerspiegeln.</span></p>



<p>Unter <a href="https://github.com/protirone/">proTirone</a> auf GitHub sollen Lehrerinnen und Schülerinnen</p>



<ul class="wp-block-list">
<li>fertige Lehr- und Lernmaterialien finden, für jeden Aspekt der Ausbildung zur Fachinformatikerin,</li>



<li>die Quellen dazu herunterladen können, falls sie sie anpassen wollen,</li>



<li>darauf vertrauen können, dass ihnen der Stoff mit Blick auf die Abschlussprüfungen I und II umfänglich und hochwertig aufbereitet wird und </li>



<li>all das gebührenfrei und ohne urheberrechtliche Bedenken verwenden können.</li>
</ul>



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



<p>Ende 2024 sollte <a href="https://karsten-reincke.de/skills/">meine Arbeit</a> als <em>Principal OpenSource Advisor</em> bei der Deutschen Telekom enden und meine reguläre Rentenzeit beginnen. Für so ein ganz losgelöstes Dasein war ich aber zu “jung”. Noch ein wenig Teilzeit wäre doch toll, dachte ich. Also habe ich auch beim Schulamt Weilburg nachgefragt. Weil ich ja im Lahn-Dill-Kreis wohne. Und was soll ich sagen: Ich hatte und habe die Ehre, als Lehrer für Fachinformatik an den <a href="https://www.gs-ldk.de/">Gewerblichen Schulen Dillenburg</a> zu arbeiten. Vom ersten Tag der Rente. Hineingeworfen in die Lernfelder 9, 10–12c+d.</p>



<p>Da hätte ich gern auf fertige Unterrichtskonzepte zurückgegriffen. Schon Rahmenlehrplan und Lernfelder zu verstehen, war aufwendig. Noch mehr: meine eigenen Lehr- und Lernmaterialien zu erstellen. Was also lag näher als <a href="https://www.fachinformatiker.de/topic/180452-lf-unterrichtsmaterialien-als-open-source/">nachzufragen, ob es wirklich keine freien Repositories gäbe</a>? Und warum sollte ich – nach erfolgloser Suche – nicht einfach mit einem solchen Projekt anfangen? Just for Fun!</p>


<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und was ist der größere Zusammenhang?</h5>
  <p class="myPageContext">Auch unser Projekt 
  <a href="https://github.com/protirone">proTirone</a> 
  beginnt mit dem  <a href="https://karsten-reincke.de/protirone">wohin</a> und <a href="https://karsten-reincke.de/lehrmittelfreiheit">wozu</a>, gefolgt von einer kleinen <a href="https://karsten-reincke.de/protico-reorg">Reorg</a> und einer <a href="https://karsten-reincke.de/protirone-auf-oer-konferenz">Generalisierung des Namens aus Anlass der OER-Konferenz 2026</a>. Für das jeweilige Lernfeld den Scope zu klären, ist wichtig. Beim Unterricht heißt das nur anders, nämlich <a href="https://karsten-reincke.de/curriculum">Curriculum</a>. Die Lernfeldsystematik erlaubt es sogar, <a href="https://karsten-reincke.de/lernfeld-03-ap1">das Lernfeld 3 in den Lernfeld-9-Stunden für die AP1</a> zu wiederholen, <a href="https://karsten-reincke.de/ap1-crashkurs-lf03">systematisch und im Schnelldurchgang</a>. Und es erlaubt <a href="https://karsten-reincke.de/apx-strategie/">AP2 spezifische Infos</a> bereitzustellen, für die <a href="https://karsten-reincke.de/suchen-und-sortiere">FIAE</a>, die FIDV und die FIDP, samt <a href="https://karsten-reincke.de/ap2-loesungen">AP2-Lösungen</a>.

</p><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></p>
<ol class="footnotes"><li id="footnote_1_11261" class="footnote">vgl. <a href="https://kultus.hessen.de/schulsystem/lernmittelfreiheit">https://kultus.hessen.de/schulsystem/lernmittelfreiheit</a></li><li id="footnote_2_11261" class="footnote">vgl. <a href="https://www.gnu.org/philosophy/free-sw.de.html">https://www.gnu.org/philosophy/free-sw.de.html</a></li><li id="footnote_3_11261" class="footnote">vgl. <a href="https://www.kmk.org/fileadmin/Dateien/pdf/Bildung/BeruflicheBildung/rlp/Fachinformatiker_19-12-13_EL.pdf">https://www.kmk.org/fileadmin/Dateien/pdf/Bildung/BeruflicheBildung/rlp/Fachinformatiker_19-12–13_EL.pdf</a></li><li id="footnote_4_11261" class="footnote">Die Prüfungskataloge werden von der Zentralstelle für Prüfungsaufgaben der Industrie- und Handelskammern herausgegeben. Sie bricht die Vorgaben des Rahmenlehrplans auf einen etwas konkreteren Level herunter. Der uform-Verlag macht die Kataloge kommerziell zugänglich. vgl. <a href="https://www.u-form-shop.de/">https://www.u‑form-shop.de/</a></li><li id="footnote_5_11261" class="footnote">vgl. <a href="https://www.linux-community.de/ausgaben/linuxuser/2012/12/von-der-freien-software-zur-freien-gesellschaft/">https://www.linux-community.de/ausgaben/linuxuser/2012/12/von-der-freien-software-zur-freien-gesellschaft/</a></li></ol><p>The post <a href="https://karsten-reincke.de/lehrmittelfreiheit/">Lehrmittelfreiheit 2.0: proTirone</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/lehrmittelfreiheit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Das eigene Farbkonzept mit bootScore</title>
		<link>https://karsten-reincke.de/farbkonzept/</link>
					<comments>https://karsten-reincke.de/farbkonzept/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Thu, 21 Mar 2024 12:47:28 +0000</pubDate>
				<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[FOSS]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=10749</guid>

					<description><![CDATA[<p>Als “leistungsstarkes, kostenloses Bootstrap-Starter-Theme für WordPress” verwendet bootScore das Farbdesign von Bootstrap und zeichnet seine Elemente entsprechend aus. Zur Verfeinerung dieser allseits gleichen Ergebnisse liefert es aber Techniken mit. So muss die Webdesignerin erst das eigene Farbkonzept entwickeln und es dann in und mit bootScore umsetzen, wenn sie ein persönliches Outfit ihrer Site möchte: Lösung [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/farbkonzept/">Das eigene Farbkonzept mit bootScore</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Als “leistungsstarkes, kostenloses Bootstrap-Starter-Theme für WordPress” verwendet <a href="https://bootscore.me/">bootScore</a> das <a href="https://getbootstrap.com/docs/5.2/utilities/colors/">Farbdesign von Bootstrap</a> und zeichnet seine Elemente entsprechend aus. Zur Verfeinerung dieser allseits gleichen Ergebnisse liefert es aber Techniken mit. So muss die Webdesignerin erst das eigene Farbkonzept entwickeln und es dann in und mit bootScore umsetzen, wenn sie ein persönliches Outfit ihrer Site möchte:<span id="more-10749"></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/color-concept">en</a> ]</div></div></div></div>



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



<ol class="wp-block-list">
<li><strong>Konzipiere das Erscheinungsbild Deiner Site</strong>.</li>



<li><strong>Wähle die entsprechenden Bootstrap-Farbcluster</strong>.</li>



<li><strong>Schreibe die Funktionsfarben entsprechend um</strong>.</li>



<li><strong>Definiere die eigenen CSS-Klassen gemäß Deines Konzeptes</strong>.</li>



<li><strong>Weise die Klassen den intendierten Elementen Deiner Website zu</strong>.</li>
</ol>



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



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



<p id="colorDemo"><a href="https://getbootstrap.com/docs/5.2/customize/color/">Bootstrap hat den RGB-Farbraum in 10 Farbcluster unterteilt</a>: Blau (<code class="bsblue">blue</code>), Indigo (<code class="bsindigo">indigo</code>), Violett (<code class="bspurple">purple</code>), Rosa (<code class="bspink">pink</code>), Rot (<code class="bsred">red</code>), Orange (<code class="bsorange">orange</code>), Gelb (<code class="bsyellow">yellow</code>), Grün (<code class="bsgreen">green</code>), Petrol (<code class="bsteal">teal</code>), Cyan (<code class="bscyan">cyan</code>), Grau (<code class="bsgray">gray</code>). Jeder Cluster beginnt mit einer entsprechend hellen Farbe und geht 9 Schritten bis zu einer entsprechend fast schwarzen Farbe. Definiert sind die Farben als SASS-Variablen, für jeden Cluster nach demselben Muster. Zugreifen können wir so etwa auf ein <code class="cdg100">$green-100</code>, <code class="cdg200">$green-200</code>, <code class="cdg300">$green-300</code>, <code class="cdg400">$green-400</code>, <code class="cdg500">$green-500</code>, <code class="cdg600">$green-600</code>, <code class="cdg700">$green-700</code>, <code class="cdg800">$green-800</code>, <code class="cdg900">$green-900</code>, wobei <code class="cdg">$green</code> der Farbe <code class="cdg500">$green-500</code> entspricht.</p>



<p>Wollen wir diese Farben in einem unserer Element verwenden, definieren wir in unserer Child-Themedatei <code>scss/bscore_custom.scss</code> eine CSS-Klasse <code>.cdg600 { color: $green-600; }</code> und weisen die dem intendierten HTML-Element zu, wie z.B. hier <code class="cdg600">&lt;code class="cdg600"&gt;$green-600&lt;/code&gt;</code>. Diese Technik verengt den RGB-Farbraum zwar, sie erleichtert es uns aber, farblich differenzierte und trotzdem einheitliche Themes zu erstellen.</p>



<p><a href="https://getbootstrap.com/docs/5.2/utilities/colors/">Neben der rein technischen Farbbehandlung</a> geht Bootstrap auch konzeptionell neue Wege: Es gäbe — so der Gedanke — Site-übergreifende kommunikative Aufgaben, die von verschiedenen Elementen einer Site ausgeführt werden (können). Bootstrap erlaubt es, diesen Funktionselementen typische “Funktionsfarben” zuzuordnen. Welche Elemente einer Site welche Funktion übernehmen, entscheidet die Web-Designerin — und ordnet diesen die entsprechend “Funktionsfarbe” zu.</p>



<p>Konkret geht Bootstrap davon aus, dass es in Sites typischerweise (mehrere) Elemente gibt, die Erfolg signalisieren, die abschrecken, warnen oder informieren. Oder, dass es primäre Elemente gibt, sekundäre oder teriäre<sup><a href="https://karsten-reincke.de/farbkonzept/#footnote_1_10749" id="identifier_1_10749" class="footnote-link footnote-identifier-link" title="semantisch ist dies wohl eine Abstufung der Wichtigkeit">1</a></sup>, dunkle oder helle Elemente. Für diese seitenübergreifenden kommunikativen Funktionen definiert Bootstrap ‘funktionale Farben’. Das entsprechende <a href="https://getbootstrap.com/docs/5.2/customize/color/">Bootstrap-color-Howto</a> zeigt die Vorbelegung dieser ‘Funktionsfarben’.</p>



<p>Ein Bootstrap-basiertes Theme muss also nur noch seine Elemente entsprechend der vorgesehenen Funktionen mit den zugehörigen CSS-Klassen auszeichnen, um ein minimal konsistentes Farbkonzept zu realisieren. Das hat <em>bootScore</em> vorbereitet. Allerdings verwendet es die Standard-Funktionsfarben von <em>Bootstrap</em>. So entsteht ein recht “buntes” Farbkonzept. Wir können die Farbwahl jedoch ‘entschärfen’, indem wir die CSS-Definitionen der ‘Funktionsklassen’ überschreiben und so die konzeptionell passende Farbe auf alle entsprechend markierten Elemente übertragen. <em>bootscore</em> <a href="https://bootscore.me/documentation/theme/bootstrap-css-sass/">demonstriert diesen Ansatz</a>, indem es die Primärfarbe von <em>Blau</em> auf <em>Rot</em> umsetzt — mithilfe der Zeile <code>$primary:#FF0000;</code> in der Datei <code>bscore_variables.scss</code>.</p>



<p>Dabei müssen wir den Wert der gewünschten Farbe jedoch explizit zuweisen, anstatt eine der Variablen aus den von Bootstrap definierten Farbclustern zu verwenden. Das ist nicht das, was wir eigentlich wollen. Intuitiv würden wir <code>$primary:$red;</code> schreiben. Leider ist das nicht möglich, weil die bootScore-Datei <code>bscore_variables.scss</code> vor der entsprechenden Bootstrap-Datei geladen wird.<sup><a href="https://karsten-reincke.de/farbkonzept/#footnote_2_10749" id="identifier_2_10749" class="footnote-link footnote-identifier-link" title="bootScore sagt, dass es damit der Bootstrap-Richtlinie folgt.">2</a></sup>. Um also die von Bootstrap definierten und von bootScore verwendeten Funktionsfarben anzupassen, müssen wir die bestehenden Definitionen überschreiben, in denen wir explizit die Werte der beabsichtigten Clusterfarben verwenden. Dazu nutzen wir unserer Datei <code>bscore_variables.scss</code>.</p>



<p><a href="https://bootscore.me/documentation/theme/css-scss-compiler/">Die Umdefinition einer Funktionsfarbe</a> passt dann allerdings auch abgeleitete Farben an: Setzen wir die Primärefarbe auf <em>rot</em>, werden die Links rot eingefärbt, die Hintergrundfarbe der Badgets auf ein helleres Rot und deren Linktext auf ein dunkleres. <em>bootScore</em> reicht dabei ’nur’ die <a href="https://bootscore.me/documentation/bootstrap-components/">Entscheidungen von Bootstrap</a> durch.<sup><a href="https://karsten-reincke.de/farbkonzept/#footnote_3_10749" id="identifier_3_10749" class="footnote-link footnote-identifier-link" title="Mehr noch: Gefragt danach, welche HTML-Elemente welcher Funktion zugeordnet sind, empfiehlt bootScore, das einfach auszuprobieren.">3</a></sup></p>



<p>Als Ausgleich für die Komplikation können wir dann alle vordefinierten Bootstrap-Variablen in unseren eigenen CSS-Definitionen verwenden, die wir in unserer Bootscore-Datei <code>bscore_custom.scss</code> definieren. Mehr noch: wir können auch die von <em>Bootstrap</em> vordefinierten CSS-Klassen (<code>text</code>|<code>bg</code>|…)<code>-</code>(<code>primary</code>|<code>secondary</code>|…|<code>danger</code>|…‘) direkt unseren HTML-Elementen zuordnen, sodass auch diese unseres Konzeptes entsprechend eingefärbt werden. Und noch weiter und feiner: Wir können auch bestehende Klassen — wie etwa die CSS-Klasse card — mit der SASS orienierten Definition <code>.card { backgroundcolor: var(--#{$prefix}dark);</code> in unserer Datei <code>bscore_custom.scss</code> auf einen schwarzen Hintergund umsetzen.<sup><a href="https://karsten-reincke.de/farbkonzept/#footnote_4_10749" id="identifier_4_10749" class="footnote-link footnote-identifier-link" title="oder wie auch immer die Funktionsfarbe 'dark' gerade definiert ist">4</a></sup> Damit würden alle Karten in unseren Übersichtsdatei ‘verdunkelt’.<sup><a href="https://karsten-reincke.de/farbkonzept/#footnote_5_10749" id="identifier_5_10749" class="footnote-link footnote-identifier-link" title="Das ginge zugegebenermaßen auch einfacher, nämlich mit der Anweisung .card { backgroundcolor: $dark}.">5</a></sup></p>



<p>Weil wir jedoch oft genug nicht alle Elemente ändern wollen, die mit vordefinierten Klassen ausgezeichnet sind, landen wir zum Schluß doch wieder bei der traditionelle Methode: wir definieren unsere eigenen Klassen, nutzen dabei Farben aus den Bootstrap-Clustern, und weisen unsere Klassen dann in den Templates den von uns intendierten Elemente zu. Und wie finden wir diese? Indem wir den Quellcode unserer bisherigen bootscore-Seiten studieren — und etwas ‘rumprobieren.</p>



<p>Um es zusammenfassen: Für einheitliches und technisch eingebundenes Farbkonzept, müssen wir</p>



<ol class="wp-block-list">
<li><strong>unsere Ziele definieren</strong> (hier:


<ul class="wp-block-list">
<li>Unsere Site soll blau-weiß-grau erscheinen = <em>in Datei _<code>bscore_variables.scss</code> einfügen:</em>
<ul class="wp-block-list">
<li><code>$primary: #0d6efd; // Wert von $blue-500</code> </li>



<li><code>$secondary: #6c757d;</code> <code>// Wert von $gray-600</code> </li>



<li><code>$info: #6ea8fe; // Wert von $blue-300</code></li>
</ul>
</li>



<li>Hervorstechende Elemente sollen violett erscheinen = <em>in Datei _<code>bscore_variables.scss</code> einfügen:</em>
<ul class="wp-block-list">
<li><code>$danger: #520dc2; // Wert von $indigo-600</code></li>



<li><code>$warning: #8540f5; // Wert von $indigo-400</code></li>
</ul>
</li>



<li>Nebensächlicher Text soll lesbar ausgegraut sein.</li>



<li>Die weißen Artikelteaser sollen schwach-blau umrandet sein = <em>in Datei _<code>bscore-sustom.scss</code> einfügen:</em> <code>.card { border-color: $blue-600; }</code></li>



<li>Die Teaser auf der Landingpage und auf den Übersichtsseiten sollen auf einem leicht blauen Hintergrund abgelegt werden. = <em>in Datei _<code>bscore-sustom.scss</code> einfügen:</em> <code>.page-template-mylap , .hfeed { background-color: $blue-100;}</code></li>



<li>Header und Footer sollen weiterhin auf grauem Hintergrund dargestellt werden.</li>
</ul>
</li>



<li><strong>die funktionalen Farben entsprechend umschreiben</strong> — in unserer Datei <code>bscore_variables.scss</code></li>



<li>unsere <strong>Siteelemente</strong> entsprechend ihrer Funktion<strong> mit den Funktionsklassen auszeichnen</strong><sup><a href="https://karsten-reincke.de/farbkonzept/#footnote_6_10749" id="identifier_6_10749" class="footnote-link footnote-identifier-link" title="wie in u.a. Tabelle demonstriert">6</a></sup></li>



<li><strong>unsere eigenen CSS-Klassen entsprechend unserer Ziele definieren</strong> — in unserer Datei <code>bscore_custom.scss</code></li>



<li><strong>unsere Klassen den vorgesehenen Elementen unserer Site zuweisen</strong><sup><a href="https://karsten-reincke.de/farbkonzept/#footnote_7_10749" id="identifier_7_10749" class="footnote-link footnote-identifier-link" title="wie oben vorgeführt">7</a></sup></li>
</ol>



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



<figure class="wp-block-table" align="center"><table><tbody>
  <tr><td class="bg-primary"><span class="text-white">CSS-class: bg-primary</span></td>
  <td><span class="text-primary">CSS-class: text-primary</span></td>
</tr>
  <tr><td class="bg-secondary"><span class="text-white">CSS-class: bg-secondary</span></td>
<td><span class="text-secondary">CSS-class: text-secondary</span></td>
</tr>

  <tr><td class="bg-success"><span class="text-white">CSS-class: bg-success</span></td>
<td><span class="text-success">CSS-class: text-success</span></td>
</tr>
  <tr><td class="bg-info"><span class="text-white">CSS-class: bg-info</span></td>
<td><span class="text-info">CSS-class: text-info</span></td>
</tr>
  <tr><td class="bg-warning"><span class="text-white">CSS-class: bg-warning</span></td>
<td><span class="text-warning">CSS-class: text-warning</span></td>
</tr>
  <tr><td class="bg-danger"><span class="text-white">CSS-class: bg-danger</span></td>
<td><span class="text-danger">CSS-class: text-danger</span></td>
</tr>
  <tr><td class="bg-dark"><span class="text-white">CSS-class: bg-dark</span></td>
<td><span class="text-dark">CSS-class: text-dark</span></td>
</tr>
  <tr><td class="bg-light"><span class="text-black">CSS-class: bg-light</span></td>
<td class="bg-dark"><span class="text-light">CSS-class: text-light</span></td>
</tr>
</tbody></table></figure>


<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, einmal angefangen mit 
  <a href="https://karsten-reincke.de/bootscore-pimpen/">Verbesserungen</a> der 
  <a href="https://karsten-reincke.de/bilder-beschleunigen/">Bildbehandlung</a>, werden der Web-Designerin auch 
  die <a href="https://karsten-reincke.de/verwischte-primaere-beitragsbilder/">verwischten ‘primären Beitragsgilder’</a> 
  auffallen. Sie wird Lösungen <a href="https://karsten-reincke.de/groessere-bild-quadrate/">ausprobieren</a> 
  und <a href="https://karsten-reincke.de/weniger-verwischte-bilder/">verfeinern</a>. Und sie wird sie u.U. 
  auch mit neuen <a href="https://karsten-reincke.de/ganz-ohne-verwischte-bilder/">HTML‑5 Techniken</a> angehen. 
  Denn damit wird eine ausgefallenere <a href="https://karsten-reincke.de/bilder-datenbanken/">Bildstrategie</a> samt 
  integrierter <a href="https://karsten-reincke.de/bilderverzeichnis/">Lizenzerfüllung</a> und das eigene 
  <a href="https://karsten-reincke.de/logos-und-favicons/">Logo</a> erst richtig sinnvoll. Wie auch immer:
  Bilder bringen Farbe ins Leseleben. Zuletzt sollte all das also auch in 
  <a href="https://karsten-reincke.de/farbkonzept">ein eigenes Farbkonzept</a> eingebunden
  sein. Zu dieser Thematik trägt auch dieser Post etwas bei.</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_10749" class="footnote">semantisch ist dies wohl eine Abstufung der Wichtigkeit</li><li id="footnote_2_10749" class="footnote"><a href="https://github.com/orgs/bootscore/discussions/749">bootScore sagt</a>, dass es damit der Bootstrap-Richtlinie folgt.</li><li id="footnote_3_10749" class="footnote">Mehr noch: Gefragt danach, welche HTML-Elemente welcher Funktion zugeordnet sind, <a href="https://github.com/orgs/bootscore/discussions/751">empfiehlt bootScore, das einfach auszuprobieren</a>.</li><li id="footnote_4_10749" class="footnote">oder wie auch immer die Funktionsfarbe ‘dark’ gerade definiert ist</li><li id="footnote_5_10749" class="footnote">Das ginge zugegebenermaßen auch einfacher, nämlich mit der Anweisung <code>.card { backgroundcolor: $dark}</code>.</li><li id="footnote_6_10749" class="footnote">wie in u.a. Tabelle demonstriert</li><li id="footnote_7_10749" class="footnote">wie oben vorgeführt</li></ol><p>The post <a href="https://karsten-reincke.de/farbkonzept/">Das eigene Farbkonzept mit bootScore</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/farbkonzept/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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>Mein ‘googlierter’ Schreibstil</title>
		<link>https://karsten-reincke.de/schreibgestaltung/</link>
					<comments>https://karsten-reincke.de/schreibgestaltung/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Sat, 26 Aug 2023 16:20:00 +0000</pubDate>
				<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=9821</guid>

					<description><![CDATA[<p>Beim letzten Mal tat’s nicht mehr weh: Binnen zweier Tage war mein Post über meinen ‘Reset’ wegen mangelnder ‘Innere Verlinkung’ und über den ‘richtigen Weg, gecrawlt und indexiert zu werden’ von Google verarbeitet worden. Wieder hatte ich ihn YOAST-gemäß gestaltet. Und damit auch Googles ‘unausgesprochenen’ Vorgaben berücksichtigt. Denn das ist ja der Anspruch von YOAST. [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/schreibgestaltung/">Mein ‘googlierter’ Schreibstil</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Beim letzten Mal tat’s nicht mehr weh: Binnen zweier Tage war mein Post über meinen ‘Reset’ wegen mangelnder ‘Innere Verlinkung’ und über den ‘richtigen Weg, gecrawlt und indexiert zu werden’ von Google verarbeitet worden. Wieder hatte ich ihn YOAST-gemäß gestaltet. Und damit auch Googles ‘unausgesprochenen’ Vorgaben berücksichtigt. Denn das ist ja der Anspruch von YOAST. Allerdings bin ich damit auch eingeknickt vor der stilistischen Übermacht von Google und YOAST:<span id="more-9821"></span></p>



<p>Um die Konsequenzen ihres Diktats zu verstehen, hier zuerst noch einmal meine aus dem YOAST-Angebot extrahierten 11 Gebote, mit deren Umsetzung ich YOAST bisher stets grüne Ampeln abringen konnte, eine für ‘SEO’ und eine für die Lesbarkeit. Unnötig zu erwähnen, dass ich di so aufbereiteten Seiten Google habe erfolgreich zum Indexieren((als Einzellinks via Search-Konsole, nicht per Sitemap allein)) übergeben können.</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/writing-style">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>Definiere Dir eine Key-Phrase, die das Topik Deiner Seite((Der <em><a href="https://wolf-of-seo.de/was-ist/fokus-keyphrase/">wolf-of-seo</a></em> sagt, dass die Key-Phrase nicht erfassen sollte, worum es in Deinem Beitrag gehe, sondern wofür er perfekt sei. Wendet man jedoch die Regeln 2 und 3 an, schrumpft der Unterschied zwischen diesen Standpunkten erheblich.)) wiedergibt.((Achtung: 2 Wörter, allenfalls drei. Denn diese Key-Phrase muss in dieser Form an den Anfang des Titels passen und auch in den Fließtext eingebunden werden können. Vertraue nicht darauf, dass YOAST die syntaktischen Feinheiten der deutschen Sprache analysieren kann — auch wenn es das zu tun verspricht.))</li>



<li>Setze die Key-Phrase((so, wie definiert)) an den Anfang Deines Seitentitels.((Wenn Du den so entstehenden slug’ Deiner Seite verkürzt, bleibe in Deiner URL wenigstens bei sprechende Syntagmen.))</li>



<li>Integriere diese Key-Phrase((so, wie definiert)) in den ersten Absatz Deiner Seite.</li>



<li>Baue die Key-Phrase((möglichst so, wie definiert)) in die mindestens 120 und höchstens 156 Zeichen lange Meta-Description Deiner Seite ein.</li>



<li>Verlinke Deine Seite auf andere Seiten Deines Blogs zu dem Thema.</li>



<li>Verlinke Deine Seite auf fremde Seiten zu dem Thema.</li>



<li>Schreibe nur wenig Sätze mit mehr als 25 Wörtern.</li>



<li>Nutze (logische) Konjunktionen, um (kurze) (Haupt)Sätze miteinander zu verknüpfen.</li>



<li>Lasse Deine Absätze nicht über 150 Wörter ‘anschwellen’, bleib aber auf jeden Fall unter 200.</li>



<li>Nutze nur wenig Passivkonstruktionen, mache aktive Aussagen.</li>



<li>Beantrage in der Search-Konsole für Deine neue Seite explizit, dass Google sie indexiert((Verlass Dich nicht nur auf Deine aktualisierte Sitmap.))</li>
</ul>



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



<p>Eins gleich vorab: Wem jetzt schon schwant, dass dieser Post diesen Geboten nicht so richtig folgt, dem sei gleich gesagt: Yeep. Absichtlich. Testen wir doch einfach mal, was passiert, wenn wir unsere Posts nicht dem vereinheitlichenden Diktat von Google und YOAST unterwerfen.</p>



<p>Aus diesen ‘Empfehlungen’ ergibt sich nämlich ein anderer Schreibstil, als er Dir und mir (gelegentlich) vorschwebt. Dass passive Satzkonstruktionen schwieriger zu verstehen sind und damit mehr Lese<strong>arbeit</strong> erfordern, ist nachvollziehbar.((Wer’s nicht glaubt’, mag sich bewusst durch diesen absichtlich passivierten Absatz ‘quälen’)) Dass unser Lese(er)leben durch kurze Sätze erleichtert wird, ebenso. Werden wir von den Suchmaschinen gezwungen, so zu schreiben, tun sie unseren Leserinnen etwas Gutes. Auch wenn wir über die Drohung, unsere Texte würden nicht indexiert, ’sanft’ vom akademischen Schreibstil weggebracht werden. </p>



<p>Dies ärgert mich also nicht. Die Sache mit der Key-Phrase aber schon. Denn die verhindert, dass ich mit einem nur andeutenden Titel Leselust wecken und seine konkrete Bedeutung und seinen Kontext erst aus den ersten Sätzen erwachsen lassen kann. Freie Fahrt den Assoziationen — damit arbeite ich gern. Eigentlich. Darf es aber nicht, wenn ich die Gebote befolgen will. Ein Beispiel: Früher hatte ich meinen Artikel ‘Wolken und Listen — Zwei auf einen Streich!’ nur ‘Zwei auf einen Streich’ betitelt — und damit sogar ein wenig assoziative Nähe zum ‘tapferen Schneiderlein’ hergestellt.((Auch wenn mir das jetzt, wo ich das Märchen noch einmal ganz gelesen habe, selbst etwas unangenehm aufstößt. Es ist schon ein arger Blender, das kleine Schneiderlein, nicht nur ein Schlitzohr. Eigentlich kein Kontext, in den ich mich eingeordnet wehen möchte.)) Nur <em>Zwei auf einen Streich</em>, das ist ein eleganter Titel. Ihm die Key-Phrase ‘Wolken und Listen’ voranzustellen, nimmt dem Titel den Witz und macht ihn sperrig. Und spätestens, wenn wir die Key-Phrase im ersten Absatz noch einmal wiederholen, werden wir zu aufdringlichen Plapperinnen — nur um unsere grünen YOAST-Ampeln zu bekommen, will sagen: um indexiert zu werden.</p>



<p>Als ein aus SEO Sicht gutes Beispiel mag die Seite <a href="https://wolf-of-seo.de/was-ist/fokus-keyphrase/">https://wolf-of-seo.de/was-ist/fokus-keyphrase/</a> betrachtet werden. Hier wird die Key-Phrase <em>Fokus Keyword</em> an den Anfang des Titels gestellt und gleich noch einmal im ersten, sehr kurzen Absatz wiederholt — zusammen mit ihrem Zwilling <em>Fokus Keyphrase</em>. Und in den ersten 6 Sätzen((was hier gleichbedeutend ist mit: in den ersten 6 Absätzen)) kommen die dann mehr als 10 ‘mal vor. Der ‘wolf of seo’ wird keine Schwierigkeit gehabt haben, seine Seite indexiert zu bekommen. Und mehr noch: inhaltlich ist dieser Artikel richtig gut! Nur stilistisch — stilistisch ist er grottig. Lest ihn einfach mal langsam, und Euch fällt dieses redundante Wortgeklingel sicher auch auf. Das Ärgerliche an dem Diktat einer guten SEOzität ist, dass wir offensichtlich so schreiben müssen, wenn wir indexiert werden wollen. Denn nur das, was indexiert ist, kann ja überhaupt gefunden und gerankt werden.</p>



<p>Habt Ihr den ’seo-wölfischen’ Text langsam gelesen, lest auch meinen Artikel so. Und es wird Euch direkt auffallen, dass er noch viel grottiger ist, als jener. Ich habe hier nämlich absichtlich viele der o.a. Gebote verletzt:</p>



<ul class="wp-block-list">
<li>Meine Key-Phrase ‘StilXpolizei’ kommt weder im Titel noch im ersten Absatz oder sonst wo vor, also auch nicht im slug.((Ich kann das Wort nicht riochtig schreiben, sonst meint YOAST: ”The keyphrase was found 1 time. That’s less than the recommended minimum of 3 times for a text of this length.”))</li>



<li>Ich habe eine ‘Metadescription’ eingebaut, die absichtlich zu kurz ist und am Thema vorbeigeht.((Einfach mal den Sourcecode ansehen.))</li>



<li>Dieser Post verwendet zwar Links nach extern, aber keine auf andere Seiten meiner Site.</li>



<li>Mein Text verwendet zu viele Passivkonstruktionen((“15% of the sentences contain passive voice”)) und hat einen zu langen Absatz.((“1 of the paragraphs contains more than the recommended maximum of 150 words.”))</li>
</ul>



<p>So bekomme ich für diesen Post eine orange YOAST-Ampel in Sachen SEO und eine rote in Sachen Lesbarkeit. </p>



<p>Damit können wir jetzt einfach mal testen, wie lange Google braucht, um diesen Artikel zu indexieren.((Um nicht Birnen mit Äpfeln zu vergleichen, werde ich Google zuerst nur über die Sitemap von dem neuen Post informieren. Und erst nach ein paar Monaten beantrage ich bei Google die Indexierung dieses Posts auch manuell.)) Sobald er im Index aufgenommen worden ist, sage ich Euch hier Bescheid. Ihr könnt es aber auch selbst testen. Sucht einfach nach SEOzität. Das Wort gibt es nämlich (bisher) nur in diesem Artikel.</p>



<hr class="wp-block-separator has-alpha-channel-opacity">



<ul class="wp-block-list">
<li>Sitemap aktualisiert: 2023-08-27 / evaluiert: 2023-08-28 </li>



<li>Post gefunden: 2023-08-28 / gecrawlt: 2023-08-28  / indexiert: 2023-08-28  </li>
</ul>



<p>Erstaunlich. So schnell. Ohne manuelle Bitte um Indexierung, ohne innere Verlinkung.  Und das englische Pendant ist am 30.08. immer noch nicht gefunden, gecrawlt</p>



<hr class="wp-block-separator has-alpha-channel-opacity">
<p>The post <a href="https://karsten-reincke.de/schreibgestaltung/">Mein ‘googlierter’ Schreibstil</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/schreibgestaltung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Innere Verlinkung — ein Reset</title>
		<link>https://karsten-reincke.de/innere-verlinkung/</link>
					<comments>https://karsten-reincke.de/innere-verlinkung/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 23 Aug 2023 09:40:21 +0000</pubDate>
				<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=9769</guid>

					<description><![CDATA[<p>Zweimal hatte ich bereits über ‘SEO’ geschrieben. Alles halb so schlimm, hatte ich gemeint. bootScore zeichne seine Seiten dankenswerterweise ja von Haus aus mit semantischen HTML-Tags aus. Es reiche also, die eigene Sitemap bei Google &#38; Co einzureichen. Die darin erfassten Seiten noch mit Keywords anzureichern, sei nicht nötig, wenn nicht gar schädlich. Denn das [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/innere-verlinkung/">Innere Verlinkung — ein Reset</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Zweimal hatte ich bereits über ‘SEO’ geschrieben. Alles halb so schlimm, hatte ich gemeint. <a href="https://bootscore.me/">bootScore</a> zeichne seine Seiten dankenswerterweise ja <a href="https://karsten-reincke.de/bootscore-plus-seo/">von Haus aus mit semantischen HTML-Tags</a> aus. Es reiche also, die eigene Sitemap bei Google &amp; Co einzureichen. Die darin erfassten Seiten noch mit Keywords anzureichern, sei nicht nötig, wenn nicht gar schädlich. Denn das lege ja eh nur einen zweiten Text hinter den eigentlichen. Sei dieser inhaltlich gut, reiche das. Dachte ich. Und meinte, die innere Verlinkung gar nicht ansprechen zu müssen. Selten hat mich Google auf peinlichere Weise eines Besseren belehrt:<span id="more-9769"></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/internal-linking">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>Ersetze alle schematischen Slugs durch sprechende.</li>



<li>Verlinke jeden Post und jede Seite mit allen anderen internen verwandten Posts oder Seiten.</li>



<li>Installiere <a href="https://yoast.com/wordpress/plugins/seo/">YoastSEO</a>.</li>



<li>Setze so viele seiner Verbesserungsvorschläge um, dass seine Ampeln auf grün springen.</li>



<li>Beantrage bei Google für jede Seite und jeden Post gesondert die Indexierung.</li>
</ul>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</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/08/search-console-problem-900x1100-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/08/search-console-problem-900x1100-1-245x300.png" alt="Google Search Console Problem" width="300"></a></figure></div>



<p>Was hatte mich zu dieser Einsicht getrieben? Nach der Anmeldung meiner Sitemap irgendwann im April hatte Google in 3 Monaten nur 6 meiner 109 Seiten indexiert. Über deren Qualität hatte es nicht gemeckert. Nur schlicht verkündet, dass es 81 Seiten oder Posts zwar gefunden und 17 zwar gecrawlt, aber nicht indexiert habe. Offensichtlich hielt Google meine Texte des Indexierens nicht für würdig. Trotz meines an sich ja interessanten Themas ‘bootScore’. Und trotz der ja immerhin so relevanten Artikel, dass sie das Projekt ‘bootScore’ zu Verbesserungen angeregt hatten. Über ein gutes Ranking brauchte ich also vorerst nicht nachzudenken. Ich musste mich ‘findbar’ machen.</p>



<p>Es hat mich eine Weile gekostet, zu verstehen, was passiert war. Und noch eine größere, es zu bereinigen:</p>



<p>Mit meiner Migration nach bootScore wollte ich auch meine Site verdichten. Sie leserinnen-freundlicher gestalten. Ihr die Redundanz austreiben. Weniger Schnick-Schnack sollte sie enthalten. Darum hatte ich meine thematischen Cluster sauber auf Kategorien und Tags abgebildet und denen meine Texte zugeordnet. Denn bootScore bot ja von Haus aus auf jeder Seite an, sich für jedes Schlagwort die zugehörigen Artikel anzeigen zu lassen. Warum also sollte ich in den einzelnen Seiten/Posts zusätzlich auf thematische verwandte Seiten/Posts verweisen? Warum händisch Seiten und Posts verlinken? Zu viel Schnick! Und warum sollte ich in mein Menü einzelne Seiten oder Posts einhängen? Zu viel Schnack! Ein Leitsystem aus den Kategorien und Tags sollte reichen. Damit hätten meine Leserinnen immer auf die zu diesem Thema auch relevanten Artikel zugreifen können. Eine zusätzliche ‘innere Verlinkung’ im Text, das wäre doch redundant. Dachte ich.</p>



<p>Genau das aber sieht Google anders! Seiten, auf die nicht einmal andere eigene Seiten verlinken, sind doch offensichtlich nicht einmal der Autorin wichtig. Sonst würde sie doch ihre Leserinnen dahinführen wollen. Warum also sollte Google sie indexieren? Darauf hatten meine Lehrbücher immer schon hingewiesen.((Pars pro toto: vgl. Czysch, Stephan: SEO mit Google Search Console, 2. Aufl., Heidelberg 2017, S. 168ff)) Mein Fehler, es zu ignorieren.</p>



<p>Wie der Fehler, meine Beiträge mit nichtssagenden ‘Slugs’ zu gruppieren. Wenn ich — zum Beispiel — ein Cluster ‘image’ benutzte, dachte ich, ich könnte meine Beiträge ‘image‑a’ , … ‘image‑i’. So hatte ich die gleichen Seitennamen auf der deutschen und der englischen Site. An sich keine schlechte Idee. Nur veranlasste da Google dazu, die Beiträge für unwichtig zu halten.((pars pro toto: vgl. Dziki, Julian: Suchmaschinenoptomierung für dummies, 2. Aufl., Weinheim 2021, S. 62)) Sie waren mir ja nicht mal einer Botschaft wert.</p>



<p>Nachdem ich diese Nebeneffekte verstanden hatte, überarbeitete ich alles. Ich ersetzte die symbolischen Seitennamen durch sprechende. Ich installierte YoastSeo und setzte so viele seiner Maßnahmen zu den Themen ‘SEO’ und ‘Lesbarkeit’ um, dass die entsprechenden Ampeln von rot auf grün wechselten. Oder zumindest auf gelb. Alles in allem eine sehr zeitaufwendige Arbeit.</p>



<p>Trotzdem fehlte damit noch die innere Verknüpfung. So schrieb ich für jedes Themencluster eine Zusammenfassung und verlinkte deren Wörter mit den verwandten Beiträgen und Seiten. Und da ich diese Zusammenfassungen in Zukunft absehbar häufiger würde aktualisieren müssen, erleichterte ich mir diese Tipparbeit, indem ich je Zusammenfassungen als ShortCodes implementierte. Jetzt reichte eine einfache Zeichenkette am Ende eines jedes Beitrags und er wäre intern passend verlinkt.</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/08/search-console-success-900x1100-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/08/search-console-success-900x1100-1-245x300.png" alt="Google Search Console Success" width="300"></a></figure></div>



<p>Den wirklichen Durchbruch in Sachen Indexierung erlebte ich aber erst, als ich jeden Post und jede Seite einzeln und händisch in der Google-Search-Konsole zur Indexierung angemeldet hatte — was auch hieß, jedes Mal zeitaufwendig die Indexierbarkeit überprüfen zu lassen. Heute hat Google von meinen 74 Artikeln und 18 Seiten meiner deutschen Site 84 indexiert. Und was nicht indexiert ist, muss — aus Leserinnensicht — nicht über Google gefunden werden. Wie z.B. meine Datenschutzseite oder der Bildernacheweis. Auf meiner englischen Site sieht es sogar noch besser aus: von den 53 Post und 15 Seiten sind 114 indexiert — was nur besagt, dass auch noch veraltete Links im Index enthalten sind. Diesmal bin ich den diesbzgl. Empfehlungen der Lehrbücher aber gleich gefolgt und habe die entsprechenden Weiterleitungen((pars pro toto: vgl. Eisenmenger, Richard u. Florian Brinkmann: WordPress 6. Das umfassende Handbuch, 2. Aufl., Bonn 2022, S. 517)) aktiviert — hier mit dem Plugin ‘<a href="https://wordpress.org/plugins/quick-301-redirects/">Quick 301 Redirects</a>’.</p>



<p>Was war nun die entscheidende Maßnahme für den Erfolg? Ich fürchte, es braucht alle. Auch wenn ich dafür meinen Schreibstil ändern musste. Vor allem bei der Umsetzung der YoastSEO-Empfehlungen. Aber dazu später mehr. So bald Google diese Artikel indexiert hat. Immer das Wichtigste zuerst.</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: Muss eine Web-Designerin ihr bisheriges 
  <a href="https://karsten-reincke.de/yaml-css/">WordPress-Theme aufgeben</a>, braucht sie Ersatz. Ein freies 
  <a href="https://github.com/bootscore">Theme von der Stange</a> wird sie 
  <a href="https://karsten-reincke.de/bootscore-pimpen/">personalisieren</a> wollen. Zuerst 
  <a href="https://karsten-reincke.de/bootscore-font-awesome-shortcode/">etwas</a> 
  <a href="https://karsten-reincke.de/font-awesome-checklist/">kosmetisch</a>, dann in Sachen 
  <a href="https://karsten-reincke.de/silbentrennung/">Grauwert</a>, 
  <a href="https://karsten-reincke.de/mehrsprachigkeit/">Mehrsprachigkeit</a> und innerer
  <a href="https://karsten-reincke.de/fussnoten/">Verweistechnik</a> und 
  <a href="https://karsten-reincke.de/innere-verlinkung/">Verlinkung</a>. Schließlich wird sie besondere 
  <a href="https://karsten-reincke.de/nachrangiger-footer-kram/">Footer</a> aktivieren, ein 
  <a href="https://karsten-reincke.de/sekundaer-menue/">Zweitmenü</a> oder einen 
  <a href="https://karsten-reincke.de/copyright-line/">Copyright-Hinweis</a>, bevor sie die 
  ‘<a href="https://karsten-reincke.de/bootscore-plus-seo/">SEO-zität</a>’ 
  <a href="https://karsten-reincke.de/keine-toten-links-bitte/">überprüft</a>. 
  Diesen Weg unterstützt auch dieser Post.</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></p>
<p>The post <a href="https://karsten-reincke.de/innere-verlinkung/">Innere Verlinkung — ein Reset</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/innere-verlinkung/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>bootScore pimpen</title>
		<link>https://karsten-reincke.de/bootscore-pimpen/</link>
					<comments>https://karsten-reincke.de/bootscore-pimpen/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Sat, 22 Apr 2023 22:29:56 +0000</pubDate>
				<category><![CDATA[Open-Source]]></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=4866</guid>

					<description><![CDATA[<p>bootScore verbindet Bootstrap und WordPress — als Theme mit ‘responsivem Design’. Dies bringt mit, was die Web-Designerin oft nicht selbst programmieren will. Jetzt kann sie stattdessen auf eine MIT lizenzierte Vorarbeit zurückgreifen, gehostet auf GitHub. Deren ‘Standard-Outfit’ personalisiert sie dann, — als Web-Designerin. Adaptiert werde das Theme — so bootScore -, indem frau dessen “[…] [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/bootscore-pimpen/">bootScore pimpen</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><em><a href="https://bootscore.me/">bootScore</a></em> verbindet <em><a href="https://getbootstrap.com/">Bootstrap</a></em> und <em><a href="https://de.wordpress.org/">WordPress</a></em> — als Theme mit ‘responsivem Design’. Dies bringt mit, was die Web-Designerin oft nicht selbst programmieren will. Jetzt kann sie stattdessen auf eine MIT lizenzierte Vorarbeit zurückgreifen, <a href="https://github.com/bootscore/bootscore">gehostet auf GitHub</a>. Deren ‘Standard-Outfit’ personalisiert sie dann, — als Web-Designerin. Adaptiert werde das Theme — so <em>bootScore</em> -, indem frau dessen “[…] .scss, .php and .js Dateien angepasse”. Hier meine 13 Schritte vom puren <em>bootScore</em> hin zur neuen ‘Homepage’:<span id="more-4866"></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/pimp-your-bootscore">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-solid fa-play"></i></h2>



<p>Als Ausgangspunkt hatte ich (bereits) WordPress installiert<sup><a href="https://karsten-reincke.de/bootscore-pimpen/#footnote_1_4866" id="identifier_1_4866" class="footnote-link footnote-identifier-link" title="Anleitung dazu gibt es zu Hauf, auch eine von WordPress selbst.">1</a></sup>, (Test-) Daten eingegeben<sup><a href="https://karsten-reincke.de/bootscore-pimpen/#footnote_2_4866" id="identifier_2_4866" class="footnote-link footnote-identifier-link" title="z.B. mit denen der zu migrierenden Site oder des Theme Unit Tests">2</a></sup>, <em>bootScore</em> installiert und es als Theme aktiviert<sup><a href="https://karsten-reincke.de/bootscore-pimpen/#footnote_3_4866" id="identifier_3_4866" class="footnote-link footnote-identifier-link" title="z.B. gemäß bootScore-Anleitung">3</a></sup>. So entstand — als <i class=" fa-solid fa-list"></i> Reihe von <strong><em>pimp your bootScore</em></strong> posts — folgender Weg: </p>



<p class="has-text-align-center"> <a href="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-bs-pure-1200x718-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-bs-pure-1200x718-1-300x180.png" alt="bootScore + Landing Page" width="200"></a> <i class=" fa-solid fa-forward"></i> <a href="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-mylap-1490x1372-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-mylap-1490x1372-1-300x276.png" alt="bootScore + Landing Page" width="200"></a>  <i class=" fa-solid fa-forward"></i>  <a href="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-myplp-1490x1372-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-myplp-1490x1372-1-300x276.png" alt="bootScore + Landing Page" width="200"></a> </p>



<p></p>



<h2 class="wp-block-heading"><i class=" fa-solid fa-shoe-prints"></i></h2>



<ol class="wp-block-list">
<li>Font Awesome — ein Symbol sagt mehr als 100 Worte: <a href="https://karsten-reincke.de/bootscore-font-awesome-shortcode/">ShortCodes</a> und <a href="https://karsten-reincke.de/font-awesome-checklist/">CSS-Klassen</a></li>



<li>SEO von Anfang an: <a href="https://karsten-reincke.de/bootscore-plus-seo/">HTML-Semantik, Schlagwörter und Sitemaps</a> und <a href="https://karsten-reincke.de/seo-b/">keine toten Links, bitte!</a></li>



<li>Das ‘(Un)Wichtige’ nach unten: Der dezente und umfassende Footer-Bereich für den ’nachrangigen’ <a href="https://karsten-reincke.de/nachrangiger-footer-kram/">Legalkram</a>, das nachrangige <a href="https://karsten-reincke.de/sekundaer-menue/">Zweitmenü</a> und die eigene <a href="https://karsten-reincke.de/copyright-line/">Copyrightline</a></li>



<li>Mehrsprachigkeit mitdenken: <a href="https://karsten-reincke.de/bilingual/">Bilingualität ohne WP-Globus</a></li>



<li>Die Übersichtlichkeit: Das <a href="https://karsten-reincke.de/tiefer-verschachtelte-menues/">tiefer verzweigte Menü </a>mit <a href="https://karsten-reincke.de/shortcodes-im-menue/">integrierten Shortcodes</a>, <a href="https://karsten-reincke.de/saubere-menues/">sauberen Ebenen</a> und <a href="https://karsten-reincke.de/menue-stapel/">lesbarer Stapelung</a>, das dennoch kein <a href="https://karsten-reincke.de/keine-hover-menues/">H‑OVER-Menü</a> sein muss.</li>



<li>Nicht frickeln, sondern automatisieren: Die <a href="https://karsten-reincke.de/silbentrennung/">eingebaute Silbentrennung</a></li>



<li>Ein Bild sagt mehr als 1000 Worte:
<ul class="wp-block-list">
<li>Das kann ein ‘manuell’ mit einer <a href="https://karsten-reincke.de/fancy-boxes/">fancy Box</a> in den Text eingefügtes Bild sein — gerne auch beschleunigt ausgeliefert <a href="https://karsten-reincke.de/bilder-beschleunigen/">per WordPress vorberechneter Bildgröße</a> oder als <a href="https://karsten-reincke.de/fancy-svgs/">SVG</a>.</li>



<li>Oder ein automatisiert verwaltetes ‘<a href="https://karsten-reincke.de/verwischte-primaere-beitragsbilder/">Primäres Beitragsbild</a>’. Nur sollte es möglichst <a href="https://karsten-reincke.de/weniger-verwischte-bilder/">wenig verwischt </a>sein, wenn es des Responsiv-Designs wegen angepasst wird. Das organisiert <a href="https://karsten-reincke.de/ganz-ohne-verwischte-bilder/">das moderne IMG-Tag mit den Source-Angaben</a> wohl am Besten. Schneller umzusetzen, aber weniger effektiv wäre es, WordPress <a href="https://karsten-reincke.de/groessere-bild-quadrate/">eine weitere Bildgröße</a> im Voraus berechnen zu lassen.</li>



<li>Wirklich <a href="https://karsten-reincke.de/bilder-datenbanken/">freie Bilder </a>gibt es im Netz, wenn wir ein <a href="https://karsten-reincke.de/bilderverzeichnis/">Bildverzeichnis</a> vorsehen, um die Lizenzvorgabn zu erfüllen.</li>



<li>Und die kleinen Browserbildchen neben der Url? Oder das Logo? Dafür nutzen wir<a href="https://karsten-reincke.de/logos-und-favicons/"> <em>bootScoores</em> Logo- und Favicon-System</a>.</li>
</ul>
</li>



<li>Das Finden erleichtern: <a href="https://karsten-reincke.de/zwei-auf-einen-streich/">TAG-Wolken und Beitragslisten</a> in der Sidebar</li>



<li>Der ‘gemauerte’ Überblick: <a href="https://karsten-reincke.de/masonry-ueberblick/">Die Masonry-Beitragsliste</a></li>



<li>Das Wichtigste zuerst: <a href="https://karsten-reincke.de/eine-eigene-landingpage/">eine eigene Landing-Page</a> — <a href="https://karsten-reincke.de/verschlankte-landingpage/">selbst gestaltet -</a> und dann <a href="https://karsten-reincke.de/weg-was-stoert/">weg mit dem, was ablenkt</a>, auch mittels <a href="https://karsten-reincke.de/kontext-sensitive-sidebars/">kontextsensitiven Sidebars</a> und <a href="https://karsten-reincke.de/dezente-post-verlinkung/">dezenterem Hinweise auf jüngere Posts</a></li>



<li>Designte Lesbarkeit: <em>bootScore</em> und <a href="https://karsten-reincke.de/passende-web-fonts/">der eigene generelle Font</a> und <a href="https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/">ein Font für besondere Anlässe</a></li>



<li>Recht muss Recht bleiben: <a href="https://karsten-reincke.de/datenschutz-dsgvo/">Datenschutz, DSGVO und Cookies</a>, der <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Cookie-Dialog</a> und <a href="https://karsten-reincke.de/sauberes-cookie-management/">seine Semantik </a>mit bootScore</li>



<li>Der erste Eindruck: <a href="https://karsten-reincke.de/farbkonzept/">das Nutzerinnen orientierte Farbkonzept</a></li>
</ol>



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



<p>So entsteht eine bootScore-basierte Website mit Responsive Design, die den Weg dorthin in sich selbst dokumentiert, auf dass ich auch in Zukunft nachschlagen kann, wie ich es in der Vergangenheit gemacht habe. Wenn dies auch anderen nützt, wäre das ein willkommener Nebeneffekt.</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_4866" class="footnote">Anleitung dazu gibt es zu Hauf, auch <a href="https://developer.wordpress.org/advanced-administration/before-install/howto-install/">eine von WordPress selbst</a>.</li><li id="footnote_2_4866" class="footnote">z.B. mit denen der zu migrierenden Site oder des <a href="https://codex.wordpress.org/Theme_Unit_Test">Theme Unit Tests</a></li><li id="footnote_3_4866" class="footnote">z.B. gemäß <em><a href="https://bootscore.me/documentation/installation/">bootScore-Anleitung</a></em></li></ol><p>The post <a href="https://karsten-reincke.de/bootscore-pimpen/">bootScore pimpen</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/bootscore-pimpen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fonts für besondere Anlässe</title>
		<link>https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/</link>
					<comments>https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 19 Apr 2023 08:52:06 +0000</pubDate>
				<category><![CDATA[Open-Source]]></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=6377</guid>

					<description><![CDATA[<p>Bootstrap* und bootScore verwenden SCSS-Variablen — wie wir wissen. Um Schriften zu gruppieren, bietet die Datei bootstrap/_variables.scss die Variablen $font-family-base, $font-family-sans-serif, $font-family-monospace und $font-family-code. Eine Variable $font-family-serif existiert nicht. Überschreiben wir family-base in unserer Datei _bscore_variables.scss, legen wir den Default neu fest. Wollen wir für unsere Überschriften einen abweichenden Font verwenden, müssen wir die Variablen [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/">Fonts für besondere Anlässe</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Bootstrap* und <em>bootScore</em> verwenden SCSS-Variablen — <a href="https://karsten-reincke.de/passende-web-fonts/">wie wir wissen</a>. Um Schriften zu gruppieren, bietet die Datei <code>bootstrap/_variables.scss</code> die Variablen <code>$font-family-base</code>, <code>$font-family-sans-serif</code>, <code>$font-family-monospace</code> und <code>$font-family-code</code>. Eine Variable <code>$font-family-serif</code> existiert nicht. Überschreiben wir <em>family-base</em> in unserer Datei <code>_bscore_variables.scss</code>, legen wir den Default neu fest. Wollen wir für unsere Überschriften einen abweichenden Font verwenden, müssen wir die Variablen <code>$headings-font-family</code> und <code>$display-font-family</code> umdefinieren. <a href="https://bootscore.me/documentation/google-fonts/">Das reicht aus, wenn wir <em>nur zwei Schriftfamilien</em> benutzen wollen</a>. Möchten wir hingegen auch andere Fonts für besondere Anlässe verwenden, z.B. einen dritten Font für unsere Menüs, dann müssen wir anders aktiv werden:<span id="more-6377"></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/fonts-for-special-occasions">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>Definiere in Deiner Child-Theme-Datei <code>scss/_bscore_variables.scs</code> noch die Variable <code>$menu-font-family: 'PT Sans', sans-serif, !default;</code> (mit einem Menufont Deiner Wahl.)</li>



<li>Trage in Deiner Child-Theme-Datei <code>scss/_bsscore-custom.scs</code> die folgenden Zeilen ein:</li>
</ul>



<pre class="wp-block-code"><code>#bootscore-navbar{
  font-family: $menu-font-family;
}

.footerSubMenu {
  font-family: $menu-font-family;
}</code></pre>



<ul class="wp-block-list">
<li>Weise über das WP-Backend den Widgets <code>Footer 1</code> bis <code>Footer 4</code>, die eine Liste als Menü enthalten, mit <code>&lt;ul class="footerSubMenu"&gt;</code> die neue Klasse zu.</li>
</ul>



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



<p>Noch einmal kurz: Wie kann dieser Bedarf eigentlich entstehen?</p>



<p>Menüs sehen in der Regel mit serifenlosen Fonts besser aus. Haben wir in der Variable <code>$font-family-base</code> eh einen serifenlosen Default-Font festgelegt, ist alles gut. Verwenden wir aber einen Serifenfont, müssen wir — wenn wir es denn so wollen — nicht nur den Überschriften einen serifenlosen Font zuweisen, sondern auch die Menüs. Das Hauptmenu ist seitens <em>bootScore</em> in einem Bereich mit der ID <code>bootscore-navbar</code> eingebettet. Diese ID können wir weiterverwenden. Für die Submenüs im Footerbereich müssen wir uns eine entsprechende Klasse definieren und den Listen manuell zuweisen.</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, hat Web-Designerin 
  <a href="https://karsten-reincke.de/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> die Frage einer 
  <a href="https://karsten-reincke.de/ganz-ohne-verwischte-bilder/">guten Bebilderung</a> beantwortet, kann sie entspannt 
  <a href="https://karsten-reincke.de/zwei-auf-einen-streich/">Tags und Wolken</a> in ihre Site einbinden, ihre 
  <a href="https://karsten-reincke.de/masonry-ueberblick/">Überblicksseite</a> 
  <a href="https://karsten-reincke.de/masonry-mit-drei-spalten/">verbessern</a> und 
  <a href="https://karsten-reincke.de/eine-eigene-landingpage/">eine eigene Landingpage</a> gestalten. 
  Ob die entstandene <a href="https://karsten-reincke.de/weg-was-stoert/">Fülle</a> der eigenen Leserin wirklich 
  nutzt, ob es nicht <a href="https://karsten-reincke.de/kontext-sensitive-sidebars/">schlanker</a> geht und 
  <a href="https://karsten-reincke.de/verschlankte-landingpage/">wie</a>, ob 
  <a href="https://karsten-reincke.de/dezente-post-verlinkung/">dezentere Verweise</a> und 
  <a href="https://karsten-reincke.de/passende-web-fonts/">spezielle Fonts</a> auch 
  <a href="https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/">für besondere Anlässe</a> 
  die Lesbarkeit erhöhen, all das gilt es zu bedenken. Das tut auch dieser Post.</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/fonts-fuer-besondere-anlaesse/">Fonts für besondere Anlässe</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Passende Web-Schriften</title>
		<link>https://karsten-reincke.de/passende-web-fonts/</link>
					<comments>https://karsten-reincke.de/passende-web-fonts/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 05 Apr 2023 10:20:34 +0000</pubDate>
				<category><![CDATA[Open-Source]]></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=6186</guid>

					<description><![CDATA[<p>Schrift gehört zum Design, passende Web-Schriften zum Web-Design — nicht nur zu besonderen Anlässen. Mit bootScore können wir Google Fonts direkt einbauen. Uns wird sogar erklärt, wie wir sie lokal hosten und so die Erwähnung im Datenschutzkonzept umgehen. Gleichwohl müssen wir uns dazu ein wenig auch auf Bootstrap einlassen: Lösung Hintergrund Schriften sind — begrifflich [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/passende-web-fonts/">Passende Web-Schriften</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Schrift gehört zum Design, passende Web-Schriften zum Web-Design — nicht nur <a href="https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/">zu besonderen Anlässen</a>. Mit <em>bootScore</em> können wir Google Fonts direkt einbauen. Uns wird sogar erklärt, <a href="https://bootscore.me/documentation/google-fonts/">wie wir sie lokal hosten</a> und so die <a href="https://karsten-reincke.de/datenschutz/">Erwähnung</a> im <a href="https://karsten-reincke.de/datenschutz-dsgvo/">Datenschutzkonzept</a> umgehen. Gleichwohl müssen wir uns dazu ein wenig auch auf <em>Bootstrap</em> einlassen:<span id="more-6186"></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/suitable-web-fonts">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>Wähle aus den <a href="https://fonts.google.com/">Google Fonts</a> Deine Schriften aus:
<ul class="wp-block-list">
<li>eine Schrift mit Serifen (z.B. pt-serif oder noto-serif),</li>



<li>eine dazu passenden serifenlose Schrift (z.B. pt-sans oder noto-sans),</li>



<li>eine dazu passende Monospace-Schrift (pt-mono oer noto-sans-mono)</li>



<li>und vielleicht noch eine spezielle Schrift für Überschriften (z.B. arima-madurai oder eb-garamond)</li>
</ul>
</li>



<li>Wähle jede Schrift im <a href="https://gwfh.mranftl.com/fonts">google-webfonts-helper</a> an und
<ul class="wp-block-list">
<li>belasse den Zeichensatz (charset) auf <em>latin</em></li>



<li>selektiere — so weit vorhanden — die Größen 400 und 700.</li>



<li>selektiere dazu — so weit vorhanden, die Stile regular, regular italic, bold und bold italic.</li>



<li>kopiere den im <em>google-webfonts-helper</em> dazu erzeugten <code>font-face-code</code> in die Datei <code>scss/_bscore_custom.scss</code></li>



<li>lade das Zip-Paket aus dem <em>google-webfonts-helper</em> herunter.</li>
</ul>
</li>



<li>Erzeuge einen Ordner <code>fonts</code> in Deinem Child-Thema.</li>



<li>Entpacke alle heruntergeladenen Zip-Pakete im Ordner <code>fonts</code></li>



<li>Erweitere die Datei <code>scss/_bscore_variables.scss</code> um die Zeilen:</li>
</ul>



<pre class="wp-block-code"><code>  $font-family-base: 'Noto sans', Verdana, sans-serif !default;
  $font-family-sans-serif: 'Noto Sans', Verdana, sans-serif, !default;
  $font-family-monospace: 'Noto Sans Mono', 'Courier New', monospace, !default;
  $font-family-code: 'Noto Sans Mono', 'Courier New', monospace, !default;
  $headings-font-family: 'EB Garamond', Garamond, serif !default;
  $display-font-family: 'EB Garamond', Garamond, serif !default;</code></pre>



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



<p><em>Schriften</em> sind — begrifflich und inhaltlich gesehen — <em>ein weites Feld</em><sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_1_6186" id="identifier_1_6186" class="footnote-link footnote-identifier-link" title="vgl. https://kinsta.com/de/blog/html-fonts/">1</a></sup>:</p>



<p>In der Typografie ist es üblich zwischen Serifen-Schriften und serifenlosen Schriften zu unterscheiden. Serifenschriften seien — heißt es — für gedruckten Fließtext besser, weil sie durch ihre horizontalen Verlängerungen am Buchstaben das Auge besser führen. Im Web galt dagegen lange, dass seriflose Schriften am Bildschirm lesebarer seien. Je feiner aber die Bildschirme über die Zeit wurden, desto feiner ließen sich auch die Serifen darstellen. Das Auge ermüdete weniger. Und so wird heute gesagt, es gäbe von der Lesbarkeit her <a href="https://www.website-freiburg.de/leitfaden_fuer_schrift_kombinationen_auswahl_der_besten_webfonts_und_schriftarten_fuer_deine_website/">keinen wirklich Unterschied mehr</a>: Serifenschriften und serifenlose Schriften können gleichermaßen verwendet werden.</p>



<p>Für alles nur eine einzige Schrift zu verwenden, langweilt allerdings. Wenigstens die Überschriften und die Textkörper sollten sich unterscheiden. Andererseits reduzieren zu viele Schriften — der Unruhe im Gesamtbild wegen — die Lesbarkeit. Und Lesbarkeit und unmittelbare Wahrnehmbarkeit ist nun einmal der Qualitätsmaßstab. So arbeitet die moderne Web-Designerin mit Paaren, mit einem Font für die Überschrift, einem für den Fließtext. Und eben deshalb werden uns heute so oft <a href="https://www.fontpair.co/all">Fontpaare</a> ‘empfohlen’, bei denen die Fonts doch recht <a href="https://www.pagecloud.com/blog/best-google-fonts-pairings">wild kombiniert</a> werden.</p>



<p>In diesem Kontext wichtig ist auch die Unterscheidung zwischen <em>font-familiy</em> und <em>font-face</em>. Mit der CSS-Anweisung <code>font-family: XYZ;</code> teilen wir dem Browser — ungenau gesprochen — mit, dass er den Text in einem HTML-Tag mit dem Font <em>XYZ</em> darstellen solle. Tatsächlich weisen wir ihn aber an, den Text mit einem passenden Font aus der <strong>Font-Familie</strong> <em>XYZ</em> darzustellen. Mit der CSS-Anweisung <code>@font-face {...}</code><sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_2_6186" id="identifier_2_6186" class="footnote-link footnote-identifier-link" title="vgl. https://www.w3schools.com/cssref/css3_pr_font-face_rule.php">2</a></sup> haben wir ihm zuvor gesagt, dass eine bestimmte durchgestaltete Schrift aus einer bestimmten Schriftfamilie (<code>font-family: XYZ</code>) mit einem bestimmten Stil (<code>font-style: [normal|italic]</code>) und einer bestimmten Stärke (<code>font-weight: [&lt;400&lt;...&lt;700&lt;]</code>) zur Verfügung steht und wo er sie findet. Es ist dann Aufgabe des Browsers, die für eine bestimmte Stelle im HTML-Quelltext am besten passende Schrift konkret herauszusuchen. Denn er muss ja nicht nur die Schrift selbst darstellen, sondern auch die Spezifikationen <em>normal, italic, bold, bold-italic</em> berücksichtigen.<sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_3_6186" id="identifier_3_6186" class="footnote-link footnote-identifier-link" title="vgl. https://technicalcommunicationcenter.com/2020/06/10/whats-a-font-font-family-typeface-font-face/">3</a></sup></p>



<p>Wenn ein spezifizierter Font doch nicht zu Verfügung steht — etwa, weil der Browser ihn nicht hat herunterladen oder verstehen können -, dann wählt der Browser einen anderen, möglichst ‘ähnlichen’ Font aus seinem Bestand. Und ‘ähnlich’ meint hier nur, ob es sich dabei auch um einen serifenlosen Font oder auch um eine serifenlose Schrift handelt. Wenn für die anderen geforderten Eigenschaften kein genau passender Font einer Familie bereitsteht, kann der Browser diese Eigenschaften ‘herstellen’, indem er den gewählten Font rechnerisch kippt oder verstärkt. Solche ‘berechneten’ Schriftypen sehen aber schlechter aus, als die explizit so gestalteten.<sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_4_6186" id="identifier_4_6186" class="footnote-link footnote-identifier-link" title="Deshalb ist es wichtig, die gewünschte Schriftfamilie mindestens in den Stärken '400' und '700' und die jeweils in den Typen 'regular' und 'italic' bereitzustellen.">4</a></sup></p>



<p>Im Prinzip kann die Web-Designerin also nicht sicher sein, wie ihr Text auf dem Rechner einer Leserin tatsächlich aussieht. Um die Wahrscheinlichkeit zu erhöhen, dass die Designerin ihrer Leserin das liefern kann, was sie vorhat, dürfen in der CSS-Anweisung <code>font-family: XYZ;</code> mehrere Font-Familien kombiniert werden — bis hin zur generischen Familie <code>serif</code>, <code>sans-serif</code> oder <code>monospace</code>. Der Browser sichert zu, — für jeden Buchstaben — den ersten Font aus einer der Familien zu nehmen, mit dem er den Buchstaben wie gefordert darstellen kann. Ob und wie gut das klappt, hängt auch von Art und Güte des Browsers ab. Und um der Designerin noch mehr Gewissheit zu bieten, ist das Konzept der <em>Web Safe Fonts</em> entstanden<sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_5_6186" id="identifier_5_6186" class="footnote-link footnote-identifier-link" title="vgl. https://www.w3schools.com/cssref/css_websafe_fonts.php">5</a></sup>: Fonts, von denen frau weiß, dass sie auf den Geräten (meistens) zur Verfügung stehen. Aus diesen wählt sie ersatzweise die, die ihren Designvorstellungen zwar nicht optimal, aber noch gut gerecht werden.</p>



<p>Damit entsteht eine Strategie, Google-Fonts lokal zu integrieren<sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_6_6186" id="identifier_6_6186" class="footnote-link footnote-identifier-link" title="Die Alternative wäre, die Fonts fallweise direkt von Google-Font-Servern hinzuladen zu lassen. Das erleichtert Deine Arbeit. Und kompliziert Dein Datenschutzkonzept: Denn beim Herunterladen fragt Google Nutzerdaten ab, also die Deiner Leserin. Das verursacht Deine Site. Mithin müsstest in Deinem Datenschutzkonzept darauf hinweisen. Besser also, Du lädst die Fonts selbst herunter, integrierst sie in Deine Site und lieferst sie selbst mit aus.">6</a></sup>:</p>



<p>Wir entscheiden uns für eine Font-Paar und nutzen — wie von <em>bootScore</em> empfohlen — den <a href="https://gwfh.mranftl.com/fonts">google-webfonts-helper</a>, um die entsprechenden Google-Fonts herunterzuladen und die auch generierten <code>@font-face</code>-Anweisungen in Datei <code>scss/_bscore_custom.scss</code> einzufügen.</p>



<p>In der Datei <code>scss/_bscore_variables.scss</code> legen wir dann fest, wofür die Schriften überhaupt verwendet werden sollen. Dazu nutzen wir die <em>Boostrap</em>-Methodik:</p>



<p>Bei <em>Bootstrap</em> legen wir über die Variable <code>$font-family-base</code> die ‘Hauptschrift’ fest. Das kann die Familie einer Serifenschrift oder einer serifenlosen Schrift sein. Über die Variable <code>$font-family-sans-serif</code> legen wir die serifenlosen Hauptschrift fest. Eine Variable <code>$font-family-serif</code> gibt es nicht. Wollen wir für die Überschriften eine andere Familie nehmen, als die der generellen Hauptschrift, wären dafür die Variablen <code>$headings-font-family</code> und <code>$display-font-family</code> zuständig. So lassen sich alle Kombinationen einfach abbilden.</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, hat Web-Designerin 
  <a href="https://karsten-reincke.de/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> die Frage einer 
  <a href="https://karsten-reincke.de/ganz-ohne-verwischte-bilder/">guten Bebilderung</a> beantwortet, kann sie entspannt 
  <a href="https://karsten-reincke.de/zwei-auf-einen-streich/">Tags und Wolken</a> in ihre Site einbinden, ihre 
  <a href="https://karsten-reincke.de/masonry-ueberblick/">Überblicksseite</a> 
  <a href="https://karsten-reincke.de/masonry-mit-drei-spalten/">verbessern</a> und 
  <a href="https://karsten-reincke.de/eine-eigene-landingpage/">eine eigene Landingpage</a> gestalten. 
  Ob die entstandene <a href="https://karsten-reincke.de/weg-was-stoert/">Fülle</a> der eigenen Leserin wirklich 
  nutzt, ob es nicht <a href="https://karsten-reincke.de/kontext-sensitive-sidebars/">schlanker</a> geht und 
  <a href="https://karsten-reincke.de/verschlankte-landingpage/">wie</a>, ob 
  <a href="https://karsten-reincke.de/dezente-post-verlinkung/">dezentere Verweise</a> und 
  <a href="https://karsten-reincke.de/passende-web-fonts/">spezielle Fonts</a> auch 
  <a href="https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/">für besondere Anlässe</a> 
  die Lesbarkeit erhöhen, all das gilt es zu bedenken. Das tut auch dieser Post.</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_6186" class="footnote">vgl. <a href="https://kinsta.com/de/blog/html-fonts/">https://kinsta.com/de/blog/html-fonts/</a></li><li id="footnote_2_6186" class="footnote">vgl. <a href="https://www.w3schools.com/cssref/css3_pr_font-face_rule.php">https://www.w3schools.com/cssref/css3_pr_font-face_rule.php</a></li><li id="footnote_3_6186" class="footnote">vgl. <a href="https://technicalcommunicationcenter.com/2020/06/10/whats-a-font-font-family-typeface-font-face/">https://technicalcommunicationcenter.com/2020/06/10/whats-a-font-font-family-typeface-font-face/</a></li><li id="footnote_4_6186" class="footnote">Deshalb ist es wichtig, die gewünschte Schriftfamilie mindestens in den Stärken ‘400’ und ‘700’ und die jeweils in den Typen ‘regular’ und ‘italic’ bereitzustellen.</li><li id="footnote_5_6186" class="footnote">vgl. <a href="https://www.w3schools.com/cssref/css_websafe_fonts.php">https://www.w3schools.com/cssref/css_websafe_fonts.php</a></li><li id="footnote_6_6186" class="footnote">Die Alternative wäre, die Fonts fallweise direkt von Google-Font-Servern hinzuladen zu lassen. Das erleichtert Deine Arbeit. Und kompliziert Dein Datenschutzkonzept: Denn beim Herunterladen fragt Google Nutzerdaten ab, also die Deiner Leserin. Das verursacht Deine Site. Mithin müsstest in Deinem Datenschutzkonzept darauf hinweisen. Besser also, Du lädst die Fonts selbst herunter, integrierst sie in Deine Site und lieferst sie selbst mit aus.</li></ol><p>The post <a href="https://karsten-reincke.de/passende-web-fonts/">Passende Web-Schriften</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/passende-web-fonts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
