silverpill
@silverpill@mitra.social
Developer of ActivityPub-based micro-blogging and content subscription platform Mitra. I help maintain the FEP repository and write my own FEPs too. Currently working on ActivityPub Next.
Posts
Latest notes
Pleroma and Mastodon can see the quoted post. What about others?
@gabe I used to disagree with many things he says, but lately he's posting a banger after banger.
We should get him on fedi.
It turns out that pglite is actually compatible with normal postgres database dumps, you just need to provide the right flags to pg_dump:
https://github.com/electric-sql/pglite/issues/911
I was able to perform a complete migration of minimitra database from postgresql 15 to latest pglite (which is based on postgresql 17). Didn't notice any issues, it seems to be ready for production use.
RE: https://mitra.social/objects/019cc4a0-9fcc-76c4-c412-33a78e7f5bd4
https://www.openwall.com/lists/oss-security/2026/03/09/7
Misskey and Sharkey, ActivityPub-based social network services (similar to Mastodon), have released updates to patch vulnerabilities Sharkey maintainers describe as "extremely severe".
Details have not been not published yet but "missing permission checks" and "authentication bypass" sound like vulnerabilities that could be prevented by following recommendations from FEP-fe34: Origin-based security model.
FEP-ef61 update: https://codeberg.org/fediverse/fep/pulls/773
Gateways can now remove integrity proofs from collections when they generate collection views. This enables filtering and pagination and is compatible with client-side signing (FEP-ae97).
>Rational solutions to the LLM problem
I think your proposed solution doesn't scale. Small projects could treat all contributions the same, but popular projects will be overwhelmed by slop.
Making LLMs socially unacceptable is a rational solution, and might even be the only real solution because it works at scale.
minimitra now uses #PGlite instead of postgres:
It's a portable database, so the installation process will not require any sysadmin skills. You just need to install the rust compiler and npm (the latter is required for pglite, I plan to remove this dependency in the future).
I had to reset my database because pg_restore didn't work with pglite, but identity and actor ID have been preserved: @minimitra.
@sun Hosted copies of an object may diverge, but the latest version of it is always available on the client side, because servers can't sign objects (unless server and client are a single application).
How those annotations work? I think instance actor could propose a change, which the author may later accept (and publish an Update activity, for example).
@julian It looks simple on the surface, but in reality it is much more complicated than a non-generic server. In addition to activity transfer, generic server needs to maintain collections. First of all, a followers collection, which is often used as a delivery target. Then likes, shares etc. It needs to enforce permissions, to prevent actors on the same server from deleting each other posts.
This is doable if you only care about activities defined in ActivityPub. But then you want to introduce context collection. And then 50 other extensions. How to do that without special-casing every one of them?
This is where duck typing (FEP-2277) and unified security model (FEP-fe34) become really handy. No matter what the client sends, you can figure out what it is (an object, an actor, or a collection), and enforce permissions.
Recently, there was a discussion about generic #ActivityPub servers. Several people claimed that they were working on one, but it turned out that their "generic" servers only support activities defined in the ActivityPub specification. Such a server shouldn't be called generic. It is not difficult to build, neither it is an interesting concept because competing protocols (e.g. Nostr) already offer much more.
I've been writing a #FEP that describes how to build a real generic server. It is not finished yet, but I feel like now is a good time to publish it:
FEP-fc48: Generic ActivityPub server
This kind of server:
- Can process any object type, and can process non-standard activities like EmojiReact.
- Compatible with FEP-ae97 clients.
- Does not require JSON-LD.
I attempted to implement it when I was researching security properties of FEP-ae97 API: https://codeberg.org/silverpill/fep-ae97-server. Back then I didn't know what to do with side effects, but now I think that we can simply force clients to specify them.
@evan @raphael @steve I think a generic ActivityPub server can't be built without major changes to ActivityPub. For example, it might be necessary to make all side-effects of activities explicit.
And there is a bigger problem. A generic server without FEP-ef61 is like ATProto PDS or Nostr relay but all data is tied to a single server. This means that it is obsolete before the work has even begun.
@steve @evan @raphael A server can't properly process an arbitrary activity without knowing its side effects. A server that only supports a small number of activities mentioned in the ActivityPub spec is obviously not generic.
I can point to other challenges because I've been working on this problem for years, but...
Several generic AP server implementations have been built
There are also simpler ways to design servers so that content isn't tied to a specific server
Wow, for real? I suppose it's time for me to retire then.
@steve If by "sufficiently improve" you mean throwing it away and replacing with a better protocol, then yes it's possible.
>the constituency of admins who actually host software to power their own websites or community websites is more pressing to me than fedi users in the abstract
Sure, this is important, and by "existing users" I mean all developers, server operators and regular users.
>right now i am grappling with a network that is terribly broken because i have people who can't follow me and people i can't even see from my instance, and that's without any blocks involved
Are you talking about your own implementation? I can help with debugging
>that's just weird undiagnosable software issues from a fundamentally incomplete protocol
Let's not confuse protocols and specifications. ActivityPub specification is incomplete and IMHO beyond repair.
Fediverse protocol is a different thing, it is more or less complete, and allows platforms as different as PeerTube, Lemmy and Mastodon to happily interoperate. This protocol doesn't have a specification, but I am working on it: https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md
A protocol is like language. Languages are created by people who use them, not by people who write dictionaries. Same goes for protocols, and there is probably no better illustration of this than Fediverse.
>a future where hosting a personal website is as easy or even easier than posting to social media
Isn't it already easier? A static site with an Atom feed?
In any case, I think the best way to secure this future is to build things. What have SWICG achieved since its reboot? I can name only two useful outputs: HTTP signature report and WebFinger report. The rest is pointless bikeshedding and politicking.
@phnt This was a name of the community group at W3C back then when they worked on ActivityPub. No idea why it hasn't been renamed
Boost bots are for Mastodon. In our parts of Fediverse, we have FEP-1b12 and conversation containers, which are more powerful, and can be easily extended to support Join/Leave and roles (good topics for FEPs, by the way).
I don't think anybody who matters actually cared about W3C approval. By 2023, we had FEP process going and ecosystem leaders (Mastodon, Lemmy) were contributing. The rebooting of SWICG was absolutely unnecessary. The intentions behind this effort were quite clear from the start, but it would have lost momentum quickly if you hadn't participated, but you did and continue to do, and now these Github repos are becoming a problem.
@a @phnt I mean you personally and yes I think you dropping SWICG would have helped in 2023. Not sure about now, I don't know what you stand for.
>constituency
Do you mean the target audience? That's existing Fediverse users.
The job of any organization that maintains standards is simple:
- See what developers are doing and document it.
- Do thorough security analysis, and perform other tasks that developers may not have time for.
- Try to prevent situations where there are N different ways of doing the same thing.
SWICG fails spectacularly on all three, in fact it seems to be doing the opposite thing in every case.
>personal websites and local-first representations
This sounds like FEP-ef61 to me. I am currently working on an offline-first client.