Nowadays, social media sites are all separated and isolated. Someone using Telegram canāt message someone using Signal, and someone on Facebook canāt follow someone on Twitter. This results in a cycle of consolidation. Whichever site has users will grow to have more users, because it has more users. And because it has more users, they will become more and more entrenched: āI canāt leave, my friends are here!ā This consolidation gives the site power, which it invariably abuses: Violations of privacy, of non-free malware, censorship of opinions, and sometimes even the intentional spreading of dangerous lies intended to provoke violence. This is all profitable, and in their interest. This is why I think no single organization should have such power to begin with; it should be shared.
In the past, there werenāt massive silos, but a slew of small sites and discussion boards. Then, the power was in the hands of many server operators, but in very tiny pieces. It wasnāt too important if any given site started abusing its users, since they could jump ship easily ā they werenāt as entrenched as today. There was the problem, though, of small crowds: The same reason you could easily move was the same reason youād feel like you werenāt reaching who you wanted. You couldnāt message someone on another board, of course. This is part of the reason Facebook & co. became popular. Itās nicer to be isolated in a massive cage with a big crowd, than a cramped one with a tiny flock!
Fediverse is the perfect middle-ground between these two approaches. Itās made up of several tiny sites, so noone has too much power, and these sites all communicate with each other, so you have a big crowd. On fedi (for short), you can follow or message anyone on any other Fedi server! All you have to do is choose a small server, and the world is your oyster. If you want to meaningfully escape X, you should consider joining a website of Mastodon, Pleroma, or Misskey! ^ ^
I want to support fedi as best I can, and so I host a social media server, Mansardo Jamada, and a Git-forge Shinonome Labs. Anyoneās welcome to them, even you! In addition, Iāve written some scripts dealing with fedi servers, and am writing a framework for writing fedi servers in Common Lisp, activity-servist.
We all have three, four, five, or even six programs for our chats. Signal, Telegram, WhatsUp, WhatsDown, WhatEverā¦ they sure do pile up! But why? Whatās the point of that? Thereās a baseline functionality provided by all chat protocols; so why must we run a million different programs, each of them re-packaged Chromium, just to do the same thing in different walled gardens? Itās not right, not right at all. Just as Iād like our social media to be server-neutral (federated), Iād like our chat programs to be protocol-neutral. Though here, it isnāt a moral stance, just personal preference.
That is, itās not a value thing, Iād just love to use a single program for all chats, a single client. Thatās the dream! This sort of program, ideally, would also: Be easily scriptable by the user; have a simple and well-modularized codebase; be language-neutral (client written in X, server in Y, etc.); and be protocol-neutral (i.e., both XMPP and IRC in the same program).
Pidgin is a very good option that supports many protocols and is already pretty popular. However, itās a bit tricky for your average user to tinker with, and is not-at-all language-neutral (protocol add-ons must be in C).
Telepathy would be the perfect choice, if only it were still alive! It uses D-Bus for communication between client-daemons (āconnection managersā) and client-programs (interfaces/GUIs). Each protocol is its own āclient-daemonā that provides chat-data over D-Bus; because of this, Telepathy is both easily-scriptable and language neutral. So, perfect! But, again, thereās a catch: The project is dormant. Wake up, Telepathy! Come on, now!
I tried my hand at making my own candidate, āchatdir.ā The general idea was a something along the lines of the FIFO-backed IRC client ii, but with more modern chat features. Each chat a file-tree, etc. I started writing a library for Chicken Scheme and an IRC client-daemon, but I never really finished.
So, in the mean-time, Iām sticking with the pidgeon, Pidgin! Iāll pet it plenty and feed it well, so it gets nice and plump. It might not taste great, but itās close enough to a full meal.
The ability to export a serviceās or programās data in a parsable format is vital. For example, it should inherently be simple to export messages to plain-text (or at least HTML!). Itās easier to search through files directly, and you really canāt trust that the server will retain whatever logs/data you like. With XMPP/Matrix E2E, for instance, itās fairly common to lose your encryption keys, a crime punished with a total loss of chat-logs. Because of that, I work on scripts for backing up such data, from time-to-time: dino-chat-export, divercities_dl, wyrics, bandcamp_dl, etc.
Thereās also Pleroma Migrator, which is aā¦ bit of an outlier here. Itās a bit dangerous, to say the least. I made it when I moved from cawfee.club to my own fedi server, Mansardo Jamada, and felt that my new account was a bit lonely. āWouldnāt it be nice,ā I thought, āif my old posts were here, too?ā And so, I mirrored them with a simple script. But that wasnāt enough, for my folly knows no bounds. āWhat if I directly modified Pleromaās database in order to fake these postsā dates, so they match the original post-dates?ā That is exactly what Pleroma Migrator does and did.
Extended file-attributes (xattrs) are a way of attaching arbitrary metadata to files in a low-overhead way. You can can mark the source URL of a file, the name of its author, the geometry of its editorās window, and more ā the possibilities are endless! Unfortunately, theyāre not used very much at all in the Free Desktop space, even where I think theyād make a lot of sense. Theyāre second-class citizens, rarely used or supported. Forgotten. Pretty sad, right?
Haiku was my main operating system for a couple years, and it opened my eyes. While LiGNUx and friends kick extended attributes to the curb and spit on their unconscious bodies, Haiku holds them tight in a loving hug! Whether in the file-manager, the calendar, or the contact manager, theyāre everywhere! You canāt go ten feet without tripping over extended attributes, and I think thatās just beautiful. Heck, they replace databases in most Haiku programs, or even replace file-formats entirely! Contact-file? Empty file with xattrs for metadata, more like. E-mail? Empty file with xattrs for metadata, more like. Calendar event-file? Thatās xattrs, all right. Enlightenment? Love? Found on a T1 line.
Iād like to use xattrs wherever they seem useful, to bring Free Desktops in-line with Haiku ā and by extension, the future. Extended attributes, spread far and wide!
All Iāve contributed to this cause is the xattr library for Chicken Scheme and an RSS/Atom program feedsnake. However, Iāve since started using another (superior) program for this, sfeed.
With the Haiku operating system, e-mail messages are just a sort of file, with extended attributes containing metadata of the message. Haikuās file-manager, Tracker, was made with first-class support for extended attributes, allowing it to display e-mail as wellāor betterāthan any e-mail client. And Haikuās e-mail reader? Itās simple and fabulous.
Iāll take a note from their book: Iād like the file-manager to be the ācoreā of a graphical system, just as the shell is for the command-line. More things should live in the file-manager, and e-mail management is one of them. To help that along, I made nautilus-maildir, an add-on for the file-managers Nautilus/Caja/Nemo which displays e-mail filesā metadata in columns, similar to Haikuās Tracker.
As previously mentioned, I kept busy for a while with Haikuās community and software ecosystem. Itās beautiful, coherent, progressive, and unique aesthetically and technically; it is, and I am not exaggerating, exactly what a GUI-centric UNIX-like desktop should be. It fulfills the promise of the UNIX philosophy more than any other GUI system on the modern Free Desktop landscape.
I wrote several programs and scripts for Haiku: Chat-O-Matic, Pogger, MediaMonitor, among others. My other main contributions were to Calendar and TrackGit. The most weighty work was probably on Chat-O-Matic, which was my 2021 Google Summer of Code project.
Ultimately, I moved back to LiGNUx from Haiku because, well, it was too nice. I know it sounds silly, but itās true! Sure, Haiku gave me some paper-cuts, but itās an otherwise ideal system with a beautiful community. And because of that, I started feeling like I was living in a bubble. While I was enjoying a lovely system, the majority of Free Desktop users were still crawling in the muck of LiGNUx and BSD; and I didnāt like that.
Instead of isolating myself in a pleasant bubble, Iād rather try and make the muck more palatable; Iād rather try to improve the software ecosystem in small ways that bring it in line with my (admittedly opinionated) taste. LiGNUx is the only proper competitor to Windows and macOS, and I think itās important that it be as nice as it possibly can be. I do miss Haiku, though. I really do.
Before Raddle (Reddit-like board) supported image-uploads, there wasnāt really any fitting image-host for the community. The choices we knew of either required too much JavaScript, didnāt respect privacy, or were hosted by āfascists.ā So, I made my own over a weekend: That was insert-coin, the first version of coinsh.red. It was IIRC my first PHP project. It wasnāt pretty, but it worked.
I worked on that for a while, until I ran into IPFS, a distributed network that hopes to supersede HTTP(S). I then made a new version of the site with Common Lisp, which uploaded each file to the IPFS network: cl-ipfs-apiĀ². At some point, Raddle enabled image-uploading, and I started to tire of caring for an IPFS node; so I disabled file uploads. Overall, coinsh.red has hosted 93GB of files over 18835 URL redirects.
Now, though, Iām disillusioned with IPFS and other dweb projects. I still think itās important we replace centralized services, which are often consolidated into and controlled by massive companies, with truly distributed alternatives that canāt be controlled by anyone. Iām not particularly happy with anything on the table right now, however. GNUnet seems promising, and it might some day become the perfect dish for that table. But for now, Iām sticking with the federation camp.
LibertyBSD was an attempt to purify OpenBSD into a fully-free and Free Software Distribution Guidelines-compliant BSD. It was founded by Riley Baird, who published the first couple of versions. When he was unable to continue hosting the website, I took over as host. After Baird left the project, I started to work on new versions with Einhard LeichtfuĆ, Jimmybot, alimiracle, and a couple other contributors.
After some releases, it was found that some vital files lacked license headers, and were so considered proprietary as per the GNU projectās standards; although the OpenBSD project considers this a non-issue. I lacked the skill and time to replace these files myself (by a long-shot!), and so I archived the project. It was a poor effort, but it was an effort.
A much better effort is being undertaken at this very moment by the folks of the HyperbolaBSD project, who are trying to make a fully-free BSD system using the OpenBSD kernel. This includes, of horse, replacing the aforementioned licenseless files. I recommend taking a look and helping them out!