https://archipelago.1sland.social/fireshttps://fires.1sland.socialIt's up and running, Pelago ingesting blocklists and creating FIRES advisories.https://archipelago.1sland.social/blocklist/IFTAS%2DDNIIf you scroll down, you can see the entire FIRES snapshot and subscribe to the dataset.As changes happen over time, you'll see retractions in the feed.cc: @thisismissemYou can also see an example of 'filtering' on this page, if you scroll down. Rather than silence which can mean anything, there's a suggested list of filters to be applied.https://archipelago.1sland.social/blocklist/IFTAS%2DAUDNote that the existing labels were surfaced from IFTAS: Shared Vocabulary - Labels, along with the translations (when available).The filters come from the FIRES project itself.#FIRES #FediverseTech #Pelago #FediMod

you are viewing a single comment's thread
view the rest of the comments
[–] [S] 1 point 7 months ago (19 children)

For my linux nerds curl -s -H 'Accept: application/ld+json' 'https://fires.1sland.social/datasets' | jq .... FIRES does content negotiation, so hit https://fires.1sland.social/datasets in your web browser and hit it with a proper JSON header and you'll get different results.There's also a curl -s -H 'Accept: application/ld+json' 'https://fires.1sland.social/labels' | jq and associated https://fires.1sland.social/labels for your scripting enjoyments.

  • source
  • parent
  • hideshow 19 child comments
  • [–] 4 points 7 months ago (17 children)

    @oli@olifant.social abso-bloody-lutely love this.

    NodeBB just added in support for third party blocklists, with the IFTAS DNI and AUD lists as default.

    It would be great to support FIRES endpoints as well.

    @thisismissem

  • source
  • parent
  • hideshow 17 child comments
  • [–] 2 points 7 months ago (16 children)

    @julian we've definitely talked about how to implement!Also the new deltas API is going to be a game changer for sync.cc @oli

  • source
  • parent
  • hideshow 16 child comments
  • [–] 1 point 7 months ago (15 children)

    @thisismissem@hachyderm.io yeah we did, although at the time I hadn't properly implemented anything except a text box for domains to block or allow.

    Now it can pull a blocklist by URL, but no support for more than suspend at the moment.

  • source
  • parent
  • hideshow 15 child comments
  • [–] 2 points 7 months ago (14 children)

    @julian You'll definitely want a FederationPolicies model, beyond just a "block these domains" list.For instance, coming in the future to FIRES is a way to distribute Hashtags that may contain harmful content, such that you could choose to filter those out.Or, maybe you want to filter those in (I see you NodeBB and how you get content federated in!)

  • source
  • parent
  • hideshow 14 child comments
  • [–] 1 point 7 months ago (13 children)

    @thisismissem@hachyderm.io hashtag filtering would be handy. I'm interested in seeing how that will shape up. Apologies for missing the T&S call yesterday.

    I noted in my third-party blocklist implementation that IFTAS DNI and AUD lists classify entries as silence or suspend. I am assuming that these are expanded in FIRES with a couple additional items?

    I may be mis-remembering from our talk a couple months back :smile:

  • source
  • parent
  • hideshow 13 child comments
  • [–] 1 point 7 months ago (12 children)

    @julian yeah, we don't currently support a "silence" because no one really knows what that means so we're pushing towards more granular filters

  • source
  • parent
  • hideshow 12 child comments
  • [–] 1 point 7 months ago (11 children)

    @thisismissem@hachyderm.io have you settled on a list I can code against? iirc we had discussed suspend, filter, and allow. Not sure if the terms have changed since.

  • source
  • parent
  • hideshow 11 child comments
  • [–] 1 point 7 months ago (10 children)

    @julian waiting for implementations to give me feedback

  • source
  • parent
  • hideshow 10 child comments
  • [–] 1 point 7 months ago (9 children)

    @thisismissem@hachyderm.io any specific place you want feedback (officially)?

    I have no desire for anything more than those 3.

  • source
  • parent
  • hideshow 9 child comments
  • [–] 2 points 7 months ago (8 children)

    @julian so suspend is either reject or drop as a recommendation; reject say you should tell the sending server "I reject this activity" drop is "I acknowledge this activity but it quietly goes to /dev/null

  • source
  • parent
  • hideshow 8 child comments
  • [–] 1 point 7 months ago (7 children)

    @thisismissem@hachyderm.io great, I'm good to implement those. I'll have to take a closer look at the FIRES documentation next week 🙂

  • source
  • parent
  • hideshow 7 child comments
  • [–] 1 point 7 months ago (6 children)

    @julian I was informed of one gap in the documentation but the API is very follow your nose

  • source
  • parent
  • hideshow 6 child comments
  • [–] 1 point 7 months ago (5 children)

    @thisismissem@hachyderm.io hah okay, I'll take notes on omissions I find as well.

  • source
  • parent
  • hideshow 5 child comments
  • [–] 1 point 7 months ago (4 children)

    @julian writing all the docs takes a huge amount of time 😅I also don't think I've structured them right yet

  • source
  • parent
  • hideshow 4 child comments
  • [–] [S] 1 point 7 months ago (3 children)

    @thisismissem @julianFor myself:reject and drop are suspendfilter is silence on a blocklist, I guess but there are literally filters for reject-media and reject-reports, which also show up on blocklists, if you translate feeds. There's also things like 'require follow requests'...check out https://fires.1sland.social and especially the FreeDNS dataset for a lot of drops followed by a lot of retractions. It's got 25000 things on it and is a good stress test, as every so often it's checking freedns to see what domains are available (and thus risky). They come on and off the list all the time. It's recommending suspend/drop at this point, but filter is a better suggestion for something as preventative as 'someone might use one of these disposable domains to do something bad'. If your filters are strong enough to actually do the things they say they'll do, then you'll get very nuanced information back.In the case of Pelago as a data producer, certain labels indicate certain filter suggestions.I'll break that all down later. But in the end I've decided to refactor Pelago to be a native FIRES server, and implement the spec itself as well.FreeDNS is a great example of something where you get the snapshot once and cursor over the changes rather than drinking the ocean every time.A dataset for "Open Registration (No Manual Review)" is coming soon, too. That'll be fun. It will be filters only, but the filters will be the usual.Oh, I'm implementing all the filters shown here, with the identifiers as shown, except the last one which is for email domains:https://fires.fedimod.org/concepts/filters.html

  • source
  • parent
  • hideshow 3 child comments
  • [–] [S] 2 points 7 months ago (1 child)

    @thisismissem @julian// Label → recommended filters mapping. // When policy is "filter", the labels drive which specific filters to suggest. // See: https://fires.fedimod.org/concepts/filters.html variables.LABEL_FILTER_MAP = { "hate-speech" : ["auto-cw", "auto-unlisted", "auto-label", "prevent-trending", "reject-profile-avatars"], "dehumanisation" : ["auto-cw", "auto-unlisted", "auto-label", "prevent-trending", "reject-profile-avatars"], "online-harassment" : ["auto-unlisted", "prevent-trending", "reject-replies", "prevent-recommendations", "reject-non-public", "require-follow-requests"], "brigading" : ["auto-unlisted", "prevent-trending", "reject-replies", "prevent-recommendations", "reject-non-public", "require-follow-requests", "reject-reports"], "doxxing" : ["auto-unlisted", "prevent-trending", "reject-replies", "reject-non-public", "require-follow-requests"], "spam" : ["auto-unlisted", "prevent-trending", "prevent-recommendations", "reject-non-public", "require-follow-requests", "reject-replies", "roadblock-warn-links"], "farming" : ["auto-unlisted", "prevent-trending", "prevent-recommendations", "require-follow-requests", "reject-replies"], "service-abuse" : ["reject-media", "reject-reports", "prevent-trending", "reject-non-public", "reject-replies"], "disinformation" : ["auto-cw", "auto-label", "prevent-trending", "prevent-recommendations", "roadblock-warn-links"], "misinformation" : ["auto-cw", "auto-label", "prevent-trending", "roadblock-warn-links"], "explicit-content" : ["auto-sensitive", "auto-cw", "age-restrict", "prevent-trending", "reject-profile-media"], "phishing" : ["roadblock-disable-links", "prevent-trending", "prevent-recommendations", "reject-non-public", "require-follow-requests", "reject-replies"], "impersonation" : ["auto-label", "prevent-trending", "prevent-recommendations", "reject-profile-media", "require-follow-requests", "reject-replies"], "troll" : ["auto-unlisted", "prevent-trending", "reject-replies", "prevent-recommendations", "reject-non-public", "require-follow-requests"], "incitement" : ["auto-cw", "auto-unlisted", "prevent-trending", "reject-replies"], "glorification-of-violence": ["auto-cw", "auto-sensitive", "auto-unlisted", "prevent-trending", "age-restrict"], "violent-threat" : ["auto-cw", "auto-unlisted", "prevent-trending", "reject-replies", "reject-non-public"], "defamation" : ["auto-cw", "auto-label", "prevent-trending"], "sextortion" : ["auto-unlisted", "prevent-trending", "reject-replies", "reject-non-public", "require-follow-requests", "roadblock-disable-links"], "catfishing" : ["auto-label", "prevent-trending", "prevent-recommendations", "reject-profile-media", "require-follow-requests", "reject-replies"], "astroturfing" : ["auto-label", "prevent-trending", "prevent-recommendations", "reject-replies"], "cib" : ["auto-label", "prevent-trending", "prevent-recommendations", "reject-reports", "reject-replies"], "sock-puppet" : ["auto-label", "prevent-trending", "prevent-recommendations", "reject-replies"], "cross-platform-abuse" : ["auto-unlisted", "prevent-trending", "reject-replies", "reject-non-public", "require-follow-requests"], "synthetic-media" : ["auto-cw", "auto-label", "auto-sensitive", "prevent-trending", "reject-media"], "copyright-infringement" : ["auto-unlisted", "prevent-trending", "reject-media"], "counterfeit" : ["auto-unlisted", "roadblock-warn-links", "prevent-trending", "roadblock-disable-links"], "account-takeover" : ["prevent-trending", "prevent-recommendations", "reject-non-public", "require-follow-requests"], "apt" : ["reject-media", "roadblock-disable-links", "prevent-trending", "reject-non-public", "reject-reports", "reject-replies"], "csam" : ["reject-media", "reject-profile-media", "auto-sensitive", "age-restrict", "prevent-trending", "prevent-recommendations", "reject-non-public", "require-follow-requests"], "csea" : ["reject-media", "reject-profile-media", "auto-sensitive", "age-restrict", "prevent-trending", "prevent-recommendations", "reject-non-public", "require-follow-requests"], "ncii" : ["reject-media", "reject-profile-media", "auto-sensitive", "age-restrict", "prevent-trending", "prevent-recommendations", "reject-non-public", "require-follow-requests"], "tvec" : ["reject-media", "auto-cw", "auto-sensitive", "prevent-trending", "prevent-recommendations", "reject-replies", "reject-non-public", "roadblock-disable-links"], "content-and-conduct-related-risk" : ["auto-cw", "prevent-trending"],

    	// Pelago-specific labels
    	"suicide-baiting"    : ["auto-cw", "auto-unlisted", "prevent-trending", "reject-replies", "reject-non-public", "require-follow-requests"],
    	"antiblackness"      : ["auto-cw", "auto-unlisted", "auto-label", "prevent-trending", "reject-profile-avatars"],
    	"queerphobia"        : ["auto-cw", "auto-unlisted", "auto-label", "prevent-trending", "reject-profile-avatars"],
    	"block-evasion"      : ["auto-unlisted", "prevent-trending", "reject-replies", "reject-non-public", "require-follow-requests", "prevent-recommendations"],
    	"lax-moderation"     : ["prevent-trending", "prevent-recommendations", "require-follow-requests"]
    

    Just as a starting point.

  • source
  • parent
  • hideshow 1 child comment
  • [–] [S] 1 point 7 months ago

    @thisismissem @julian On my side, some of the labels mapping to filters is irrelevant, since approving the labels on an advisory by promoting it to a recommendation for csam or other things is an auto-escalation to a reject policy. Not drop, straight up reject. And if you're recommending drop or reject, you don't need filters.

  • source
  • parent
  • [–] 1 point 7 months ago

    @oli @julian yeah, so I'm interested in what filters applications need, and a good future feature will be "filtersets" which don't affect the public API but do change the admin experience (e.g., you could create a "silence" filter that includes these named filters, so you can apply them all at once repeatedly, but to a consumer it's still clear you're recommending they take these specific actionsAnd remember: the datasets only contain recommendations, they're not prescriptive. Any consumer can decide to ignore your recommendations as a dataset producer and do something different.

  • source
  • parent
  • [–] [S] 1 point 7 months ago

    I'm working on a PR for this in Fediblockhole, too. It supports many formats, and talking to FIRES gives it state management for retractions it's never really had before--I mean, there's an explicit 'Retraction' type.

  • source
  • parent