Recent Notes
Do you want to see a #littleFedi instance's directory?
Here it is. It's all here.
littleone@littleone:~/littleone $ ls -l
total 2534224
drwx------ 5 littleone littleone 5 Oct 12 21:23 backups
drwxr-xr-x 30 littleone littleone 30 Oct 13 16:22 blogs
-rwxr-xr-x 1 root wheel 28676230 Oct 12 11:19 littlefedi-freebsd-amd64
-rw------- 1 littleone littleone 4367925248 Oct 13 19:56 littlefedi.db
-rw------- 1 littleone littleone 98304 Oct 13 12:20 littlefedi.db-shm
-rw------- 1 littleone littleone 108442552 Oct 13 19:56 littlefedi.db-wal
-rw------- 1 littleone littleone 3645 Sep 30 19:48 littlefedi.toml
drwxr-x--- 402 littleone littleone 402 Oct 13 16:43 media
#littleOne
Dear #littleOne friends,
A new build of littleFedi is now powering this instance!
We've made several changes based on reports from our friends on this instance, feedback from those who have started self-hosting, and code reviews by the Little Computer People.
There are still a few things to integrate, but this will probably be the next build we release (likely tomorrow or on the 14th, two weeks after the previous release).
I'm attaching a non-exhaustive changelog:
Alt text changed while editing a post from a Mastodon client (Mastodon web,
Phanpy, Elk, Ivory, Tusky and others) was silently dropped. It is now saved
and sent to other servers with the edit.
Alt text of images already attached to a post can now be edited from the web
composer.
When a remote author adds or changes alt text by editing a post, the change
now shows up here too. Before, the post kept its old description, and stayed
hidden for anyone filtering out media without alt text.
PUT /api/v1/media/:id can now clear a description, and refuses media that
is already attached to a post, as Mastodon does. Use the status edit instead.
Alt text is limited to 1500 characters on the server too, not only in the
browser. Longer remote descriptions are cut at the same length. The limit is
reported as description_limit in /api/v2/instance.
Media without alt text now report description as null in the API, so
clients no longer show an empty ALT badge.
New Favourites page in the web interface, in the main menu, listing the
posts you liked, most recent first.
Paging through /api/v1/favourites skipped or repeated posts after the
first page. It now continues from the last post shown, like bookmarks.
When the timeline tabs or the top menu do not fit on one line, they now
show only their icons. Before, some themes cut the last items off or split
them over two rows.
Keep the canonical instance actor URL public in secure and allowlist modes,
fixing a key-fetch deadlock with other authorized-fetch servers.
With split domains, /api/v1/instance now reports the handle domain as uri,
and actors carry a webfinger property with their canonical handle.
Hashtags can now be followed from the search in Settings > Followed hashtags,
even before any post uses them. Hashtag pages with non-ASCII names, such as
#caffè, now open and follow correctly.
New [web] redirect_guests_to_about sends signed-out visitors from / to
/about, and [web] public_blog_directory = false puts /blogs and its
sitemap index behind the login.
public_local_timeline = false now also hides the links to the local
timeline and asks for login on /public/local and when scrolling, not only
on /.
Signed-out visitors could load the federated and bubble timelines through
the scrolling endpoint. They now get the login page.
Moved profiles now show the destination and replace Follow with a link to
the new account. Old posts remain accessible, and cached account data is
refreshed as soon as the move is saved.
Move notifications now show and link to the destination, while the account
name still opens the original profile. Moves by different users stay in
separate notification rows when grouping is enabled.
Cached timelines now pick up new posts when blog publishing is enabled,
without waiting for the page cache to expire. Incoming boosts also update
open timelines through streaming.
Profile bios can now contain up to 5,000 characters in the web editor,
up from 500.
The notifications page now has a Mark all as read button. Clear all still deletes
them.
Follows imported from CSV are now saved before the upload is confirmed and
resume after a restart. Settings and the API show progress, existing follows
and failed lookups. Follow requests and their outgoing deliveries are saved
together, and only one import can run per account. This uses the existing
database schema.
CSV files over migration.max_follows_import are now rejected instead of
being silently truncated. Set the limit to 0 to import the whole file.
CSV imports now leave an internal notification when they finish or stop
after a terminal error, with a summary and a link to that import. Retries
do not duplicate the notice; no email or push is sent.
Multiple Mastodon API Fixes
Replies in the web interface now keep the original post's content warning,
both in the timeline and on the thread page.
Media can be added to a post by dragging files onto the composer or by
pasting an image, as well as with the file picker. Files dropped elsewhere
on the page go to the main composer instead of replacing the page.
#littleFedi
Hi friends!
Now that littleFedi has been released and new instances are starting to appear, we can focus again on development and testing.
From now on, the littleFedi accounts on this instance will work like this:
The announcement - @littlefedi_official - account will be used for announcements: new releases and important communications. It will be a very low-traffic account, so I suggest following it with some attention. A new build, by the way, is not far away... 😉
There will also be an account dedicated to hints, where we will publish, notice the plural 😏, tips, tricks and useful little things about littleFedi. It does not exist yet, but I will create and announce it as soon as possible.
This account will remain more general, as it is now, although of course it will mainly talk about littleFedi.
This instance will remain our test instance. New builds and new features will be tested here before their public release.
For now, the littleFedi development model will also remain the same: the developers develop, fix, experiment and, when something is ready, a new version is released.
Open Source is freedom, not conformity.
littleFedi has its own history, its own way of growing and its own direction. We will keep following them, without trying to imitate a model just because it is the most common one in the Open Source world.
Open Source was born to let people do things differently.
littleFedi is free.
#littleFedi #littleOne #Fediverse
I'm quite sure that this instance will be quite under pressure, tomorrow...
Welcome to the world of tomorrow!
Yes, exactly. This instance has tomorrow's build date.
That's because littleFedi will be released tomorrow, and I've just made the final builds. They'll be tested on this instance today before being made public.
Not long now...
#littleFedi #littleOne #Fediverse #OwnYourData
Ok...we're now running on a 1 Euro/month #NetBSD VPS
#littleFedi #littleOne
What if... I move this instance to a 1 Euro per month NetBSD VPS? 😉
#littleOne #littleFedi
And this one on a small VPS and powered by FreeBSD
#littleOne #littleFedi
Hello, littleFedi friends!
Some days ago, I created an official account for the littleFedi project. It's still almost empty and I'm planning to populate and starting to post from it after EuroBSDCon.
If you want to receive the official communications about littleFedi, you can already follow that user:
@littleFedi - Official AccountEnjoy!
#littleFedi #littleOne
A small development update from the last two days:
We added a couple of quality-of-life options for the web interface. You can now choose whether your timeline and notifications refresh automatically as new activity arrives. The preference is saved in your browser, so it remains in place between visits.
There is also a new option to choose your default landing page. If Catch-up is enabled on the instance, you can make it the page you see when opening littleOne, rather than always starting from the home timeline.
We also revised relationship notifications. Notifications for unfollows, blocks, unblocks, and rejected follow requests are now disabled by default. They can still be enabled individually from Settings → Notifications for people who want them.
Instance administrators can additionally disable those notifications for everyone through the configuration file:
[instance]
block_sensitive_relationship_notifications = true
When this option is enabled, the personal setting is hidden and individual opt-ins are overridden. Existing notifications and saved preferences are left untouched.
Alongside these changes, we merged a few branches and reviewed several incoming requests.
Thanks to everyone who contributed feedback and testing!
#littleOne #littleFedi
Today’s littleFedi updates:
Strengthened allowlist-only federation: redirects, discovery, deliveries, and hostname handling now consistently respect the policy. (Spoiler alert: there's a reason behind this 😉)
Fixed boosts for local-only posts, plus a timeline relative-time refresh issue.
Fixed an Android PWA green-bar issue by letting the manifest update normally.
Disabling remote media caching now safely clears leftover cache jobs instead of leaving the queue unhealthy.
#littleFedi #littleOne #Fediverse #OwnYourData
There are 48 local accounts on this instance.
It may not be extremely active, but SQLite is handling the workload very well. The load is currently close to zero, even though littleFedi is running on a cheap VPS with 2 cores and 4 GB of RAM. It handles federation, lazy media caching, housekeeping and the usual background work
while using around 600 MB of RSS.
That figure represents the whole process footprint - not just the post cache - and includes the Go heap, reusable allocations, buffers and SQLite memory mappings.
When an incoming post is relevant to a local user, littleFedi inserts it into that user’s materialized home feed in SQLite at ingest time. Opening the home timeline therefore requires an indexed read instead of rebuilding it from follows and followed hashtags. A bounded in-memory cache also keeps hot entities, timeline windows and rendered pages ready, while a background warmer refreshes the timelines of recently active users.
Cache misses, restarts and evictions still fall back to SQLite, but the normal warm path is very fast. The bubble timeline also uses the cache, although its cold database path still needs quite a bit of work.
For comparison, my single-user instance on a Raspberry Pi Zero 2 W uses around 60 MB of RSS a few seconds after browsing around.
Go’s garbage collector runs automatically and reclaims unreachable heap objects. Some memory may remain reserved for reuse, however, so RSS does not necessarily fall immediately after a collection cycle.
littleFedi isn’t trying to compete with snac on minimalism - snac is awesome and remains the best solution for many scenarios. The goal is to offer a different experience while remaining usable across a wide range of hardware platforms and operating systems.
#littleFedi #littleOne #OwnYourData