Projects

Extended attributes [xattr]

© ???; “GNU-tan” []

IMVHO, extended file-attributes (AKA: xattrs) are incredibly cool and incredibly useful! I lament the current state of the Free Desktop landscape (BSDs/LiGNUx, etc.) in regards to extended attributes: They’re second-class citizens, rarely used or supported. Forgotten.

I used Haiku as my main operating system for a couple years, and it revealed unto to me the beauty and sheer power of extended attributes. Haiku uses them extensively, whether in the file-manager, programs’ backends as the backing of a database, or in file-types generally: Contact-file? Empty file with xattrs for metadata, more like. E-mail? Empty file with xattrs for metadata, more like. 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! :D To this end, I wrote the xattr library for Chicken Scheme, and made an RSS/Atom program that uses them as well, feedsnake. However, I’ve since started using another program for this, sfeed.

Multi-protocol chats

© ???; “Gli @ Hagia Sophia” []

I’d very much like to use a single program for all chats — be it XMPP, Matrix, or IRC — all with a single client. Now 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 programming language-neutral (client with Ruby, server with Fortran, etc.); and be protocol-neutral (both XMPP and IRC in the same program, etc.).

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 pretty dormant, unfortunately.

I tried my hand at making my own candidate, “chatdir”, with a similar structure to Telepathy, but with one change: Client-daemons would provide their data not over D-Bus, but over the filesystem itself, in a simple file-tree using FIFO-pipes. The goal would be to make something along the lines of ii (irc it), but a bit more flexible and powerful. 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!

Data-hoarding

© Seseren, 2022 []

The ability to export a service’s or program’s data in a parsiblity format is vital. For example, it should inherently be simple to export messages to plaintext (or at least HTML!). It’s easier to search through files directl, 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.

Pleroma Migrator 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.

E-mail

s
© ながユー @naga_U_, 2022 []

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’d like to Haiku-ize e-mail management on LiGNUx, and to this end I’ve worked on nautilus-maildir, an add-on for the file-managers Nautilus/Caja/Nemo. It displays e-mail file’s metadata in columns, similar to Haiku’s Tracker.


☠ Ex-projects ☠

Haiku-ing

© Haiku Project, Madia; 2007-2010; MIT

As previously mentioned, I kept busy for a while with Haiku’s community and software ecosystem. It’s a system so beautiful, so simple, so progressive yet unique (both aesthetically and technically), that its allure is irresistable. TL;DR, heck LiGNUx, death to BSD, and Plan 9 can pound sand. Viva Haiku!

I wrote several programs and scripts for Haiku: Chat-O-Matic, Pogger, MediaMonitor, et cetera. 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.

… but, sadly, I yearned to return to the “real world,” where LiGNUx is the only competitor with Windows and macOS, a place where even Firefox can be executed. There are many small things I miss from Haiku, but what truly bothers me is the lack of cohesiveness, slapshot support for extended attributes, and the lack of a truly pleasant file-manager. That last one really bugs me.

coinsh.red

© jadedctrl, 2017; AGPLv3

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 supercede 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.

LibertyBSD

© Spencer Jung, Estanislao Perez Rosso; 2015; CC BY-SA 4.0

LibertyBSD was a project to purify OpenBSD into a fully-free and FSDG-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 Lᴇɪᴄʜᴛꜰᴜß, Jimmybot, alimiracle, and a couple other contributors.

After some releases, it was found that some vital files lacked license headers, and were therefore considered proprietary as per the GNU project’s standards; although this was considered a non-issue by the OpenBSD project. 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 effect 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 course, replacing the aforementioned licenseless files. I recommend taking a look and helping them out!