staging.inyokaproject.org

8. September 2024

Als mein Tuxedo AURA 15 Gen2 mit AMD Ryzen 7 5700U  Prozessor ein mechanisches Problem bekam und ich es zur Reparatur schicken musste, stand ich vor einem Dilemma: Was mache ich ohne mein gewohntes System?

Glücklicherweise habe ich die SSD M.2 aus dem Tuxedo ausgebaut und bin auf die Idee gekommen, diese am deutlich älteren Lenovo T480 mit WQHD-Display anzuschließen, das ich als Ersatzgerät nutze.

 

 

 

 

Von lewing@isc.tamu.edu Larry Ewing and The GIMP, Attribution, https://commons.wikimedia.org/w/index.php?curid=80930

 

 

Der große Test: Kann ich einfach die SSD über den USB3-Port an den Lenovo anschließen und booten? Immerhin sind die Unterschiede der Hardware nicht zu übersehen:

  • Der Tuxedo hat einen AMD Ryzen 7 5700U Prozessor, während der Lenovo mit einem Intel Core i5-8350U läuft.
  • Die Grafikkarten, die WiFi-Module und auch die Sound-Architektur sind unterschiedlich.

Und es funktioniert!

Trotz dieser Hardwareunterschiede bootete mein Debian Trixie auf dem Lenovo T480 ohne Probleme. Es war so, als ob das Betriebssystem gar nicht bemerkt hätte, dass es sich plötzlich in einer komplett anderen Umgebung befindet. WLAN, Grafik, Sound – alles funktionierte sofort und ohne zusätzliche Treiberinstallation oder Anpassungen.

Natürlich verstehe ich, dass das Konzept der Distribution hauptverantwortlich ist, denn die notwendigen Module sind immer mit an Bord, wenn man nicht selbst eingreift ...

Warum ich Linux (noch mehr) liebe

Dieser Moment hat mir erneut gezeigt, warum ich Linux und freie Open-Source-Software so liebe:

Sie ist flexibel, anpassungsfähig und läuft auf verschiedenster Hardware zuverlässig. Wo bei anderen Betriebssystemen oft lange Treiberinstallationen und nervige Konfigurationen nötig sind, geht bei Linux einfach alles reibungslos.

Ich bin begeistert und noch mehr davon überzeugt, dass Freie Software der richtige Weg ist. Sie bietet mir nicht nur die Freiheit, mein System so anzupassen, wie ich es will, sondern auch die Zuverlässigkeit, die man sich von einem Betriebssystem wünscht.

Siehe https://zockertown.de/s9y/index.php?/archives/1465-Warum-ich-Linux-und-Open-Source-so-liebe-Freie-Software.html

 

7. September 2024

Der Enterprise Policy Generator richtet sich an Administratoren von Unternehmen und Organisationen, welche Firefox konfigurieren wollen. Mit dem Enterprise Policy Generator 6.1 ist nun ein Update erschienen.

Enterprise Policy Generator

Download Enterprise Policy Generator für Firefox

Die Enterprise Policy Engine erlaubt es Administratoren, Firefox über eine Konfigurationsdatei zu konfigurieren. Der Vorteil dieser Konfigurationsdatei gegenüber Group Policy Objects (GPO) ist, dass diese Methode nicht nur auf Windows, sondern plattformübergreifend auf Windows, Apple macOS sowie Linux funktioniert.

Der Enterprise Policy Generator hilft bei der Zusammenstellung der sogenannten Enterprise Policies, sodass kein tiefergehendes Studium der Dokumentation und aller möglichen Optionen notwendig ist und sich Administratoren die gewünschten Enterprise Policies einfach zusammenklicken können.

Neuerungen vom Enterprise Policy Generator 6.1

Technische Verbesserungen der Erweiterung

Der Enterprise Policy Generator verfolgt einen selbst generierenden Ansatz, bei dem sich der Aufbau der Oberfläche, das Generieren der Datei policies.json, das Speichern und Laden sowie das Exportieren und Importieren von Konfigurationen vollständig automatisiert aus einer einzelnen internen Konfigurationsdatei ableitet. Zur Unterstützung neuer Unternehmensrichtlinien, welche sich bisher nicht abbilden ließen, wurde die Unterstützung für mehrere zusätzliche Richtlinien-Typen ergänzt.

Für URL-Felder wurde die Option hinzugefügt, eine sichere Verbindung (https://) zu erfordern, außerdem können Infolinks jetzt an weiteren Stellen ergänzt werden. Für Felder mit mehreren möglichen Werten, die per Plus-Symbol hinzugefügt werden können, ist es nun möglich, auch den letzten Wert wieder zu entfernen.

Neue und erweiterte Unternehmensrichtlinien

Neu ist die Unterstützung für die ManagedBookmarks-Richtlinie, um Lesezeichen zu konfigurieren, welche im Gegensatz zur bereits bestehenden Bookmarks-Richtlinie vom Benutzer weder verändert noch gelöscht werden können. Die Unterstützung für Lesezeichen-Ordner folgt mit einem zukünftigen Update.

Ebenfalls neu ist die Unterstützung für die AllowedDomainsForApps-Richtlinie, um Domains festzulegen, welche auf Google Workspace zugreifen dürfen, sowie für die AutoLaunchProtocolsFromOrigins-Richtlinie, um eine Liste externer Protokolle festzulegen, die von aufgelisteten Quellen aus verwendet werden können, ohne dass der Benutzer dazu aufgefordert wird.

Die OverrideFirstRunPage-Richtlinie wurde aktualisiert, um mehrere URLs zu erlauben. Bestehende Konfigurationen wurden automatisch auf die neue Version migriert.

Die Beschreibung der install_sources-Eigenschaft der ExtensionSettings-Richtlinie wurde überarbeitet und ein Infolink ergänzt, um klar zu machen, dass sogenannte Match Patterns in URLs erlaubt sind.

Optionen, welche noch den alten Weg nutzten, Einstellungen für about:config zu verändern, verwenden jetzt die neue Syntax der Preferences-Richtlinie, sodass hier keine Mischung aus alter und neuer Richtlinie mehr stattfindet.

Fehlerbehebungen

Ein großer Schwerpunkt lag auf der Behebung von Problemen in Zusammenhang mit der Handlers-Richtlinie, insbesondere dann, wenn diese in einer Konfiguration gespeichert und dann wieder aus der Konfiguration heraus geladen worden ist.

Außerdem war es bei der Preferences-Richtlinie trotz Validierung möglich, Optionen mit nicht erlaubtem Optionsnamen in einer Konfiguration zu speichern. Wurde eine solche Konfiguration dann geladen, wurde der ungültige Optionsname nicht beanstandet, obwohl Firefox die entsprechende Option nicht unterstützt.

Ausblick

Damit ist die Unterstützung aller Unternehmensrichtlinien bis einschließlich Firefox 78 komplett. Einzige Ausnahme ist die Ordner-Unterstützung für die MangedBookmarks-Richtlinie, welche nachgereicht werden wird. Schon bald wird der Enterprise Policy Generator 6.2.0 erscheinen, welcher die Unterstützung für alle neuen Richtlinien ergänzen wird, welche während der Lebenszeit von Firefox 91 dazugekommen sind. Danach folgen Enterprise Policy Generator 6.3.0 (Firefox 102) und Enterprise Policy Generator 6.4.0 (Firefox 115), ehe schließlich der Enterprise Policy Generator 7.0.0 Firefox 128 oder höher voraussetzen wird.

Entwicklung unterstützen

Wer die Entwicklung des Add-ons unterstützen möchte, kann dies tun, indem er der Welt vom Enterprise Policy Generator erzählt und die Erweiterung auf addons.mozilla.org bewertet. Auch würde ich mich sehr über eine kleine Spende freuen, welche es mir ermöglicht, weitere Zeit in die Entwicklung des Add-on zu investieren, um zusätzliche Features zu implementieren.

Der Beitrag Firefox: Enterprise Policy Generator 6.1 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

5. September 2024

Es gab mal eine Zeit, da waren URL shortener wie bit.ly und Ähnliche eine technische Notwendigkeit, weil Netzwerke wie Twitter eine sehr begrenzte Zeichenbegrenzung hatten.

Da ich hauptsächlich im Fediverse mit Friendica unterwegs bin, war eine Zeichenbegrenzung nie ein Thema. Auch wenn ich Lust hätte in einem Post die Bibel mehrfach abzutippen und zu kommentieren (Jesus likes this).

Also: warum nutze ich seit einiger Zeit wieder einen URL Shortener wie yourls ?

Drei Gründe:

  1. Im Internet gibt es das Recht auf Vergessen. Das wird dann aber nicht wirklich von vielen respektiert.
  2. Ich teile oft tolle Podcast und Videobeiträge der Öffentlich Rechtlichen, die leider nur eine sehr begrenzte Zeit online sein dürfen, bevor sie dann wieder gelöscht werden müssen. Depublizierungspflicht
  3. Ich lösche die meisten meiner Beiträge nach 90 Tagen. Danach liest das sowieso kein Mensch mehr, sondern nur noch irgendwelche Bots und andere Crawler.

Durch die Nutzung eines selbst gehosteten URL Shorteners habe ich selbst das Recht auf Vergessen in der Hand, denn die URLs verfallen auch nach einer von mir gewählten Zeit, also sind dann nicht mehr gültig und laufen ins Leere, bzw auf eine 404 Meldung.

PS: Das Plugin „expiry“ sorgt dafür, dass Einträge wieder entfernt werden. Hier ist die maximal Dauer auf 100 Tage gedeckelt. Wer eine längere Zeitdauer haben möchte, muss die Dauer in der Datei plugin.php direkt ändern.

Views: 13

The post Warum wieder ein URL Shortener? first appeared on Dem hoergen Blog.

4. September 2024

Die MZLA Technologies Corporation hat mit Thunderbird 128.2 ein planmäßiges Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 128.2

Mit dem Update auf Thunderbird 128.2 hat die MZLA Technologies Corporation ein planmäßiges Update für seinen Open Source E-Mail-Client veröffentlicht. Das Update bringt diverse Fehlerbehebungen und Verbesserungen unter der Haube, welche sich in den Release Notes (engl.) nachlesen lassen. Auch wurden diverse Sicherheitslücken geschlossen.

Der Beitrag Thunderbird 128.2 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

3. September 2024

Mozilla hat Firefox 130 für Windows, Apple macOS und Linux veröffentlicht. Dieser Artikel fasst die wichtigsten Neuerungen zusammen – wie immer auf diesem Blog weit ausführlicher als auf anderen Websites.

Download Mozilla Firefox für Microsoft Windows, Apple macOS und Linux

Verbesserungen der Übersetzungsfunktion

Firefox besitzt eine Übersetzungsfunktion für Websites, welche im Gegensatz zu Cloud-Übersetzern wie Google Translate lokal arbeitet, die eingegebenen Texte also nicht an einen fremden Server sendet. Dabei können wahlweise komplette Websites oder nur markierter Text übersetzt werden. Die Übersetzung von markiertem Text steht ab sofort auch unmittelbar nach einer vollständigen Website-Übersetzung zur Verfügung.

Firefox 130

Neben title und placebolder werden jetzt noch eine ganze Reihe weiterer HTML-Attribute übersetzt. Außerdem wurde die Übersetzungsqualität beim Vorkommen sogenannter bedingter Trennstriche verbessert.

Leichterer Vorab-Zugang zu kommenden Features

Im neuen Abschnitt „Firefox Labs“ der Firefox-Einstellungen lassen sich verschiedene Browser-Funktionen und Plattform-Features vorab aktivieren, an denen Mozilla arbeitet und deren standardmäßige Aktivierung für einen späteren Zeitpunkt geplant ist. Auf diese Weise kann Mozilla zusätzliches Feedback einholen, bevor neue Funktionen fertig sind und flächendeckend ausgerollt werden. Zwar gibt es mit about:config bereits einen Mechanismus zur Vorab-Aktivierung neuer Features, allerdings müssen die entsprechenden Optionsnamen dafür bekannt sein. Die Seite „Firefox Labs“ macht bestimmte Funktionen besser sichtbar und gibt dem Nutzer zusätzlich eine Beschreibung, teilweise auch mit erklärenden Links.

Firefox 130

KI-Chatbots

Eines der experimentellen neuen Features ist eine Chatbot-Integration. Dabei stehen Google Gemini, ChatGPT, HuggingChat, Anthropic Claude sowie Le Chat Mistral zur Verfügung. Die Chatbots können direkt über die Sidebar genutzt werden.

Über das Kontextmenü oder, falls über eine weitere Option aktiviert, eine Schaltfläche nach dem Markieren von Text können auch direkt Funktionen zur Zusammenfassung des markierten Inhalts, zur Vereinfachung der Sprache sowie zu einem Abfragen des Inhalts ausgewählt werden.

Firefox 130

Automatischer Bild-im-Bild-Modus bei Tabwechsel

Der sogenannte Bild-im-Bild-Modus erlaubt es, Videos von der Website loszulösen und über andere Tabs und sogar Anwendungen zu legen. Innerhalb des losgelösten Video-Fensters kann die Wiedergabe pausiert und wieder gestartet werden, man sieht den Wiedergabe-Fortschritt und kann an eine andere Stelle des Videos springen, ein Wechsel in den Vollbildmodus ist möglich, der Ton kann aus- und wieder eingeschaltet werden, die Lautstärke kann geändert werden und auch Untertitel werden auf vielen Plattformen unterstützt.

Über die „Firefox Labs“ kann eine neue Funktion aktiviert werden. Wird ein Video auf einer Website wiedergegeben, startet Firefox damit automatisch den Bild-im-Bild-Modus, wenn der Tab gewechselt wird. Sobald man wieder in den ursprünglichen Tab zurückkehrt, wird der Bild-im-Bild-Modus ebenso automatisch wieder beendet.

Automatischer Bild-im-Bild-Modus für Videos, Firefox 130

Lokale KI generiert Alternativtexte für Bilder in PDF-Dateien

PDF-Dateien betrachten ist in jedem Browser möglich. Firefox gehört zu den wenigen Browsern mit einem PDF-Editor. So kann auf PDF-Dateien gezeichnet werden, es können aber auch Texte und Bilder eingefügt werden.

Dabei besitzt Firefox bereits die Möglichkeit, einen Alternativtext für eingefügte Bilder zu hinterlegen. Dies ist aus Gründen der Barrierefreiheit wichtig, damit die Bildinformation auch für Menschen mit eingeschränkten Sehfähigkeiten bis hin zur Blindheit zugänglich bleibt.

Eine lokale KI kann den Anwender ab Firefox 130 dabei unterstützen. Damit schlägt Firefox basierend auf dem Bildinhalt automatisch einen Beschreibungstext für das hinterlegte Bild vor. Lokale KI bedeutet, dass sich Firefox das entsprechende KI-Modell bei der ersten Verwendung des Features herunterlädt und die Arbeit dann auf dem Gerät des Anwenders geschieht. Die eingefügten Bilder werden also zu keinem Zeitpunkt an Mozilla oder eine Drittanbieter-Cloud gesendet.

Firefox 130

Diese Neuerung wird schrittweise im Laufe der kommenden Wochen für alle Nutzer ausgerollt werden.

Zur manuellen Aktivierung müssen drei Schalter per about:config auf true gesetzt werden: browser.ml.enable, pdfjs.enableAltText und pdfjs.enableUpdatedAddImage. Die Vorschläge werden derzeit noch in englischer Sprache generiert.

Wetter und Hintergründe für Firefox-Startseite

Die Firefox-Startseite lässt sich jetzt auf Wunsch mit einem Hintergrundbild oder einer Hintergrundfarbe nutzen.

Für Nutzer in den USA und Kanada wird auf der Firefox-Startseite standardmäßig das Wetter angezeigt. Aber auch alle anderen können dieses Feature via about:config aktivieren, indem der Schalter browser.newtabpage.activity-stream.system.showWeather per Doppelklick auf true gesetzt wird.

Firefox 130

Personalisierung der Pocket-Empfehlungen auf Firefox-Startseite

Ein weiteres neues Feature für die Firefox-Startseite ist die optionale Personalisierung der Pocket-Empfehlungen. Dabei stehen die folgenden Kategorien zur Auswahl: Geschäftliches, Unterhaltung, Essen, Gesundheit, Finanzen, Politik, Sport, Technik, Reisen, Wissenschaft sowie Life-Hacks.

Firefox 130

Diese Neuerung wird schrittweise im Laufe der kommenden Wochen für alle Nutzer ausgerollt werden.

Nutzer in den USA, Kanada und Großbritannien erhalten dieses Feature zuerst. Aber auch alle anderen können dieses Feature via about:config aktivieren, indem der Schalter browser.newtabpage.activity-stream.discoverystream.topicSelection.enabled per Doppelklick auf true gesetzt wird.

Sonstige Endnutzer-Neuerungen von Firefox 130

Der sogenannte Overscroll-Effekt, der in Firefox auf Windows und macOS bereits seit langer Zeit aktiviert ist, ist nun auch auf Linux standardmäßig aktiviert. Dieser Effekt beschreibt das Verhalten, welches zu beobachten ist, wenn man über den Seitenanfang respektive das Seitenende hinaus scrollt.

Das bereits lange bestehende Problem, dass der Eintrag „Kopieren“ im Kontextmenü unter bestimmten Umständen manchmal ausgegraut war, wurde behoben.

Erweiterungen lösen nicht länger auf Websites den Berechtigungs-Indikator (blauer Punkt) in der Schaltfläche für das Erweiterungs-Menü aus, wenn die entsprechende Host-Berechtigung als optional deklariert ist.

Die Schaltfläche für die Aktivierung des Bild-im-Bild-Modus wurde für Hulu anders positioniert, um nicht hinter anderen Elementen des Videoplayers verdeckt zu sein.

Die Wiedergabe von AV1-Videos auf Windows-Systemen mit ARM-CPU wurde aktiviert.

Die Funktion zur Aufnahme eines Bildschirmfotos kann jetzt auch Elemente auswählen, welche sich innerhalb des sogenannten Shadow DOMs einer Website befinden.

Die Texte der Einstellungen für den Nur-HTTPS-Modus wurden vereinfacht und stellen nun klar, dass Firefox auch bei abgeschaltetem Nur-HTTPS-Modus zunächst eine Verbindung via HTTPS versucht.

Mehr Sicherheit für Firefox-Nutzer

Auch in Firefox 130 wurden wieder mehrere Sicherheitslücken geschlossen. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 130 daher für alle Nutzer dringend empfohlen.

Verbesserungen der Entwicklerwerkzeuge

Im Responsive Design Modus werden nicht länger automatisch der User-Agent und die Touch-Simulation zurückgesetzt, wenn man die Fenstergröße ändert.

Bei geöffneten Entwicklerwerkzeugen zeigt Firefox während des Veränderns der Fenstergröße die aktuelle Fenstergröße in der oberen rechten Ecke an.

Per Doppelklick auf ein Element im Inspektor lassen sich dort jetzt auch zusätzliche Attribute ergänzen.

Verbesserungen der Webplattform

Das name-Attribut des <details>-Elements erlaubt die Gruppierung von Elementen, bei denen nur ein Element einer Gruppe gleichzeitig offen sein kann. Ein Anwendungsfall hierfür sind Akkordeons, ohne dass dafür JavaScript benötigt wird.

Die hyphens-Eigenschaft in CSS funktioniert nun auch für Tschechisch und Slowakisch korrekt.

Firefox 130 unterstützt außerdem die WebCodecs API.

Dies war nur eine kleine Auswahl der Verbesserungen der Webplattform. Eine vollständige Auflistung lassen sich in den MDN Web Docs nachlesen.

Der Beitrag Mozilla veröffentlicht Firefox 130 erschien zuerst auf soeren-hentzschel.at.

2. September 2024

In diesem Beitrag erkläre ich kurz, was Ansible Lint ist und demonstriere dessen Anwendung am Beispiel meiner Ansible Collection tronde/nextcloud.

Er richtet sich primär an Personen, die mit Ansible Lint noch nicht vertraut sind. Linting-Profis werden vermutlich keine neuen Erkenntnisse gewinnen.

Was ist Ansible Lint und wofür ist es gut?

Lint (englisch für „Fussel“) ist eine Software zur statischen Code-Analyse. Davon abgeleitet hat sich das Verb linten (englisch to lint) für das Durchführen der statischen Code-Analyse etabliert.

https://de.wikipedia.org/wiki/Lint_(Programmierwerkzeug)

Dem obigen Zitat und der Projektdokumentation folgend, ist Ansible Lint dementsprechend ein Werkzeug zur statischen Code-Analyse von Ansible Playbooks, Roles und Collections. Mit der Anwendung dieses Werkzeugs auf die eigenen Ansible-Inhalte kann sichergestellt werden, dass diese gängigen Konventionen und Standards entsprechen.

Wie wird Ansible Lint installiert?

Die Dokumentation beschreibt verschiedene Installationsverfahren. Ich habe ansible-lint als Bestandteil der Ansible Development Tools (ADT) installiert. Dies ist ein Werkzeugkasten mit weiteren Programmen wie z.B. `ansible-core` und Ansible Molecule, welche ich für die Entwicklung meiner Ansible Collection nutze.

Auf meiner Fedora Workstation habe ich die ADT wie folgt installiert:

~]$ mkdir venv
~]$ cd venv
venv]$ ]$ python -m venv adt
venv]$ source adt/bin/activate
(adt) venv]$ pip install pip --upgrade
Requirement already satisfied: pip in ./adt/lib64/python3.12/site-packages (23.3.2)
Collecting pip
  Using cached pip-24.2-py3-none-any.whl.metadata (3.6 kB)
Using cached pip-24.2-py3-none-any.whl (1.8 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 23.3.2
    Uninstalling pip-23.3.2:
      Successfully uninstalled pip-23.3.2
Successfully installed pip-24.2
(adt) venv]$  pip install ansible-dev-tools
Collecting ansible-dev-tools
  Using cached ansible_dev_tools-24.7.2-py3-none-any.whl.metadata (11 kB)
… Ausgabe gekürzt
(adt) venv]$ adt --version
ansible-builder                          3.1.0
ansible-core                             2.17.3
ansible-creator                          24.7.1
ansible-dev-environment                  24.7.0
ansible-dev-tools                        24.7.2
ansible-lint                             24.7.0
ansible-navigator                        24.8.0
ansible-sign                             0.1.1
molecule                                 24.8.0
pytest-ansible                           24.8.0
tox-ansible                              24.8.0

Ansible Lint liefert eine ganze Reihe von Profilen mit, welche Autoren unterstützen, die Code-Qualität schrittweise zu verbessern. Der Befehl ansible-lint --list-profiles gibt die verfügbaren Profile mit einer Beschreibung aus.

Ich werde im Folgenden mit dem Profil shared arbeiten, welches für Autoren gedacht ist, die ihre Collection auf https://galaxy.ansible.com veröffentlichen möchten.

Eine Collection linten

Bevor es zur Sache geht, wechsel ich in das Projektverzeichnis meiner Ansible Collection und erstelle einen neuen Branch, mit dem Befehl git checkout -b lint. Die in meinem Repo vorhandene Datei .ansible-lint-ignore lösche ich, da ich im folgenden alle Fehler und Regelverstöße sehen möchte. Zu Beginn stellt sich mein Arbeitsverzeichnis wie folgt dar:

(adt) nextcloud]$ git status
On branch lint
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	deleted:    .ansible-lint-ignore

no changes added to commit (use "git add" and/or "git commit -a")

Das Programm ansible-lint besitzt mit der Option --fix die Fähigkeit, Fehler automatisch zu korrigieren und auch YAML-Dateien neu zu formatieren. Der folgende Code-Block umfasst die gekürzte Ausgabe, wenn das Kommando ansible-lint --profile=shared --fix im Arbeitsverzeichnis ausgeführt wird.

(adt) nextcloud]$ ansible-lint --profile=shared --fix
WARNING  Listing 37 violation(s) that are fatal
galaxy[no-changelog]: No changelog found. Please add a changelog file. Refer to the galaxy.md file for more info.
galaxy.yml:1

var-naming[pattern]: Variables names should match ^[a-z_][a-z0-9_]*$ regex. (NC_HTML) (vars: NC_HTML)
roles/backup_restore_nextcloud/defaults/main.yml:4

…

risky-file-permissions: File permissions unset or incorrect.
roles/backup_restore_nextcloud/tasks/main.yml:18 Task/Handler: Copy backup files to container host

no-changed-when: Commands should not change things if nothing needs doing.
roles/backup_restore_nextcloud/tasks/main.yml:40 Task/Handler: Import tarball contents into an existing podman volume

no-changed-when: Commands should not change things if nothing needs doing.
roles/backup_restore_nextcloud/tasks/main.yml:54 Task/Handler: Export podman volumes to tarballs

var-naming[pattern]: Variables names should match ^[a-z_][a-z0-9_]*$ regex. (MYSQL_DATABASE) (vars: MYSQL_DATABASE)
roles/deploy_nextcloud_with_mariadb_pod/defaults/main.yml:13

…

Read documentation for instructions on how to ignore specific rule violations.

Modified 6 files.
                     Rule Violation Summary                      
 count tag                    profile rule associated tags       
    33 var-naming[pattern]    basic   idiom                      
     1 risky-file-permissions safety  unpredictability           
     1 galaxy[no-changelog]   shared  metadata                   
     2 no-changed-when        shared  command-shell, idempotency 

Failed: 37 failure(s), 0 warning(s) on 25 files. Profile 'shared' was required, but 'min' profile passed.

Obige Ausgabe:

  • Benennt Funde mit Pfadangabe und Zeilennummer
  • Führt 37 Fehler auf, inkl. der Regeln, die nicht eingehalten werden; Beispiele
    • galaxy[no-changelog]: No changelog found. Please add a changelog file. Refer to the galaxy.md file for more info.
    • risky-file-permissions: File permissions unset or incorrect.
    • no-changed-when: Commands should not change things if nothing needs doing.
    • var-naming[pattern]: Variables names should match ^[a-z_][a-z0-9_]*$ regex.
  • Informiert, dass ansible-lint Änderungen an 6 Dateien vorgenommen hat

Mit git diff verschaffe ich mir einen Überblick, welche Änderungen ansible-lint vorgenommen hat. Dies sind in meinem Fall:

  • Quoting von Strings
  • Einrückung von Kommentaren

Als Nächstes sehe ich mir die übrigen Fehler der Reihe nach an. Die Dokumentation beinhaltet eine Übersicht mit Beschreibungen der einzelnen Regeln. Dies ist nützlich, wenn der kurze Text in der Ausgabe von ansible-lint nicht ausreichend ist.

galaxy[no-changelog]: No changelog found. Please add a changelog file.

Unter Galaxy: Changelog Details finden sich Hinweise, wie dieser Fehler zu beheben ist. Ich erstelle die leere Datei CHANGELOG.md im Wurzelverzeichnis meiner Collection und der Fehler ist abgestellt.

Natürlich werde ich diese Datei zukünftig nutzen, um die wichtigsten Änderungen zu dokumentieren. ;-)

risky-file-permissions: File permissions unset or incorrect.

Auch hier habe ich kurz in der Dokumentation unter risky-file-permissions nachgesehen. Den Fehler habe ich abgestellt, indem ich den Parameter mode: 0600 zum Task hinzugefügt habe.

Dies war ein Flüchtigkeitsfehler, wie er häufig passieren kann, wenn man seinen Code nicht konsequent überprüft. Ohne den Dateimode explizit zu setzen, kann dies zu unvorhersehbaren bzw. überraschenden Verhalten führen.

no-changed-when: Commands should not change things if nothing needs doing.

An zwei Stellen bin ich leider nicht herumgekommen, das ansible.builtin.command Modul zu verwenden, da kein natives Modul für diese Aufgabe existiert. Betrachtet man sich die beiden Tasks fällt auf, dass diese jedes Mal Daten verarbeiten werden. Sie sind nicht idempotent. Im Ergebnis können sie erfolgreich sein oder fehlschlagen, aber sie werden immer Daten verarbeiten und dadurch ändern.

 41     - name: Import tarball contents into an existing podman volume
 42       ansible.builtin.command:
 43         cmd: |
 44           podman volume import
 45           {{ item }} {{ backup_restore_nextcloud_import_path }}/{{ item }}.tar
 46       loop:
 47         - "{{ NC_HTML }}"
 48         - "{{ NC_APPS }}"
 49         - "{{ NC_CONFIG }}"
 50         - "{{ NC_DATA }}"
 51         - "{{ MYSQL_DATA }}"
 52            
 53 # I need to use the command module as the volume module lacks the functionality
 54 # to export podman volumes.
 55 - name: Export podman volumes to tarballs
 56   ansible.builtin.command:
 57     cmd: podman volume export {{ item }} --output {{ backup_restore_nextcloud_export_path }}/{{ item }}.tar
 58   loop:    
 59     - "{{ NC_HTML }}"
 60     - "{{ NC_APPS }}"
 61     - "{{ NC_CONFIG }}"
 62     - "{{ NC_DATA }}"
 63     - "{{ MYSQL_DATA }}"
 64   tags:    
 65     - never
 66     - backup

Um herauszufinden, wie ich ansible-lint zufriedenstellen kann, schaue ich wieder in der Doku unter no-changed-when nach. Nach der dortigen Beschreibung ist mein Fehler, dass ich den Rückgabewert des Kommandos nicht behandel. Daher registriere ich nun eine Variable je Task, die die Task-Ausgabe aufnimmt und prüfe den Rückgabewert. Ist der Rückgabewert gleich 0 wird der Task-Status auf changed gesetzt, ist der Rückgabewert ungleich 0 wird der Status entsprechend auf failed gesetzt. Das ganze sieht nun wie folgt aus:

 41     - name: Import tarball contents into an existing podman volume
 42       ansible.builtin.command:
 43         cmd: |
 44           podman volume import
 45           {{ item }} {{ backup_restore_nextcloud_import_path }}/{{ item }}.tar
 46       register: __import_tar_output
 47       changed_when: __import_tar_output.rc == 0
 48       failed_when: __import_tar_output.rc != 0
 49       loop:
 50         - "{{ NC_HTML }}"
 51         - "{{ NC_APPS }}"
 52         - "{{ NC_CONFIG }}"
 53         - "{{ NC_DATA }}"
 54         - "{{ MYSQL_DATA }}"
 55  
 56 # I need to use the command module as the volume module lacks the functionality
 57 # to export podman volumes.
 58 - name: Export podman volumes to tarballs
 59   ansible.builtin.command:
 60     cmd: podman volume export {{ item }} --output {{ backup_restore_nextcloud_export_path }}/{{ item }}.tar
 61   register: __import_tar_output
 62   changed_when: __import_tar_output.rc == 0
 63   failed_when: __import_tar_output.rc != 0
 64   loop:
 65     - "{{ NC_HTML }}"
 66     - "{{ NC_APPS }}"
 67     - "{{ NC_CONFIG }}"
 68     - "{{ NC_DATA }}"
 69     - "{{ MYSQL_DATA }}"
 70   tags:
 71     - never
 72     - backup

Collection-intern verwendete Variablen leite ich mit zwei Unterstrichen (‚_‘) ein, um mir zu verdeutlichen, dass diese nicht durch den Nutzer gesetzt werden und daher auch nicht im README.md oder defaults/main.yml dokumentiert sind.

var-naming[pattern]: Variables names should match ^[a-z_][a-z0-9_]*$ regex.

Hier brauche ich nicht weiter nachzuschlagen. Ich verstoße gegen diese Regel, da ich meine Variablen-Namen großgeschrieben habe. Die Ausgabe von ansible-lint zeigt dies deutlich:

var-naming[pattern]: Variables names should match ^[a-z_][a-z0-9_]*$ regex. (NC_HTML) (vars: NC_HTML)
roles/backup_restore_nextcloud/defaults/main.yml:4

Diese Meldungen lassen sich mit folgendem Bash-Einzeiler abstellen:

$ for text in $(cut -d':' -f 1 roles/deploy_nextcloud_with_mariadb_pod/defaults/main.yml | grep -v '^$\|^#\|---'); do find roles -type f -iname "*.yml" | xargs sed -i -e "s/$text/\L&/g"; done

Aus verschiedenen Gründen hebe ich mir die Überarbeitung für später auf und nutze die Meldung, um zu demonstrieren, wie man ansible-lint dazu bringt, bestimmte Fehler zu ignorieren.

Um Regeln für ausgewählte Dateien zu ignorieren, spezifiziert man den jeweiligen Dateinamen und den Namen der Regel in der Datei .ansible-lint-ignore, welche im Wurzelverzeichnis der Collection erstellt wird:

nextcloud]$ cat .ansible-lint-ignore 
roles/deploy_nextcloud_with_mariadb_pod/defaults/main.yml var-naming[pattern]
roles/backup_restore_nextcloud/defaults/main.yml var-naming[pattern]

Zweiter Durchgang mit ansible-lint

Damit habe ich alle Probleme, die im ersten Durchlauf von ansible-lint gefunden wurden, adressiert. Ein zweiter Durchlauf zeigt das Ergebnis meiner Arbeit:

(adt) nextcloud]$ ansible-lint --profile=shared
WARNING  Listing 33 violation(s) marked as ignored, likely already known
var-naming[pattern]: Variables names should match ^[a-z_][a-z0-9_]*$ regex. (NC_HTML) (vars: NC_HTML) (warning) # ignored
roles/backup_restore_nextcloud/defaults/main.yml:4

…Ausgabe gekürzt

WARNING  Listing 1 violation(s) that are fatal
yaml[octal-values]: Forbidden implicit octal value "0600"
roles/backup_restore_nextcloud/tasks/main.yml:22

Read documentation for instructions on how to ignore specific rule violations.

                Rule Violation Summary                 
 count tag                profile rule associated tags 
     1 yaml[octal-values] basic   formatting, yaml     

Failed: 1 failure(s), 33 warning(s) on 27 files. Profile 'shared' was required, but 'min' profile passed.

Die ignorierten Regelverstöße werden als Warnung weiterhin ausgegeben, nehmen jedoch keinen Einfluss auf die abschließende Bewertung. Dafür habe ich einen neuen Fehler (yaml[octal-values]) eingebaut. Nach dem aktuellen Regelwerk erfordern oktale Werte ein explizites Quoting, um als Strings verarbeitet zu werden.

Nachdem ich das Problem mit mode: '0600' behoben habe, endet ein weiterer Lauf von ansible-lint schlussendlich mit:

Passed: 0 failure(s), 33 warning(s) on 27 files. Profile 'shared' was required, but 'production' profile passed.

Damit erfüllt meine Collection aktuell sogar die Anforderungen des nächst höheren Profils production; allerdings nur, weil ich einige Regeln bewusst ignoriere. Daher ist aktuell noch nicht sichergestellt, dass meine Collection tatsächlich bei einem Import auf Ansible Galaxy akzeptiert wird.

Zusammenfassung

  • Ansible Lint ist ein Werkzeug zur statischen Analyse von Ansible Playbooks, Roles und Collections
  • Das Werkzeug unterstützt Autoren dabei, gängige Konventionen und Standards einzuhalten und die Qualität des eigenen Codes auf einem Mindest-Niveau zu halten
  • Ansible Lint bietet mehrere Profile für verschiedene Anwendungsfälle
  • Regeln können bei Bedarf ignoriert werden, was zwar das Ergebnis des Linting beeinflusst, die Qualität jedoch nicht steigert
  • Linting sollte fester Bestandteil des eigenen Entwicklungsworkflows sein und stets nach Änderungen durchgeführt werden

Ich persönlich führe ansible-lint gern in einem eigenständigen Schritt aus. Es besteht jedoch auch die Möglichkeit, dies in den verwendeten Editor, die genutzte IDE oder Molecule zu integrieren und bei Änderungen automatisch laufen zu lassen.

Ich freue mich, wenn euch dieser Artikel gefallen hat.

Quellen und weiterführende Links

1. September 2024

Die Entwickler der Kartenanwendung Organic Maps haben streiten sich derzeit mit F-Droid um sogenannte Anti-Features. F-Droid zensiert dabei Open-Source-Apps nach eigenwilligen Kriterien in seiner offiziellen App. Sogenannte Anti-Features bzw. auf Deutsch unerwünschte Merkmale. Anwender sollten daher auf alternative Clients wie Droid-ify, Neo Store oder Obtainium ausweichen.

Die aktuelle Auseinandersetzung (Diskussion auf Mastodon) entstand um eine Neufassung der unerwünschten Merkmale. Dazu muss man wissen, dass die F-Droid-Entwickler nicht nur ausschließlich Open-Source-Apps ausliefern, sondern den Entwicklern auch vorschreiben, wie diese ausgestaltet sein müssen. Einige Anti-Features sind klar, andere sind reine Willkür. Dazu gehört die Verwendung von nicht quelloffenen Netzwerkdiensten oder die Abhängigkeit von bestimmten Netzwerkdiensten. Letztes Anti-Feature wurde kürzlich neu hinzugefügt.

Passt eine Anwendung nicht, dann werden im einfachsten Fall die unerwünschten Merkmale gelistet. Fennec – die F-Droid-Variante von Firefox – zeigt z.B. folgende Warnung:

Andere Apps werden gar nicht erst zugelassen und müssen ihre eigenen Paketquellen pflegen. Aus diesem Grund sind viele Open-Source-Apps in F-Droid nicht vorhanden, nur in veralteten Versionen oder in modifizierten Varianten.

In der offiziellen F-Droid-App werden Apps bei der Einführung neuer Anti-Features gewissermaßen willkürlich zensiert. Wer im F-Droid-Client nach Organic Maps suchte, wurde zeitweise nicht fündig. Denn die neu eingeführten Anti-Features bzw. die davon betroffenen Apps wurden nämlich automatisch ausgeblendet und mussten vom Nutzer erst aktiv eingeblendet werden.

Anwender sollten daher den offiziellen Client meiden und auf alternative Clients wie Droid-ify oder Neo Store ausweichen. Deren Entwickler setzen die Zensurmaßnahmen von F-Droid nicht um und ignorieren die Anti-Features. Dadurch bieten sie die Vorteile des zentralen Open-Source-Stores, aber vermeiden manche der Nachteile. Wie lange es diese Clients daher noch geben wird, ist nicht abzusehen. Den Entwicklern wurden schon DDOS-Attacken vorgeworfen, weil sie die F-Droid-Mirrors nicht unterstützen.

Wer sich für Alternativen zu F-Droid interessiert, sollte einen Blick auf Obtainium werfen. Das ist eine App, mit der man direkt aus Quellen wie GitHub (und auch F-Droid) installieren kann. Dabei muss der Nutzer natürlich selbst genau prüfen, was er installiert, da kein „Store“ zwischen dem Anwender und dem Entwickler steht. Obtainium installiert zudem direkt die publizierten Tarballs und baut nicht selbst den Code, wie das F-Droid tut. Auch hier wieder eine Vertrauensfrage gegenüber den Entwicklern.

F-Droid ist jedenfalls kein Netzwerk, dessen Ausrichtung und Entwicklung man uneingeschränkt vertrauen kann. Alternativen in den Blick zu nehmen schadet nicht.

31. August 2024

Interessanter Gegentrend: Während ich vor ziemlich genau einem Jahr über das zu der Zeit aktuellste Beispiel HashiCorp schrieb, wo eine Umstellung auf BSL-artige Lizenzen erfolgte, scheint es wohl auch einige Kandidaten zu geben, die wieder auf OSI-genehmigte Lizenzen umstellen. So verkündete Elastic am vergangenen Donnerstag, das sie wieder mit ihrer Suchmaschinensoftware Elasticsearch "Open Source" werden möchten, indem sie die AGPL als Lizenzoption aufnehmen.

Hintergrund

Hier einmal der Hintergrund bis jetzt, so wie es auf mich als externen Beobachter wirkte: Open Source hat es im Zeitalter der Cloud recht schwer, wenn man damit Geld verdienen möchte (um z. B. die Entwicklung zu finanzieren!). Das verbreitete Standardmodell zur Monetarisierung war bisher, eine Software Open Source anzubieten und den Support oder das Hosting kostenpflichtig anzubieten. Aus Kundensicht bestellt man dann direkt bei dem Hersteller, der seine Software auch am besten verstehen sollte.

Cloud Provider haben dem Modell das Wasser abgegraben, da sie einfach die Open Source Software nehmen und auf ihrer Plattform deployen konnten – ohne einen Cent dem Projekt zahlen zu müssen. Teilweise wurde die Software erweitert, ohne, die Änderungen wieder veröffentlichen zu müssen (deswegen sind auch die MIT- und BSD-Lizenzen so beliebt). Aus Kundensicht kauft man zwar nicht mehr bei dem Hersteller ein, hat aber

  • einerseits alles zentralisiert auf einer Cloudplattform und
  • andererseits gar keinen Bedarf für Herstellersupport, weil die Software sowieso über das SaaS-Modell supported wird und nicht mehr on-premise läuft.

Die Antwort vieler Projekte war es nun, die Lizenz so zu ändern, dass dieses Verhalten nicht mehr möglich ist, z. B. durch die Beschränkung von Konkurrenz-Hostingprodukten. Das verstößt allerdings gegen das Diskriminierungsverbot der OSI, nach dem die Verwendung von Produkten nicht durch die Lizenz beschränkt werden sollte (siehe auch das Good-Evil-Thema bei der JSON-Lizenz).

In der Konsequenz spalteten sich wie mit Open Search Elasticsearch-Forks ab, die weiterhin die offenen Lizenzen nutzen und durch Cloud Provider wie AWS direkt gepflegt wurden und werden. Wie Elasticsearch betont, sollen diese Projekte aber gleichzeitig auch einen eigenen Weg mit eigener Spezialisierung entwickelt haben. Die Community war natürlich aber auch verärgert, da die Software Elasticsearch nun nicht mehr als Free Open Source Software (FOSS) galt.

Wieder Open Source

Elasticsearch plant nun die Wogen zu glätten, indem die AGPL als weitere Lizenz zur ELv2 und SSPL zusätzlich aufgenommen wird. Die Nutzer können also frei entscheiden, welche Lizenz sie nutzen wollen, da insbesondere im Geschäftskontext die AGPL juristisch gesehen als heikel eingeschätzt wird, wenn man das Produkt aus verschiedenen Komponenten zusammengebaut und nicht den gesamten Quelltext veröffentlichen möchte. FOSS-Nutzer und Distributionen haben allerdings wieder die Möglichkeit, die Software wiederaufzunehmen. So entspricht z. B. die AGPL den Debian Free Software Guidelines.

Ende gut, alles gut? Wenn es nach der Ankündigung von Elastic geht, ist das Team zufrieden mit der Entscheidung, wieder Open Source zu sein. Ob der Fork OpenSearch aufrecht erhalten wird oder schlussendlich in das Urprodukt einfließt, ist allerdings noch nicht gewiss und muss sich in der Zukunft zeigen. Vielleicht sind die Communities auch schon zu sehr divergiert, sodass es nun unterschiedliche Lösungen für unterschiedliche Anwendungsfälle gibt.

29. August 2024

Mit Thunderbird Appointment hat die MZLA Technologies Corporation die Betaphase einen neuen Online-Dienstes gestartet, welcher die Terminplanung vereinfachen soll. Nun wurde der neue Dienst erstmals offiziell angekündigt.

Bereits im Mai hatte ich die Pläne der MZLA Technologies Corporation enthüllt, mit Thunderbird Appointment einen neuen Dienst zur Terminplanung online zu bringen. Vor wenigen Tagen berichtete ich über den Start der Warteliste für die Betaphase. Nun hat MZLA Thunderbird Appointment auch offiziell angekündigt.

Jetzt auf Warteliste für Thunderbird Appointment Beta eintragen

Viele neue Informationen gibt es nicht, dafür aber zwei neue Screenshots. Außerdem beschreibt MZLA seinen neuen Dienst als Teil eines größeren Vorhabens, in Zukunft nicht nur einen E-Mail-Client, sondern eine ganze Reihe an Produktivitätswerkzeugen bereitzustellen, welche den Alltag effizienter und stressfreier machen sollen.

Thunderbird Appointment Thunderbird Appointment

Der Beitrag Thunderbird Appointment offiziell angekündigt erschien zuerst auf soeren-hentzschel.at.

28. August 2024

Firefox 131 unterstützt sogenannte „URL Fragment Text Directives“. Damit ist es möglich, auf Text-Ausschnitte einer Website zu verlinken. Bei Aufruf der entsprechenden URL scrollt der Browser automatisch zu dieser Stelle und hebt den ausgewählten Text optisch hervor.

Auf einen bestimmten Abschnitt einer Website zu verlinken, ist über einen sogenannten Ankerlink (example.com#anker) kein Problem. Voraussetzung dafür ist, dass das zu verlinkende Element eine ID im Code hat, welche als Ankername verwendet werden kann. Was auf den etwas sperrigen Namen „URL Fragment Text Directives“ hört, bietet weitaus mehr Flexibilität. Nicht nur, dass man damit auch ohne ID im Code, sondern rein über den Inhalt der Website auf eine beliebige Stelle verlinken kann; Der Browser hebt die verlinkte Stelle auch noch optisch hervor.

Text-Fragmente in Firefox 131

Es ist sogar möglich, mehrere Textstellen hervorzuheben. Die Syntax ist im Vergleich zu Ankerlinks erwartungsgemäß etwas komplexer. Die MDN Web Docs bieten eine ausführliche Dokumentation inklusive Beispielen.

Mit Firefox 131 wird diese neue Art von URLs, die auch schon in Chromium-basierten Browsern sowie in Safari funktioniert, auch von Mozillas Browser unterstützt. Firefox 131 wird am 1. Oktober 2024 erscheinen.

Während Firefox (noch) keine Möglichkeit anbietet, auf einfache Weise einen solchen Link durch Markieren einer Textstelle zu erstellen, kann diese Funktion bereits jetzt durch ein Add-on wie zum Beispiel Link zu Textfragment nachgerüstet werden.

Der Beitrag Firefox 131 erlaubt das Verlinken von Text-Ausschnitten einer Website erschien zuerst auf soeren-hentzschel.at.

Es gibt dieses nervige Google Popup mit der Loginaufforderung, das gefühlt auf jeder etwas größeren Plattform aufpoppt und massiv stört. Ungefähr so, als würde ein Rassist mit massiv mangelnder Körperhygiene und extremem Mundgeruch hinter dir stehen und andauernd mit schriller Stimme sagen „Log dich ein .. log dich doch ein und sei auch ein reiner gläserner Übermensch“.

Zum Glück gibt es Firefox und andere Browser das Addon uBlock Origin Dort lässt sich in den Einstellungen (Dashboard) unter „Meine Filter“ folgende Zeile einfügen

||accounts.google.com/gsi/*$xhr,script,3p

Und in Zukunft wird nie wieder einer dieser widerlichen Aufforderungen erscheinen.

Vollidioten „Vorschlag“

Es gibt Vorschläge im Netz, wie dieses Google Nerv Pop-up auch beseitigt werden kann, indem man sich bei Google einloggt, in den Einstellungen von Google das Pop-up ausstellt und sich dann nie wieder aus Google ausloggt und damit immer unter der Überwachung von Google durchs Internet surft.

Analogie

Das ist so, als würde man einen Holz 429 Too Many Requests Häcksler ausstellen wollen, damit man sich nicht das Bein amputiert. Dafür muss man aber erst mit dem Bein IN den Häcksler steigen, der das Bein dann natürlich sofort zerschreddert und dann erst kann man den Knopf drücken, dass der Häcksler ausgestellt wird. Dafür wird man dann aber nie wieder das bereits verlorene Bein verlieren. Wer den Denkfehler findet, darf ihn behalten.

Weitere hyperblog Artikel zum Thema

Firefox

Views: 36

The post Nerviges Google Login Pop-up eliminieren first appeared on Dem hoergen Blog.

27. August 2024

Mozilla arbeitet an einer Neugestaltung der Firefox-Einstellungen. Dieser Artikel gibt eine erste Vorschau darauf.

Als Mozilla im Mai seine Pläne vorgestellt hatte, woran sie in den folgenden Monaten arbeiten werden, war auch von einer Überarbeitung der Privatsphäre-Einstellungen die Rede, welche leichter zu verstehen sein sollen. Tatsächlich deutet sich eine Neugestaltung der kompletten Einstellungs-Oberfläche von Firefox an.

Firefox-Einstellungen

Ein UI-Prototyp für eine neue Oberfläche der Firefox-Einstellungen gibt einen ersten Vorgeschmack auf die Zukunft. Auffällig ist, dass die zahlreichen Optionen im neuen Design über mehr Kategorien als bisher verteilt sind. Wo notwendig, erfolgt die Navigation jetzt über mehrere Ebenen, statt alles untereinander oder in Dialogen anzuzeigen. Insgesamt sind die Optionen einfacher gestaltet und erschlagen den Nutzer nicht mehr so wie im bisherigen Design der Einstellungen.

Prototyp der neuen Firefox-Einstellungen 2024 Prototyp der neuen Firefox-Einstellungen 2024

Es sei an dieser Stelle ausdrücklich darauf hingewiesen, dass es sich um eine frühe Prototyp-Umsetzung der Oberfläche handelt. Was Struktur und Design betrifft, können sich Dinge im finalen Produkt deutlich von dem unterscheiden, was hier zu sehen ist. In jedem Fall zeigt der Prototyp die Idee, wohin Mozilla mit den Firefox-Einstellungen möchte.

Der Beitrag Vorschau auf die neuen Firefox-Einstellungen erschien zuerst auf soeren-hentzschel.at.

Im Terminal Emulator nutze ich inzwischen fast nur noch den modalen Editor Helix. Um beispielsweise vom Einfügemodus in den normalen Modus zu wechseln, muss man in der Standardkonfiguration die Escape-Taste drücken. Was ich persönlich nicht wirklich ergonomisch finde.

Daher habe ich schon vor einiger Zeit den Shortcut kj angelegt mit dem ich wieder in den normalen Modus wechsle, sofern ich mich im Einfügemodus befinde.

1[keys.insert]
2k = { j = "normal_mode" }

Damals habe ich das für eine gute Idee gehalten, weil meine Finger auf der Tastatur sowieso auf k und j liegen. Und mir ist einfach kein Wort eingefallen bei dem auf ein k ein j folgt. Seit kurzer Zeit kenne ich zwei Wörter, bei denen dies zutrifft. Reykjavik und Hallgrimskirkja.

Da der Shortcut Vorrang hat, schaffe ich es also nicht diese Wörter manuell zu schreiben. Verdammte Isländer. ;-)

Nun gibt es auf fast jeder Tastatur eine Taste, die ich im Grunde nicht nutze. Die Feststelltaste. Warum also diese nicht nutzen, um den Modus zu wechseln?

Unter Helix geht das schon mal nicht, weil diese Taste nicht unterstützt wird (https://docs.helix-editor.com/remapping.html#special-keys-and-modifiers).

Wie sieht es mit einer Änderung abseits von Helix aus? Im Internet findet man hierzu diverse Lösungen mit beispielsweise Tools wie caps2esc. Unter KDE Plasma geht es aber auch einfach so.

Mit dem Befehl kcmshell6 kcm_keyboard ruft man als Erstes die Einstellungen für die Tastatur auf. Wer will, kann natürlich auch einfach die Systemeinstellungen im Startmenü aufrufen und dort dann die Einstellungen für die Tastatur auswählen.

Dort klickt man dann auf “Key Bindings” (irgendwie ist bei Plasma 6 noch so einiges nicht übersetzt worden). Dann setzt man als Nächstes den Haken bei “Configure keyboard options”. In der Liste darunter sucht man dann “Verhalten der Feststelltaste” und hakt dann die darunter befindliche Option “Feststelltaste als zusätzliche Esc-Taste” an. Abschließend klickt man noch auf “Anwenden” und das war es schon. Von nun an sollte die Feststelltaste wie die Escape-Taste funktionieren.

Ich gehe mal stark davon aus, dass diese Einstellung nur in KDE Plasma funktioniert. Wer diese Änderung tatsächlich überall, also zum Beispiel auch in einer TTY-Session haben will, muss wohl auf ein Tool wie caps2esc zurückgreifen.

25. August 2024

Eigentlich hieß der Titel Firefox Tab ImagePreview und Tab Info ausstellen. Aber das entwickelte sich wieder zu einer Odyssee. Legen wir das mal wieder ab in die Kategorie toxisch passiv-aggressiver Programmierer Bullshit.

Oder eventuell einfach nur nach Hanlons Rasiermesser

„Geh nicht von Böswilligkeit aus, wenn Dummheit genügt“

Was ist der Stein des Anstoßes?

Bei Firefox gab es ein neues Feature Tab Preview als Bild und Texttafel … gleichzeitig. Und das wurde natürlich gleich mal standardmäßig bei der Aktualisierung aktiviert. Da ich aber überhaupt kein Freund von ALLE FEATURES DEFAULT AN bin … wer denkt sich eigentlich so einen kontraproduktiven Quatsch aus?! …. wollte ich das gleich wieder ausschalten.

RANT: So ein unnötiges Blingbling, das für 20 Sekunden nett ist, aber dann nur noch Strom und CPU frisst und dann auch noch meistens im Weg ist, will ich einfach nicht haben. Skaliert man das mal auf alle Firefox Installationen weltweit hoch, könnte mal jemand ausrechnen wieviel Strom das verbraucht. Ja, auch Kleinvieh macht Mist. Zurück zum Thema.

Also Im Netz gesucht und gefunden, dass ich per about:config die beiden folgenden Schlüssel auf false setzen muss.

browser.tabs.hoverPreview.enabled      false 
browser.tabs.hoverPreview.showThumbnails    false

Klickklicklick, Gesagt getan, nach einem Firefox Neustart war zwar das Vorschaubild weg, aber diese zusätzliche Texttafel war immer noch da. Nochmal per about:config die beiden Schlüssel angeschaut und gesehen, dass browser.tabs.hoverPreview.enabled wieder auf truestand.

Long sorry sport“ oder auf norddeutsch „kurz gesagt“ :

Firefox muss es explizit verboten werden eine manuelle Änderung automatisch wieder zu ändern. Aber nur Bestimmte. Die nicht extra ausgewiesen sind. #ohrfeigendienstag

Das Ganze geht dann so

Die Datei /etc/firefox/syspref.js muss mit root Rechten mit einem Editor bearbeitet werden.

Und dann trägt man dort zusätzlich folgende zwei Zeilen, am besten ganz unten, wenn da schon was stehen sollte ein, speichert das und startet Firefox neu.

pref("browser.tabs.hoverPreview.enabled",false, locked);
pref("browser.tabs.hoverPreview.showThumbnails",false, locked);

Der Charme dieser Lösung ist, dass ich diese Datei einfach nur auf jeden Computer rüber kopieren muss, ohne nochmal Hand an Firefox selbst anzulegen.

Die Info bekam ich mit freundlicher Hilfe aus dem Fediverse und die Quelle ist askubuntu.com und funktionierte auf jeden Fall mit Firefox 129.

Weitere hyperblog Artikel zum Thema

Firefox

Views: 24

The post Firefox Einstellungen permanent machen first appeared on Dem hoergen Blog.

Ich habe mir das neue Google Pixel 9 als Ersatz für mein Pixel 6 bestellt. GrapheneOS war bereits wenige Tage nach der Markteinführung für die 9er-Serie verfügbar. Im Gegensatz zum Pixel 6 habe ich diesmal den Web-Installer ausprobiert. Fazit: Es ist wirklich narrensicher!

Muss ich von Pixel 6 auf Pixel 9 aktualisieren? Nein, eigentlich nicht. Die technische Entwicklung ist überschaubar und ein Pixel 6 sollte für die meisten Anwendungsszenarien ausreichen. Meins war einfach in jeder Hinsicht „durch“. Für mich sind Smartphones Gebrauchsgegenstände und nach ein paar Jahren sehen sie leider auch so aus. Der Akku dann auch. Kurzum: Ich habe auf die neue Pixel-Generation gewartet. Das neue Design ist auch schön. Ansonsten aber fast gleich groß und gleich schwer. Nach der Einrichtung sieht das System logischerweise auch identisch aus. Wow-Effekt? Fehlanzeige!

Voraussetzung für den Web Installer ein aktuelles Betriebssystem. Bei Linux also keine ganz alten LTS-Systeme. Einige Systeme werden offiziell gelistet, aber z.B. openSUSE Tumbleweed funktioniert auch. Wichtig sind installierte Android-udev-Regeln, damit der Rechner ohne Root-Rechte mit dem Android-Smartphone kommunizieren kann. Als Browser muss ein aktueller Chromium oder Brave verwendet werden.

Danach ist der Prozess ganz einfach. Im Stock Android von Google die OEM-Optionen aktivieren, das Smartphone in den Bootloader schicken und dann die vier Buttons auf der Webseite in der vorgegebenen Reihenfolge anklicken:

  • Bootloader entsperren (muss auf dem Smartphone bestätigt werden)
  • Aktuelles GrapheneOS-Image herunterladen (dauert je nach Internetverbindung)
  • System flashen (dauert ein bisschen)
  • Bootloader sperren (muss auf dem Smartphone bestätigt werden)

Danach kann mit der Einrichtung des neuen Smartphones begonnen werden.

Bei dieser Gelegenheit habe ich auch die Wiederherstellung des Google Stock Android auf dem Pixel ausprobiert. Das funktioniert genauso einfach und zuverlässig.

Der Einsatz eines alternativen Betriebssystems wie GrapheneOS ist eigentlich nur eine Frage des Wollens und nicht des Könnens.

Firefox zeigt auf der Firefox-Startseite Content-Empfehlungen über seinen hauseigenen Dienst Pocket an. Ab Firefox 130 lässt sich die Themenauswahl optional personalisieren.

Die Standard-Startseite von Firefox, welche auch beim Öffnen eines neuen Tabs erscheint, zeigt standardmäßig Content-Empfehlungen an. Hierfür setzt Mozilla auf seinen eigenen Dienst Pocket. Die Artikel werden von menschlichen Pocket-Redakteuren „aus einer breiten und vielfältigen Palette von Publikationen ausgewählt, die sich durch sorgfältige, zuverlässige und vertrauenswürdige Berichterstattung auszeichnen“, wie Mozilla schreibt.

Ab Firefox 130 wird es für Nutzer möglich sein, die Kategorien auszuwählen, aus denen bevorzugt Artikel angezeigt werden sollen. Dabei stehen die folgenden Kategorien zur Auswahl: Geschäftliches, Unterhaltung, Essen, Gesundheit, Finanzen, Politik, Sport, Technik, Reisen, Wissenschaft sowie Life-Hacks.

Personalisierte Pocket-Empfehlungen in Firefox 130

Ein weiteres neues Feature ist die Anzeige von Icons mit einem Daumen nach oben respektive einem Daumen nach unten, die bei Herüberfahren mit der Maus über eine Artikel-Kachel erscheinen. Damit kann mitgeteilt werden, ob man mehr oder weniger Artikel dieser Art sehen möchte.

Personalisierte Pocket-Empfehlungen in Firefox 130

Firefox 130 erscheint am 3. September 2024. Die neuen Features werden schrittweise ausgerollt und stehen nicht sofort standardmäßig für alle Nutzer zur Verfügung.

Eine manuelle Aktivierung der Kategorie-Auswahl ist möglich, indem über about:config der Schalter browser.newtabpage.activity-stream.discoverystream.topicSelection.enabled per Doppelklick auf true gesetzt wird.

Die andere neue Funktion wird über die Option browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.enabled gesteuert.

Der Beitrag Firefox 130 erlaubt Personalisierung der Pocket-Empfehlungen erschien zuerst auf soeren-hentzschel.at.

24. August 2024

Mit Thunderbird Appointment wird die MZLA Technologies Corporation einen neuen Online-Dienst starten, welcher die Terminplanung vereinfachen soll. Nun können sich Nutzer auf die Warteliste für den Beta-Start setzen lassen.

Bereits im Mai hatte ich die Pläne der MZLA Technologies Corporation enthüllt, mit Thunderbird Appointment einen neuen Dienst zur Terminplanung online zu bringen.

Wann Thunderbird Appointment offiziell an den Start gehen wird, ist noch nicht bekannt. Allerdings ist es ab sofort möglich, sich über die Website auf eine Warteliste für den Beta-Start setzen zu lassen.

Der Beitrag Beta-Warteliste für Thunderbird Appointment öffnet erschien zuerst auf soeren-hentzschel.at.

Seit ein paar Wochen habe ich mich mit einem kleinen, aber nervigen Problem herumgeschlagen.

Es war nichts Kritisches, aber es störte doch: Manche Benachrichtigungen erschienen in einem dunklen Stil, der den Text nicht lesbar machte.

Oft konnte ich das Symbol der Applikation noch erkennen, aber bei Meldungen ohne Symbol war es reines Rätselraten, was dort stand.

Nach einiger Suche habe ich das Problem mit einem einfachen Befehl nachgestellt:

notify-send "$(inxi -s)"

Damit konnte ich gezielt Benachrichtigungen auslösen und in den Gnome-Einstellungen, genauer gesagt in den "Optimierungen" (gnome-tweaks) unter dem Punkt "Erscheinungsbild", nach einer Lösung suchen.

Es stellte sich heraus, dass mein aktuelles Theme "Marble" die neue Gnome-Version nicht vollständig unterstützt.

Nachdem ich auf das Standard-Theme "Adwaita" umgestellt habe, sind die Benachrichtigungen wieder gut lesbar und das Problem für mich gelöst. Die Welt ist wieder in Ordnung! Siehe dazu auch die Screenshots.

 

 

So kann man das auch wieder lesen!

Update im erweiterten Teil unbedingt lesen

 

... und wenn wir schon dabei sind: Die Extension just-perfection

ist sehr nützlich.

Damit kann man z.B. das Panel in der Größe anpassen.

Sehr gut, jetzt bin ich zufrieden.

 

 

 

 

Update im erweiterten Teil unbedingt lesen

"Gnome 46 merkwürdige dunkle Nachrichten" vollständig lesen

Jede Distribution hat ihre eigene Paketverwaltung. Bei openSUSE ist es Zypper, das die Abhängigkeiten etc. der Pakete im RPM-Format auflöst. Zypper ist mächtig und sehr flexibel. Drei Befehle und eine Einstellung helfen, ein Tumbleweed-System aufgeräumt zu halten.

Standardmäßig installiert openSUSE obligatorische und empfohlene Abhängigkeiten. Letztere sind für einige Komponenten einer Software nützlich, aber nicht zwingend notwendig. Wenn man ein wenig Ahnung hat oder bereit ist, sich diese anzueignen, sollte man die automatische Installation der empfohlenen Abhängigkeiten deaktivieren. Diese ziehen nämlich oft viel unnötigen Ballast mit sich, den man nur für ganz marginale Funktionen mancher Software benötigt.

Das geschieht über eine Anpassung der Konfigurationsdatei /etc/zypp/zypp.conf:

##
## Whether only required packages are installed.
##
## Recommended packages, will not be regarded.
##
## Valid values: boolean
## Default value: false
##
solver.onlyRequires = true

Hier muss das Auskommentierungszeichen # entfernt und der Wert auf true gesetzt werden.

Möchte man Anwendungen deinstallieren, ist es hilfreich, auch alle Abhängigkeiten zu entfernen. Dies geschieht mit folgender Option:

# zypper rm --clean-deps <Paketname>

Trotzdem kann es bei RR-Systemen immer mal wieder Überbleibsel geben. Diese können mit folgenden Kommandos gefunden werden:

Zunächst können nicht mehr benötigte Abhängigkeiten identifiziert werden.

# zypper packages --unneeded 

Die Ausgabe kann wie folgt aussehen:

# zypper packages --unneeded 
Repository-Daten werden geladen...
Installierte Pakete werden gelesen...
S  | Repository             | Name        | Version  | Arch
---+------------------------+-------------+----------+-------
i  | Haupt-Repository (OSS) | dialog-lang | 1.3-12.1 | noarch

Intellektuell sollte man natürlich prüfen, ob die Angabe stimmig ist. Das Language-Pack im Beispiel möchte ich z.B. behalten. Nicht mehr benötigte Pakete können anschließend auf dem üblichen Weg entfernt werden.

Es kann auch immer mal sein, dass Pakete aus den Paketquellen entfernt werden. Solche Pakete können mit folgendem Befehl identifiziert werden:

# zypper packages --orphaned

Die Ausgabe kann wie folgt aussehen:

# zypper packages --orphaned 
Repository-Daten werden geladen...
Installierte Pakete werden gelesen...
S  | Repository | Name           | Version     | Arch
---+------------+----------------+-------------+-------
i+ | @System    | synology-drive | 7.5.0-16085 | x86_64

Wie im Beispiel zu sehen ist, betrifft das auch Pakete, die der Anwender bewusst an der Pakrtverwaltung vorbei installiert hat. Deshalb auch hier nicht kopflos einfach alles entfernen.

23. August 2024

Die traditionsreiche Distribution openSUSE kommt einfach nicht zur Ruhe. Der geneigte Anwender wundert sich, dass in den letzten Jahren überhaupt so gute Produkte und Releases veröffentlicht werden konnten. Jüngste Episode der Dauerkrise ist der Versuch des Mutterkonzerns SUSE, seine Markenautonomie gegenüber der Community-Variante zu stärken.

Langjährige Leserinnen und Leser wissen, dass ich openSUSE sehr zugetan bin. Warum, weiß ich nicht so genau. Wahrscheinlich, weil ich damit bei Linux 2007 angefangen habe und nie wirklich enttäuscht wurde. Ausflüge in andere Distributionen führten mich immer wieder zu einer SUSE-Variante zurück. Umso besorgter verfolge ich das aktuelle Chaos.

Im Prinzip begann das Chaos 2015, als das openSUSE-Projekt seine letzte klassische Version 13.2 veröffentlichte. openSUSE verabschiedete sich danach aus verschiedenen Gründen von diesem Modell. Mangel an Entwicklern oder zu viele Mitwirkende – die Nachrichten waren widersprüchlich. Auf jeden Fall war das klassische Modell mit einem Release alle 9-12 Monate veraltet und wurde auch von SUSE nicht mehr als Basis für SLE benötigt.

Parallel dazu hat openSUSE eine eigene Rolling-Release-Distribution namens Tumbleweed veröffentlicht. Diese ist meiner Meinung nach der größte Erfolg des Projekts. Tumbleweed hat Leute zu openSUSE gebracht, die diese Distribution vorher gemieden haben und hat den Markt der RR-Distributionen sinnvoll ergänzt. RR in Kombination mit Btrfs-Snapshots und einem ausgeklügelten QA-System war in vielerlei Hinsicht wegweisend für spätere Entwicklungen.

Parallel zu Tumbleweed wurde das Projekt Leap gestartet. Beide Produkte waren als Ergänzung gedacht. Tumbleweed als RR-Variante erfreut sich bis heute großer Beliebtheit, aber stabile Setups sind eine wichtige Zielgruppe für openSUSE, wie die Statistiken zeigen. Leap basierte auf der Idee, openSUSE und SLE näher zusammenzubringen, Synergien zu heben und leichtere Migrationen von openSUSE Leap zu SLE zu ermöglichen. Die Idee hatte etwas für sich, krankte aber an vielen Problemen. Drei Probleme waren aus meiner Sicht zentral:

  1. Das Konzept erwies sich als problematischer als erwartet. SLE ist eine Enterprise-Distribution und speziell auf diese Bedürfnisse zugeschnitten. In den letzten Jahren hat sich bei jedem Release gezeigt, dass es nicht so einfach ist, die Community-Komponenten darauf aufzusetzen.
  2. Die meisten Community-Entwickler beteiligen sich an der Tumbleweed-Entwicklung. Leap spielte nur eine untergeordnete Rolle. Dies wirkte sich auf die Qualität aus.
  3. Ständige Konzeptänderungen (z.B. Tick-Tock-Versionssprünge, Repo-Umstrukturierungen, Versionierung etc.) waren für den normalen Anwender nicht transparent und oft nur durch die erratische Politik von SUSE zu erklären.

Daneben hat die Community eigene Spielfelder entwickelt. MicroOS mit seinen Desktop-Derivaten, zuletzt Slowroll als stabilere Variante von Tumblweed. Im Hintergrund droht immer SUSE ALP, von dem aber nichts wirklich nach außen dringt.

Als es also ums Eingemachte ging, gab es zunächst eine merkwürdige Umbenennungsaktion der einzelnen MicroOS-Varianten, bei der selbst SUSE-affine Leute wie ich am Ende kaum noch durchblickten. Gefolgt von einem ebenso merkwürdigen Logo-Wettbewerb, dessen Sinn sich vielen nicht so recht erschloss. Vorläufiger Höhepunkt dieser Entwicklung war die Aufforderung von SUSE, die Community-Distribution umzubenennen, um eine bessere Abgrenzung zur Enterprise-Variante zu erreichen. Also genau das Gegenteil von dem, was in den letzten Jahren mit Leap gemacht wurde.

Ich hoffe sehr, dass das Ganze eine gute Entwicklung nimmt. Denn unter der Haube dieser Rebrandings und Umstrukturierungen laufen technisch sehr interessante Entwicklungen, die wegweisend für andere Distributionen sein können.

22. August 2024

Die MZLA Technologies Corporation hat mit Thunderbird 128.1.1 ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 128.1.1

Mit dem Update auf Thunderbird 128.1.1 hat die MZLA Technologies Corporation ein Update für seinen Open Source E-Mail-Client veröffentlicht. Das Update bringt mehrere Korrekturen für die Versionsreihe 128, welche sich in den Release Notes (engl.) nachlesen lassen.

Der Beitrag Thunderbird 128.1.1 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

20. August 2024

Mozilla hat Firefox 129.0.2 veröffentlicht und behebt damit mehrere Probleme der Vorgängerversion.

Download Mozilla Firefox 129.0.2

Es wurden mehrere Korrekturen und Anpassungen in Vorbereitung auf ein kommendes Update für das Widevine-Plugin vorgenommen, welches zur Wiedergabe DRM-geschützter Videos auf Streaming-Plattformen benötigt wird.

Ebenfalls mehrere Verbesserungen gab es für die Übersetzungsfunktion von Firefox, um sicherzustellen, dass wenn neue Versionen von Übersetzungs-Modellen verfügbar sind, diese korrekt aktualisiert werden und Updates der verfügbaren Sprachen auch ohne Neustart von Firefox funktionieren. Auch nach einer Änderung der Browsersprache ist nicht länger ein Neustart von Firefox notwendig, damit die Übersetzungsfunktion korrekt darauf reagiert.

Bei Verwendung des canvas-Elements konnte es für Nutzer bestimmter Grafikchips zu einem unerwarteten Flackern kommen.

In den Einstellungen zum Schutz vor Aktivitätenverfolgung war bei Bedienung mit der Tastatur nicht ersichtlich, welche Option fokussiert war.

Ein Problem für Nutzer von Screenreadern in Zusammenhang mit der neuen Tab-Vorschau von Firefox 129 wurde behoben.

Ebenfalls behoben wurden ein Problem mit Drag-and-Drop-Operationen in Browser-Erweiterungen sowie eine mögliche Absturzursache unter macOS.

Der Beitrag Mozilla veröffentlicht Firefox 129.0.2 erschien zuerst auf soeren-hentzschel.at.

19. August 2024

Dies ist ein Erfahrungsbericht zur Migration meiner Ansible-Rolle „Nextcloud im Container“ in eine Ansible Collection. Er umfasst die Migration der bestehenden Rolle und die Ergänzung der neuen Collection um eine weitere Rolle, welche sich um die Aufgaben Backup und Restore kümmert.

Wer es ganz eilig hat, kann direkt zur Zusammenfassung springen. Allen anderen wünsche ich viel Spaß bei der Lektüre.

Für grundlegende Informationen zu Ansible Collections siehe:

Randnotiz: Dass ihr zu meiner ersten Ansible Collection hier im Blog nicht fündig werdet, liegt darin begründet, dass meine Arbeit daran eingeschlafen ist.

Die Entwicklung der hier beschriebenen Collection könnt ihr auf Codeberg.org verfolgen. Die Repo-URL lautet: https://codeberg.org/Tronde/nextcloud

Motivation

Für mein Wochenendprojekt „Nextcloud im Container“ habe ich eine Ansible-Rolle entwickelt und auf Github veröffentlicht, die dem Zweck dient, Nextcloud mit einer MariaDB in einer rootless Podman-Umgebung zu installieren.

Wie ihr in Teil 5 der Artikel-Serie nachlesen könnt, war ich mit der Lösung für Backup und Restore nicht ganz zufrieden. Ich möchte dieses Thema erneut angehen und mithilfe einer Ansible-Rolle lösen.

Backup und Restore beschreiben jedoch andere Anwendungsfälle als die Bereitstellung, weswegen ich den dafür notwendigen Quelltext nicht mit in die bestehende Rolle pressen möchte. Da Backup und Restore für mich jedoch zum Betrieb dazugehören, möchte ich alle Ansible-Rollen, die ich zum Betrieb meines Nextcloud-Setups benötige, in einer Collection zusammenfassen.

Migration der bestehenden Rolle in eine Collection

Ich orientiere mich hierzu an der englischsprachigen Dokumentation „Migrating a role to a collection“. Da ich bereits einen Galaxy Namespace besitze, nutze ich diesen auch für die Erstellung der Collection. Der folgende Codeblock zeigt die verwendeten Befehle.

]$ ansible-galaxy collection init tronde.nextcloud
- Collection tronde.nextcloud was created successfully

]$ mkdir tronde/nextcloud/roles/deploy_nextcloud_with_mariadb_pod && rsync -a ../roles/ansible_role_deploy_nextcloud_with_mariadb_pod/ tronde/nextcloud/roles/deploy_nextcloud_with_mariadb_pod/

]$ tree -L 3 tronde/nextcloud/
tronde/nextcloud/
├── docs
├── galaxy.yml
├── meta
│   └── runtime.yml
├── plugins
│   └── README.md
├── README.md
└── roles
    └── deploy_nextcloud_with_mariadb_pod
        ├── defaults
        ├── meta
        ├── README.md
        ├── tasks
        ├── tests
        └── vars

]$ rm -rf tronde/nextcloud/roles/deploy_nextcloud_with_mariadb_pod/.git

Im letzten Schritt entferne ich das .git-Verzeichnis, da ich die Collection als Ganzes in einem Repository verwalten möchte, statt alle Rollen einzeln zu versionieren und dann in die Collection einzufügen.

Anschließend aktualisiere ich die Dateien galaxy.yml und README.md. In der Rolle habe ich ein Playbook zum Testen verwendet, welches im Pfad deploy_nextcloud_with_mariadb_pod/tests/test.yml liegt. Um konform mit der Struktur einer Ansible Collection zu sein, erstelle ich im Wurzelverzeichnis meiner Collection das Verzeichnis playbooks und kopiere das Test-Playbook hier hinein:

]$ tree playbooks/
playbooks/
└── deploy_nextcloud_with_mariadb_pod.yml

An dieser Stelle halte ich zunächst inne und überlege mir, welche Tools ich noch benötige, um meine Collection entwickeln und testen zu können.

Ansible Development Tools

Ansible Development Tools (ADT) ist ein Projekt mit dem Ziel, einen Werkzeugkasten mit allen wichtigen Werkzeugen zur Entwicklung von Ansible Content zu bieten. Genau so etwas habe ich gesucht. Das probiere ich gleich aus.

Um mir mein System nicht zu verhunzen, installiere ich die ADT in ein Python Virtual Environment und lasse mir anzeigen, welche Werkzeuge ADT mitbringt:

]$ python -m venv adt
]$ . adt/bin/activate
(adt) ]$ pip install --upgrade pip
(adt) ]$ pip install ansible-dev-tools
(adt) ]$ pip install molecule-podman
(adt) ]$ adt --version
ansible-builder                          3.1.0
ansible-core                             2.17.1
ansible-creator                          24.7.0
ansible-dev-environment                  24.7.0
ansible-dev-tools                        24.7.1
ansible-lint                             24.7.0
ansible-navigator                        24.7.0
ansible-sign                             0.1.1
molecule                                 24.7.0
pytest-ansible                           24.7.0
tox-ansible                              24.7.0

Bei molecule-podman handelt es sich um einen Molecule-Treiber, welcher benötigt wird um Molecule-Tests in Podman-Containern ausführen zu können. Ich habe dieses Paket mitinstalliert, da ich mir vorstellen kann, dies in naher Zukunft zu nutzen.

ansible-lint

Ansible Lint ist das erste Werkzeug aus der ADT-Sammlung, welches ich verwende, um den Quelltext meiner Collection zu prüfen. Dazu wird das Kommando einfach im Wurzelverzeichnis der Collection ausgeführt. Anschließend können die gefundenen Fehler behoben werden.

Da es den Rahmen dieses Artikels sprengen würde, werde ich dem Thema einen eigenen Text widmen.

molecule

Ansible Molecule eignet sich zum Testen von Ansible-Rollen und Collections. Ich nutze meine Ansible Collection, um mich mit diesem Werkzeug vertraut zu machen.

Zwar gibt es auch hier erst eine Lernkurve, doch wird mir eine durchdachte Test-Konfiguration bei der weiteren Entwicklung sicher zugutekommen. Ich orientiere mich zu Beginn am Ansible Molecule Getting Started Guide.

Zu Beginn möchte ich meine in die Collection migrierte Rolle testen. Dazu bearbeite ich die Datei tronde/nextcloud/extensions/molecule/default/converge.yml. Sie enthält schließlich folgenden Inhalt:

extensions]$ cat molecule/default/converge.yml 
---
- name: Converge
  hosts: localhost
  gather_facts: false
  tasks:
    - name: Test collection role deploy_nextcloud_with_mariadb_pod
      ansible.builtin.import_role:
        name: tronde.nextcloud.deploy_nextcloud_with_mariadb_pod

Und mit folgendem Befehl teste ich, ob meine Nextcloud-Instanz erfolgreich deployt wird:

extensions]$ molecule converge
…
PLAY RECAP *********************************************************************
localhost                  : ok=10   changed=9    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

extensions]$ podman ps
CONTAINER ID  IMAGE                                    COMMAND               CREATED             STATUS             PORTS                    NAMES
48438d1bd884  quay.io/centos/centos:stream8            bash -c while tru...  7 minutes ago       Up 7 minutes                                instance
104c525a6b50  localhost/podman-pause:5.1.1-1717459200                        About a minute ago  Up About a minute  127.0.0.1:40671->80/tcp  e34ddf4d4203-infra
f27842b12d56  docker.io/library/mariadb:10.11.2        mariadbd              About a minute ago  Up About a minute  127.0.0.1:40671->80/tcp  nc_mariadb
9ee391a57fbd  docker.io/library/nextcloud:25-apache    apache2-foregroun...  13 seconds ago      Up 13 seconds      127.0.0.1:40671->80/tcp  nextcloud

Das Ergebnis ist positiv und kann durch Aufruf von http://127.0.0.1:40671 im Webbrowser überprüft werden. Ein Login mit den Default-Werten aus tronde/nextcloud/roles/deploy_nextcloud_with_mariadb_pod/defaults/main.yml bestätigt das erfolgreiche Deployment.

Es handelt sich hierbei noch nicht um ein adäquates Test-Setup; doch für den Moment ist es ausreichend. Ich werde mich noch weiter einarbeiten müssen, um das Test-Setup verbessern zu können. Vermutlich wird auch dazu dann ein weiterer Artikel folgen.

Falls sich jemand wundert, es ist durchaus Absicht, dass die Nextcloud nur via 127.0.0.1 und per HTTP erreichbar ist. Ich betreibe diese hinter einem Reverse-Proxy. Details können in Nextcloud im Container — Teil 3: Mit Reverse-Proxy nachgelesen werden.

Backup und Restore für die Nextcloud

Um die Konfiguration und die in der Nextcloud gespeicherten Daten sichern und wiederherstellen zu können, werde ich eine Offline-Sicherung der verwendeten Podman Volumes durchführen. Der Ablauf für die Sicherung sieht wie folgt aus:

  1. Den Pod ˋnc_podˋ inkl. aller darin enthaltenen Container stoppen
  2. Alle zum Setup gehörenden Podman Volumes in Tarballs exportieren
  3. Diese Tarballs vom managed Node auf den Control Node sichern
  4. Den ˋnc_podˋ wieder starten

Die Wiederherstellung läuft sinngemäß andersherum ab:

  1. Die Tarballs werden vom Control Node auf den Managed Node kopiert
  2. Der Pod ˋnc_podˋ inkl. aller darin enthaltenen Container wird gestoppt
  3. Die Podman Volumes aus Schritt 1 werden importiert
  4. Der nc_pod wird wieder gestartet
  5. Die zur Wiederherstellung auf den Managed Node kopierten Tarballs werden wieder entfernt

Um diese neue Rolle der Collection hinzuzufügen, navigiere ich in das Rollenverzeichnis tronde/nextcloud/roles/ und erstelle dort das Grundgerüst für die Rolle: ansible-galaxy role init backup_nextcloud

Die Struktur sieht bei mir wie folgt aus, wobei nicht benötigte Verzeichnisse noch nicht entfernt wurden:

ansible_collections]$ tree -L 2 tronde/nextcloud/roles/backup_restore_nextcloud/
tronde/nextcloud/roles/backup_restore_nextcloud/
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

9 directories, 8 files

Den aktuellen Entwicklungsstand könnt ihr unter dieser URL einsehen: https://codeberg.org/Tronde/nextcloud/src/branch/main/roles/backup_restore_nextcloud

Das dortige README.md enthält wie bei dedizierten Rollen die Dokumentation zu dieser Rolle. Um doppelte Texte zu vermeiden, verweise ich im Collection-README auf die jeweiligen README-Dateien in den einzelnen Rollen.

Getestet wird diese Rolle ebenfalls mit Molecule. Zu den Tests mit Molecule werde ich noch mehr schreiben, sobald ich dies etwas verfeinert habe.

Fallen mir noch weitere Anwendungsfälle ein, können diese nun einfach als weitere Rollen der Collection hinzugefügt werden.

Ansible-Variablen definieren

Jede Rolle in dieser Collection ist für sich alleine nutzbar. Somit definiert jede Rolle die Eingangs-Variablen in der defaults/main.yml der jeweiligen Rolle.

Bei der Entwicklung achte ich darauf, dass Variablen, die z.B. den Namen eines Podman Volumes enthalten, in allen Rollen gleich geschrieben werden. Damit ist es möglich, diese Variablen an anderer Stelle zu definieren und in den verschiedenen Rollen nutzbar zu machen. So können an individuelle Deployments angepasste Variablen in Playbooks, group_vars, host_vars, etc. definiert werden.

Wo Variablen definiert werden können und welche Präzedenz diese besitzen, kann in der offiziellen Doku nachgelesen werden: Variable precedence: Where should I put a variable?

Zusammenfassung

Eine Ansible-Rolle ohne Plug-ins in eine Ansible Collection zu überführen, ist mit dem kurzen Abschnitt aus der Dokumentation schnell erledigt.

Weitere Rollen können der Collection hinzugefügt werden, indem man sie im Verzeichnis roles der Collection-Verzeichnisstruktur wie gewohnt mit ansible-galaxy role init <Rollenname> erstellt und mit Leben füllt. Sorgfalt ist und bleibt bei der Benennung von Variablen und deren Präzedenz geboten, um nicht wahnsinnig zu werden. Dies ist nicht wirklich schwierig, doch muss ich fast jedes Mal in der Dokumentation nachschlagen, um sicher zu sein.

Die Ansible Development Tools (ADT) sind eine praktische Sammlung von Werkzeugen zur Entwicklung von Rollen und Collections für Ansible. Für mich sind aktuell Ansible Lint und Ansible Molecule die wichtigsten Werkzeuge aus dieser Sammlung. Wobei gerade die Dokumentation von Molecule auf dem Weg zu meinem Ziel, nämlich meine Collections in verschiedenen rootless Podman Containern mit nested Podman und Ansible zu testen, leider viele Fragen offen lässt. Grundsätzlich lassen sich Testpläne damit realisieren und vereinfachen mein bisheriges Testsetup bestehend aus diversen Skripts und virtuellen Maschinen. Und sie bieten Stoff für weitere Einträge in diesem Blog.

Die weitere Entwicklung meiner Nextcloud Collection findet auf Codeberg statt. Ihr findet sie dort unter der URL: https://codeberg.org/Tronde/nextcloud

18. August 2024

Nach über sieben Jahren könnte Mozilla wieder ein neues Logo erhalten. Dieses deutet sich in aktuellen Änderungen der Mozilla-Website an. Hier gibt es eine erste Vorschau auf das mögliche neue Logo.

Das aktuelle Logo trägt Mozilla seit Januar 2017. Das Logo in der Eigenschreibweise moz://a ist angelehnt an Internet-Protokolle wie https://.

Mozilla-Logo 2017

Die Landingpage der aktuellen Mozilla-Kampagne „Nothing Personal“ zeigt im Header ein Firefox-Logo mit Wortmarke und dem Zusatz „by Mozilla“. Wer hier einen aufmerksamen Blick auf das Logo wirft, erkennt vielleicht nicht nur, dass die Firefox-Wortmarke anders, als bisher der Fall, mit einem Mozilla-Zusatz verwendet wurde, sondern auch, dass für den Mozilla-Schriftzug eine Schriftart zum Einsatz kommt, die bisher nicht in der Mozilla-Kommunikation verwendet worden ist.

Firefox by Mozilla Logo

Dies wäre an sich vielleicht noch kein allzu starker Hinweis auf ein neues Mozilla-Logo. Doch zeigt sich in aktuellen Patches zu einem kommenden Refresh der Mozilla-Website, dass hier für Footer und Navigation nicht das übliche, sondern ein neues Mozilla-Logo verwendet wird, welches die gleiche Schrift wie im Firefox-Logo der oben erwähnten Seite verwendet. Der neue Code wird dabei außerdem von einer Variable gesteuert, welche die passende Bezeichnung „brand-refresh“ trägt. Auch der Merchandise-Shop von Mozilla bietet bereits Artikel mit diesem Logo an.

Neues Mozilla-Logo 2024

Während das aktuelle Mozilla-Logo laut Branding-Guidelines immer auf einem Hintergrund zu sehen sein muss, ist das neue Logo ohne Hintergrund integriert, was bedeuten könnte, dass diese Design-Einschränkung wegfällt. Die abstrakte Grafik rechts vom Mozilla-Schriftzug beinhaltet einerseits das „M“ aus „Mozilla“ und erinnert andererseits mit etwas Fantasie auch ein bisschen an einen Dino – das historische Symboltier von Mozilla.

Der Beitrag Exklusiv: Sehen wir hier das neue Mozilla-Logo? erschien zuerst auf soeren-hentzschel.at.

17. August 2024

Nutzer von Firefox 131 können zwei neue vorab Funktionen testen: Eine neue Sidebar sowie mit den vertikalen Tabs eine der von Firefox-Nutzern meistgewünschten Funktionen.

Mit der Einführung von „Firefox Labs“ in Firefox 130 können Nutzer vorab neue Funktionen aktivieren, an denen Mozilla noch arbeitet, die aber schon von einer breiteren Masse getestet werden sollen. Zwei neue solcher Funktionen in Firefox 131 sind die neue Sidebar sowie vertikale Tabs.

Firefox Labs in Firefox 131

Neue Seitenleiste

Unter der neuen Sidebar sind genauer gesagt zwei Dinge zu verstehen: Das eine ist eine neue Seitenleiste, welche schnellen Zugriff auf die Sidebars für Lesezeichen, Chronik, synchronisierte Tabs und, falls aktiviert, die KI-Chatbots gibt. Auch die Schaltflächen von Sidebar-Erweiterungen finden hier Platz. Das andere ist eine Neugestaltung der Sidebars für Chronik und synchronisierte Tabs.

Über die automatisch hinzugefügte Sidebar-Schaltfläche in der Navigationssymbolleiste lässt sich die Darstellung der neuen Seitenleiste zwischen nur Symbolen und Symbolen plus Text wechseln, statt wie bisher die zuletzt verwendete Sidebar ein- und auszuklappen. Alternativ lässt sich in den Einstellungen der neuen Seitenleiste auch konfigurieren, dass die Seitenleiste durch diese Schaltfläche komplett ausgeblendet werden kann, statt in die Darstellung nur mit Icons zu wechseln.

In den Einstellungen der neuen Seitenleiste lässt sich außerdem konfigurieren, für welche der Sidebars Schaltflächen angezeigt oder nicht angezeigt werden sollen. Auch die Sidebar-Position (links oder rechts) lässt sich nun an dieser Stelle konfigurieren, statt wie bisher oben in den einzelnen Sidebars. Schließlich findet sich hier noch die Option für horizontale oder vertikale Tabs, wie im nächsten Abschnitt besprochen.

Neue Sidebar-Einstellungen in Firefox 131

Neu gestaltete Sidebars

Die Sidebars für Chronik sowie synchronisierte Tabs wurden neu gestaltet. Auch diese Änderung wird durch die Einstellung für die neue Sidebar aktiv. Die Lesezeichen-Sidebar sieht noch wie gehabt aus. Aus Konsistenzgründen ist aber davon auszugehen, dass Mozilla die Lesezeichen-Sidebar auch noch nachziehen wird.

Chronik-Sidebar in Firefox 131

Vertikale Tabs

Unter vertikalen Tabs in einem Browser versteht man, die Tabs seitlich untereinander anzuzeigen statt in einer Leiste am oberen Fensterrand. Vorteile sind zum einen eine bessere Nutzung des vorhandenen Platzes sowie, dass mehr Tabs auf einmal angezeigt werden können. Auf der Liste der meistgewünschten Funktionen auf Mozillas Community-Plattform Mozilla Connect stehen vertikale Tabs auf Platz 3. Damit die vertikalen Tabs aktiviert werden können, ist eine gleichzeitige Aktivierung der neuen Sidebar eine Voraussetzung.

Die vertikalen Tabs werden nämlich in die neue Seitenleiste integriert. Im ausgeklappten Sidebar-Modus erscheinen die Tab-Titel neben den sogenannten Favicons, ansonsten nur die Symbole. Angeheftete Tabs, die auch in der horizontalen Tableiste ohne Tab-Titel dargestellt werden, werden hier bis zu sechs in einer Reihe angezeigt.

Vertikale Tabs in Firefox 131 Vertikale Tabs in Firefox 131

Mozilla bittet um Feedback für die neue Sidebar sowie die vertikalen Tabs auf Mozilla Connect.

Der Beitrag Firefox 131: Neue Sidebar und vertikale Tabs zum Vorabtest bereit erschien zuerst auf soeren-hentzschel.at.