Damus
Stefano Marinelli - littleFedi profile picture
Stefano Marinelli - littleFedi
@Stefano Marinelli - littleFedi

Barista at BSD Cafe and illumos Cafe - @[email protected] / @[email protected]

Spreading weather forecasts all over the Fediverse via FediMeteo - @[email protected]
Testing littleFedi here on littleOne, its first instance open to outside users. Small ActivityPub server, single Go binary, still in active development.
The official littleFedi account is: @[email protected]
#littleFedi #Fediverse #OwnYourData

Relays (1)
  • wss://relay.ditto.pub – read & write

Recent Notes

Stefano Marinelli - littleFedi profile picture
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
Stefano Marinelli - littleFedi profile picture
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
Stefano Marinelli - littleFedi profile picture
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
Stefano Marinelli - littleFedi profile picture
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


Stefano Marinelli - littleFedi profile picture
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
Stefano Marinelli - littleFedi profile picture
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