Author of the #snac #ActivityPub instance server and other pieces of singular software. Not a real Grünfink. #fedi22
Public Key
npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq
Profile Code
nprofile1qqsql08t3cuzwtzw05ve2srzvuuayfrvnwde2lctj76hn8s2529l9gqpz4mhxue69uhhyetvv9ujumt0wd68ytnsw43qcxnz05
Author Public Key
npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq Show more details
Published at
2024-05-22T16:43:56+02:00 Event JSON
{
"id": "b11213db0517e78c72f3cd1cbacae370d175b0d5fb5d08612bf29d4a8d6f31cb" ,
"pubkey": "0fbceb8e38272c4e7d199540626739d2246c9b9b957f0b97b5799e0aa28bf2a0" ,
"created_at": 1716389036 ,
"kind": 0 ,
"tags": [
[
"proxy",
"https://comam.es/snac/grunfink",
"activitypub"
]
],
"content": "{\"name\":\"The Real Grunfink\",\"about\":\"Author of the #snac #ActivityPub instance server and other pieces of singular software. Not a real Grünfink. #fedi22\\n\",\"picture\":\"https://comam.es/snac/susie.png\",\"nip05\":\"[email protected] \"}" ,
"sig": "14095985b59143664c405bffb7375f285e5abddaf541f81100e13718745c652dd8c19847ab6f0399b4f6d9af6be97ef69cd5ef905f159a0b3526aef88cc3e209"
}
Last Notes npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I feel sorry and a bit unprofessional about announcing the quick release of version 2.55 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the fix to a careless change by me: Mastodon API: fixed a last-minute bug that broke some API functions. I apologize for any inconvenience. This week has not been very good for me, but that is no excuse. https://comam.es/what-is-snac #snacAnnounces npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Hi, #snac users; it seems that I introduced a last-minute bug in version 2.54 that breaks some Mastodon API functions because I'm a moron 🤦 I'll release a new version ASAP fixing this specific bug. I'm super embarrased. Sorry for the inconvenience. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Thanks to you for your help! npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink This is intentional and by design. I consider using metrics like follower counts as inherently toxic. More about this: https://comam.es/snac/grunfink/p/1711178049.868524 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I'm afraid it's not possible by now from the web UI, you can only replace it with another one. I'll think of a way to implement it. Meanwhile, as a workaround, you can edit the user.json file and replace the header field to the empty string "". npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink You're welcome! Enjoy your #snac experience. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Of course. Done. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink do you by any chance know how to start snac in chroot with rcctl, or if it is even necessary to do that? Sorry, I have no idea. I'm boosting you question, just in case somebody knows the answer. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Thank you very much. I've just added your guide to the README file. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Thanks for your continued work on helping snac being available to Mac users. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Unless something unexpected has broken, they should (I've received a notification from this same message of yours, and you should receive one about this reply). npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I haven't forgot about your work; I've just been a bit too busy these last two weeks. I made some quick tests with it and noticed some rejections from remote servers, but I'm not completely sure if they were from your patch or from some network outages I suffered these days. I have real interest in applying it to the trunk, I hope I'll have time to test it again real soon. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Oh, what a surprise! Glad you also like sutter. You're welcome! CC: @npub14ca…0nj8 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Being a software developer is sometimes ungrateful. I feel your pain. CC: @npub17pn…qk8u npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink No burden at all. Software must have users. If no one uses it, it dies a sad death. Once you liberate an open source program, it becomes somewhat of a duty to keep it bug free and improved. So everything is OK 🙂 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Yes, I've seen it happen. The code in the repository already has a fix for this. You can try it now (there are more new features and changes, but nothing disruptive), or wait for the next release. Thanks for reporting. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink No, it needs the library (not the command-line tool). npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink It seems like you don't have libcurl installed in your system (that, and openssl, are the only external dependencies snac requires). In the README.md file you have instructions on how to install it on several systems. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Fantastic! I'm stunned that there are (at least!) 90 pieces of software related to the Fediverse... npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Cool! npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Sorry, no SVG, just this raster image. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink So true. In this special case, those gazillion followers are mostly sure not even part of the fediverse themselves (given that not all Threads is federating), so it's just a blatant lie. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink That would be evil 😉 Or even returning zuck.followers + 1000 😆 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Thanks for the nice words. The xs is an intentionally lightweight library I (with the help of some friends) started for a very different project that never was. As it adds some niceties to C coding, I use it everywhere. It's mostly feature-complete now, but I fix and add some things occasionally. These days, #snac is mostly its main user, as other projects that use it are pretty irrelevant. Using C headers both for implementations and prototyping is somewhat of a perversion 😆, but it simplifies immensely sharing code between projects, because you don't have to care about building libraries (static nor dynamic) and their operating system idiosyncracies. You just drop the .h in your project, include it and it's done. The reason: simplicity. If I had a motto as a developer, simplicity would be. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink So it seems that, now that Threads is federating, the most popular person in the fediverse is... Mark Zuckerberg: https://mastodon.bsd.cafe/users/release_candidate/statuses/112140845317198247 I find these "popularity contests" pointless, ridiculous and inherently toxic, and a signature of private social networks where the goal is not to help people communicate between each other. This is the reason why #snac does not propagate how many followers nor likes a person have. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink You are right; there was a condition where likes and announces coming from the same instance were sometimes not notified. I've just pushed a fix for this issue to the repository. Thanks for reporting. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink @npub15xt…rneh, I miss Susie, the logo of #snac... https://comam.es/snac/grunfink/s/a5441277af98c2b4fc83251b8349de17.png npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Hmm. Yes, it may be an issue with the order Like messages are sent inside the same server. Let me investigate and I'll get back to you. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I'm glad to announce the release of version 2.50 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes: Incoming posts can now be filtered out by content using regular expressions on a server level (these regexes are written in the filter_reject.txt file at the server base directory; see snac(5) and snac(8)). Improved page position after hitting the Hide or MUTE buttons (for most cases). Use a shorter maximum conversation thread level (also, this maximum value is now configurable at compilation level with the MAX_CONVERSATION_LEVELS define). Fixed a bug where editing a post made the attached media or video to be lost. The way of refreshing remote actor data has been improved. Posting from the command-line now allows attachments. Added defines for time to enable MacOS builds (contributed by andypiper). https://comam.es/what-is-snac If you find #snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink This release has been inspired by the song The Raven by #CarolineLavelle. #snacAnnounces npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink That's weird, I've never seen this. Using a higher level of debugging may say something. Also, using an external notifier like ntfy.sh may be useful. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink If you type the URL to an image directly (without HTML tags), it should be converted automatically to an attachment: http://img.stanleylieber.com/src/24160/img/1710293737.jpg npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Hi, #snac author here. I've just read your message and tested following a Threads account, and the process seems to complete correctly, the log messages report the correct dialog and the account appears in my being-followed list (I still haven't received any message from that account, but it's still early, I think). What may have happened in your case is that the Accept message from Threads to your Follow request was lost or not sent for whatever reason, so for snac it's a follow not (yet) confirmed. Can you tell me what Threads account are you trying with? I'll investigate. Thanks for your help. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Hi. I think I have a solution to this issue, at least after the Hide and MUTE actions. It still have some rough edges I have to work on, but next #snac version will probably include it. Thanks for pushing me into fixing this. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink This does not sound crazy at all, it's the most reasonable solution. It's just not easy to keep track of what to anchor to without making the code too complicated. But I won't forget about it and will finally come to a solution. Thanks for your proposals. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Ah, yes, I totally forgot about this. If I recall correctly, another user reported it, but I have no more information. A great thing about free/open source software is that these conversations are done in the open and, sooner or later, everybody gets eventually informed. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Well, it seems it was a bug in the Sync app after all: https://lemmy.world/comment/8136994 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I'm glad to announce the release of version 2.49 of #snac, the simple, minimalistic #ActivityPub instance server written in C. This time it includes some fixes to the Mastodon API code, which was in need of some love: Mastodon API: Fixed a bug in how validated links are reported. Mastodon API: Fixed a bug in search by account. Mastodon API: Fixed missing Video type objects in timelines. Mastodon API: Added search by hashtag. Some cosmetic fixes to the web interface. https://comam.es/what-is-snac If you find #snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink #snacAnnounces npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Oh. I'm looking at your post right now and everything looks OK, the JSON ActivityPub message looks OK, no strange characters, formatting looks fine. I've boosted it and it shows with no issue in Mastodon, Friendica and Akkoma. Tusky and other Android Mastodon API Apps show it correctly. Mastodon API web clients semaphore.social and elk.zone show it with no problems. I think it's probably a bug in that Sync app (which I didn't knew about until now). In my opinion it's a bit rude to suggest blocking your instance, but well, just my opinion. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Hi. I'm mostly sure that I will implement filtering out posts by string or regex. What I'm still not sure is if it will be an administrator, instance-wide option (the easiest one to implement; a text file with a filter per line will be enough) or a user option (where this list of regexes will be editable from the user settings in the web interface). One of my goals regarding snac is keeping it as slim as possible, and will probably decide on the simpler one (instance-wide, in a text file, managed by the admin with an external text editor). Regarding the milter-like option, I think the idea is pretty neat, but I will probably not implement it. In my opinion, spawning a new process for each new post is overkill and prone to potential vulnerabilities and a bit annoying to implement (and, also, clashes with my intention of keeping snac as simple as possible). Yes, there is support for robots.txt; a minimal, disallow-everything one is returned if requested. I have zero faith in AI bots (nor anybody) respecting it, though. I'm very glad you like snac. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Great! npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I've just pushed a quick fix for this... would be so kind to test it? Thanks for your help. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Oh. I see you found a bug in how validated links are constructed in the Mastodon API. I'll fix it. CC: @npub1qw7…q0ue npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Oh, great, then 🙂 CC: @npub1qw7…q0ue npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink What is broken? If I go to your snac home, I see it working, I even see that the link to your blog has been verified. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I'm glad to announce the release of version 2.48 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes: A new instance page, that shows all posts by users in the same instance (like the public instance timeline, but interactive). This will help building communities. Follower-only replies to unknown users are not shown in timelines. Added verification of metadata links: if the linked page contains a link back to the snac user with a rel="me" attribute, it's marked as verified. Added a new server-level configuration parameter: min_account_age. If this value (in seconds) is set in server.json, any activity coming from accounts that were created newer than that will be discarded. This can be used to mitigate spam. Added a profile-page relation to links in webfinger responses (contributed by khm). Fixed some regressions and a crash. https://comam.es/what-is-snac If you find #snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink This release has been inspired by the album The Sudbury Inn by #Deleyaman. #snacAnnounces npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Are you sure you are testing the correct snac version, and that the account creation date is really out of bounds? Because in my tests I'm correctly seeing the rejections in the log, both for too new or too old dates in each actors' published fields. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink All variables of xs * type are automatically freed after they get out of scope, as they use the __attribute__ ((__cleanup__)) mechanism. So it's not necessary. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I've just pushed this feature to the repository (looks good, made some tests, but I'm in a hurry right now). The new value min_account_age (in seconds) can be added to server.json to drop any activity from newly created remote accounts. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Even though I don't personally like it, i've started to implement this account minimum acceptable age (it helps that it's really simple to do). npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I'm not sure if I like the idea. If this feature were implemented everywhere, testing new fediverse instances and software would become unbearable. Anyway, I don't totally discard implementing it. I'll write it on the TODO file. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink You mean the "eyeroll" shortcut (I see it underlined for some reason), or all shortcuts and emojis completely? npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Thanks for this very valuable information! CC: @npub1qw7…q0ue @npub1x2t…zt8j npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I've just seen a quoted reply by an Akkoma user. Curiously, these messages mark the replied post differently (i.e. not using an inReplyTo field, but a quoteUrl one). I don't know if this is an ActivityPub standard or a private extension. Anyway, I'll write it in the TODO file to take a look at it in the near future. Thanks for the suggestion. CC: @npub1qw7…q0ue npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I think that even a fork is too much for this, a separate Mastodon API client would be enough (and, as such, not snac-specific). Anyway, I won't be the person doing it. CC: @npub17pn…qk8u npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink 😀 Certainly, this is not what snac is meant to be. My plan is to keep it as slim as possible. Also, as @npub12r8…n9vf says, there are some apps that already do similar things via the Mastodon API. CC: @npub17pn…qk8u npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Not to be done soon. According to the ActivityPub protocol that moves the Fediverse, hashtags are not objects by themselves and cannot be followed. I'm not too aware about how Mastodon implements following tags, but most probably it uses some shortcuts like using its own API to keep track of hashtags from other instances or internally following local tags or whatever. I think it would be an interesting feature to have, though. So maybe someday. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I must agree that it's an interesting idea 🙂 That would mean to add Gemtext conversion to snac, which will add significant bloat and I want to keep it as small as possible. But, I think that a tool that converted an account's posts (using the Mastodon API) to a Gemini capsule could be an interesting project. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink No, hashtag following is not supported by now. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I have no idea about Akkoma. There is no tool to migrate from other systems right now; the only thing one can do is to import the list of people you follow from a Mastodon csv export file (the process for doing this is documented in the administrator man page). npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Thanks! When you say snac does not requires a database, you mean all data is stored as flat files ? Yes, exactly. I know this is technically a database 😆, but you don't need to install nor admin any SQL database nor any NoSQL oddity like Redis. As a friend of mine likes to say, you "don't need to become a dbadmin to run snac". This also makes snac's storage easily portable from system to system, as a tarfile or rsync of the base directory is enough. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink You're welcome! npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I'm glad to announce the release of version 2.47 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes: Added pagination to the notification page. The New Post... option now includes an optional field to set the URL of an ActivityPub post to be a reply to. Fixed spurious notifications from the same user. Fixed repeated mentions in the reply text field. One-post only pages include the post content instead of the user bio in their metadata (improving post previews from other software). Mastodon API: Added support for timelines by tag (for sites like e.g. https://fediwall.social to work). https://comam.es/what-is-snac If you find #snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink This release has been inspired by the album Fire Hell and Holy Water by #GioliAndAssia. #snacAnnounces npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Not now; post are either public or for mentioned people only. Maybe in the future. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Coffees are optional 😀 Thanks for enjoying and using snac, and for your improvement suggestions (some of them have been implemented and will be announced soon). npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Thank you very much, I'm glad you like #snac and consider using it eventually. I'm not thinking about abandoning it, on the contrary; I think the Fediverse is in need of small software like mine more than ever. Last but not least, I've found very nice people in the process. Only for this, it has been worth the effort. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink No, being a totally transient page, I don't think it's worth the effort. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I first tried to implement the following of channels, but couldn't make it work. Following users did work with not much hassle, though. On my opinion, it's suboptimal, as one may be interested in specific user channels and not in others. I may give another try in the future. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Hi. No voting; just usual interactions, you can follow a user, like, boost and add comments to a video. But given that it's a special type of ActivityPub object and the convoluted way the URL to the actual video is returned, it needed special code. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Thanks 🙂 I've been programming in C for a very long time. Once you know the intrinsics, memory management is not that hard to get right (though, I agree, it's easier to make mistakes that in other languages). npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I'm glad to announce the release of version 2.46 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes: Added support for Peertube videos. Mastodon API: Tweaks to support the Subway Tooter app (contributed by pswilde), added support for editing posts, fixed an error related to the edit date of a post, fixed some crashes. Added a handshake emoji next to a user name if it's a mutual relation (follower and followed), because friendship is bliss. Tweaked some retry timeout values for better behaviour in larger instances (thanks to [email protected] for their help). https://comam.es/what-is-snac If you find #snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink This release has been inspired by the album Duality by #TwoLanes. #snacAnnounces npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Thank you very much for the nice words. I'm feeling a bit overwhelmed right now 🙂 The feeling that my humble work is helping people is warming ❤️ CC: @npub14ca…0nj8 @npub1qw7…q0ue npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink You're probably one of the reasons people are starting to hear about snac 🙂 Thanks! npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink You can just call make with the argument LDFLAGS=-lrt without having to manually edit the Makefile (I've documented it in the README file). Some older (LTS) Linux distributions seem to define the shared memory functions in the rt library. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Morons will eventually appear sooner or later, so we better be prepared with the best tools available 😉 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I've just released version 2.45 of #snac, the simple, minimalistic #ActivityPub instance server written in C. This one includes fixes to some nasty bugs and some interesting contributions: Fixed a collision in webfinger caching. This may affect federation with some software, so I recommend an upgrade. Fixed crashes in some command-line options. New command-line option state, that dumps some information about the running server and the state of each thread (note: this feature uses shared memory blocks and you may need an argument to the make call in older Linux distributions; please see the README file for details). Fixed a bug that may leave an inconsistent state for a followed actor in a special case of repeated messages. Mastodon API: added some fixes for integration with the Mona iOS app (contributed by jamesoff). Added support for ntfy notifications, both using a self-hosted server or the official ntfy.sh (contributed by Stefano Marinelli). https://comam.es/what-is-snac If you find snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink #snacAnnounces npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Thank you very much! CC: @npub14ca…0nj8 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Hi. Thanks for the suggestion, I had not considered it until now. I'll work on how to implement it, but if you provide a PR, I'll love to accept it. Yes, follower / following counts are intentionally hidden by design. I consider these metrics somewhat toxic, related to the 'like' craving and success comparison and such, so much seen in other social media. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I've just merged your PR. Looks very good! Thank you very much. I still have to test it myself; these hours have been hectic for me due to some real-life issues, the debugging of the data corruption problems some users are experimenting and the DDoS codeberg is suffering since yesterday. Cheers! CC: @[email protected] npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink This sounds fantastic! Thank you so much! I'm unable to take a look at it right now, but will check your PR as soon as possible. CC: @[email protected] npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Bummer. Can you send me a gdb bt screenshot, like the one you sent before? I need to know where it's crashing. Thanks. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I've just pushed a fix for this... would you be so kind to test it? It seems codeberg is responding very slowly, at least from my side. CC: @npub14w3…fupm npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Mmmm... yes, it may be related to the webfinger mess. I'll push a fix for this ASAP. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink The code in the repository has a fix for this problem. It may probably affect federation, so I recommend an upgrade. Thanks for your help. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I confirm that those spurious null values are due to a collision in the webfinger caching code. The development code in the git repository already has a fix for this. Thanks for noticing! CC: @npub14w3…fupm npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Hi. I have to check this. Anyway, @npub14w3…fupm Mona patch is probably not to blame, as the modified code is elsewhere. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Hello, #snacizens. I've just added a somewhat cool experimental feature to #snac: a new command-line to query the state of a running server, like $ snac state /var/lib/snac server: comam.es (snac/2.45-dev) uptime: 0:03:09:52 job fifo size (cur): 45 job fifo size (peak): 1532 thread #0 state: input thread #1 state: input thread #2 state: waiting thread #3 state: waiting thread #4 state: output thread #5 state: output thread #6 state: output thread #7 state: waiting It does this using a shared memory area, so some system restrictions may apply. I've tested on Linux and OpenBSD and it seems to work OK. You can call this command as an argument to watch or in a while true shell loop to have something like a poor-man's top utility. This will be part of the 2.45 release. It's already in the public git repository, if any of you want to test it. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I'm glad to announce the release of version 2.44 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes: Fixed a nasty bug that caused the in-memory output queue to be corrupted under heavy traffic loads. This is a good reason to upgrade (thanks to Víctor Moral and Stefano Marinelli for helping me in fixing this). Shared inboxes are now supported. This is not a user visible feature (hopefully, they will not feel any change), but it will significantly improve traffic for snac instances with many users and will open room for new features that are only feasible with these kind of input channels (this is not enabled by default; see snac(8)). I've refactored all HTML code because it was somewhat of a mess; now it's much more maintainable (at least for me). I think I haven't broken anything. Fixed crash in a special case of malformed query. Mastodon API: some tweaks for better integration with more clients, and fixed a crash when processing boosts from kbin. Fixed crash in the FastCGI code (thanks to Yonle for helping me debug this). Added apache2 configuration information (contributed by Víctor Moral). Added FreeBSD and NetBSD setup information and examples (contributed by draga79). https://comam.es/what-is-snac If you find #snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink This release has been inspired by the album Until the Horses Come Home by #Undyed. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I've just pushed the fix to non-cached webfinger queries to the repository. As always, thanks. CC: @npub1fza…qg7t npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I've looked in the source code and, yes, a webfinger resolution is needed to get the real url of the actor related to the user@host reference, but those calls should be cached. I was sure that they were, but obviously are not. Just another glitch in my memory 😅 A fix to this will follow shortly. CC: @npub14ca…0nj8 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I'm not sure why it's making this webfinger calls. I'll take a look at it, thanks for telling me about it. CC: @npub14ca…0nj8 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink My fault, it must be set to true, not to false 🤦 . Setting this value disables the collection, not the sending; the currently collected inboxes will eventually disappear due to the data purge. You can delete all files in the 'inbox' subdirectory manually if you don't want to wait. As I've said, I'm not too happy with this code and will probably change it in the near future (or make it disappear completely). CC: @npub1qmq…7r70 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink If you are experiencing slowness when posting or liking, please consider setting the disable_inbox_collection value in server.json to false. This is a feature that collects shared inboxes from all posts, so that all activities are posted to them even if there is no follow relation as a way to improve reaching instances. I'm aware that it's a bit of a perversion of the standard. I'm thinking about disabling it by default. CC: @npub1c58…upnj @npub1c58…upnj npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink If you use rsync for transferring a snac storage, please ensure that you use the -H argument to keep hardlinks. CC: @npub1fza…qg7t @npub1c58…upnj @npub1c58…upnj npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Glad to know! Enjoy it! I'm afraid that adding LDAP authentication isn't trivial, but I'll consider it. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Hi. Didn't knew ko-fi was such a nuisance; I just opted for it because it seemed simple to me. If you know of a similar, alternative service that is easier / freer / more respectful, I would love to know about it. Thank you very much for your support. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Glad you like it 🙂 npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink No. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink I'm glad to announce the release of version 2.42 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes: It's now possible to add profile metadata. Accounts can be marked as 'private', so that they are not accesible from any non-authorized web UI (i.e. only through the Fediverse). Outgoing connections that fail with a timeout are retried with a higher timeout limit. But, if the instance keeps timing out, it's penalized by skipping one retry. If a post comes from a group or community (i.e. it has an audience field set), the buttons Follow Group or Unfollow Group are shown. Pinned posts are never (incorrectly) purged. Some RSS validation fixes. Mastodon API: some tweaks to better match Mastodon behaviour in timeline entries and boosted posts are correctly returned, and some fixes for crashes. Don't allow creating users which user name strings only differ in case. This was creating some problems (e.g. the webfinger interface doesn't allow case sensitivity). https://comam.es/what-is-snac If you find #snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink This release has been inspired by the album On Giacometti by #HaniaRani. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink Sorry, I don't have that list. I have some followers that are #snac users, but I'm not sure if those people would want me to reveal their ids. They may reply to this post if they consider it, specially if they have done some customization. npub1p77whr3cyukyulgej4qxyeee6gjxexumj4lsh9a40x0q4g5t72sqzq0jxq The Real Grunfink One year of #snac If the source code version control history is to be trusted, I started developing snac (a simple, minimalistic #ActivityPub instance server written in C) exactly one year ago (Sept 19th). It was not my first experience with ActivityPub: I had built a prototype version in Python some months before (hence the "2" in the snac2 repository name), and back in 2019 I made some partial implementation for an unrelated (and now forgotten) blog project, so the protocol was not totally new to me. These are my thoughts about one year of development. Why did I start it? Because I read somewhere about the (still baffling to me) humoungous requirements of a basic #Mastodon installation. I read a lot of people affirming that was the bare minimum: "it CAN'T be done with less resources". But I've always seen it as a glorified short message application and challenged myself to write a feature-complete #Fediverse instance with the following goals: keeping it small, simple, easily deployed, and lacking the bloat software tendencies of modern times. Did it come out as expected? not totally sure, but probably yes. I even implemented more things that I originally planned (I initially said a big NO to myself regarding adding Mastodon API support, but finally did it and it works mostly well). The program is still somewhat small (a stripped binary of less that 300k probably counts). The no-database, no-cookies, no-javascript absolute rules still apply. I'm fine with the (opinionated) web UI that shows conversations as threaded trees instead of the plain, dull stream of posts that Mastodon or Twitter show. It cooperates pretty well with the always growing ecosystem of ActivityPub applications. Was the time and effort worth it? On this, I'm not sure. I'm old and depressed and unemployed, so developing snac has kept my brain busy and entertained for a little while. But it has been more work that I expected: the ActivityPub specification is a bit diffuse in some areas, so every implementation does some things a bit different and many corner cases had to be implemented; some parts (specifically, the Mastodon API) have been very tedious to implement and test; and also, helping users debugging remote systems is difficult and very stressing for me. Fortunately, some fellow developers have helped me and I'm immensely thankful to them. Has it been a success? I'm pretty sure about this: no. I thought that the small footprint, the lack of moving parts and the feature set would be attractive to a large base of users, but this has not been the case. Perhaps I've been unable to reach the neccessary potential users for it to reach some critical mass (a failure of the PR department 😆). Perhaps what I consider interesting features (minimalism, footprint, the web UI concept, Mastodon API compatibility, etc.) are not that valuable for most. Perhaps people disregard it just because it's not Mastodon. Perhaps there are errors and crashes that I'm not aware of. Perhaps snac is rubbish and I'm unable to see it. The reality is that snac is a niche and unknown part of the Fediverse ecosystem and there is no sign that the user base will grow from the current small fistful of deployments out there. What about the future? I'm also not sure. Apart from some pending bugfixes and wishlist items mentioned in the TODO file, I've implemented all the features I initially expected and then many more, so I consider snac a finished program. New bugs will happen, that's for sure. New ActivityPub applications will show out there and, if experience tells me anything, they will all have slightly different protocol interpretations that will need some code tuning on my part. Development will continue; snac is a maintained program. But big changes will probably not happen anymore. https://comam.es/what-is-snac If you find snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink