Forte - eine "starke" Fediverse-Plattform ist im Kommen
Vor über einem Jahr, im Januar 2024 wurde ein Artikel von mir auf der Webseite GNU/Linux.ch in der "Fediverse-Serie" zum Fediverse-Dienst (streams) veröffentlicht...
View article
View summary
Vor über einem Jahr, im Januar 2024 wurde ein Artikel von mir auf der Webseite GNU/Linux.ch in der "Fediverse-Serie" zum Fediverse-Dienst (streams) veröffentlicht. Zu dieser Zeit habe ich selbst einen (streams) Hub betrieben und wollte mit dem Artikel diesen Dienst etwas bekannter machen. Es gab da auch ein paar Hubs (mehr als heute) und ich hatte selbst sogar einige Neuanmeldungen nach dem Erscheinen des Artikels.
Ende August verkündete der Haupt-Entwickler des Streams-Repositorys (und der Schöpfer von Friendica, Hubzilla, Osada, Zap ...), Mike MacGirvin, dass er das Repo aufgibt bzw. freigibt. Er wolle die Software nicht weiter entwickeln. Einer der Gründe war, dass aber auch wirklich niemand außer ihm zu der Software wesentlich beigetragen hat. Dabei war die Idee, das Repo nicht als eigenständiges Fediverse-Projekt zur Verfügung zu stellen, sondern als Basis bzw. Quelle für Eigenentwicklungen. Es sprang nur keiner auf.
Zuvor hatte er noch die nomadische Identität für das (bei (streams) neben Nomad verwendete) ActyvityPub Protokoll entwickelt und implementiert.
Und nun wollte es das Projekt freigeben. Nur... es gab ja keinen Entwickler, der sich des Projekts angenommen hätte.
Und außerdem verkündete er, aus Frust sicherlich, dass er die Entwicklung von solcher Software generell aufgeben würde.
Damit sah es ganz konkret so aus, als würde das Streams-Repo verwaisen, die Software nicht nur nicht weiter entwickelt, sondern auch keine Fehlerbereinigung mehr stattfinden. Aus diesem Grund hatte ich im September/Oktober vergangenen Jahres mit entsprechender Vorlaufzeit meinen Hub geschlossen.
Noch vor der Aufgabe des Streams-Repos hat Mike MacGrivin dieses aber geforkt und begonnen, unter dem Projektnamen "Forte" das System umzubauen. Ziel war das komplette Entfernen des Nomad Protokolls, welches (streams) und Hubzilla antreibt und welches als erstes eine echte nomadische Identität erlaubte.
Positiver Nebeneffekt war, dass er auch Fehler, über welche er stolperte, ebenfalls im Streams-Repo beseitigte und einige Verbesserungen als Backport einbrachte. Die aktive Entwicklung von (streams) ist zwar vorbei, das Repo ist aber nicht wirklich komplett verwaist und - womöglich auch sicherheitsrelevante - Bugfixes finden weiterhin statt.
Aufgrund dieser Entwicklung habe ich auch wieder einen (streams) Hub in Betrieb genommen und die Entwicklung von Forte interessiert beobachtet.
Ich weiß nicht, ob Forte inzwischen als Produktiv-System empfohlen wird... lange Zeit war dem nicht so. Allerdings hat es sich inzwischen so gut entwickelt, dass man es gut nutzen kann. Und so kam es, dass es seit gestern "Pepes Forte", also einen von mir betriebenen Forte-Hub gibt.

Und ich war ausgesprochen positiv überrascht, wie simpel und glatt er sich aufsetzen lässt, wie geschmeidig er läuft und wie ressourcenschonend der Betrieb ist.
Sicherlich ist Forte noch davon entfernt "fertig" zu sein... und es werden sicherlich hier und da noch Fehler und Unzulänglichkeiten sichtbar werden. Nutzbar ist es aber absolut.
So... nun aber mal dazu, was Forte denn eigentlich ist...
Ganz kurz und knapp gesagt: Forte ist ein Open-Source-ActivityPub/Fediverse-Server.
Wer sich auf einem Forte-Hub einfindet und (streams) kennt, wird auf den ersten Blick gar keinen Unterschied feststellen können. Forte lebt ganz klar in der Tradition von Hubzilla, wobei die über die Social Networking Funktionalität hinausgehenden Funktionen entfernt wurden. Wer Hubzilla kennt, der findet sich auch bei Forte in kürzester Zeit zurecht. Nur die CMS-Fähigkeiten von Hubzilla wird er nicht finden.
Die Besonderheit von Forte ist, dass es nomadische Identität, inklusive der Synchronisierung von Kanal-Klonen nahezu in Echtzeit, bietet und dabei nur mit ActivityPub arbeitet und kein anderes Protokoll für diese Funktionalität benötigt. Alle Inhalte, Medien, Einstellungen und Verbindungen werden auf die verschiedenen Kanal-Klone bei anderen Instanzen migriert, sodass man jederzeit zu einem anderen Hub wechseln kann, sollte der "Heimat-Hub" einmal nicht funktionieren. Und wenn der Haupt-Hub wieder online geht, dann gibt es auch dort keine Verluste. Auch dieser wird dann wieder synchronisiert.
Um die Funktionen von Forte aufzuzählen, zitiere ich hier ganz frech einmal die FEATURES.md aus dem Forte-Repo:
- Federated Single Sign-on: Macht private/geschützte Ressourcen auf externen Websites genauso zugänglich wie auf lokalen Websites.
- Federated Access Control: Arbeitet mit Federated Single Sign-on zusammen, um private/geschützte Medien und Webressourcen für jeden bereitzustellen, auch für Besucher von verschiedenen Websites.
- Gruppen: Öffentlich, privat und moderiert. Diese funktionieren auf fast allen Fediverse-Plattformen.
- Veranstaltungen: Kalender und Anwesenheit; automatische Geburtstagsbenachrichtigungen mit angepasster Zeitzone für Freunde, die diese Funktion nutzen.
- Berechtigungen: Nicht jeder möchte sich mit Fremden unterhalten und ihnen intime Details seines Lebens mitteilen.
- Cloud-Speicher: Integrierter Netzwerk-Dateispeicher mit integrierter föderierter Zugriffskontrolle und Zugriffs-/Berechtigungen für soziale Netzwerke. Verfügbar über WebDAV.
- Editor: Unterstützt Markdown, HTML und BB-Code. Verwenden Sie einige oder alle dieser Elemente in einem Beitrag, um ein medienreiches Erlebnis zu schaffen. Nachbearbeitung und Vorschau werden unterstützt. Es ist eher unwahrscheinlich, dass Sie bei normaler Nutzung die Längenbeschränkungen für Beiträge im Verbund überschreiten (etwa 100 Druckseiten Text). Es gibt keine willkürlichen Beschränkungen für die Anzahl der angehängten Fotos, Dateien oder Umfrageantworten.
- Teilen: Ziehen Sie verschiedene Elemente wie Dateien, Fotos, Videos, Webseiten, Karten, Fediverse-Artikel und Telefonnummern per Drag-and-Drop, um sie zu teilen.
- Listen: Diese werden manchmal auch als Kreise oder Aspekte bezeichnet und ermöglichen es Ihnen, Ihre eigenen Gruppen von Freunden zu definieren und mit ihnen als private Gruppe zu kommunizieren.
- Erweitern: Ändern oder aktualisieren Sie die Funktionalität Ihrer Software nach Belieben, indem Sie zusätzliche Funktionen aus Add-ons und der kostenlosen App-Sammlung installieren.
- Gastzugang: Ermöglichen Sie besonderen Gästen den Zugang zu privaten Ressourcen und Medien – zu Ihren Bedingungen.
- Friend Zoom: Legen Sie den Grad der Nähe zu einer Verbindung fest und zoomen Sie dann interaktiv heran, um Ihren Stream auf enge Freunde zu filtern, oder zoomen Sie heraus, um Beiträge von flüchtigen Bekannten zu sehen.
- Ortungsdienste: Einchecken, Auschecken und Suche nach Entfernung
- Zustellberichte: In einer dezentralisierten, plattformübergreifenden Welt passieren Dinge. Websites und Netzwerke fallen manchmal aus. Projektentwickler führen manchmal Fehler und Inkompatibilitäten ein. So können Sie feststellen, was mit Ihrem Beitrag oder Kommentar passiert ist und wo er sich nach der Veröffentlichung tatsächlich befindet.
- Nomadische Identität: Sie sind Sie. Wenn Sie zu einer anderen Instanz oder einem anderen Projekt wechseln oder Konten für mehrere Projekte/Instanzen erstellen, sind Sie immer noch Sie.
- C2S: Stellt die ActivityPub-API „Client to Server“ zur Verwendung mit externen Apps bereit.
Ich schätze, dass sich Forte durchaus im Fediverse etablieren könnte. Es ist funktional, hat herausragende Features und wird aktiv entwickelt. Vielleicht müsste auch bei Forte noch ein wenig an der Optik gebastelt werden (Forte erlaubt ebenfalls die Nutzung anderer Themes und deren Selbsterstellung).
Schön ist, dass mit Forte nun ein System existiert, welches die volle nomadische Identität nur mit ActivityPub bietet.
Für mich ist und bleibt das perfekte System Hubzilla. Und das zusätzliche (ja eigentlich grundlegende) Nomad (Zot/6) Protokoll erlaubt es, auch die erweiterten (CMS) Fähigkeiten mit nomadischer Identität zu nutzen. Hubzilla ist ausgereift und wird engagiert weiterentwickelt.
Trotzdem werde ich mich weiter mit Forte befassen, den Hub aller Voraussicht nach, dauerhaft betreiben und es ganz klar im Auge behalten... weil mich die Technik dahinter begeistert und weil es ein hervorragend nutzbares Programm ist, um am Fediverse teilnehmen zu können.
Ach ja: Das Forte-Repo findet man hier: https://codeberg.org/fortified/forte
Und noch ein Theme...
Im Artikel "Hubzilla sieht 'altbacken' aus?" hatte ich für die Utsukta-Themes geschwärmt, aber auch das Theme "neuhub-tab" von Scott M. Stolz erwähnt...
View article
View summary

Im Artikel Hubzilla sieht "altbacken" aus? hatte ich für die Utsukta-Themes geschwärmt, aber auch das Theme "neuhub-tab" von Scott M. Stolz erwähnt.
Und ich hatte geschrieben, dass mir das "neuhub-tab" Theme besser für CMS-Nutzung, als für die Social Network Nutzung geeignet zu sein scheint.
Inzwischen wurde es aber optimiert und verfeinert... und ich muss die Aussage relativieren.


Konzeptionell unterscheidet es sich von den anderen Themes. Es hält an der Navigationsleiste in ihrer Funktion fest, zieht aber die angepinnten Apps über die gesamte Breite und versieht sie mit einem entsprechenden Text-Label. Das Hauptmenü (Avatarbild) befindet sich nun auch rechts oben.
"neuhub-tab" verfügt ebenfalls über eine spezielle linke Seitenleiste und die Widgets werden alle in der rechten Seitenleiste dargestellt. Die linke Seitenleiste ist nicht konfigurierbar, wartet aber mit einem sinnvollen und gut strukturierten Menü auf:
- Home
Dies führt zur Home-URL des Hubs. Wenn es nicht anders konfiguriert ist, verweist diese URL auf das HQ. - HQ
Direkter Link zum HQ. - Notifications
Dieser Menüpunkt ruft die Auflistung der Benachrichtigungen auf. - Channel
Hierbei handelt es sich um ein aufklappbares Menü mit Links zu kanal-relevanten Ansichten:- View Channel - Kanalansicht
- View Profile - Profilansicht
- Edit Profile - Profileditor
- Photos - Fotoalbum des Kanals
- Files - Dateien des Kanals
- Calendar - Kalender des Kanals
- Conversations
Ebenfalls ein aufklappbares Menü für den Zugriff auf den Strem mit unterschiedlichen Filtern:- Inbox / Strem - normale, ungefilterte Stream-Ansicht
- Direct Messages - Stream der Dirktnachrichten
- Starred Posts - Strem der mit Stern markierten Beiträge
- Personal Posts - eigene Beiträge
- Events - Kalender-Einträge
- Polls - Umfragen
- Contacts
Aufklappbares Menü mit Kontakt- / Verbindungs-Bezug:- Active Connections - Liste der aktiven Verbindungen
- All Connections - sämtliche Verbindungen
- Connection Requests - offene Verbindungsanfragen
- Directory - Kanalverzeichnis
- Featured Apps
Hier erscheinen im Untermenü alle installierten und für das App-Menü aktivierten Apps. - Settings
Aufklappbares Menü der verschiedenen Einstellungen:- Channel Settings - Kanaleinstellungen
- Account Settings - Kontoeinstellungen
- Privacy Settings - Privacy-Einstellungen
- Display Settings - Einstellungen zum Erscheinungsbild
- Manage Locations - Verwaltung der Klon-Adressen
- Personalization
Untermenü mit Einstellungen zu verschiedenen Apps/Ansichten:- Channel Home - kanalspezifische Einstellungen
- Connections - Einstellungen zu den Verbindungen
- Stream - spezifische Einstellungen zur Stream-Ansicht
- Directory - spezifische Einstellungen zum Kanalverzeichnis
- Calendar - Einstellungen zum Kalender
- Photo - Einstellungen zur Foto-Ansicht
- Search
Aufruf der Stream-Suche

Auch das "neuhub-tab" Theme ist ein modernes und praktisch gut benutzbares Theme, das nicht so "verstaubt" wie "redbasic" daher kommt und für Benutzer ein besseres Nutzungsgefühl erzeugt.
Klasse, dass sich in Hinblick auf UI/UX bei Hubzilla in letzter Zeit einiges getan hat.
Das Neuhub Theme und die Installationsanleitung für Admins findet man hier: Neuhub Hubzilla Themes
Hubzilla sieht "altbacken" aus?
Eine häufig zu Hubzilla geäußerte Kritik ist, dass die Oberfläche "altbacken" aussieht... man liest, sie habe den Charme einer Webseite aus den späten 90ern. Und - ganz ehrlich - die Kritik ist auch berechtigt...
View article
View summary

Eine häufig zu Hubzilla geäußerte Kritik ist, dass die Oberfläche "altbacken" aussieht... man liest, sie habe den Charme einer Webseite aus den späten 90ern. Und - ganz ehrlich - die Kritik ist auch berechtigt.
Wer sich einen Kanal erstellt, der wird mit dem Standard-Theme "redbasic" konfrontiert. Ein Theme, das es schon sehr viele Jahre gibt und entsprechend antiquiert wirkt.
Außerdem sind Funktionen - in der Regel sogar notwendiger Weise aufgrund des Konzepts - etwas verstreut. Daran lässt sich so ohne weiteres auch nicht viel ändern... aber wichtige Dinge, auf welche man rasch und einfach Zugriff haben möchte, sind auch nicht so einfach zu finden... insbesondere wenn man Hubzilla-Einsteiger ist.
In einigen Artikeln und Tutorials habe ich bereits erläutert, wie man Hubzilla auch mit "redbasic" ein wenig "aufhübschen" kann, indem man die Farben anpasst, vielleicht ein Hintergrundbild nutzt, die Eckenradien nach eigenem Geschmack verändert und schließlich mittels des PDL-Editors weitere Widgets und Bereiche zur Ansicht hinzufügen kann.
Das sieht dann auch schon besser aus... aber grundsätzlich bleibt das Layout beim "historischen" Grundgeschmack.
Nun bietet Hubzilla aber die Möglichkeit, weitere Themes zu installieren oder sogar eigene zu erstellen. Und dabei ist der Kreativität kaum eine Grenze gesetzt.
In den frühen Jahren gab es einige wenige, die auch mehr auf Anpassungen hinausliefen und die inzwischen verwaist sind und außerdem nicht mehr fehlerfrei funktionieren.
Dann war da eine lange Zeit komplette "leere", bis Scott M. Stolz begann, am NeuHub-Projekt zu arbeiten und dafür auch Themes für die aktuellen Hubzilla-Versionen zu erstellen. Das beschränkte sich nicht nur auf die reine Optik, sondern führte auch zu neuen Widgets und Addons.
Das aktuelle Theme "neuhub-tab" ist installier- und nutzbar und zeigt, das Hubzilla durchaus auch sehr modern aussehen kann.
Allerdings zielt das NeuHub-Theme eher auf die Nutzung von Hubzilla als CMS ab. Es lässt Kanäle etc. mehr wie moderne Webseiten aussehen (bietet aber dabei trotzdem Zugriff zu den "klassischen" Social-Network-Funktionen). Ein Einsteiger, der Hubzilla zunächst ganz normal als Social-Network-Zugang zum Fediverse nutzen möchte, wird sich damit auch nicht unbedingt leichter zurechtfinden. Ich befürworte es, dass dieses Theme (oder ein abgeleitetes) in den Hubzilla-Kern aufgenommen wird und finde es für viele Dinge gut nutzbar und als einen großen optischen Schritt voraus. Nur den "Normalos" unter den Nutzern wird es nicht ganz so viel bringen.
Doch es gibt jetzt da etwas, was genau diese Lücke füllen kann. Der Hubzilla-Nutzer (und Admin seiner eigenen Instanz Utsukta) Saiwal hat sich die Mühe gemacht und einige Themes für Hubzilla erstellt: die "Utsukta-Themes".
Sie basieren auf den Themes AdminLTE und den Bootswatch Themes bzw. sind an diese angelehnt. Damit haben die "Utsukta-Themes" eine wirklich moderne Basis.
Außerdem hatte Saiwal mit seinen Themes genau die Zielgruppe im Auge, die ich erwähnt habe: Nutzer, die Hubzilla in erster Linie als Zugangs-Software zum Social Network "Fediverse" verwenden wollen. Viele wichtige Funktionen sind bei einem frischen Hubzilla mit "redbasic" entweder sehr unauffällig und nicht gerade intuitiv im App-Menü (oben rechts ⋮) versteckt. Grundsätzlich findet man ansonsten nur die App HQ in der oberen Navigationsleiste als angepinntes Symbol. Die wichtigste App, nämlich die Stream-Ansicht, sucht man dort vergeblich. Dafür muss man erst auf die drei Pünktchen obern rechts klicken und "Stream" aus dem erscheinenden Menü auswählen. Das ist nicht benutzerfreundlich und erst recht nicht "intuitiv"!

Um diese App (Stream-Ansicht) und einige andere wirklich wichtige andere (Verbindungen, Kanal etc.) an der Navigationsleiste anzupinnen, muss man diese erst entsprechend konfigurieren. Man muss im App-Menü den Menüpunkt "+ Apps" auswählen und bei den anzupinnenden Apps auf das Pinnadel-Symbol klicken. Dann erscheinen die Symbole in der Navigationsleiste.
Damit wird Hubzilla schon besser nutzbar. Aber die Symbole sind trotzdem sehr unauffällig auf dem Bildschirm dargestellt.
Wechselt man zu "AdminLTE" (Utsutka-Theme), dann ändert sich nichts daran, dass zunächst auch nur das HQ angepinnt ist. Aber die Apps befinden sich nun nicht mehr hinter einem unscheinbaren Menü-Symbol, sondern sind (schwarz hinterlegt) prominent in der linken Seitenleiste zu finden. Dort ist auch ein Eintrag "Featured Apps" mit einem Pfeilsymbol, über welches die weiteren installierten Apps erreichbar sind.

Und darunter, ebenfalls gut sichtbar, der Eintrag "+ Apps", mit welchem man neues Apps installieren, vor allem aber installierte Apps in der Seitenleiste anpinnen kann. Mit wenigen Klicks sieht das Hubzilla dann so aus:

Um mehr Platz für den eigentlichen Inhalt zu haben, lässt sich die Seitenleiste auch einklappen. Dafür klickt man auf das Symbol

Fährt man dann mit dem Mauszeiger über die eingeklappte Seitenleiste, klappt diese automatisch auf, so dass man die Symbole samt Beschriftung sehen kann. Verlässt man mit dem Mauszeiger den Bereich wieder, klappt die Seitenleiste wieder automatisch ein.
Widgets, die bei "redbasic" auf rechte und linke Seitenleiste verteilt sind, finden sich bei den "Utsukta-Themes" allesamt in der rechten Seitenleiste. Insgesamt ist das Design aufgeräumt und klar. Wenn man von längerer Zeit der Nutzung von "redbasic" umsteigt, dann dauert es ein klein wenig, bis man sich bei den neuen Themes auch zurechtfindet. Dann fühlt man sich aber innerhalb kürzester Zeit heimisch... und man hat nicht mehr das Gefühl, sich in einer angestaubten Umgebung zu bewegen.
Derzeit gibt es vier "Utsukta-Themes"...
AdmnLTE:

Cosmo:

Journal:

Vapor:

Die Themes kann man jeweils auch auf ein dunkles Design umstellen, oder dies, nach der Tageszeit, automatisiert erledigen lassen.

Um eines der Themes auszuwählen, öffnet man im Hauptmenü (Avatar-Bild) die Einstellungen und wählt die "Anzeige-Einstellungen".

Dort wählt man dann das Theme im Auswahlfeld "Theme wählen" und selektiert das entsprechende Theme. Ein Klick auf den Button "Absenden", und das Theme ist umgestellt.
Wer jetzt in dem Auswahlfeld nur "redbasic" findet, oder vielleicht noch ein oder mehrere andere Themes, nur keins der "Utsukta-Themes", der hat das Pech, dass diese Themes beim Hub nicht installiert oder aktiviert sind.
Ich habe sie bei meinen beiden Hubs drin. Bei welchen anderen Hubs sie ebenfalls angeboten werden, weiß ich nicht. Hat man seinen Kanal aber auf einem Hub, der die Themes nicht anbietet, kann es helfen, einmal höflich und nett beim Admin anzufragen, ob er sie nicht installieren mag. Gerne auch mit Verweis auf diesen Artikel hier... und mit dem Hinweis, dass die Installation keine "Gefahr" für den Hub bedeutet.
Der Admin hat auch kaum Arbeit damit. Er tut dies von der Konsole (also dem Terminal) aus, die er ohnehin ab und an für Updates aufrufen muss. Dort wechselt er in das Verzeichnis der Hubzilla-Installation und gibt dort
./util/add_theme_repo https://github.com/saiwal/Utsukta-hub-themes.git utsukta-themes
ein.
Damit werden die Themes installiert und sie werden auch in den normalen Update-Prozess mit einbezogen. Nun muss er sie nur noch im Admin-Bereich von Hubzilla im Menüpunkt "Designs" per Klick ins Kästchen aktivieren.

Anschließend stehen sie den Nutzern zur Verfügung.
Ich würde mir wünschen, wenn die "Utsukta-Themes" den Weg in eine Hubzilla Standard-Installation finden.
Xonsh unter Arch Linux
Wer Arch Linux (oder eine Variante) nutzt, verwendet zum Installieren in der Regel die Pakete der Distribution oder - sofern man sich der Risiken bewusst ist - auch vertrauenswürdige Pakete aus dem AUR Repo. Python ist in der Regel aus dem Repo vorinstalliert. Und es bietet sich ja eigentlich auch an, Xonsh ebenfalls so zu installieren...
View article
View summary
Wer Arch Linux (oder eine Variante) nutzt, verwendet zum Installieren in der Regel die Pakete der Distribution oder - sofern man sich der Risiken bewusst ist - auch vertrauenswürdige Pakete aus dem AUR Repo.
Python ist in der Regel aus dem Repo vorinstalliert. Und es bietet sich ja eigentlich auch an, Xonsh ebenfalls so zu installieren.
Funktioniert auch prima.
Aber spätestens an dem Punkt, an welchem man Xontribs (also Xonsh-Erweiterungen) installieren möchte, ist Schluss mit Lustig.
Xontribs installiert man nämlich mittels
Und hier fängt Arch dann an, zu "bocken":
Mit der Installation von Python übernimmt nämlich das Betriebssystem das Ruder, was die Verwaltung von Paketen betrifft. Systemweit kann man mit
nichts mehr einfach so installieren. Man kann Pakete nur mit pipx in einer virtuellen Umgebung für den Nutzer installieren. Sie stehen dann ganz normal für den Nutzer zur Verfügung, aber nicht systemweit.
Der Versuch, Xontribs nun einfach mit pipx zu installieren, scheitert aber leider auch.
Ich habe zunächst keine Lösung gefunden und in den Community-Bereichen von Xonsh geragt, was ich nun tun kann. Letztlich bin ich aber doch selbst auf die Lösung gekommen.
Weil ich Xonsh ohnehin nur für meinen Nutzeraccount verwenden möchte, bot es sich an, das Xonsh-Paket zu deinstallieren und Xonsh ganz normal mit
für den Nutzer in einer eigenen Umgebung aufzusetzen.
Und damit klappt dann auch die Installation von Xontribs ganz so, wie es vorgesehen ist.
Python ist in der Regel aus dem Repo vorinstalliert. Und es bietet sich ja eigentlich auch an, Xonsh ebenfalls so zu installieren.
Funktioniert auch prima.
Aber spätestens an dem Punkt, an welchem man Xontribs (also Xonsh-Erweiterungen) installieren möchte, ist Schluss mit Lustig.
Xontribs installiert man nämlich mittels
xpip install <paketname>
Und hier fängt Arch dann an, zu "bocken":
× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
python-xyz', where xyz is the package you are trying to
install.
If you wish to install a non-Arch-packaged Python package,
create a virtual environment using 'python -m venv path/to/venv'.
Then use path/to/venv/bin/python and path/to/venv/bin/pip.
If you wish to install a non-Arch packaged Python application,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. Make sure you have python-pipx
installed via pacman.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Mit der Installation von Python übernimmt nämlich das Betriebssystem das Ruder, was die Verwaltung von Paketen betrifft. Systemweit kann man mit
nichts mehr einfach so installieren. Man kann Pakete nur mit pipx in einer virtuellen Umgebung für den Nutzer installieren. Sie stehen dann ganz normal für den Nutzer zur Verfügung, aber nicht systemweit.
Der Versuch, Xontribs nun einfach mit pipx zu installieren, scheitert aber leider auch.
Ich habe zunächst keine Lösung gefunden und in den Community-Bereichen von Xonsh geragt, was ich nun tun kann. Letztlich bin ich aber doch selbst auf die Lösung gekommen.
Weil ich Xonsh ohnehin nur für meinen Nutzeraccount verwenden möchte, bot es sich an, das Xonsh-Paket zu deinstallieren und Xonsh ganz normal mit
pipx install Xonsh
für den Nutzer in einer eigenen Umgebung aufzusetzen.
Und damit klappt dann auch die Installation von Xontribs ganz so, wie es vorgesehen ist.
Xonsh unter Arch Linux
Wer Arch Linux (oder eine Variante) nutzt, verwendet zum Installieren in der Regel die Pakete der Distribution oder - sofern man sich der Risiken bewusst ist - auch vertrauenswürdige Pakete aus dem AUR Repo. Python ist in der Regel aus dem Repo vorinstalliert. Und es bietet sich ja eigentlich auch an, Xonsh ebenfalls so zu installieren...
View article
View summary
Wer Arch Linux (oder eine Variante) nutzt, verwendet zum Installieren in der Regel die Pakete der Distribution oder - sofern man sich der Risiken bewusst ist - auch vertrauenswürdige Pakete aus dem AUR Repo.
Python ist in der Regel aus dem Repo vorinstalliert. Und es bietet sich ja eigentlich auch an, Xonsh ebenfalls so zu installieren.
Funktioniert auch prima.
Aber spätestens an dem Punkt, an welchem man Xontribs (also Xonsh-Erweiterungen) installieren möchte, ist Schluss mit Lustig.
Xontribs installiert man nämlich mittels
Und hier fängt Arch dann an, zu "bocken":
Mit der Installation von Python übernimmt nämlich das Betriebssystem das Ruder, was die Verwaltung von Paketen betrifft. Systemweit kann man mit
nichts mehr einfach so installieren. Man kann Pakete nur mit pipx in einer virtuellen Umgebung für den Nutzer installieren. Sie stehen dann ganz normal für den Nutzer zur Verfügung, aber nicht systemweit.
Der Versuch, Xontribs nun einfach mit pipx zu installieren, scheitert aber leider auch.
Ich habe zunächst keine Lösung gefunden und in den Community-Bereichen von Xonsh geragt, was ich nun tun kann. Letztlich bin ich aber doch selbst auf die Lösung gekommen.
Weil ich Xonsh ohnehin nur für meinen Nutzeraccount verwenden möchte, bot es sich an, das Xonsh-Paket zu deinstallieren und Xonsh ganz normal mit
für den Nutzer in einer eigenen Umgebung aufzusetzen.
Und damit klappt dann auch die Installation von Xontribs ganz so, wie es vorgesehen ist.
Python ist in der Regel aus dem Repo vorinstalliert. Und es bietet sich ja eigentlich auch an, Xonsh ebenfalls so zu installieren.
Funktioniert auch prima.
Aber spätestens an dem Punkt, an welchem man Xontribs (also Xonsh-Erweiterungen) installieren möchte, ist Schluss mit Lustig.
Xontribs installiert man nämlich mittels
xpip install <paketname>
Und hier fängt Arch dann an, zu "bocken":
× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
python-xyz', where xyz is the package you are trying to
install.
If you wish to install a non-Arch-packaged Python package,
create a virtual environment using 'python -m venv path/to/venv'.
Then use path/to/venv/bin/python and path/to/venv/bin/pip.
If you wish to install a non-Arch packaged Python application,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. Make sure you have python-pipx
installed via pacman.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Mit der Installation von Python übernimmt nämlich das Betriebssystem das Ruder, was die Verwaltung von Paketen betrifft. Systemweit kann man mit
nichts mehr einfach so installieren. Man kann Pakete nur mit pipx in einer virtuellen Umgebung für den Nutzer installieren. Sie stehen dann ganz normal für den Nutzer zur Verfügung, aber nicht systemweit.
Der Versuch, Xontribs nun einfach mit pipx zu installieren, scheitert aber leider auch.
Ich habe zunächst keine Lösung gefunden und in den Community-Bereichen von Xonsh geragt, was ich nun tun kann. Letztlich bin ich aber doch selbst auf die Lösung gekommen.
Weil ich Xonsh ohnehin nur für meinen Nutzeraccount verwenden möchte, bot es sich an, das Xonsh-Paket zu deinstallieren und Xonsh ganz normal mit
pipx install Xonsh
für den Nutzer in einer eigenen Umgebung aufzusetzen.
Und damit klappt dann auch die Installation von Xontribs ganz so, wie es vorgesehen ist.
Andere Mupfel
Mit der Bash kenn' ich mich aus. Bin ja auch schon seit 1996 nahezu ausschließlich mit Linux unterwegs... da lernt man über die Jahre die Shell halt kennen ...
View article
View summary

Dieser Artikel wurde erstmals am 20. Februar 2025 veröffentlicht.
Mit der Bash kenn' ich mich aus. Bin ja auch schon seit 1996 nahezu ausschließlich mit Linux unterwegs... da lernt man über die Jahre die Shell halt kennen.
Dann bin ich auf die Fish-Shell gestoßen (2016) und seit dem war sie die Shell meiner Wahl. Kürzlich habe ich dann einmal auf die Nushell umgestellt, wobei ich damit irgendwie nicht warm geworden bin.
Elvish habe ich auch einmal ausprobiert, aber das war mir gar nix. Und irgendwann hatte ich dann auch mal einen Blick auf die Xonsh-Shell geworfen.
Vor ein paar Tagen bin ich dann beim Surfen wieder über die Webseite von Xonsh gestolpert... und ich dachte mir: "Wieso habe ich die eigentlich nicht länger ausprobiert? Mit der sollte ich doch gut klar kommen, denn Python gehört neben Golang und Pascal zu meinen bevorzugten Programmiersprachen, mit denen ich fit bin."
Also hab ich die Webseite des Projekts genauer angeschaut, intensiver gelesen und auch mal die Dokumentation studiert... und die Shell installiert.
Hey... nicht schlecht! Xonsh verhält sich erstmal ganz normal wie eine "übliche" Shell. Man merkt keinen wirklichen Unterschied. Und dann bietet sie, ohne irgendwas umzustellen oder extra Konfiguration, auch Python-Code auszuführen. Xonsh ist tatsächlich eine Art Python-Interpreter und gleichzeitig eine Shell, die sich zumindest nach Posix "anfühlt".


Eine Sache, die mir wichtig ist, ist der mc-Wrapper. Das ist ein Shell-Script, das mit dem MidnightCommander (mein bevorzugter Dateimanager) ausgeliefert wird, und dafür sorgt, dass man sich nach dem Verlassen des mc in dem letzten dort aktuell ausgewählten Verzeichnis befindet.

MidnightCommander liefert dieses Wrapper-Script für bash/sh und csh mit.
Schon für die Fish-Shell musste ich mir da ein eigenes Script basteln, weil die mitgelieferten, auch nach Anpassungen, nicht funktionieren wollten. War auch gar nicht so kompliziert.
Bei der Nushell musste ich aber wieder ein eigenes Script bauen, was schon etwas komplizierter wurde. Lag an der Philosophie von nu und den beschränkten Gültigkeitsbereichen für Variablen. Über die Community (via Discord) wurde ich dann aber in die richtige Richtung geschubst und konnte auch für nu das passende Script basteln.
Also... ran an den Speck und den Wrapper jetzt mal für Xonsh erstellen.
Boah war das simpel! Mit wirklich grundlegenden Python-Kenntnissen ließ es sich quasi aus dem Ärmel schütteln. Die Dokumentation von Xonsh hat geholfen.
def m():
/usr/bin/mc -P ~/.temp/mcwd
with open('/home/derpepe/.temp/mcwd', 'r') as datei:
wdir = datei.read()
os.chdir(wdir)
os.remove('/home/derpepe/.temp/mcwd')
Dieses Script einfach in die Datei
~/.xonshrc
gepackt... und schon steht es dauerhaft zur Verfügung.
Leider muss man das Script wie eine Python-Funktion aufrufen, also mit den leeren Klammern hintendran. Nicht schön. Ruft man statt
m()
nur
m
auf, wird das Script nicht gefunden.
Aber auch kein Problem, denn Xonsh erlaubt es, Aliase zu erstellen (war eh geplant, damit ich den MidnightCommander, wie gewohnt mit
mc
aufrufen kann). Und die erlauben es, als Argument für ein Alias auch eine Python-Funktion zu verwenden und dabei die Parameter-Klammern wegzulassen.
Also in der .xonsrc hinter der Definition der Funktion das Alias definiert:
aliases['mc'] = m
Nach einem Neustart zeigt nun der MidnightCommander nach Aufruf von
mc
das gewünschte Verhalten.
Seit ein paar Tagen nutze ich nun Xonsh exklusiv... und die Shell hat mir bisher keine Probleme bereitet. Das Arbeiten mit Git erfordert keine Umstellung... und auch ssh ist damit unproblematisch.
Die Konfiguration wichtiger Elemente ist bei Xonsh genauso komfortabel, wie bei der Fish-Shell über ein Web-Interface möglich.
xonfig web

startet das Webinterface und dort kann man ganz komfortabel Einstellungen zum Farbschema, zum Prompt für Variablen und für Aliase vornehmen. Außerdem ist es damit möglich, Addons, sogenannte "Xontribs" zu installieren.

Wer es puristisch mag, kann auch die Konfigurationsdatei mit einem Texteditor bearbeiten... oder man nutzt beide Möglichkeiten kombiniert. Die Eintragungen aus dem Webinterface sind in der Datei nämlich durch Kommentierungen deutlich markiert, und damit leicht erkennbar.
Irgendwie bin ich gerade "schockverliebt"... aber ich habe auch das Gefühl, dass ich auf Dauer mit Xonsh zufrieden sein werde (es sei denn, es ergeben sich irgendwo noch unerwartete Probleme).
Wer Python mag und sich damit auskennt, sollte durchaus mal einen Blick auf Xonsh werfen. Es lohnt sich!
How much is the fish?
Artikel vom 21. Aug 2016 - Eher zufällig bin in vor Kurzem über die Shell [b]„fish“[/b] gestolpert… also ich habe davon gelesen. Also schnell mal installiert und aufgerufen. Ok… ist halt ne Shell, dachte ich. Ein wenig bunter, aber nix… Mooooooment…
View article
View summary

Dieser Artikel wurde erstmals am 21. August 2016 veröffentlicht.
Eher zufällig bin in vor Kurzem über die Shell „fish“ gestolpert… also ich habe davon gelesen. Also schnell mal installiert und aufgerufen. Ok… ist halt ne Shell, dachte ich. Ein wenig bunter, aber nix… Mooooooment… Schon beim Eintippen der ersten Kommandos fällt auf, dass da doch einiges anders ist. Es werden direkt bei der Eingabe Vorschläge gemacht, ein Tippen auf TAB öffnet dann eine Liste aller Kommandos, die so beginnen, wie die ersten eingegebenen Buchstaben… und durch

diese Liste kann man mit den Cursortasten navigieren und mit der Eingabetaste den Befehl auswählen.

Das ist ja schon mächtig komfortabel. Gibt man help ein, so wird der System-Webbrowser gestartet (oder wenn er schon offen ist, ein neuer Tab geöffnet) und die Hilfeseite geöffnet.

Hier findet man alle internen Kommandos von fish und die Kontrollstrukturen zur Shellprogrammierung. Außerdem ein FAQ-Bereich und ein Tutorial. Insgesamt ist die Dokumentation wirklich sehr ausführlich… so sollte das auch sein. Weitere Informationen , insbesondere zur Shell-Programmierung und zum Erstellen von Completions (automatische Vervollständigung) findet man auch bei stack overflow, wenn man im Suchfeld fish

oder fishshell eingibt. Will man fish konfigurieren, so kann man das von Hand erledigen, es geht aber auch recht einfach über ein Web-Interface. Gibt man fish_config ein, so startet Fish einen einfachen lokalen Webserver, öffnet den Browser und man landet auf der Konfigurationsseite. Auf dieser Seite kann man sehr einfach die Farben und den Prompt einstellen, Funktionen und Variablen anschauen, die History anschauen und Einträge daraus löschen, Bindings anschauen und schließlich Abbreviations (Abkürzungen für Befehlszeilen) bearbeiten. Die Installation wird auf der Homepage von fish gut erläutert… bei meinem Debian war das mit einem
sudo apt-get install fish
im Handumdrehen erledigt, weil sich das Programm in den offiziellen Quellen befindet. Eine wirklich tolle Angelegenheit ist auch die TAB-Selection von Parametern auch externer Programme. Gibt man ein Kommando ein und dann den „-“ oder „--“ für einen Parameter und betätigt die TAB-Taste, dann wird eine Auswahlliste der Parameter

angezeigt (mit Erläuterungen), die man auch wieder mit den Cursortasten auswählen kann. Schon nach kurzer Zeit habe ich festgestellt, dass fish für mich echt perfekt für die tägliche Arbeit ist. Diese Shell wird zwar oft als „Einsteiger-Shell“ angepriesen, aber weshalb sollte ich auf Komfort verzichten, nur weil ich mich mit der bash auch gut auskenne. Wenn ich es bequemer haben kann, dann lasse ich mir das auch gefallen. Deshalb ist fish jetzt als Standard-Shell bei mir eingestellt. Anfangs muss man sich aber auch ein wenig umstellen, weil die sich doch ziemlich vom POSIX-Standard, den man von bash und co. gewohnt ist, unterscheidet. Es gibt aber auch noch einige weitere Quellen im Internet, wo teilweise auch auf diese Besonderheiten oder Unterschiede eingegangen wird. Die erste „Herausforderung“ für mich war der Midnight Commander (mc). Ich habe unter bash immer das Wrapper-Script verwendet, mit dem man nach Beenden des mc im letzten ausgewählten Verzeichnis landet. Nun, diese Scripts funktionieren NICHT! Weder die (ba)sh-, noch die csh-Version. Aber ich war echt erstaunt, wie schnell sich das mit Bordmitteln der fish erledigen ließ. Viel einfacher, als man denken mag. In der Shell kann man Funktionen erstellen (der Editor ist auch angenehm komfortabel). Also habe ich eine Funktion „m“ erstellt:
function m
/usr/bin/mc -P ~/.temp/mcwd
cd (cat ~/.temp/mcwd)
rm ~/.temp/mcwd
end
Und siehe da… das hat schon funktioniert. Die Eingabe von „m“ in der Shell startete den mc und nach Beendigung landete man im letzten Verzeichnis. Prima! Wenn man eine solche Funktion erstellt hat und loggt sich aus, ist sie aber leider wieder weg. Fish hat aber ein Konfigurationsverzeichnis (~/.config/fish/) und dort gibt es ein Unterverzeichnis für Funktionen, die beim Einloggen automatisch eingelesen werden und so dann zur Verfügung stehen. Man muss aber dafür keinen extra Editor bemühen, die Funktion einhämmern und dann dort als Datei abspeichern. Hat man die Funktion in der Shell erstellt und man ist zufrieden damit, so genügt es das Kommando funcsave zu verwenden. Damit wird die Funktion automatisch im Autostart-Verzeichnis gespeichert. Also raschfuncsave m
eingegeben… und seither steht mir m dauerhaft zur Verfügung. Weil man sich aber daran gewöhnt hat, „mc“ einzugeben, wenn man den Midnight Commander starten will, habe ich noch ein entsprechendes Alias definiert (das läuft so, wie man es von der bash kennt):
alias mc „m“
Um dieses Alias auch direkt nach jedem Login zur Verfügung zu haben trägt man die Zeile einfach in die Datei config.fish ein (~/.config/fish/config.fish), die man ggf. erst erzeugen muss (touch config.fish), wenn sie noch nicht vorhanden ist. Die ganze Angelegenheit hat mich incl. „Einarbeitungszeit“ in die Systematik von fish vielleicht ne Viertelstunde gekostet. Fish ist wirklich einfach! Das war jetzt hier auch nur ein ganz kurzer und kleiner Einblick… es gibt noch unzählige wirklich tolle Features. wenn man sich durch die Dokumentation gelesen hat, ist man schlauer… und man entdeckt immer wieder neue Möglichkeiten. Ach, ein kleines „Schmankerl“ fällt mir gerade noch ein… Hat man sich in ein Verzeichnis gehangelt und dort liegt eine Datei, die man mit dem Standard-Programm für den Dateityp öffnen möchte, so gibt man ganz einfach nur
open <Dateiname>
ein… schon wird die Datei mit der voreingestellten Anwendung geöffnet. odt-Dateien sind bei mir z. B. mit LibreOffice 5.1 verknüpft. Habe ich nun eine Datei „Dokument.odt“ und ich gebe in fish
open Dokument.odt
ein, wird LO-Writer gestartet und die Datei geöffnet. Das ist schon sehr praktisch. Ich kann es echt empfehlen, sich fish einmal anzuschauen. Das ist auch kein „Rückschritt“. Ich bin ja selbst auch mit bash sehr fit, habe aber die Vorteile von fish für mich entdeckt und genieße den größeren Komfort.
Links:
[1]: Fish-Webseite
[2]: The missing fish shell tutorial
[3]: Speaking UNIX: Go fish!
[4]: Shell Translation Dictionary (Übersicht, um (ba)sh-Kommandos in fish umzusetzen)
[5]: starrhorne/Fish-Shell-Scripts
[6]: zmalltalker/fish-nuggetsa
Aktive Fütterung von Dchämänai
Es gibt einen neuen "Nutzer" im Fediverse. Na ja... "Nutzer" halt in Anführungsstrichen, denn es ist kein Mensch, sondern ein Bot. Nennt sich FediChatBot.
View article
View summary
Es gibt einen neuen "Nutzer" im Fediverse. Na ja... "Nutzer" halt in Anführungsstrichen, denn es ist kein Mensch, sondern ein Bot.
Nennt sich FediChatBot.
So, wie ich das verstanden habe, handelt es sich um ein Handle, mit dem man Konversation betreiben kann, wie man es mit jedem anderen Nutzer im Fediverse tun kann. Man "unterhält" sich aber halt mit einem LLM-Bot.
So weit ist das ja nicht wirklich schlimm, solange man (hier ist es ja so, allein schon wegen des Namens) erkennen kann, dass man nicht mit einem Menschen aus Fleisch und Blut, sondern mit einer Software "Konversation" betreibt. Wer das mag... bitte.
Ruft man jetzt die Webseite des Chatbots (Memento bei der WaybackMachine) auf, dann findet man zumindest einige grundlegende Informationen über den Bot, das dahinter steckende System und - angerissen - auch zum Datenschutz. Das sind Antworten des Bots auf Fragen von Nutzern. Und hier ist der Bot bei mir dann auch sofort durchgefallen. Er antwortet auf eine Frage zum Datenschutz
Ja, die Daten, die du mir schickst, werden an Google gesendet, da ich auf dem Gemini-Modell basiere. Allerdings sollte ich betonen, dass ich diese Daten nur für die Dauer der Konversation im Speicher halte und sie nicht dauerhaft speichere. Ich behandle diese Daten als ephemeres, flüchtiges Gedächtnis.
Bedeutet: Der gesamte Dialog zwischen einem echten Nutzer und dem Bot landet bei Google und wird dort natürlich auch verwurstet. Dass der Bot selbst die Daten nicht dauerhaft speichert oder auswertet, ist ja "nett" und eigentlich auch selbstverständlich, aber was nützt es, wenn die Daten ungefiltert im Staubsaugerbeutel vom Gockel landen?
Ich kann dir versichern, dass der Entwickler von FediChatBot (Hong Minhee) sich der Datenschutzproblematik bewusst ist und versucht, so verantwortungsvoll wie möglich damit umzugehen.
Aha...er ist sich der Problematik "bewusst". Hmmm... und er geht " so verantwortungsvoll wie möglich" damit um. Die Verantwortung für den Umgang mit den Daten wird so schön auf Google abgeschoben, wo man sich die Hände reibt, weil es wieder mehr "Futter" gibt.
Ich bin nicht grundsätzlich gegen Bots auch im Fediverse. Solange sie als solche erkennbar sind und solange sie nicht ausschließlich dazu dienen, Daten abzusaugen und an Unternehmen zu liefern, können sie durchaus ihre Berechtigung haben. Aber ein Bot, der eigentlich nur eine Schnittstelle zum Google-LLM ist, der hat keinen Platz auf meinen Instanzen! Also ab damit in die instanzweite Blockliste! Falls ein Nutzer meiner Hubs unbedingt mit Dschämänai Konversation treiben möchte, kann er ja direkt über Google parlieren oder sich eine weitere Instanz für einen Account suchen, wo der Bot erlaubt ist.
Lasst doch den Blödsinn mit dem Rassismus-Vorwurf
Ich habe mich sehr lange gescheut, dieses Blog mit wirklich allgemein-politischen Beiträgen zu bestücken, aber jetzt ist es soweit, dass ich anfange, neben den (ein Schwerpunkt, der auch Schwerpunkt bleibt) Fediverse-Themen auch andere Themen zu behandeln, die mich bewegen. Und da fange ich dann auch gleich mit dem "gefährlichsten" Thema, der Politik, an.
View article
View summary
Ich habe mich sehr lange gescheut, dieses Blog mit wirklich allgemein-politischen Beiträgen zu bestücken, aber jetzt ist es soweit, dass ich anfange, neben den (ein Schwerpunkt, der auch Schwerpunkt bleibt) Fediverse-Themen auch andere Themen zu behandeln, die mich bewegen. Und da fange ich dann auch gleich mit dem "gefährlichsten" Thema, der Politik, an.
Es geht um die Scholz-Chialo-"Affäre". Ganz ehrlich... ich glaube nicht, dass die Äußerung von Scholz tatsächlich rassistisch motiviert war. Man kann einem Menschen zwar nur vor die Stirn gucken (selbst dann, wenn sie, wie bei Scholz nicht von Haupthaar bedeckt ist), aber ich glaube es ihm (und es gibt wenig, was ich ihm glaube), dass er das nicht rassistisch gemeint hat. Es könnte zwar sein, dass im Moment der Äußerung ein Mohr mit Narrenkappe und Schellenring durch seine Gedanken hüpfte, aber ich glaube das einfach nicht. Der Spruch erfolgte nicht, um die Betroffene Person, also Chialo, wegen seiner Wurzeln zu schmähen, sondern war in erster Linie dazu gedacht, den politischen Gegner, die CDU, zu schmähen, zu verletzen und öffentlich lächerlich zu machen. Und dass das damit einherging, dass auch die dafür missbrauchte Person, mindestens verletzt wird, das hat Scholz halt so hingenommen. Das ist ihm egal. So ist er halt.
Die ganze Sache zeigt nur, was für einen widerlichen, miesen Charakter er hat. Er nutzt eine herabwürdigende, schmähende Äußerung gegen einen Kollegen, einen Politiker in Amt und Würden, um dem politischen Gegner einen Schlag zu versetzen und nimmt dabei billigend in Kauf, dass er sein "Werkzeug" damit verletzen könnte. Bah, ist das ekelhaft. Aber es überrascht nicht, denn der noch amtierende Bundeskanzler (BTW: derjenige, der ihm allen Befürchtungen zufolge nachfolgen wird, ist aber auch kein charakterliches Paradestück) ist dafür bekannt, dass er sehr schlechte Manieren hat... oder wie man auch sagen könnte... keine gute Kinderstube genossen hat. Schlechte Kinderstube in Verbindung mit einem miesen Charakter ergibt ein Arschloch (das ist meine Meinung und deshalb eine Meinungsäußerung).
Wenn Presse und politische Gegner ihn jetzt also unbedingt öffentlich "schlachten" wollen, dann sollten sie sich auf genau diese Eigenschaft konzentrieren und nicht das "Allheilmittel" Rassismus aus der Schublade holen. Herkunft oder Wurzeln werden nämlich bei dem Rassismus-Schachzug als nicht legitimes Schutzschild gegen Kritik (egal, ob es sich um konstruktive und halbwegs höfliche oder destruktive, verletzende und unhöfliche Kritik handelt) missbraucht... oder als heimtückische Waffe gegen denjenigen, der Kritik äußert.
Also... wenn, dann bitte auf den Kern der Sache beschränken! Das genügt doch. Ein Bundeskanzler muss kein Muster-Schwiegersohn sein... wirklich nicht... aber ein Mindestmaß an charakterlicher Eignung, oder, falls ihm das nicht gegeben ist, wenigstens ein Mindestmaß an halbwegs guten Manieren, sind auf jeden Fall wichtige Voraussetzungen für ein derart gewichtiges und exponiertes Amt. Scholz ist mit dieser letzten Offenlegung seiner Mängel jedenfalls in meinen Augen nicht für das Amt geeignet. Zur Eignung der anderen Aspiranten schreibe ich hier lieber nichts... 😉😂
Es geht um die Scholz-Chialo-"Affäre". Ganz ehrlich... ich glaube nicht, dass die Äußerung von Scholz tatsächlich rassistisch motiviert war. Man kann einem Menschen zwar nur vor die Stirn gucken (selbst dann, wenn sie, wie bei Scholz nicht von Haupthaar bedeckt ist), aber ich glaube es ihm (und es gibt wenig, was ich ihm glaube), dass er das nicht rassistisch gemeint hat. Es könnte zwar sein, dass im Moment der Äußerung ein Mohr mit Narrenkappe und Schellenring durch seine Gedanken hüpfte, aber ich glaube das einfach nicht. Der Spruch erfolgte nicht, um die Betroffene Person, also Chialo, wegen seiner Wurzeln zu schmähen, sondern war in erster Linie dazu gedacht, den politischen Gegner, die CDU, zu schmähen, zu verletzen und öffentlich lächerlich zu machen. Und dass das damit einherging, dass auch die dafür missbrauchte Person, mindestens verletzt wird, das hat Scholz halt so hingenommen. Das ist ihm egal. So ist er halt.
Die ganze Sache zeigt nur, was für einen widerlichen, miesen Charakter er hat. Er nutzt eine herabwürdigende, schmähende Äußerung gegen einen Kollegen, einen Politiker in Amt und Würden, um dem politischen Gegner einen Schlag zu versetzen und nimmt dabei billigend in Kauf, dass er sein "Werkzeug" damit verletzen könnte. Bah, ist das ekelhaft. Aber es überrascht nicht, denn der noch amtierende Bundeskanzler (BTW: derjenige, der ihm allen Befürchtungen zufolge nachfolgen wird, ist aber auch kein charakterliches Paradestück) ist dafür bekannt, dass er sehr schlechte Manieren hat... oder wie man auch sagen könnte... keine gute Kinderstube genossen hat. Schlechte Kinderstube in Verbindung mit einem miesen Charakter ergibt ein Arschloch (das ist meine Meinung und deshalb eine Meinungsäußerung).
Wenn Presse und politische Gegner ihn jetzt also unbedingt öffentlich "schlachten" wollen, dann sollten sie sich auf genau diese Eigenschaft konzentrieren und nicht das "Allheilmittel" Rassismus aus der Schublade holen. Herkunft oder Wurzeln werden nämlich bei dem Rassismus-Schachzug als nicht legitimes Schutzschild gegen Kritik (egal, ob es sich um konstruktive und halbwegs höfliche oder destruktive, verletzende und unhöfliche Kritik handelt) missbraucht... oder als heimtückische Waffe gegen denjenigen, der Kritik äußert.
Also... wenn, dann bitte auf den Kern der Sache beschränken! Das genügt doch. Ein Bundeskanzler muss kein Muster-Schwiegersohn sein... wirklich nicht... aber ein Mindestmaß an charakterlicher Eignung, oder, falls ihm das nicht gegeben ist, wenigstens ein Mindestmaß an halbwegs guten Manieren, sind auf jeden Fall wichtige Voraussetzungen für ein derart gewichtiges und exponiertes Amt. Scholz ist mit dieser letzten Offenlegung seiner Mängel jedenfalls in meinen Augen nicht für das Amt geeignet. Zur Eignung der anderen Aspiranten schreibe ich hier lieber nichts... 😉😂
Mit Hubzilla eine Organisations-Seite im Fediverse anbieten
Hier nun das angekündigte Tutorial, in welchem ich eine Seite (als Ersatz für Facebook-Seiten... und mit deutlich mehr Möglichkeiten) für eine Organisation erstelle.
View article
View summary
Hier nun das angekündigte Tutorial, in welchem ich eine Seite (als Ersatz für Facebook-Seiten... und mit deutlich mehr Möglichkeiten) für eine Organisation erstelle.
Die Organisation dient hier nur als Beispiel. Es kann nach dem Prinzip auch eine Seite für eine Firma, ein Geschäft, eine Band, einen Künstler, Schriftsteller... für einfach alles erstellt werden.
Ich habe mich für eine Organisation entschieden, weil ich einmal mit einigen Mitstreitern eine gegründet habe. Sie ist allerdings inzwischen aufgelöst und die Webpräsenz (ehemals WordPress) nur noch als statisches Archiv vorhanden. Ich habe sie gewählt, weil ich mir keine Inhalte aus den Fingern saugen muss und es unschädlich ist, wenn ein Hubzilla-Kanal für sie existiert, obwohl es sie nicht mehr gibt.
Kanal erstellen
Kanal ist das erste Stichwort! Natürlich sollte man sich für ein solches Projekt einen Kanal bei Hubzilla anlegen. Wie das funktioniert kann man in der Hubzilla KnowledgeDB oder im Hubzilla Benutzerhandbuch nachlesen.

Je nach gewünschter Funktionalität muss man die passende Kanalrolle auswählen. Generell ist "Öffentlich" für solche Zwecke aber eine gute Wahl.
Profil "schärfen"
Wichtig ist nun, das Profil wirklich mit sinnvollen Informationen zu bestücken. Die Kurzbeschreibung ist ein Muss, weil sie in der Profilkarte erscheint und jeder Besucher so sehen kann, wo er denn gelandet ist.

Wenn die Veröffentlichung der Anschrift gewünscht ist (bei Organisationen sinnvoll und auch erforderlich), muss im Profil dann auch dieser Bereich ausgefüllt werden.

Schlüsselwörter für das Verzeichnis helfen, dass der Kanal auch gefunden werden kann.
Jetzt sollten auch noch ein Profilbild (z.B. das Logo der Organisation) und ein Header-Bild erstellt, hochgeladen und als solche verwendet werden.


Theme anpassen
Anschließend muss man sich Gedanken über die grundlegende Optik, insbesondere die Farbgebung Gedanken machen. Hier sollte man das Theme entsprechend anpassen.
Da meine Organisation im Logo die Farben Grün, Weiß und Schwarz nutzt, habe ich die "Primary theme color" auf ein entsprechendes Grün gesetzt und für einen etwas geringeren Kontrast die Hintergrundfarbe auf ein recht helles Grau. Hier kann und muss jeder selbst entscheiden, wie sehr er die Farben beeinflussen möchte.

Apps installieren
Jetzt müssen noch wichtige Apps installiert werden. Auf jeden Fall die ActivityPub App, damit der Kanal auch mit allen Diensten im Fediverse interagieren (föderieren) kann. Außerdem werden die Apps "Webseiten" und "PDL-Editor" benötigt. Möchte man ein Hilfe-System, eine FAQ oder ein richtiges kleines Wiki anbieten, dann installiert man auch noch die App "Wiki". Sollen Artikel auf der Seite veröffentlicht werden, installiert man außerdem die App"Artikel".
Auch eine Seite in einem Sozialen Netzwerk braucht sowas wie eine Homepage, eine Startseite. Und die erstellen wir jetzt.
Webseiten erstellen
Dafür ruft man aus dem App-Menü (⋮) die Webseiten-App auf.

Blöcke erstellen
Als erstes erstellt man nun einen neuen Block, welcher den Inhalt der Startseite enthält. Man hat die Wahl zwischen bbCode, HTML, Markdown, reinen Text, (Comanche Layout) und PHP für die Darstellung und Gestaltung des Inhalts. Ich habe mich für bbCode entschieden, weil dies für die Darstellung des Inhalts völlig genügt und bbCode quasi "das Blut in den Adern von Hubzilla" ist.
Einen Titel muss man hier nicht vergeben. Der erste Block, den man in einem Kanal erstellt, bekommt automatisch den Namen "main" (diesen benötigt man, um den Block später zur Nutzung zu referenzieren).

Nach dem Eingeben des Inhalts klickt man nun auf "Teilen" und der Block ist erstellt.
Blöcke mit dem PDL-Editor in Hubzilla-Seiten einbauen
Ich habe beschlossen, dass der Inhalt der Startseite nicht nur auf der eigentlichen Startseite, sondern auch in der Profilansicht angezeigt werden soll, weil darin der Zweck der Organisation beschrieben wird, was gut zum Profil passt.
Damit der Block "main" in der Profilansicht angezeigt wird, ruft man den PDL-Editor auf. Im Hauptmenü des PDL-Editors (zentriert am unteren Bildschirmrand), wählt man zunächst im Menüpunkt "MODULES" das Modul "profile". In diesem Modul wählt man nun im Menüpunkt "ITEMS" das Modul "main", welches man ja selbst erstellt hat, aus und schiebt es per Drag-and-Drop in die Mitte (Inhaltsbereich) an die oberste Stelle. Damit die Änderungen übernommen werden, muss man nun noch im Menü auf "APPLY" klicken... und die Sache ist erledigt.


Ruft man nun das Profil des Kanals auf, so wird im Inhaltsbereich der Inhalt des Blockes "main" angezeigt.

Ein Navigations-Menü als Block
Weil bei der Organisationsseite noch weitere andere Inhalte und Seiten angezeigt werden sollen, benötigt man ein Navigations-Menü. Dieses kann man über die Funktion "Menüs" der App "Webseite" erzeugen. Es wird ein vertikales Menü als unsortierte Liste erzeugt, das man an verschiedenen Stellen in die Seite einbauen. Mir schwebte aber ein horizontales Menü vor, das auf jeder relevanten Seite an oberster Stelle des Inhaltsbereichs erscheint. Also habe ich das Menü als normalen Block selbst erstellt.
Achtung: Auch hier kann man für den Inhalt bbCode wählen. Allerdings hat das den Nachteil, dass Links, die zu anderen selbst erstellten Webseiten führen, in einem neuen Tab geöffnet werden, wenn man die Tags
[url=][/url]
verwendet. Für dieses Tag-Paar gibt es nicht die Option "target=_self"
. Hier ist es also sinnvoll, HTML zu verwenden.
Das Menü habe ich nun mit nebeneinander stehenden Menüpunkten, getrennt durch ein Leerzeichen, einen Stern und einem weiteren Leerzeichen gestaltet und die einzelnen Menüpunkte nach dem Schema
[url=https://webseite.tld]Menüpunkt[/url]
verlinkt.
Um z.B. auf der Profilseite das Menü zur Verfügung zu stellen, schiebt man im PDL-Editor das selbst erstellte ITEM "menu" im MODUL "profile" an die oberste Stelle und klickt auf APPLY. Nun erscheint das Navigationsmenü auf der Profil-Seite.
Startseite mit dem Block "main"
Der Block "main" sollte aber nun auch die Startseite der Webseite sein. Der Inhalt muss also, unabhängig von den hubzilla-eigenen Seiten der Apps als Webseite angezeigt werden. Und das soll in einem konsistenten Layout geschehen. So soll auch auf solchen Webseiten in der linken Seitenleiste die Profilkarte erscheinen und die Verbindungen des Kanals.
Ein Layout erstellen
Was man braucht, ist also ein Layout. Ein solches kann man mit der App "Webseiten" erstellen.

Regionen
Layouts beschreiben den grundsätzlichen Aufbau einer Hubzilla-Webseite und die Inhalte der verschiedenen Regionen auf dem Bildschirm.
[region=banner][/region]
ist der obere Bereich, wie er auf der Kanalseite angezeigt wird. Dort zeigt er das Cover-Foto an.Das bietet sich für die Webseiten ebenfalls an. Also beginnt unser Layout mit den Zeilen
[region=banner]
[widget=cover_photo][/widget]
Als nächstes wird die Gestaltung der linken Seitenleiste, also der Region
[region=aside] [/region]
festgelegt.Dort sollte ja nun die Profilkarte und die Liste der Verbindungen angezeigt werden.
Die Layout-Beschreibung dafür ist
[region=aside]
[widget=fullprofile][/widget]
[widget=common_friends][/widget]
[/region]
Im Inhaltsbereich, also der Region
[region=content] [/region]
soll schließlich das Navigationsmenü und darunter der Inhalt des Blocks "main" zu sehen sein. Das codieren wir so:[region=content]
[block]menubar[/block]
[block]main[/block]
[/region]
Für die rechte Seitenleiste
[region=right_aside] [/region]
ist mir noch nix eingefallen... die lassen wir also erstmal leer.Der Inhalt des Layouts für die Startseite sieht also so aus:
[region=banner]
[widget=cover_photo][/widget]
[/region]
[region=aside]
[widget=fullprofile][/widget]
[widget=common_friends][/widget]
[/region]
[region=content]
[block]menubar[/block]
[block]main[/block]
[/region]
[region=right_aside]
[/region]
Das Layout braucht auch einen Namen, um es später für die Webseite referenzieren zu können. Hier habe ich den Namen "startseite" gewählt.
Ein Klick auf "Teilen" und das Layout für die Startseite ist erstellt.
Webseite erstellen
Nun muss nur noch aus den Einzelteilen die eigentliche Webseite erstellt werden. Dafür wählt man in der App "Webseiten" den Punkt "Seiten".
Hier habe ich dann eine Webseite erstellt. Inhaltstyp habe ich bei bbCode belassen. Der ist in diesem Fall ohnehin unerheblich, weil der Inhalt der Webseite hier ja nicht erstellt wird, sondern im Block.
Bei Seiten-Layout wählt man nun das soeben erstellte Layout aus der Auswahlliste.
Bei der eigentlichen Webseite ist es auch sinnvoll, der Seite einen Titel zu geben, denn dieser erscheint bei der Ansicht im Titel des jeweiligen Browser-Tabs.
Und ein Name muss vergeben werden. Da es die Startseite ist, habe ich "home" gewählt. Unter diesem Namen ist die Seite später aufrufbar (
/page//
, also in meinem Fall https://klacker.org/page/exraucher_ig/home
).In unserem Fall ist der Inhalt unerheblich, er darf nur nicht leer sein. Ich habe einfach "main" hineingeschrieben.

Und nun wieder auf "Teilen" klicken... die Startseite ist fertig. Ruft man sie auf, sieht sie nun so aus:
Menü erweitern
Jetzt ist es an der Zeit, den Block "menubar" zu editiern und den Link "Startseite" mit dem Link zu der gerade erstellten Webseite zu hinterlegen.
In meinem Beispiel sieht der Block nun so aus:
[url=https://klacker.org/page/exraucher_ig/home]Startseite[/url] ★ Manifest ★ Aktuell ★ Positionen ★ Informationen
Und die Startseite so:

Weitere Seiten
Nach dem selben Schema habe ich dann auch die Seite "manifest" (Manifest / Vereinbarungen; Seitenlink:
manivereinb
) mit dem Inhalt als Block und dem identischen Layout (nur dass hier im Inhaltsbereich der Block "manifest" dargestellt wird) erstellt. Der Link zu der neuen Seite (das war einmal die Anzeige des Manifests der Organisation, also sowas wie bei einem Verein die Satzung) wurde in den Menüblock eingebaut:[url=https://klacker.org/page/exraucher_ig/home]Startseite[/url] ★ [url=https://klacker.org/page/exraucher_ig/mani-vereinb]Manifest[/url] ★ Aktuell ★ Positionen ★ Informationen
Artikel mit der Artikel-App
Unter "Aktuelles" wurden bei der ursprünglichen Original-Seite, Artikel zu verschiedensten relevanten Themen angezeigt. Nun könnte man das auch als Webseite realisieren, aber es wäre ein hoher Aufwand, die Beiträge komfortabel zugänglich zu machen. Bei solchen Bereichen bietet es sich an, die hubzilla-eigene Funktionalität zu nutzen, nämlich die Artikel.
Ich habe zu Demonstrationszwecken die letzten beiden veröffentlichten Artikel in dem Kanal mit der App "Artikel" (muss installiert und aktiviert werden, sofern nicht schon geschehen) veröffentlicht. Dabei habe ich jeweils auch eine Kategorie angegeben, damit auf der Artikelseite auch die Kategorie-Anzeige zu sehen ist.
Damit sich die Seite der Artikel-App optisch und in der Art der Navigation in die Organisations-Seite einfügt, habe ich im PDL-Editor im MODUL "articles" den Menu-Bar Block wieder im Inhaltsbereich ganz oben eingefügt.
Artikel im Menü zugänglich machen
In den Menü-Bar Block wird nun noch der Link zur Artikel-App eingefügt:
[url=https://klacker.org/page/exraucher_ig/home]Startseite[/url] ★ [url=https://klacker.org/page/exraucher_ig/mani-vereinb]Manifest[/url] ★ [url=https://klacker.org/articles/exraucher_ig]Aktuell[/url] ★ Positionen ★ Informationen

Dokumente in der Cloud anbieten[7h3]
Auf der Original-Webseite findet man unter dem Menüpunkt "Positionen" verschiedene Stellungnahmen der Interessengemeinschaft zu diversen Themen. Diese könnte man als einzelne Webseiten anbieten, aber ich habe mich entschlossen, die Beiträge (Stellungnahmen) mittel der Cloud-Funktionalität von Hubzilla zu verwirklichen. Zu diesem Zweck habe ich in der Cloud des Kanals einen öffentlich zugänglichen Ordner erstellt und in diesen die Texte als PDF-Dateien hochgeladen.
Cloud-Ordner im Menü zugänglich machen
Im PDL-Editor habe ich im MODUL "cloud" den Menü-Block wieder im Inhaltsbereich an die oberste Position gesetzt und schließlich den Link zu dem Ordner als Link in die Menü-Bar eingefügt:
[url=https://klacker.org/page/exraucher_ig/home]Startseite[/url] ★ [url=https://klacker.org/page/exraucher_ig/mani-vereinb]Manifest[/url] ★ [url=https://klacker.org/articles/exraucher_ig]Aktuell[/url] ★ [url=https://klacker.org/cloud/exraucher_ig/Positionen]Positionen[/url] ★ Informationen

Der Menüpunkt "Informationen" führte zu einer Sammlung von Flyern und Informations-Texten, die ich ebenfalls mit Hilfe der Cloud zur Verfügung stelle. Dafür habe ich einen weiteren Ordner erstellt ("Informationen"), die Dateien dort hochgeladen und im Menü-Block verlinkt.
[url=https://klacker.org/page/exraucher_ig/home]Startseite[/url] ★ [url=https://klacker.org/page/exraucher_ig/mani-vereinb]Manifest[/url] ★ [url=https://klacker.org/articles/exraucher_ig]Aktuell[/url] ★ [url=https://klacker.org/cloud/exraucher_ig/Positionen]Positionen[/url] ★ [url=https://klacker.org/cloud/exraucher_ig/Informationen]Informationen[/url]

[h3]Weitere Möglichkeiten
Die ursprüngliche Organisations-Seite bot auch ein Wiki an, das allerdings extern mittels MediaWiki betrieben wurde (wird!). Das könnte man in der Menü-Bar natürlich auch verlinken. Oder, wenn die Funktionalität der Wiki-App von Hubzilla ausreicht, kann man auch mit Hubzilla ein Wiki (z.B. auch als Hilfe-Seite oder für FAQ) erstellen und über das Menü zugänglich machen.
Aber das spare ich mir hier jetzt. Jeder ist eingeladen, eigene Ideen umzusetzen und dabei alle Funktionen von Hubzilla dazu zu verwenden.
Bei der Einbindung aller Apps sollte man nicht vergessen, den Menü-Block im entsprechenden MODUL mit dem PDL-Editor an oberster Stelle einzufügen.
Weil die Organisations-Präsenz ja aber auch ins Fediverse eingebunden ist, ist es sinnvoll, auch die Kanalseite im Menü-Block anzubieten, um ggf. Interaktion anzubieten (ist ja auch der Sinn von solchen Seiten). Also auch noch schnell eingebaut:
[url=https://klacker.org/page/exraucher_ig/home]Startseite[/url] ★ [url=https://klacker.org/channel/exraucher_ig]Kanal[/url] ★ [url=https://klacker.org/page/exraucher_ig/mani-vereinb]Manifest[/url] ★ [url=https://klacker.org/articles/exraucher_ig]Aktuell[/url] ★ [url=https://klacker.org/cloud/exraucher_ig/Positionen]Positionen[/url] ★ [url=https://klacker.org/cloud/exraucher_ig/Informationen]Informationen[/url]

Das war es jetzt erst einmal...
Das Ergebnis
Und so sieht ein nicht angemeldeter (nicht authentifizierter) Besucher die Seite:

Die Seite im Echtbetrieb kann man sich hier anschauen: ExRaucher (IG)
Ich hoffe, ich konnte zeigen, wie man die Entsprechung einer "Facebook-Seite" hervorragend - und mit wesentlich erweiterter Funktionalität - mit Hubzilla umsetzen kann. Man kann als Kanalbetreiber das Fediverse für die Zwecke der Organisation ganz normal nutzen, mit anderen interagieren und bietet Besuchern alle relevanten Informationen.
Fragen zu diesem Thema können im Forenkanal Pepes Hubzilla-Sprechstunde (
hubzillasprechstunde@hub.hubzilla.hu
) oder im Matrix-Raum Pepes Hubzilla-Hilfe (#pepes-hubzillahilfe:matrix.org
) geklärt werden. Oder auch per DN an pepecyb@hub.hubzilla.hu
.Als nächstes folgt ein Artikel über die Nutzung der App "Webseiten", in welchem ich näher auf die Struktur von Webseiten bei Hubzilla und die Realisierung bestimmter Ideen als Webseite eingehe.
Conversation Features
Loading...
Login
Sorry, you have got no notifications at the moment...
PepeCyBs Welt
pcw@hub.hubzilla.hu
Mein Blog PepeCyB's Welt - Pepes Gedanken, das Fediverse und mehr…
Categories