Freedombone Blog

Freedom in the Cloud

FOSS Sustainability

The people complaining that FOSS is "not sustainable" and that developers need to be paid more and add nagware to their software need to remember: most people using FOSS hardly have enough money to survive.

Free software at least is supposed to be a commons. A resource that anyone can use and learn from regardless of their financial status. Projects have come and gone, but the main system components have sustained for the last few decades.

The outrage at developers adding nagware is because it isn't respectful to repeatedly ask people who are hardly surviving to pay you, and to do so in a very entitled manner.

The need to survive under capitalism does conflict with a gift economy. This is what should be recognized. But we should also respect the user and not try to turn them into cash cows like the proprietary developers do.

Epicyon Shared Items Timeline

Fixed some bugs in the shared items system and have added an instance-wide shares timeline. This allows you to view and receive notifications for the latest things being shared on your instance.

Shared items is a Freecycle-style moneyless sharing system intended for the users of an instance. There is limited visibility of available shares other than to logged in users of the instance, so this follows the usual semi-opaque model. Outsiders will be able to get some idea of the kinds of things being shared, but not full access to the list, nor the ability to do arbitrary searches.

A button allows you to send a DM to the person sharing an item to make inquiries about it. Selecting the image shows you the full sized photo of the item.

Unlike a money based system of exchange there is no attempt to hide the social relationships which are involved behind a currency abstraction.

This functionality was inspired by the earlier Sharings plugin for GNU Social, made by a group called Las Indias.

All the banners we had flown for decades: distributed networks, free software, the globalization of the small… were producing a change in ways of producing wealth and knowledge in which the center was no longer in nations or in big businesses, but rather in small groups and communities that are empowered by a new knowledge commons
Shares timeline of Epicyon

Freedombone and IoT

Recently support for MQTT notifications has been added, so within your local network it's now possible to have IoT devices which support MQTT subscriptions listen for admin notifications coming from the server and then do something with that.

I've added an Arduino code example for an ESP8266 board (WeMos D1) using MQTT over wifi to listen for backup status messages from the Freedombone server. It then controls two LEDs which can be used to indicate whether the backup has succeeded or failed.

Note that the admin notifications aren't especially security sensitive. They only contain generic messages such as "Disk space low" or "USB device detected". So even if there are rogue IoT devices on your local network they can't glean anything very sophisticated from the messages.

There are many fun things which can be done with IoT at not much cost. Buzzers. Solenoids. Wearables. If you have a smartwatch which supports MQTT then you could also receive the notifications that way, although it would only work within your local wifi network.

Epicyon performance improvements

Things were getting too laggy and so this week I've been focusing upon getting timeline updates as quick as possible.

Previously the conversion from json formatted ActivityPub posts to html was done on demand. That is, whenever you select a timeline. But in some cases, such as Announce activities or posts where the actor needs to be downloaded, this can involve lookups which slow things down. So now the html is generated at the time when a post is received by the inbox and then cached. When you select a timeline the relevant cached html files are then merely looked up and delivered, without any additional overhead. This also reduces strain on the CPU since any lookups only need to be performed once.

I've also added indexes for timelines, and this improves performance a lot. Previously the index was just the directory listing in descending order of status number, but creating this listing when you have a lot of posts in the inbox directory can take time. Instead it's better to just make an index file which is prepended to whenever a new post arrives. when generating a timeline the system then only needs to read the first few index entries, and doesn't even need to load the entire index file into memory.

The combination of cached html and indexes now makes timeline delivery about as fast as it's likely to get. So the only limit is really just the speed of your server disk storage and how much internet bandwidth you have.

A manifesto

Like it or not.

Personalities notwithstanding.

There isn't an alternative to free software.

Solidaric coding.

Or rather.

The alternative is total subjugation. Total loss of control. Of communities. Of knowledge. Concentration of power like you've never seen it.

There isn't a future free from struggle.

The powerful will try to take everything from you and turn you into a commodity.

Software is one thing they don't yet fully control. Corporate coders with comfortable incomes are not equivalent to motivated activists.

Don't give them an easy ride.

Epicyon Calendar

Going beyond the usual functionality of fediverse servers, calendars have now been added to Epicyon. This is part of the effort to add features useful for organizing social events.

When creating a new post you can now optionally add a date, time and place description. The information gets attached to the post as a tag, using the ActivityStreams Event and Place activities.

There is now a calendar icon which then shows the current month.

Events posted by people you follow will show up there, and selecting particular days then gives you a list of events. If you just want to create reminders for your own use then you can send a DM to yourself containing a calendar event.

Epicyon calendar

This makes organizing events very simple, and you can use message scopes to set up public or private events.

Users of Zot based networks will be yawning at this stage, because this sort of functionality has existed since Friendica, but as far as I know it's new within ActivityPub based systems.