superseriousbusiness / gotosocial

Fast, fun, small ActivityPub server.
https://docs.gotosocial.org
GNU Affero General Public License v3.0
3.7k stars 316 forks source link

[feature] Multi-user requirement: federation audit logs #3319

Open SoniEx2 opened 1 week ago

SoniEx2 commented 1 week ago

Is your feature request related to a problem ?

Moderation is hard. Having git blame for federation would help a lot.

Describe the solution you'd like.

We've previously described the audit log idea here: https://github.com/pixelfed/pixelfed/issues/5126

But to reiterate:

This feature is just for the backend and does not take into account the work required to make the audit log actually useful (i.e. relevant moderation APIs/UI).

Describe alternatives you've considered.

None.

Additional context.

We don't know if GtS is trying to support multi-user deployments or if it only supports single-user instances. This feature is only relevant for multi-user tho, so feel free to deprioritize it if it doesn't align with the project's use-case.

NyaaaWhatsUpDoc commented 1 week ago

while this is a cool idea, it would absolutely rip through storage space, so much would need to be stored. so much more than currently. and i'd also be worried about the performance impact of our users of small constrained devices.

SoniEx2 commented 1 week ago

an audit log entry is smaller than a boost, and it's only stored once per what. (it can also be pruned.)

ofc, to avoid the obvious performance overhead of full sending the SQL, you could refactor the codebase to keep track of the things on the app side...

tsmethurst commented 1 week ago

How do you mean keep track of things on the app side?

In your proposal there's a lot of stuff that frankly just doesn't really feel like it would be used for anything. I think the only federation stuff we really need to be keeping around would be a list of which instances have dereferenced or received a post, for more thorough deletion. Aside from that I'm not sure what the benefits would be of writing something into the db every time the instance "does" something as a result of user action.

SoniEx2 commented 1 week ago

we mean instead of full sending it with the SQL, you could carry the metadata throughout the various bits of the codebase.

one of the biggest benefits of this (= federation audit logs that tracks "object" and "cause") that you don't get with what you're suggesting is that you can investigate patterns that you otherwise couldn't.

it lets you answer questions like "why do we keep seeing fash in the [federated timeline/tags/etc]". (you'd never think to look at your own users - or their follows - for that, but the federation audit log does. we don't need to blame "the fedi"; after all, the main way federation happens is when one user follows another user.)

it gives you more insight into "how are fash instigating this wave of racism and transphobia" (which happens every couple of months yet everyone just blames Black and trans folks instead of looking at the fash).