snarfed / bridgy-fed

šŸŒ‰ A bridge between decentralized social network protocols
https://fed.brid.gy
Creative Commons Zero v1.0 Universal
726 stars 39 forks source link

Bridge groups #1435

Open voxpelli opened 3 weeks ago

voxpelli commented 3 weeks ago

Whether a typical chat should be in Bridgy Fed is handled in #1425, but looking into eg. Matrix I realized that chat rooms are a subset of groups and groups of some kinds could be interesting to support in be in Bridgy Fed.

One concrete example would be:

Bridging IndieNews to Lemmy ā€“ bridging link aggregation groups / communities between the IndieWeb and the Fediverse.

I'm not sure whether there's any equivalent on the AT protocol yet, but eg. Matrix seems to be oriented fully around "groups" in the shape of rooms.

Some things to consider / note:

Originally posted by @voxpelli in https://github.com/snarfed/bridgy-fed/issues/1425#issuecomment-2442034675

voxpelli commented 3 weeks ago

Plumbing notes: Groups in Fediverse / IndieWeb

Eg. Lemmy has rooms / groups ā€“ they call it "community" ā€“ and these are as possible to discover through WebFinger as user accounts are, see eg: https://fedidevs.org/reference/webfinger/#app-lemmy-handle-lemmy_supportlemmyml There they identify it with:

  "properties": {
    "https://www.w3.org/ns/activitystreams#type": "Group"
  }

In the IndieWeb the wiki brings up hashtags as one example of a group-style thing, but I think the best example is how one submits to news.indieweb.org using u-category:

<a href="https://news.indieweb.org/en" class="u-category">#indienews</a>

Originally posted by @voxpelli in https://github.com/snarfed/bridgy-fed/issues/1425#issuecomment-2441242711

voxpelli commented 3 weeks ago

Plumbing notes: Bridging related aspects about Matrix

On the topic of Matrix: It unlike most other standards have an official standard for bridging: https://spec.matrix.org/v1.12/application-service-api/#third-party-networks / https://spec.matrix.org/v1.12/client-server-api/#third-party-networks

Instant Messaging is also only of plenty of plenty of Modules supported on Matrix: https://spec.matrix.org/v1.12/client-server-api/#modules A microblogging-style module could probably exist eventually, but already when MSC1767: Extensible events in Matrix (accepted in https://github.com/matrix-org/matrix-spec-proposals/pull/1767) is supported one should be able to do something like this to losslessly bridge ActivityPub to Matrix with clients able to progressively enhance to use the full ActivityStreams object:

{
    // irrelevant fields not shown
    "type": "m.message",
    "content": {
        "m.text": [
            { "body": "<i>Hello world</i>", "mimetype": "text/html" },
            { "body": "Hello world" }
        ],
         "org.example.activitystreams": {
            "id": "https://rhiaro.co.uk/2016/05/minimal-activitypub",
            "type": "Article",
            "name": "Minimal ActivityPub update client",
            "content": "Today I finished morph, a client for posting ActivityStreams2...",
        },
    }
}

Originally posted by @voxpelli in https://github.com/snarfed/bridgy-fed/issues/1425#issuecomment-2441242711

snarfed commented 3 weeks ago

Thanks for filing @voxpelli, and for all the details!