I'm glad to announce the release of version 2.53 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes:
New user feature to search by post content (using regular expressions) or tag.
Added some (partial) support for Event object types.
Minor fixes: Allow unboosting your own posts (contributed by khm), CSS fixes for the Dillo browser (contributed by kvibber).
Hello. I don't think it would be impossible, but I think the experience will be severely lacking. The start and stop times of #snac are fast, but from the top of my head, these things could prove problematic:
The maximum number of simultaneous processes would be harder to control (it should be done on the frontend http server, and that would require specific configuration for every server implementation).
Every activity (likes, boosts, posts) generates a very big bunch of connections. After a new one, the process should manage the full queue and not exit until it's done. If there are a bunch of these operations still running, the http server would not open on new queries, or at least it will require some configuration tuning. As it's now, it's trivial to reserve resources and give top priority to incoming requests.
And most important, the problem of retries. The fediverse is a jungle of overloaded, fallen, slow servers. Activity messages should be stored somewhere to be retried later, probably after a timer. This is much harder to manage from a CGI, that only runs on demand.
As I say, it's not impossible, but a project with this approach should be carefully developed taking this thinks into account.
I am just so amazed at how well the @phanpy web client works with #snac. I started self-hosting phanpy last night (it is a pure static web app) and it works seamlessly. Makes me very happy when things go like they're expected. Thank you for this @cheeaun!
If you're looking to host your very own single-user/a-few-users #fediverse instance, you cannot go wrong with #snac. It is simple to install on Ubuntu and works very well with some really solid clients. It is also written in C, so it is fast, with few dependencies. Great work @grunfink, you've got a new monthly supporter on Ko-fi!
Finally installed #snac2@grunfink! Straightforward process, no major issues. It works very well with @Tusky Only issue I've had has been adding attachments. Is that supported or is there a file limit size? In any case, great job. Big fan so far.
Attachments are totally supported, being them images, video, audio, whatever. But, if you are experimenting "file too big" errors, they do not come from #snac itself (there is no enforced limit), but from your nginx / Apache / whatever web server; try reconfiguring it to allow larger POST uploads.
Getting #snac running on this server has been straightforward. I spent longer hesitating on the top-level domain. Took a few minutes to get the systemd service up and running, but that was the most complicated step so far.
Look at how @mikedev designed events in @streams! I would love to see this implemented in other software. @julian have you thought about how @nodebb would display an #ActivityPub event yet? Does @silverpill's @mitra have any support? What about @grunfink's SNAC?
#snac doesn't support this Event activity type yet, but it doesn't seem too hard to add some support for it (it's the first time I find one in the wild, to be honest).
I'm glad to announce the release of version 2.52 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes:
Posts that were liked or boosted can now be unliked and unboosted.
Outgoing message timeouts are no longer hardcoded and can be configured (see snac(8) for more information).
Fixed a bug that caused some incorrect unfollows under special conditions (with shared inboxes enabled and users from the same instance that follow each other, the internal message distributor was confused).
Mastodon API: Added support for lists.
Added a header to avoid over-zealous caching in some browsers (contributed by louis77).
Added support for running and federating inside hidden networks like Tor, I2P or Loki (contributed by iwojima).
Fixed an error processing polls coming from Pleroma instances.
I'm glad to announce the release of version 2.51 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes:
Support for custom Emojis has been added; they are no longer hardcoded, but read from the emojis.json file at the server base directory. Also, they are no longer limited to string substitutions, but images as external URLs are also supported (see snac(8) for more information).
Fixed a bug that caused some notifications to be lost when coming from a user in the same instance.
Added an additional check for blocked instances (sometimes, posts from blocked sites that were ancestors of legit posts were 'leaking' into the timeline).
On OpenBSD, if the disable_email_notifications server flag is set to true, unveil() is not called for the execution of the /usr/sbin/sendmail binary and pledge() doesn't set the exec promise.
CI checks are queued. Hopefully they'll go smoothly?
Assuming they do, it will still be up to someone else with commit access to merge it.
Thank you for your continued improvements! On my mental ToDo list I keep on meaning to create a snac Port for OpenBSD, and it looks as if the unveil and pledge support continues to be refined, cool!
Is there a way (via cli or by calling a snac function from a script) to poll and auto-accept follows to a certain profile, and then auto-boost all posts that mention that profile address?
The idea is to function like a group on the local server so that all followers will be able to see all toots addressed to the profile.
So user Bob is following user @boost. User Alice posts a status mentioning @boost. The account @boost automatically boosts the post from Alice. Then user Bob eventually can see the boosted post in the timeline.
If there is a way to hack or cobble this I'd probably rather go that route rather than trying to author C code for it. I haven't even tried to write C code for like 20 years, and even then I was not proficient at it. A hackety solution is just as good for my purpose, if anyone can suggest any.
I know I can emulate this behavior by scripting a mastodon client to do it with a cron job. But if there is a way to use snac commands or a config hack I would prefer it.
Hi. I'm afraid there is no easy way to automate what you want just using #snac 's command-line interface. As you say, doing it via the Mastodon API could be feasible. I don't know of an already written tool that does this, but it may exist out there.
The #ActivityPub actor of type Group was defined basically for this; to boost to their followers all posts that mention it. Programs like Lemmy and the Wordpress ActivityPub plugin implement 'channels' this way.
Implementing support for this in snac won't be too difficult, but I want to keep it as slim as possible. I don't totally discard the idea, though, so I'll write it down as a possible thing to be done in the future.