Your Data. Your Server. Your Place.

Freedombone is a home server system which enables you to run your own internet services, individually or as a household. It includes all of the things you'd expect such as email, chat, VoIP, web sites, wikis, blogs, social networks, media hosting and more. You can run Freedombone on an old laptop or single board computer. No ads and no built-in spying.

State of the Fediverse

This video from LibrePlanet gives quite a good summary of the fediverse in 2020, what it is and a rough guide to how to get started on it. It also discusses the advantages and disadvantages to self-hosting an instance.

The fediverse has been around for 12 years, but it was only after 2016 that it started to gain any significant amount of popularity. Now I think it's safe to say that it will stick around for the foreseeable future, or for as long as http and json remains relevant. The federated model seems to be the current best arrangement for social interaction, which avoids the global censorship of walled gardens but also allows communities to set their own moderation rules so that they don't dissolve into pure entropy.

The Gemini Site

There's now a gemini version of the Freedombone website. The content is substantially the same, but with unicode graphics/icons. There is also a version of this blog.

Direct your gemini clients to gemini://freedombone.net

Network diagram on Freedombone gemini site

Launching on Gemini

A server app for the Gemini protocol has now been added to Freedombone. Gemini is a simple internet protocol similar to Gopher but with transport security and a markdown-like style. You can think of it as a "what if Gopher had been invented in 2020, knowing what we know now" kind of thing.

Not long after I first started running a server in 2010 I had a Gopher server running with a small amount of content on it. Gopher is so lightweight that a server for it will run on very minimal hardware. But after the Snowden leaks of 2013 I thought that the days of unencrypted communications were at an end, because without transport encryption a message can be altered in transit or have dubious scripts or links inserted into it, and there was clear evidence of that this was not merely a theoretical problem.

But with the addition of transport security, using a Trust on First Use (TOFU) principle rather than certificate authorities, Gemini makes running a Gopher-like protocol into a more attractive proposition. Being very minimal means that the attack surface is tiny, and it would be difficult to implement tracking or advertising in this protocol. At most your advert would consist only of plain text or maybe some blocky ansi art similar to an old-skool bulletin board.

In the era of Google, being hacker friendly (in terms of implementation simplicity) but hostile to advertising could be an important point of leverage.

In future I'll investigate whether Gemini can be more integrated with some of the other Freedombone apps. RSS is an obvious possibility. Editing of Gemini pages via NextCloud could be done. Also conversion of Bludit markdown blog entries into Gemini could be automated.

Patches over the Fediverse

Epicyon now has the ability to post and receive git patches. If you make a commit to a git repository and then use the format-patch command and paste the result into a new post in Epicyon then you can send patches to other people over the fediverse. On the receiving side they will appear shown in a monospace font. This only works if you include the name of the project within the CW/subject line and on the receiving side the project name needs to be added within the profile settings (i.e. you need to opt in to receive patches for a project).

When a patch is received it will be put into a patches subdirectory within the users account directory. This can then be applied in the old-fashioned manner, or you could have a script do something with the incoming patches.

So this provides a non-centralized way of receiving git patches, other than via email. There is however a small problem. The character limit on most fediverse instances isn't big enough to be able to paste anything other than the most minimal patch. So that's a fundamental obstacle.

Why bother with the fediverse as a way of transferring patches? The traditional decentralized way of doing software collaboration, which is still used by the Linux kernel, is via mailing lists. But for that workflow to perform well you really need to be on top of your email client with your procmail rules tweaked to perfection. Not everyone is at this level of ubergeekdom. Also keeping spam out of mailing lists can become time consuming and demoralizing. By contrast leveraging the existing moderation and http signature features of the fediverse means that many of the problems with the traditional development model can be averted.

I've also been reading the ForgeFed specification. It doesn't look as if this has had much uptake, and reading through the various issues I can see that there have been years of argumentation with very little implementation. Crucial features such as pull requests appear to have been forgotten about entirely.

So I might divert some effort into making a git server which is genuinely decentralized but doesn't depend upon using mailing lists. I could use the existing ForgeFed framework and add in the parts of the spec that are missing. This would help with other projects, because it has to be admitted that my current collaboration workflow is less than ideal. People can make pull requests on GitLab mirrors, but then there isn't any straightforward way to get those upstream to my own server.

Return of the Mesh

We live in apocalyptic times in which it once again becomes possible to think the unthinkable. Much of the economy is mothballed. Once bustling metropolises have empty streets and almost no traffic. A pathogen 160 nanometres in diameter has brought the entire might of capitalism nearly to a standstill, and the usual veil of misdirection has slipped aside to expose the naked realities of class division. In April of 2020 you are either an essential worker or a nobody. All of the billionaires, aristocrats, CEOs and other people with inflated opinions of themselves fall into the latter category.

It's situations like this that the Freedombone mesh was designed for. Emergencies and disasters, where the internet is unavailable or untrustable. I hadn't worked on it for approximately a year, since the Debian buster version was released. Mesh might be the future, but I preferred to focus on where most people are at now, which is still very much the client/server paradigm. But events prove that there's still a need for some kind of fallback option.

There had been a fair amount of bitrot. I've switched out OpenVPN for Wireguard, which also simplifies the process of connecting meshes. Some fixes were needed on qTox and various daemons. And of course the switch from iptables to nftables. But now the Freedombone mesh is available again, with more recent versions of packages. Avahi also seems more stable than it was on the previous Debian version. CryptPad now loads at impressive speed on a decade old netbook, and once loaded everything is realtime. This kind of rapid, trivially easy to deploy arrangement without any centralized gatekeepers and exclusively running on IPv6 is how the current internet should be, but very much is not.

Need to videoconference between bio-isolated rooms in a field hospital during an internet blackout? I'm not aware of any other system which can do things like this. All of the geniuses of Sillicon Valley have never considered such a thing worthy of a moment's consideration. They're too busy riding on slides and having free lunches, or obsessing over numbers of clicks.

Abolish Silicon Valley

Here is an interesting interview with Wendy Liu about the problems of the technology industry described in her book, Abolish Silicon Valley. These problems aren't really all that new, but as software has become a bigger part of the economy and everyday life it has just become more obvious that capitalism mediated through and amplified by software technologies is something grotesque and often anti-human, not even meeting many real human needs.

One point raised is that we should democratize the creation of technology, and this is really what Free Software has been about since the 1980s. When I'm developing some Free Software there is no boss belittling me or telling me I'm not allowed to do it, and systems created within that paradigm can be a lot more focused on what people really want or need out of software.

But Free Software hasn't been without its own problems. It emerged from the ivy league US universities and hence much of its history has reflected the sorts of upper middle class interests which people who attend those institutions are accustomed to, which are typically not exactly the same as the general population. Many of the problems we now see are really classism amplified and enforced through technology, and in its current formulation the Free Software movement doesn't have solutions for this. One really obvious indicator of the underlying divide is that most people who develop Free Software can't afford to fly to conferences in arbitrary locations on the globe at least once per year, and this tends to mean that only certain middle class narratives are told and become integrated into the lore of hackerdom. On rare occasions grants might be made available to try to increase diversity, but nobody wants to become someone else's charity case.

What I think is needed is something like Free Software, but with enough of a surrounding organization to it that the value it generates can't easily be captured by large corporations such as Google. We definitely also need standards making organizations which are not just corporate consortia, as W3C is.