Lese-Ansicht

Firefox bekommt Dienst zum Teilen von Links

Mozilla hat einen neuen Dienst in Firefox integriert, der auf bequeme Weise das Teilen mehrerer Tabs, ganzer Lesezeichen-Ordner oder Tab-Gruppen erlaubt. Für die ersten Nutzer geht es bereits mit Firefox 152 los.

Das Teilen einzelner Links mit anderen Menschen ist in der Regel kein Problem. Man kopiert die URL zum Beispiel aus der Adressleiste und schickt diesen auf dem gewünschten Weg an eine andere Person. Etwas komplizierter wird es, wenn mehrere Links involviert sind. Natürlich kann man jeden Link einzeln kopieren und weiterschicken. Aber je mehr Links es sind, desto mehr Zeit nimmt dies in Anspruch.

Ein neuer Dienst, den Mozilla in Firefox integriert hat, schafft hier Abhilfe. Sobald mehrere Tabs markiert sind, steht ein neuer Eintrag im Kontextmenü zur Verfügung. Auch Tab-Gruppen sowie Lesezeichen-Ordner erhalten eine Schaltfläche. Über diese wird ein einzelner Link generiert, der dann mit anderen geteilt werden kann. Der Link ist sieben Tage lang gültig. Danach funktioniert dieser nicht mehr.

Mehrere Links teilen in Firefox 152 Mehrere Links teilen in Firefox 152 Mehrere Links teilen in Firefox 152

Nutzer, welche den geteilten Link aufrufen, sehen eine Übersichtsseite mit allen geteilten Websites. Diese können darüber dann aufgerufen werden. Selbstverständlich funktioniert dies auch für Nutzer, die keinen Firefox verwenden.

Mehrere Links teilen in Firefox 152

Mozilla beginnt mit der Ausrollung dieses neuen Features bereits mit Firefox 152, der nach aktueller Planung am 16. Juni 2026 erscheinen wird – dann allerdings erst für zwei Prozent der Nutzer, die Firefox in amerikanischem Englisch nutzen.

Der Beitrag Firefox bekommt Dienst zum Teilen von Links erschien zuerst auf soeren-hentzschel.at.

  •  

Angriff auf Red Hat Cloud Pakete erschüttert Entwicklerwelt

Mehrere npm Pakete aus Red Hats Cloud Umfeld wurden manipuliert. Die Attacke schleuste heimlich Malware ein und gefährdete sensible Zugangsdaten. Laut Sicherheitsfirma Aikido tauchten die betroffenen Pakete Anfang Juni auf. Insgesamt waren viele Versionen verschiedener Bibliotheken kompromittiert. Die Schadsoftware befand sich in einem versteckten Installationsskript. Dieses lief automatisch beim Installieren der Pakete. Die Malware trägt […]

Der Beitrag Angriff auf Red Hat Cloud Pakete erschüttert Entwicklerwelt erschien zuerst auf fosstopia.

  •  

Emacs als Markdown-Editor

Wer mein Linux-Buch gelesen hat weiß, dass ich nicht im Vi-Lager zuhause bin, sondern zu den Emacs-Fans zähle. Beim Programmieren verwende ich diverse Editoren und IDEs, von VSCode über IntelliJ bis hin zu Xcode. Aber längere Texte (sprich: Bücher) schreibe ich seit Jahrzehnten ausschließlich mit dem Emacs. Ich habe ein paar halbherzige Versuche mit anderen Editoren gemacht, aber ich bin immer wieder zurückgekommen.

Meine Emacs-Liebe hat weniger mit der Großartigkeit dieses Programms zu tun als viel mehr damit, dass ich mir im Laufe der Zeit ein eigenes Setup mit Tastenkürzeln und Zusatzfunktionen gebastelt habe. Davon bin ich jetzt abhängig, meine Finger wollen sich nicht mehr umgewöhnen.

Eine Markdown-Datei aus meinem Scripting-Buch im Emacs. Beachten Sie, dass die Listenpunkte intern zwar sehr lange Textzeilen sind, dass diese aber umbrochen und richtig eingerückt angezeigt werden. Der Umbruch ist auf max. 100 Zeichen limitiert, passt sich aber automatisch an eine kleinere Fensterbreite an.

Die Motivation für diesen Blogbeitrag ist die immer wiederkehrende Frage, womit ich meine Markdown-Texte verfasse. Vielleicht finden andere Emacs-Fans in der nachfolgenden .emacs-Datei Ideen, die sie noch nicht kennen; vielleicht schreibt mir auch jemand im Forum, welches Feature ich bisher übersehen habe.

Dieser Beitrag ist aber keinesfalls ein Versuch, Sie vom Emacs zu überzeugen. Ein Neustart heute bei Null — da würde ich höchstwahrscheinlich bei einem deutlich moderneren Programm landen (möglicherweise bei zed). Dieser Text will Ihnen auch nicht meine Tastenkürzel aufzwingen. Die sind im Laufe der Zeit eher zufällig entstanden. Aber dieser Teil von .emacs lässt sich ja am einfachsten anpassen.

Die Datei .emacs

Die Konfiguration des Emacs erfolgt in der Datei .emacs. Die Anweisungen dort müssen in der Programmiersprache Elisp formuliert werden. Das ist die Emacs-Variante der heute ansonsten kaum noch gebräuchlichen Sprache Lisp. Früher war Elisp eine Hürde für viele Emacs-Einsteiger, und in einigen frühen Auflagen meines Linux-Buchs hatte ich sogar ein kurzes Elisp-Kapitel untergebracht. Heute sagen Sie Claude oder einem anderen KI-Tool, was Sie erreichen wollen, schon bekommen Sie den erforderlichen Code. (Manchmal klappt es erst im zweiten oder dritten Versuch.) Dank KI ist die Elisp-Syntaxhürde also überwunden.

Der Emacs liest .emacs automatisch beim Start. Spätere Änderungen gelten daher erst mit dem nächsten Start oder indem Sie die geänderten Zeilen markieren und mit Alt+X eval-region Return ausführen.

Meine Konfiguration

Die ersten Zeilen im folgenden Listing aktivieren einige allgemeine Einstellungen. cua-mode erlaubt die vertrauten Tastenkürzel Strg+C, Strg+X und Strg+V für Kopieren, Ausschneiden und Einfügen. Im originalen Emacs gibt es dafür andere Kürzel, die parallel aktiv bleiben. save-place-mode bewirkt, dass der Emacs die letzte Cursor-Position in jeder geöffneten Datei dauerhaft speichert. Damit das Arbeitsverzeichnis nicht mit Backup-Dateien übersät wird, landen Emacs-Backups gesammelt in ~/.emacs.d/backups/.

Moderne Emacs-Konfigurationen laden Erweiterungspakete über package.el nach. Das Standard-Repository des Emacs enthält nur wenige Pakete; deshalb binde ich MELPA ein, das mit Abstand größte Community-Repository mit Tausenden von Erweiterungen. Beim ersten Start auf einem neuen Rechner aktualisiert der Emacs automatisch die Paketliste (package-refresh-contents), sodass alle benötigten Pakete sofort installiert werden können.

Das Makro use-package bündelt je ein Paket zusammen mit seiner Konfiguration, Hooks und Tastenkürzel-Bindungen in einem einzigen Block. Die Einstellung use-package-always-ensure t sorgt dafür, dass fehlende Pakete automatisch nachinstalliert werden, ohne manuelles Eingreifen.

Der markdown-mode aus dem gleichnamigen Paket steht im Zentrum des Setups. Der Modus hebt Markdown-Syntax farbig hervor und aktiviert über Hooks mehrere Begleitmodi: visual-line-mode sorgt für weiche Zeilenumbrüche ohne harte Zeilenenden in der Datei, display-line-numbers-mode blendet Zeilennummern ein, und visual-fill-column-mode begrenzt die Textbreite auf 100 Zeichen.

adaptive-wrap ist ein kleines, aber feines Detail: Wenn eine Zeile weich umgebrochen wird, rückt die Folgezeile so ein, dass Listenelemente (* oder -) korrekt untereinander ausgerichtet bleiben. unfill ergänzt den eingebauten Befehl fill-paragraph (bei mir F4): Statt einen Absatz auf mehrere kurze Zeilen zu verteilen, fasst unfill-paragraph alle Zeilen eines Absatzes wieder zu einer einzigen langen Zeile zusammen. Das ist hilfreich, wenn Markdown-Quellen von anderen Tools weiterverarbeitet werden.

Das Paket vertico erweitert den Emacs-Minibuffer um eine vertikale Auswahlliste (siehe den folgenden Screenshot). Beim Wechsel zwischen Buffern (F1) sehe ich alle offenen Dateien auf einen Blick inklusive Dateigröße, Modus und Pfad — letzteres dank marginalia, das die Listeneinträge um nützliche Zusatzinformationen ergänzt. orderless macht die Suche komfortabler: Ich kann mehrere Suchbegriffe mit Leerzeichen trennen und in beliebiger Reihenfolge eingeben.

Die benutzerdefinierte vertico-sort-override-function ändert die Sortierreihenfolge im Buffer-Switcher: Statt alphabetischer Reihenfolge erscheinen die zuletzt verwendeten Buffer ganz oben in der Liste. Bei vielen Dateien finde ich die zuletzt verwendeten Datei schneller.

swap-char (F11) vertauscht die zwei Zeichen an der Cursor-Position. Tippfehler wie getsern statt gestern lassen sich damit sofort korrigieren: Cursor auf das erste falsche Zeichen, einmal F11, fertig.

change-case (F12) wechselt die Groß- bzw. Kleinschreibung des Zeichens unter dem Cursor. change-word-case (F9) tut dasselbe für den ersten Buchstaben des aktuellen Worts, unabhängig davon, wo im Wort der Cursor gerade steht.

point-to-register-1 (F5) / jump-to-register-1 (F6): Mit F5 speichere ich die aktuelle Position, mit F6 springe ich dorthin zurück. Beim Sprung wird gleichzeitig die neue Position gespeichert, sodass ich mit wiederholten F6-Drücken zwischen zwei weit entfernten Textstellen hin- und herspringen kann. Ich finde das praktisch, wenn ich parallel an zwei Stellen eines langen Dokuments arbeite.

expand-abbrev-or-dabbrev (F3) versucht zunächst, eine gespeicherte Abkürzung zu expandieren. In .abbrevs_defs habe ich einige solche Abkürzungen gespeichert, z.B. ms für »Microsoft« oder rhel für »Red Hat Enterprise Linux«. Falls keine passt, greift dabbrev-expand und vervollständigt das angefangene Wort anhand von Vorkommen im selben Buffer. Praktisch für lange Schlüsselwörter.

Beim Einlesen der .emacs-Datei lädt der Editor automatisch alle erforderlichen Pakete herunter. Wenn dabei Download-Fehler auftreten, müssen Sie eventuell den MELPA-Cache aktualisieren. Dazu führen Sie Alt+X package-refresh-contents Return aus und starten den Emacs dann neu.

;; Datei ~/.emacs

;; ======== Grundeinstellungen ====================================

(cua-mode 1)                               ;Cut&Paste mit Strg+C/X/V
(setq inhibit-startup-message t)           ;kein Emacs-Startbildschirm
(setq screen-preserve-screen-position t)   ;zurück zur letzten Zeile
(setq scroll-step 5)                       ;bei Scrollen Sprünge von 5 Zeilen
(column-number-mode 1)                     ; ... Spaltennummern in der Statusleiste
(abbrev-mode 0)                            ;kein automatisches expand-abbrev
(setq require-final-newline t)             ;letzte Zeile automatisch mit Return abschließen
(save-place-mode)                          ;Cursor-Position innerhalb der Datei merken

;; automatische Backups nicht im lokalen Verzeichnis, sondern in ~/.emacs.d/backups/
(setq backup-directory-alist
      `(("." . ,(concat user-emacs-directory "backups"))))
(setq auto-save-file-name-transforms
      `((".*" ,(concat user-emacs-directory "backups/") t)))

;; Spaltenbreite für Zeilennummern (nur Markdown)
(setq-default display-line-numbers-width 4)

;; Abkürzungstabelle automatisch laden und speichern
;; Falls ~/.abbrev_defs nicht existiert, leere Datei anlegen (kein Fehler)
(let ((abbrev-file "~/.abbrev_defs"))
  (unless (file-exists-p abbrev-file)
    (write-region "" nil abbrev-file))
  (read-abbrev-file abbrev-file))
(setq save-abbrevs t)                      ;automat. speichern


;; ======== Packages ================================================

;; package.el initialisieren und MELPA-Repo hinzufügen (falls erforderlich)
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)

;; Paket-Repo aktualisieren (first run / new machine)
(when (not package-archive-contents)
  (package-refresh-contents))

;; alle erforderlichen Pakete automatisch laden
(unless (package-installed-p 'use-package)
  (package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)

;; scratch-Buffer automatisch speichern (https://github.com/Fanael/persistent-scratch)
(use-package persistent-scratch
  :config
  (persistent-scratch-setup-default))

;; weiche Zeilenumbrüche mit Einrückung bei Listen etc.
(use-package adaptive-wrap
  :hook (visual-line-mode . adaptive-wrap-prefix-mode))

;; Spalte mit Zeilennummern / zentrierter Text
(use-package visual-fill-column
  :hook (markdown-mode . visual-fill-column-mode)
  :config
  (setq-default visual-fill-column-width 100)
  (setq visual-fill-column-width 100))

;; Markdown-Modus
(use-package markdown-mode
  :mode (("\\.text\\'" . markdown-mode)
         ("\\.md\\'"   . markdown-mode))
  :hook ((markdown-mode . visual-line-mode)          ; soft-wrap long lines
         (markdown-mode . display-line-numbers-mode) ; show line numbers
         (markdown-mode . visual-fill-column-mode)   ; center text within column width
         (markdown-mode . (lambda () (setq fill-column 79))))) ; hard-wrap at 79 chars

;; Unfill: mehrzeilige Absätze zu einer langen Zeile verbinden (Shift+F4)
(use-package unfill)

;; mehr Komfort im Minibuffer
(use-package vertico
  :config
  (vertico-mode 1)
  ; sort buffer list by 'recently shown'
  (setq vertico-sort-override-function
        (lambda (candidates)
          (if (eq minibuffer-history-variable 'buffer-name-history)
              (let ((hist (symbol-value minibuffer-history-variable)))
                (sort candidates
                      (lambda (a b)
                        (let ((pa (or (cl-position a hist :test #'equal) most-positive-fixnum))
                              (pb (or (cl-position b hist :test #'equal) most-positive-fixnum)))
                          (< pa pb)))))
            candidates))))

(use-package orderless
  :config
  (setq completion-styles '(orderless basic)))
(use-package marginalia
  :config
  (marginalia-mode 1))


;; schönere Statuszeile (setzt voraus, dass die JetBrains Nerd Fonts
;; installiert und als Emacs-Font verwendet werden)
(use-package nerd-icons
  :config
  (setq nerd-icons-font-family "JetBrainsMono Nerd Font"))
(use-package doom-modeline
  :after nerd-icons
  :config
  (doom-modeline-mode 1)
  (setq doom-modeline-height 25)
  (setq doom-modeline-icon t))

;; Ligaturen (setzt ebenfalls einen Nerd Font voraus)
(use-package ligature
  :config
  (ligature-set-ligatures 't '("!=" "!==" "->" "<-" "=>" "<=>" ">=" "<=" "//"))
  (global-ligature-mode t))


;; ======== Farben ================================================

(set-face-attribute 'line-number nil
                    :height 0.8 :foreground "#ffffff" :background "#dddddd")
(set-face-attribute 'link nil
                    :foreground "RoyalBlue3" :underline nil)

;; für Markdown-Modus
(with-eval-after-load 'markdown-mode
  (set-face-attribute 'markdown-italic-face nil
                      :inherit 'italic :foreground "dark magenta" :slant 'italic)
  (set-face-attribute 'markdown-pre-face nil
                      :inherit 'font-lock-constant-face))

(with-eval-after-load 'doom-modeline
  (set-face-attribute 'doom-modeline-buffer-modified nil
                      :foreground "firebrick" :weight 'bold))


;; ======== eigene Funktionen ===================================================

(defun expand-abbrev-or-dabbrev ()    ;Expansion von Abkürzung: F3
  (interactive)
  (unless (expand-abbrev)             ;falls keine Abkürzung existiert
    (dabbrev-expand nil)))            ;dynamische Expansion

(defvar my-point-register 1
  "Hilfsvariable für jump-to-register-1: merkt sich, welches Register aktiv ist.")

(defun point-to-register-1 ()         ;Position in Reg. 1 speichern: F5
  (interactive)
  (setq my-point-register 1)
  (point-to-register 1))

(defun jump-to-register-1 ()          ;Position wechseln: F6
  (interactive)                       ;springt zur Position, die mit F5
  (if (= my-point-register 1)         ; gespeichert wurde ...
      (progn
        (setq my-point-register 2)
        (point-to-register 2)
        (jump-to-register 1))
    (progn
      (setq my-point-register 1)
      (point-to-register 1)
      (jump-to-register 2))))

(defun swap-char ()                   ;zwei Buchstaben an der Cursor-Position
  (interactive)                       ;vertauschen: F11
  (save-excursion
    (forward-char)
    (transpose-chars 1)))

(defun change-case ()                 ;Groß- und Kleinschreibung des Zeichens
  (interactive)                       ;an der Cursorposition ändern: F12
  (let ((zeichen (char-after (point))))
    (if (> zeichen 64)
        (progn
          (setq zeichen (logxor zeichen 32))
          (insert-char zeichen 1)
          (delete-char 1))
      (forward-char 1))))

(defun change-word-case ()            ;Groß- und Kleinschreibung des ersten
  (interactive)                       ;Zeichens eines Worts verändern: F9
  (point-to-register 2)
  (backward-word 1)
  (change-case)
  (jump-to-register 2))

(defun unfill-paragraph-and-advance () ;Absatz zusammenfügen und zum nächsten springen: S-F4
  (interactive)
  (unfill-paragraph)
  (forward-paragraph)
  (skip-chars-forward "\n")
  (recenter))

(defun toggle-fill-column-width ()     ;Zeilenumbruch zwischen 100 und 1000 Zeichen wechseln
  (interactive)
  (setq-local visual-fill-column-width
              (if (eq visual-fill-column-width 100) 1000 100))
  (visual-fill-column-mode 1))



;; ======== Tastenkürzel ======================================================

(global-set-key [f1]    'switch-to-buffer)             ;F1  Buffer wechseln
(global-set-key [f2]    'other-window)                 ;F2  Fenster wechseln
(global-set-key [f3]    'expand-abbrev-or-dabbrev)     ;F3  Abkürzung erweitern
(global-set-key [f4]    'fill-paragraph)               ;F4  Absatz umbrechen
(global-set-key [S-f4]  'unfill-paragraph-and-advance) ;S-F4 Absatz zusammenfügen + nächster
(global-set-key [f5]    'point-to-register-1)          ;F5  Position speichern
(global-set-key [f6]    'jump-to-register-1)           ;F6  zu Position springen
(global-set-key [f7]    'goto-line)                    ;F7  goto line
(global-set-key [f8]    'toggle-fill-column-width)     ;F8 kurze/lange Zeilen
(global-set-key [f9]    'change-word-case)             ;F9  Groß/Klein Wort
(global-set-key [f10]   'undo)                         ;F10 Undo
(global-set-key [f11]   'swap-char)                    ;F11 Buchst. vertauschen
(global-set-key [f12]   'change-case)                  ;F12 Groß-/Klein ändern

;; Mac-Tastatur: fn+ctrl+cursor to start/end of buffer
(global-set-key [C-prior] 'beginning-of-buffer)   
(global-set-key [C-next]  'end-of-buffer)

;; Guillemets-Eingabe mit Alt+Q / Shift+Alt+Q
(defun insert-guillemot1 ()
  (interactive)
  (insert "«"))
(defun insert-guillemot2 ()
  (interactive)
  (insert "»"))
(global-set-key [?\M-q] 'insert-guillemot1)            ;Alt+Q:       «
(global-set-key [?\M-Q] 'insert-guillemot2)            ;Shift+Alt+Q: »

;; macOS: rechte Alt-Taste zur Eingabe von Sonderzeichen wie @ oder € verwenden
(when (eq system-type 'darwin)
  (setq mac-right-option-modifier nil)                 ; LeftAlt + L -> @ etc.
  )

Quellen / Links

Die oben abgedruckte Datei können Sie als dotemacs.txt herunterladen.

Andere .emacs-Beispiele

  •  

Immich und FUTO: eine Bilanz

Nicht immer kommt etwas Gutes dabei heraus, wenn sich FOSS finanzielle Unterstützung sucht. Im Fall der Fotoverwaltung Immich scheint dies jedoch ein Glücksgriff gewesen zu sein.

  •  

KDE Plasma setzt klar auf Wayland

KDE treibt den Wechsel zu Wayland voran und bestätigt den Abschied von X11 in Plasma 6.8. Die aktuelle Nutzung zeigt eine deutliche Tendenz. Die Entwickler bereiten Plasma 6.7 als letzte Version mit X11 Unterstützung vor. Danach beginnt die Entfernung des alten Codes und die Optimierung der modernen Umgebung. Der Schritt soll die Wartung vereinfachen und […]

Der Beitrag KDE Plasma setzt klar auf Wayland erschien zuerst auf fosstopia.

  •  

COSMIC zeigt Vorschau auf Frosted‑Glass Design

Das COSMIC Team arbeitet an einem neuen Frosted Glass Effekt, der bald im Desktop landen könnte. Die Optik erinnert an frühere transparente Designs und wirkt bereits erstaunlich ausgereift. System76 Chef Carl Richell gab auf X einen kurzen Einblick in den aktuellen Stand. Er erklärte, dass der Effekt bewusst dezent startet. Nutzer können die Intensität später […]

Der Beitrag COSMIC zeigt Vorschau auf Frosted‑Glass Design erschien zuerst auf fosstopia.

  •  

Projekt Lightwell: IBM und Red Hat investieren in sichere Open Source Software

IBM und Red Hat starten mit Project Lightwell eine große Sicherheitsinitiative. Das Vorhaben soll offene Software besser schützen und Unternehmen verlässliche Updates liefern. Im Zentrum steht ein vertrauenswürdiges Clearinghouse, das sensible Sicherheitsmeldungen bündelt. Firmen können dort entdeckte Schwachstellen einreichen. IBM prüft gemeldete Fehler mit KI Unterstützung und erstellt geprüfte Korrekturen. Diese Patches decken nicht nur […]

Der Beitrag Projekt Lightwell: IBM und Red Hat investieren in sichere Open Source Software erschien zuerst auf fosstopia.

  •  

SCS Summit 2026: Digitale Souveränität – angekommen in der Praxis

200 Menschen, zwei Bühnen, ein gemeinsames Ziel: Am 21. Mai 2026 kam die Sovereign Cloud Stack (SCS)-Community im bUm Berlin zusammen – und der diesjährige SCS Summit machte deutlicher als je zuvor, dass digitale Souveränität keine Zukunftsvision mehr ist, sondern gelebter Alltag. Im Auditorium lief das Hauptprogramm mit Panels, Keynotes und politischen Impulsen; parallel dazu füllte die bUm Box den ganzen Tag mit technisch tiefgehenden Praxisvorträgen. Die Energie im Raum war spürbar: Diese Community bewegt wirklich etwas.

Quelle

  •  

Euro Office startet im Juni und setzt Segel für Europas digitale Unabhängigkeit

Euro Office steht kurz vor dem offiziellen Start und erscheint am 9. Juni als stabile Version. Das Projekt soll Europas Abhängigkeit von großen US Diensten verringern. Nextcloud und IONOS treiben die Entwicklung gemeinsam voran. Beide wollen eine verlässliche Office Lösung bieten, die sich gut in bestehende Plattformen einfügt. Die Suite wird direkt in Nextcloud Hub […]

Der Beitrag Euro Office startet im Juni und setzt Segel für Europas digitale Unabhängigkeit erschien zuerst auf fosstopia.

  •  

KDE Linux: Abkehr von Zen Kernel und AUR

KDE Linux konnte im Mai spürbare Schritte nach vorne machen und gewinnt an Struktur. Das Projekt stärkt seine Grundlagen und bringt mehr Kontrolle in Aufbau und Pflege des Systems. Die Entwickler setzen nun auf den eigenen kde‑builder, um KDE Software direkt zu kompilieren. Das frühere Erstellen von Arch‑Paketen entfällt damit. Die Distribution bleibt zwar technisch […]

Der Beitrag KDE Linux: Abkehr von Zen Kernel und AUR erschien zuerst auf fosstopia.

  •  

Vorstellung von 2,5 großartigen Open-Source-Projekten

Getreu dem Motto „Nutze Gutes und schreibe darüber“ stelle ich im heutigen Beitrag die Open-Source-Projekte lab-toolbox, kcli und kcli-toolbox vor.

Lab-toolbox

Die lab-toolbox ist ein Projekt von meinem TAM-Kollegen Chris Huang. Es handelt sich dabei um ein Python-Skript, welches die Erstellung von virtuellen Maschinen (VM) mit Red Hat Enterprise Linux (RHEL) unter KVM/QUEMU vereinfacht und beschleunigt.

Hinter der Idee zu diesem Projekt steckt dieser Anwendungsfall:

Als Plattform-TAMs müssen wir regelmäßig Dinge unter verschiedenen RHEL-Versionen testen. Häufig muss hierzu eine frische VM auf unserem Laptop herhalten, die nach dem Test auch direkt wieder entsorgt werden kann. Dies kann nun bspw. mit dem folgenden Kommando erledigt werden:

./create_vm.py --rhel 10 --hostname rhel10-1 --memory 4096 --vcpus 2

Mit diesem einen Befehl werden folgende Aufgaben ausgeführt:

  1. Es wird das aktuelle RHEL 10 Image auf der lokalen Festplatte genutzt, um eine RHEL 10 VM mit 4 GB RAM und 2 vCPU zu erstellen
  2. Das Skript fragt nach einem Passwort für den Konsolen-Login oder bietet an, sich ausschließlich per SSH einzuloggen
  3. Es generiert automatisch die Konfiguration für cloud-init, um:
    • den aktuellen Benutzer innerhalb der neuen VM zu erstellen
    • den SSH-Public-Key des Benutzers hinzuzufügen (automatisch oder per Option)

Ist die VM erstellt, können wir uns direkt mit unserem Benutzer und dessen SSH-Schlüssel einloggen.

Es gibt im Internet viele Wrapper-Skripte, welche die Einrichtung von lokalen VMs vereinfachen sollen. Mir gefällt an diesem besonders, dass es einen meiner häufigsten Anwendungsfälle auf den Punkt bedient. Dazu gibt es ein ausführliches README.md mit einer ausführlichen Dokumentation und einigen Beispielen.

Danke Chris, dass du dieses tolle Projekt mit uns teilst.

Kcli

Wenn es ein bischen mehr sein darf und z.B. folgende Funktionen gewünscht sind:

  • Deplyoment von Cloud-Images bei verschiedenen Providern (z.B. libvirt, KubeVirt, oVirt, OpenStack, VMware vSphere, AWS, Azure, GCP, IBM cloud and Hcloud) mit einem einzigen Werkzeug
  • Profile, um VMs mit der gleichen Hardware-Charakteristik zu starten
  • Komplette Labor-Umgebungen in YAML deklarieren und ausrollen
  • Große Auswahl an Cloud-Images verschiedener Linux-Distributionen
  • Einfache Verteilung und Integration von SSH-Schlüsseln
  • Automatische Registrierung von RHEL-VMs

Dann ist das Projekt kcli von meinem Kollegen Karim Boumedhel und vielen weiteren Beitragenden vielleicht etwas für euch. Wenn ihr jetzt neugierig geworden seid, werft für weitere Informationen einen Blick in die Dokumentation.

Als TAM und Sysadmin möchte ich auch komplexe Systeme testen, welche häufig aus mehreren VMs bestehen. Da mein Laptop hier schnell an seine Grenzen stößt, möchte ich diese Laborumgebungen auch bei anderen Anbietern bereitstellen können. Hierfür scheint mir dieses Projekt gut geeignet zu sein.

Kcli-toolbox

Dies ist der 0,5-Anteil der Vorstellungen in diesem Artikel. Damit ist nicht gemeint, dass es erst zur Hälfte fertig ist. Es ist vielmehr kein richtiges Projekt, sondern lediglich ein Containerfile und ein Custom-Toolbox-Build.

Toolbx ist ein Werkzeug für Linux, welches ein CLI für Softwareentwicklung und Troubleshooting bereitstellt, ohne dass ihr dafür alle notwendigen Werkzeuge auf eurem Host-System installieren müsst. Eine Toolbox basiert auf einem OCI-Container-Image. Es gibt sie in verschiedenen Geschmacksrichtungen. Bitte schaut für weitere Informationen in die Dokumentation.

Bei kcli-toolbox handelt es sich um ein Toolbox-Container-Image, bei dem kcli schon vorinstalliert ist. Das Image wird jeden Dienstag um 03:42 Uhr Ortszeit neu gebaut, um es auf einem aktuellen Stand zu halten.

Mir enthält der Abschnitt „Container Install“ der kcli-Dokumentation zu viele Optionen und aliases, die ich mir nicht merken möchte. Die Builds für EPEL-9 schlagen seit einiger Zeit fehl, so dass ich unter RHEL 9 nicht die letzte Version als RPM nutzen kann. Daher kam mir die Idee zu kcli-toolbox. Ich habe hiermit die aktuellste Version für Fedora 44 und kann diese so natürlich nutzen, als wäre sie als RPM-Paket installiert.

Probiert es doch gerne selbst einmal aus. Hinweise dazu findet ihr in der README.md.

  •  

Wer bleibt, trägt mehr

Als Black Swan bezeichnet man Ereignisse, die erst unvorstellbar erscheinen, dann die Welt verändern und im Nachhinein unvermeidlich wirken: Man hätte es doch wissen müssen.

LLMs in der Softwareentwicklung fühlen sich wie so ein Ereignis an, wenn man sich die Geschwindigkeit und Breite der Adaption und ihre Auswirkungen anschaut. Die Erwartung war: Robotik übernimmt erst körperlich schwerere Aufgaben, Automatisierung übernimmt dann die mühsamen, repetitiven Aufgaben und irgendwann wird Programmierung durch No-Code-Werkzeuge verborgen. Was stattdessen passiert, ist das Gegenteil von No-Code: eine Maschine, die unendlich viel Code ausspuckt und den Programmierer als quasi „den“ White-Collar-Beruf imitiert. Aus No-Code wird More-Code. Dadurch wird ausgerechnet zuerst der Programmierer zur Zielscheibe: Die teuren Positionen geraten unter Druck - und das auch noch zuerst.

Anders gefordert

Wer mit diesen Tools arbeitet, merkt schnell: Man kommt schneller zu Ergebnissen. Auch bei komplexen Anfragen, auch auf bestehenden Codebases.

Die kognitive Arbeit verschiebt sich dabei, sie verschwindet nicht. Früher hat man während des Schreibens ein mentales Modell aufgebaut und die Lösung entstand beim Denken in Code.

Heute bekommt man Code, den etwas anderes gedacht hat. Man muss dieses fremde Modell verstehen, beurteilen und einordnen. Das fordert nicht weniger, nur anders.

Vicki Boykis beschreibt es gut: es wird immer wichtiger, „in Form“ zu bleiben. Datenstrukturen, Pattern, Basics, weil das Urteilsvermögen über Code wichtiger wird als das Schreiben von Code. Wer die Grundlagen versteht, kann bewerten, und wer nur prompten kann, navigiert blind.

Beschleunigung in alle Richtungen

Die zweite Auswirkung ist einfacher zu beschreiben: Mehr. Von allem.

Das gilt nicht nur für die produktive Seite: Softwareprojekte werden zunehmend von KI-generierten Security-Reports und Exploits überschwemmt, weil – Überraschung – LLMs sich auch für die Schwachstellensuche einsetzen lassen. Kombiniert man das noch mit einem finanziellen Anreiz, entstehen Auswüchse, die jetzt wieder mühselig eingefangen werden müssen.

Das ist kein Randphänomen, Daniel Stenberg beschreibt es ganz gut. Zusammen mit den beobachteten Lieferkettenangriffen sind die AI Reports vermutlich eines der dominantesten Themen der IT-Sicherheit und des Open-Source-Ökosystems dieses Jahr. Die Beschleunigung trifft nicht nur die produktive und konstruktive Seite.

Wer LLMs als Werkzeug demokratisiert, demokratisiert auch Angriffsfähigkeit. Das ist keine Nebenwirkung. Das ist dasselbe Werkzeug, dasselbe Tempo. Die Last tragen die sowieso schon wenigen Maintainer, Entwickler und Admins, die das verarbeiten müssen.

Die Messlatte steigt

Entwickler waren teuer. Nicht aus Willkür, sondern weil die Arbeit schwer und das Angebot knapp ist. Die naive Annahme wäre: Wenn das Werkzeug die Arbeit erleichtert, sinkt der Druck. Das Gegenteil passiert.

Coding-Agents senken nicht die Schwierigkeit der Kernarbeit. Verstehen, beurteilen, verantworten – das bleibt schwer. Was sie verschieben, ist die Erwartung. Du hast doch jetzt die Werkzeuge. Die Benchmark ist nicht mehr der gute Entwickler, sondern der gute Entwickler mit Agenten. Also muss jeder für mehr getane Arbeit geradestehen. Gleiche kognitive Last, höheres Volumen obendrauf. Das ist kein neues Muster: Werkzeuge entlasten selten, sie heben die Norm.

Und genau deshalb heizt es sich an. Die Arbeit verdichtet sich auf weniger Schultern. Hiervon kann man fast schon täglich an vielen Stellen lesen, auch wenn KI dabei eher als Korrelation denn als Kausalität erscheint. Trotzdem setzt sich eine Erzählung fest: Jetzt gebe es KI und wer was reißen wolle, müsse jetzt mehr umsetzen. Näher ans Produkt, näher an den Kunden, näher an die Verantwortung.

Und teuer bleibt es ohnehin. Die Ersparnis, die man sich von den Werkzeugen versprach, taucht als neue Rechnung wieder auf: Was an Stellen wegfällt, fließt ins Token-Budget. „Tokenmaxxing“ nennt man das. Nur schrumpft diese Stelle nicht, sie wächst – weil billiger pro Anfrage eben nicht weniger Anfragen heißt, sondern mehr. Das Unternehmen spart nicht, es zahlt woanders, und meist mehr. Der Druck, der dabei entsteht, landet wieder bei denen, die noch da sind.

Was bleibt: die eigentliche Arbeit

Die eigentliche Frage ist nicht, was Maschinen übernehmen. Die Frage ist, was danach noch zählt. Bei Open Source zum Beispiel kann es nicht mehr nur die Verfügbarkeit von Funktionalität oder Alternativen zu proprietären Lösungen sein. Code generieren kann man sich selber. Was bleibt, ist das Projekt als kuriertes Ganzes: konsistentes Design, wenig Bugs, eine klare Vision, Vertrauen in die Maintainer. Das sind Gründe, warum man zu einem Projekt greift.

Und das gilt auch für den Beruf selbst. Die Essenz der Informatik war nie das Tippen. Sie war die Transformation: Ein Problem verstehen, eine Lösung entwerfen, die Umsetzung verantworten. Requirements Engineering und Implementierung sind zwei Seiten davon. Anforderungsanalyse erzeugt den erwarteten Zielzustand, der implementiert werden soll: aus Widersprüchen, impliziten Erwartungen und organisatorischen Realitäten. Das ist schwer zu formalisieren.

Wer erkennt die Anforderungen? Wer definiert das Problem, bevor es gelöst werden kann? Wer prüft, ob die Lösung das richtige Problem löst?

Das wird weiterhin Menschen brauchen. Doch sie werden viel mehr umsetzen müssen, daher stellt sich die Frage: Zu welchem Preis? Den werden wir in den nächsten Monaten sehen.

  •  

Mozilla VPN 2.37 entfernt Telemetrie und bringt viele Neuerungen für Apple-Nutzer

Mozilla hat Version 2.37 seiner VPN-Clients für das Mozilla VPN veröffentlicht. Neben der Entfernung von Telemetrie in allen Clients bringt die neue Version vor allem für Apple-Nutzer einige Neuerungen.

Mit dem Mozilla VPN bietet Mozilla in Zusammenarbeit mit Mullvad sein eigenes Virtual Private Network an und verspricht neben einer sehr einfachen Bedienung eine durch das moderne und schlanke WireGuard-Protokoll schnelle Performance, Sicherheit sowie Privatsphäre: Weder werden Nutzungsdaten geloggt noch mit einer externen Analysefirma zusammengearbeitet, um Nutzungsprofile zu erstellen.

Jetzt Mozilla VPN nutzen

Die Neuerungen vom Mozilla VPN 2.37

Mit dem Mozilla VPN 2.37 hat Mozilla Telemetrie aus seinen VPN-Clients weitestgehend entfernt. Übrig geblieben ist lediglich eine Diagnostik für Programmabstürze, wofür die bisherige Option weiterhin bestehen bleibt.

Auf iOS kann das Mozilla VPN jetzt via Siri aktiviert und deaktiviert werden. Außerdem kann das Ein- und Ausschalten über die Shortcuts-App von iOS automatisiert werden.

Außerdem auf iOS möglich ist es nun, einen Schalter zum Kontrollzentrum oder dem Sperrbildschirm hinzuzufügen. Auf den neuesten iPhones ist es möglich, das Mozilla VPN als Funktion der Aktionsschaltfläche zu wählen.

Auf macOS werden jetzt auch Nur-IPv6-Netzwerke unterstützt.

Unter Linux mit Gnome und Wayland wurde ein Problem mit den Fensterdekorationen behoben. Ebenso unter Linux behoben wurden Probleme, die in Nur-IPV6-Netzwerken während der Verwendung von Multi-Hop auftreten konnten.

Ansonsten bringt das Update auch wieder Fehlerbehebungen und Verbesserungen unter der Haube.

Der Beitrag Mozilla VPN 2.37 entfernt Telemetrie und bringt viele Neuerungen für Apple-Nutzer erschien zuerst auf soeren-hentzschel.at.

  •  

Linux Coffee Talk 5/2026

Der Linux Coffee Talk, das lockere Format rund um Linux, Open Source und Technik im Alltag. Ohne Hype, ohne Clickbait, dafür mit echten Einordnungen der Meldungen, Meinungen und einem Überblick über die wichtigsten FOSS-/Linux-News aus Mai 2026. Wir sprechen über Distributionen, Tools, Datenschutz, Nerd-Themen und alles, was uns Linux-User bewegt. Perfekt für alle, die stets […]

Der Beitrag Linux Coffee Talk 5/2026 erschien zuerst auf fosstopia.

  •  

Podcast: Linux Coffee Talk 5/2026

Der Linux Coffee Talk ist das entspannte Monatsformat bei fosstopia. Hier fassen wir die spannendsten Ereignisse und Entwicklungen der letzten Wochen für Euch zusammen und ordnen sie bestmöglich ein. Also schnappt euch einen Kaffee, Tee oder Euer Lieblingsgetränk, macht es euch gemütlich und lasst uns den Mai 2026 Revue passieren.

Der Beitrag Podcast: Linux Coffee Talk 5/2026 erschien zuerst auf fosstopia.

  •  

Mozilla veröffentlicht Firefox 151 für Apple iOS mit „KI Kill Switch”

Mozilla hat Firefox 151 für Apple iOS veröffentlicht. Dieser Artikel beschreibt die Neuerungen von Firefox 151.

Die Neuerungen von Firefox 151 für iOS

Mozilla hat Firefox 151 für das iPhone, iPad sowie iPod touch veröffentlicht. Die neue Version steht im Apple App Store zum Download bereit.

„Kill Switch” für KI-Funktionen

Künstliche Intelligenz (KI) ist ein Thema, welches mittlerweile omnipräsent ist. Die einen lieben es, andere möchten am liebsten gar nichts damit zu tun haben. Um die Verwaltung von KI-Funktionen einfacher zu machen, hat Mozilla die Firefox-Einstellungen um einen zusätzlichen Bereich mit der Bezeichnung „KI-Einstellungen” erweitert. Dieser neue Bereich bietet einen Ort, um KI-Funktionen zentral zu steuern. Darüber hinaus bietet Firefox einen globalen Schalter zum Ein- und Ausschalten von KI-Funktionen an – welcher auch zukünftige KI-Features abschaltet.

KI-Einstellungen in Firefox 151 für Apple iOS

Sonstige Neuerungen von Firefox 151 für iOS

Ansonsten bringt das Update auf Firefox 151 wie imme Detail-Verbesserungen, Fehlerbehebungen sowie Optimierungen unter der Haube. Auch Sicherheitslücken wurden behoben.

Der Beitrag Mozilla veröffentlicht Firefox 151 für Apple iOS mit „KI Kill Switch” erschien zuerst auf soeren-hentzschel.at.

  •  

Flatpak Entwickler planen tiefere systemd Einbindung

Flatpak könnte künftig stärker auf systemd Services setzen. Diese mögliche Richtung sorgt bei vielen Nutzern für Diskussionen. Besonders betroffen wären Distributionen ohne systemd Unterstützung. Die Entwickler arbeiten derzeit an einer neuen Architektur. Sie nennen das Konzept „Flatpak Next-Generation Sandboxing“ und prüfen grundlegende Änderungen. Ziel ist eine stabilere Verwaltung laufender Anwendungen. Auch die Integration moderner Desktop […]

Der Beitrag Flatpak Entwickler planen tiefere systemd Einbindung erschien zuerst auf fosstopia.

  •  
❌