Conceptually, social4git seems to be very similar to twtxt, and as such I expect social4git to suffer from at least some of the same weaknesses or inconveniences.
Before social4git takes off for real, I'd like to offer some of my experiences with twtxt:
Poor discoverability
Problem: I have installed a new piece of social software that looks exciting, now what? How do I find someone to follow? How do I become a part of a community or a “circle”? It is very discouraging to just sit there with an empty timeline, and have no idea how to populate it.
Initially, twtxt mitigated the problem by publishing a “we are twtxt” file, containing the nicknames and URLs of people who wanted to be discovered, and eventually people could learn about other participants from “retweets” or “mentions” in their timeline, but in the long run it didn't solve the problem.
A better attempt of discoverability was when twtxt started using the HTTP header User-Agent
for announcing its own URL: in that way twtxt participants could learn about new people by looking for twtxt user-agents in their HTTP logs. Not all would benefit from this, but at least some would.
I stopped using twtxt in November 2020, so I cannot say where the protocol is today. They may have introduced other ways of discoverability since then, who knows.
My point is that if social4git is to proliferate and survive in the long run, it will need a way for participants to discover new people out there. Perhaps HTTP headers could be of some help to some, but I assume that many will host their repos on e.g. Codeberg or Microsoft GitHub, and HTTP headers will be inaccessible there.
Would it be possible for social4git
to publish the followees in a separate branch (unless a followee is marked as private, of course) that can be fetched by followers and used as suggestions?
Rate-limiting
From twtxt I learned that even if each participant rarely published more than a handful of tweets daily, some followers seemed to think it was necessary to set up a cron job to fetch the whole damn timeline every few minutes (and many clients didn't bother to check the last modification date), or even every minute. Obviously this doesn't scale, and it also introduces a lot of annoying noise in the HTTP log.
Could each social4git instance publish some metadata about its owner and repo? One parameter could be a “crawl delay” that would serve as a suggestion to followers to not come back for more until after such a delay. That way remote won't be disturbed unacceptably often, even if somebody sets up a cron job to sync every minute.
Also, social4git should probably use exponential backoff if a “feed” is unavailable, rather than banging the remote end relentlessly. And if a git repo has been unavailable for more than a certain time, stop fetching it altogether and post a notice to its own owner that a feed has been disabled and may need manual inspection.
I'm out, but nobody seems to notice
As mentioned before, I stopped using twtxt back in November 2020 (i.e., almost 2½ years ago). I announced this to my feed well in advance, and also had myself removed from the “we are twtxt” directory. Yet even today people are still fetching my feeds (I had more than a handful). I have tried “404 Not Found” and “410 Gone” — each for extended periods — to no avail. I have tried banning with iptables, which has proved useless against dynamic IPs, and I have tried posting “This feed has been discontinued, please unsubscribe!” every minute, only to receive an angry email from a follower that I shouldn't fill their database with such nonsense. The problem seems to be that newcomers will use old twtxt files they find here and there, extract twtxt URLs from posts, and then add them as is to their following list whether remote is up or down, and no matter what the current contents of the feeds are.
My point is: There should be a way for a feed to announce that “This feed has been discontinued. Stop your git pull indefinitely. Now!”. Either explicitly (metadata) or implicitly (exponential backoff with an upper limit) — or both. Big players like Codeberg and MS GitHub are unlikely to notice useless knocking on their doors, but it sure becomes annoying on a small homeserver.
Please teach the social4git software to be considerate and polite. In other words: behave.
Edit / Delete / Expire
Not so much learned from twtxt, but still:
As I see it now, the social4git repo is ever growing (and I assume that new followers will initially have to fetch the entire repo), and I have no easy way to edit, expire or delete older posts. Expiring posts could be either per-post or per-repo (e.g., auto-delete all posts older than 1 year). Also: For how long should I keep other people's posts?
Or is social4git an append-only log?
Thanks for reading me.