LemmyNet / lemmy

🐀 A link aggregator and forum for the fediverse
https://join-lemmy.org
GNU Affero General Public License v3.0
13.2k stars 875 forks source link

Allow post creation from Friendica #2144

Closed xundeenergie closed 2 years ago

xundeenergie commented 2 years ago

Found a bug? Please fill out the sections below. 👍

For front end issues, use lemmy-ui

Issue Summary

Posting a NEW posting from friendica in a lemmy-community fails

I think, it's similar to the friendica-federation bug a few weeks ago for commenting. The error-message seems the same.

Steps to Reproduce

  1. Join to a community on lemmy from friendica
  2. Create a new posting

Technical details

lemmy_1     | 2022-03-22T10:21:37.202728Z  INFO HTTP request{http.method=POST http.scheme="http" http.host=lemmy.schuerz.at http.target=/inbox otel.kind="server" request_id=492c3682-a6f0-4911-b86c-a93380c31f45}:shared_inbox: lemmy_apub::http: Received shared inbox activity {"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"vcard":"http://www.w3.org/2006/vcard/ns#","dfrn":"http://purl.org/macgirvin/dfrn/1.0/","diaspora":"https://diasporafoundation.org/ns/","litepub":"http://litepub.social/ns#","toot":"http://joinmastodon.org/ns#","schema":"http://schema.org#","manuallyApprovesFollowers":"as:manuallyApprovesFollowers","sensitive":"as:sensitive","Hashtag":"as:Hashtag","directMessage":"litepub:directMessage","discoverable":"toot:discoverable","PropertyValue":"schema:PropertyValue","value":"schema:value"}],"id":"https://soc.schuerz.at/objects/4edd2508-2662-39a3-305d-8ca330868827/Create","type":"Create","actor":"https://soc.schuerz.at/profile/jakob","published":"2022-03-22T10:21:36Z","instrument":{"type":"Service","name":"Friendica 'Siberian Iris' 2022.05-dev-1452","url":"https://soc.schuerz.at"},"to":["https://lemmy.schuerz.at/c/test"],"cc":["https://www.w3.org/ns/activitystreams#Public","https://lemmy.schuerz.at/c/test/followers"],"object":{"id":"https://soc.schuerz.at/objects/4edd2508-2662-39a3-305d-8ca330868827","type":"Article","summary":"","inReplyTo":null,"diaspora:guid":"4edd2508-2662-39a3-305d-8ca330868827","published":"2022-03-22T10:21:36Z","url":"https://soc.schuerz.at/display/4edd2508-2662-39a3-305d-8ca330868827","attributedTo":"https://soc.schuerz.at/profile/jakob","sensitive":false,"context":"https://soc.schuerz.at/objects/4edd2508-2662-39a3-305d-8ca330868827#context","name":"Test from friendica","content":"<span class=\"h-card\"><a href=\"https://lemmy.schuerz.at/c/test\" class=\"u-url mention\">!<span>test</span></a></span><br><br>Test from friendica","contentMap":{"de":"<bdi>!<a href=\"https://lemmy.schuerz.at/c/test\" class=\"userinfo mention\" title=\"test\">test</a></bdi><br><br>Test from friendica"},"source":{"content":"![url=https://lemmy.schuerz.at/c/test]This is a Testcommunity[/url]\n\nTest from friendica","mediaType":"text/bbcode"},"attachment":[],"tag":[{"type":"Mention","href":"https://lemmy.schuerz.at/c/test","name":"@test@lemmy.schuerz.at"}],"to":["https://lemmy.schuerz.at/c/test"],"cc":["https://www.w3.org/ns/activitystreams#Public","https://lemmy.schuerz.at/c/test/followers"]},"signature":{"type":"RsaSignature2017","nonce":"b2cffb52849d97fa34217eec0ad18dee67e4725a7864d9cff408026672cb8636","creator":"https://soc.schuerz.at/profile/jakob#main-key","created":"2022-03-22T10:21:37Z","signatureValue":"CJaHnbhQGby60BEwB40+1R3lknAz6LtUTMiEXs+T8DTPHElKr0FkAW3KmfqQlhge5Q2eQb0n55cZUjFs+pR4RyOpvGvZelz2MXCidZUbrKLKuA5qrIP+134f6qZT2YlcLxxpvvesHCtMfzk7bt3sOqWllN2YgS2aCGYiz2oEvseeRVEod4wtrlYCSg/lPZIHLd3CFCglVAuM7OvV8gI0w+JyMsQ9x9z8OdNyPJ0r4FmktW1jbNv4U+9rWMrO3fi3wXTMuenhe2QaO5d0AJGdugXuLP1IE8ln2HEWlGeK6EVlxZvMwuaFPLNKf0vQEtB9RGvjpAa2C+GD6xaevQsG0P0Ui3Evdzvp4OHzuJ/y3Z/Wl64Y5wfYgsRu4AqcmRgtWLzP30G0DjZl+1lfxcUNARX265HtlD+CLFvJk3tu3YJJ4OaAdDQ8BV2HQuaXhf+VcV/HsjM7c32eTGlEbgfO+PNNdr4JF1GLIl518UnJNv8GearKJWhNLfCDmB5SBbq8TNm41Glc6dgIfBdCo94XrGdh8nM+n0H/qU9oMF+ru/lsO8NlzPzct3LbqUKxANhLaGaDKu7346D14/ipROH7VEckL6bOE8fFNQOIhDaDN8uik7zHrIkeo71qmGjCqujC9MpizyEtnHCsvtxTNUsqZylSGzdoRH8X7MaSWOyp+t8="}}
lemmy_1     | 2022-03-22T10:21:37.204832Z  WARN Error encountered while processing the incoming HTTP request: lemmy_server::root_span_builder: data did not match any variant of untagged enum SharedInboxActivities at line 1 column 3117
lemmy_1     |    0: lemmy_apub::http::shared_inbox
lemmy_1     |              at crates/apub/src/http/mod.rs:41
lemmy_1     |    1: lemmy_server::root_span_builder::HTTP request
lemmy_1     |            with http.method=POST http.scheme="http" http.host=lemmy.schuerz.at http.target=/inbox otel.kind="server" request_id=492c3682-a6f0-4911-b86c-a93380c31f45 http.status_code=400 otel.status_code="OK"
lemmy_1     |              at src/root_span_builder.rs:16
lemmy_1     |    2: tokio::task::runtime.spawn
lemmy_1     |            with kind=local task.name= loc.file="/root/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.15.0/src/task/local.rs" loc.line=302 loc.col=22
lemmy_1     |              at /root/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.15.0/src/util/trace.rs:16
lemmy_1     |    3: tokio::task::runtime.spawn
lemmy_1     |            with kind=local task.name= loc.file="/root/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.15.0/src/task/local.rs" loc.line=302 loc.col=22
lemmy_1     |              at /root/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.15.0/src/util/trace.rs:16
lemmy_1     |    4: tokio::task::runtime.spawn
lemmy_1     |            with kind=local task.name= loc.file="/root/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.15.0/src/task/local.rs" loc.line=302 loc.col=22
lemmy_1     |              at /root/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.15.0/src/util/trace.rs:16
lemmy_1     |    5: tokio::task::runtime.spawn
lemmy_1     |            with kind=local task.name= loc.file="/root/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.15.0/src/task/local.rs" loc.line=302 loc.col=22
lemmy_1     |              at /root/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.15.0/src/util/trace.rs:16
lemmy_1     |    6: tokio::task::runtime.spawn
lemmy_1     |            with kind=block_on task.name= loc.file="/root/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.15.0/src/task/local.rs" loc.line=466 loc.col=12
lemmy_1     |              at /root/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.15.0/src/util/trace.rs:16
lemmy_1     | LemmyError { message: None, inner: data did not match any variant of untagged enum SharedInboxActivities at line 1 column 3117, context: "SpanTrace" }
Nutomic commented 2 years ago

This activity creates an Article, which is not supported by Lemmy (we use Page for posts). We could add support for receiving this though, but first i would like to be sure that its the best solution. Is there any other way to make a post in Friendica which could result in a Page? Or some documentation which lists the objects used by Friendica? If you dont know, it woud be good to talk to a Friendica dev about this.

For reference, here is the activity properly formatted:

{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
            "vcard": "http://www.w3.org/2006/vcard/ns#",
            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
            "diaspora": "https://diasporafoundation.org/ns/",
            "litepub": "http://litepub.social/ns#",
            "toot": "http://joinmastodon.org/ns#",
            "schema": "http://schema.org#",
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
            "sensitive": "as:sensitive",
            "Hashtag": "as:Hashtag",
            "directMessage": "litepub:directMessage",
            "discoverable": "toot:discoverable",
            "PropertyValue": "schema:PropertyValue",
            "value": "schema:value"
        }
    ],
    "id": "https://soc.schuerz.at/objects/4edd2508-2662-39a3-305d-8ca330868827/Create",
    "type": "Create",
    "actor": "https://soc.schuerz.at/profile/jakob",
    "published": "2022-03-22T10:21:36Z",
    "instrument": {
        "type": "Service",
        "name": "Friendica 'Siberian Iris' 2022.05-dev-1452",
        "url": "https://soc.schuerz.at"
    },
    "to": [
        "https://lemmy.schuerz.at/c/test"
    ],
    "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://lemmy.schuerz.at/c/test/followers"
    ],
    "object": {
        "id": "https://soc.schuerz.at/objects/4edd2508-2662-39a3-305d-8ca330868827",
        "type": "Article",
        "summary": "",
        "inReplyTo": null,
        "diaspora:guid": "4edd2508-2662-39a3-305d-8ca330868827",
        "published": "2022-03-22T10:21:36Z",
        "url": "https://soc.schuerz.at/display/4edd2508-2662-39a3-305d-8ca330868827",
        "attributedTo": "https://soc.schuerz.at/profile/jakob",
        "sensitive": false,
        "context": "https://soc.schuerz.at/objects/4edd2508-2662-39a3-305d-8ca330868827#context",
        "name": "Test from friendica",
        "content": "<span class=\"h-card\"><a href=\"https://lemmy.schuerz.at/c/test\" class=\"u-url mention\">!<span>test</span></a></span><br><br>Test from friendica",
        "contentMap": {
            "de": "<bdi>!<a href=\"https://lemmy.schuerz.at/c/test\" class=\"userinfo mention\" title=\"test\">test</a></bdi><br><br>Test from friendica"
        },
        "source": {
            "content": "![url=https://lemmy.schuerz.at/c/test]This is a Testcommunity[/url]\n\nTest from friendica",
            "mediaType": "text/bbcode"
        },
        "attachment": [],
        "tag": [{
            "type": "Mention",
            "href": "https://lemmy.schuerz.at/c/test",
            "name": "@test@lemmy.schuerz.at"
        }],
        "to": [
            "https://lemmy.schuerz.at/c/test"
        ],
        "cc": [
            "https://www.w3.org/ns/activitystreams#Public",
            "https://lemmy.schuerz.at/c/test/followers"
        ]
    },
    "signature": {
        "type": "RsaSignature2017",
        "nonce": "b2cffb52849d97fa34217eec0ad18dee67e4725a7864d9cff408026672cb8636",
        "creator": "https://soc.schuerz.at/profile/jakob#main-key",
        "created": "2022-03-22T10:21:37Z",
        "signatureValue": "CJaHnbhQGby60BEwB40+1R3lknAz6LtUTMiEXs+T8DTPHElKr0FkAW3KmfqQlhge5Q2eQb0n55cZUjFs+pR4RyOpvGvZelz2MXCidZUbrKLKuA5qrIP+134f6qZT2YlcLxxpvvesHCtMfzk7bt3sOqWllN2YgS2aCGYiz2oEvseeRVEod4wtrlYCSg/lPZIHLd3CFCglVAuM7OvV8gI0w+JyMsQ9x9z8OdNyPJ0r4FmktW1jbNv4U+9rWMrO3fi3wXTMuenhe2QaO5d0AJGdugXuLP1IE8ln2HEWlGeK6EVlxZvMwuaFPLNKf0vQEtB9RGvjpAa2C+GD6xaevQsG0P0Ui3Evdzvp4OHzuJ/y3Z/Wl64Y5wfYgsRu4AqcmRgtWLzP30G0DjZl+1lfxcUNARX265HtlD+CLFvJk3tu3YJJ4OaAdDQ8BV2HQuaXhf+VcV/HsjM7c32eTGlEbgfO+PNNdr4JF1GLIl518UnJNv8GearKJWhNLfCDmB5SBbq8TNm41Glc6dgIfBdCo94XrGdh8nM+n0H/qU9oMF+ru/lsO8NlzPzct3LbqUKxANhLaGaDKu7346D14/ipROH7VEckL6bOE8fFNQOIhDaDN8uik7zHrIkeo71qmGjCqujC9MpizyEtnHCsvtxTNUsqZylSGzdoRH8X7MaSWOyp+t8="
    }
}
xundeenergie commented 2 years ago

I asked the friendica devs to have a look on this issue

dessalines commented 2 years ago

Also, is Page demanded by any other platform? If no, then both ours should decide on one to use, instead of trying to build support for both.

annando commented 2 years ago

Currently Friendica uses either Article (when the post contains a title) or Note when creating posts. Systems like Mastodon or Pleroma only are using Note. If we had to use Page to make the communication work with Lemmy, then we had to distinguish between different group implementations, thus requiring having some reliable way of knowing the system on the other side. We are using this instrument value for that purpose, so that other systems always know with whom they are speaking with.

On my test system I just tested a post with Page. But the server (the one from this issue) answered it with an HTTP error 400. I'm not sure if this is related or not.

Nutomic commented 2 years ago

We could switch from Page to Article, but there are also other projects which send Page (lotide and GNU social). So unless they do the same switch, it seems more reasonable for Lemmy to keep sending Page for backwards compat, and also accept receiving Article, as they seem equivalent. cc @vpzomtrrfrt

@annando It also needs another change which is not merged yet. Try with ds9.lemmy.ml, that has a fixed version which should federate fine. Also, it would be good if you could send a list of all activitypub objects/activities sent by Friendica, so that i can add support for all of them at once.

diogogithub commented 2 years ago

We adopted Page because we want to be friendly with Lemmy's Groups. GNU social v3 (the only release with groups over ActivityPub) is not being used by any instance. For us, switching from Page to Article is completely harmless, and the latter seems to fit better in this context.

@annando We don't have any platform-specific code in GNU social, and would like to avoid having to, but we will add the instrument property to our activities when federating out.

For reference:

Nutomic commented 2 years ago

Okay so it seems the best solution for Lemmy is to accept receiving both Page and Article, and treat them as equivalent. But we would keep sending as Page, to avoid any incompatibility with older Lemmy versions or with other software.

annando commented 2 years ago

@diogogithub we don't have any platform specific code in Friendica either - and we really want to avoid that as well. But I see it like with the "Nodeinfo" mechanism. It is nice to know each other.

Concerning the differences between the two types: AFAIK all these fields can be used for both types, so we are safe here.

@Nutomic accepting both Page and Article (and maybe Note?) seems like a good idea. It fits into the "Robustness principle".

annando commented 2 years ago

@Nutomic with manually set the type to Page the message arrived at the test group: https://ds9.lemmy.ml/post/13652 - that's great!

Nutomic commented 2 years ago

@annando Great! Could you please send json of your activitypub objects and activities? Basically whats in the link below, for inclusion in our tests. Dont make a PR, as it needs code changes as well. Once i have that, i will make the necessary changes.

https://github.com/LemmyNet/lemmy/tree/main/crates/apub/assets

annando commented 2 years ago

Here is an Article:

{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
            "vcard": "http://www.w3.org/2006/vcard/ns#",
            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
            "diaspora": "https://diasporafoundation.org/ns/",
            "litepub": "http://litepub.social/ns#",
            "toot": "http://joinmastodon.org/ns#",
            "schema": "http://schema.org#",
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
            "sensitive": "as:sensitive",
            "Hashtag": "as:Hashtag",
            "directMessage": "litepub:directMessage",
            "discoverable": "toot:discoverable",
            "PropertyValue": "schema:PropertyValue",
            "value": "schema:value"
        }
    ],
    "id": "https://pirati.ca/objects/ec054ce7-5162-3bf2-504c-16d024994850/Create",
    "type": "Create",
    "actor": "https://pirati.ca/profile/heluecht",
    "published": "2022-03-24T04:23:44Z",
    "instrument": {
        "type": "Service",
        "name": "Friendica 'Siberian Iris' 2022.05-dev-1452",
        "url": "https://pirati.ca"
    },
    "to": [
        "https://ds9.lemmy.ml/c/testcom"
    ],
    "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://ds9.lemmy.ml/c/testcom/followers"
    ],
    "object": {
        "id": "https://pirati.ca/objects/ec054ce7-5162-3bf2-504c-16d024994850",
        "type": "Article",
        "summary": "",
        "inReplyTo": null,
        "diaspora:guid": "ec054ce7-5162-3bf2-504c-16d024994850",
        "published": "2022-03-24T04:23:44Z",
        "url": "https://pirati.ca/display/ec054ce7-5162-3bf2-504c-16d024994850",
        "attributedTo": "https://pirati.ca/profile/heluecht",
        "sensitive": false,
        "context": "https://pirati.ca/objects/ec054ce7-5162-3bf2-504c-16d024994850#context",
        "name": "From Friendica to Lemmy",
        "content": "Hello Lemmy!",
        "contentMap": {
            "de": "<bdi>!<a href=\"https://ds9.lemmy.ml/c/testcom\" class=\"userinfo mention\" title=\"testcom\">testcom</a></bdi> Hello Lemmy!"
        },
        "source": {
            "content": "![url=https://ds9.lemmy.ml/c/testcom]testcom[/url] Hello Lemmy!",
            "mediaType": "text/bbcode"
        },
        "attachment": [],
        "tag": [
            {
                "type": "Mention",
                "href": "https://ds9.lemmy.ml/c/testcom",
                "name": "@testcom@ds9.lemmy.ml"
            }
        ],
        "to": [
            "https://ds9.lemmy.ml/c/testcom"
        ],
        "cc": [
            "https://www.w3.org/ns/activitystreams#Public",
            "https://ds9.lemmy.ml/c/testcom/followers"
        ]
    },
    "signature": {
        "type": "RsaSignature2017",
        "nonce": "d1b75df08009e59510606604758732d499c3c385b4ce6ee374e6d8c2ee86230b",
        "creator": "https://pirati.ca/profile/heluecht#main-key",
        "created": "2022-03-24T04:26:55Z",
        "signatureValue": "nmAyEh/6Zq5Ki0AYtTFDxGom67HOTuWDzToGuEorm0cOzsNv7OIUgGjkOtKOVJA91J7NaS1hCCSMrhM7HCurIQyE3wDa3NAzhDQORVbbRF6+NxpB70nlJaOaInAS4bmVsed0rBg2aYQfrai0QB4F8zhN8JIa6zu0EAtLMh0vkzDFOCeGbvahLkSJO+sZKEqAWsr3VfMmJ8TCd+JWUKyy2/Hd87czj58oMk8yKzKKHlL0z+rbP2LbpaZspHCT+kfkZy0IOjrdcvgENCwCsPA9Y5kJmH08NXkKG6D6CGIti2zhnkNMxBuZ5sPU6PcE535J/UjfrGN3ikGoxjO3bRqFI42TbhTxBRk/yMv0BVIPLzAbPAJdJ6VAwq5UAjI6G4ejjQ9LKRqjxlG96PNo+YVKFhKTmmSMWLmdWckC8PRL2nZvq4UtIf4cd+p1pQ+TnfjD8ZHadb10tHJEXrUIz9Q/pWmfLvTSodbdYRSurWFNYaJ3gCEjSoCoHxA7GeEoivSA0IuuDRKo0tFEv09/BA9m8m04kjQ8q/ZxAb2P4TICcPZrhGKoDkRTc1P5vSNeuw8GFV/5Dy7NWKarJUlzCA1OoHo/cKWhY3fVc/lANssTyxsMakp4ofN0zRoToQAx6hDLgESJcn04tUO4JvluYkGggBEhPfhLNSyc6yUWahjh9Gc="
    }
}

Here is a Page:

{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
            "vcard": "http://www.w3.org/2006/vcard/ns#",
            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
            "diaspora": "https://diasporafoundation.org/ns/",
            "litepub": "http://litepub.social/ns#",
            "toot": "http://joinmastodon.org/ns#",
            "schema": "http://schema.org#",
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
            "sensitive": "as:sensitive",
            "Hashtag": "as:Hashtag",
            "directMessage": "litepub:directMessage",
            "discoverable": "toot:discoverable",
            "PropertyValue": "schema:PropertyValue",
            "value": "schema:value"
        }
    ],
    "id": "https://pirati.ca/objects/ec054ce7-8062-3c1b-016c-910426317080/Create",
    "type": "Create",
    "actor": "https://pirati.ca/profile/heluecht",
    "published": "2022-03-24T07:17:21Z",
    "instrument": {
        "type": "Service",
        "name": "Friendica 'Siberian Iris' 2022.05-dev-1452",
        "url": "https://pirati.ca"
    },
    "to": [
        "https://ds9.lemmy.ml/c/testcom"
    ],
    "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://ds9.lemmy.ml/c/testcom/followers"
    ],
    "object": {
        "id": "https://pirati.ca/objects/ec054ce7-8062-3c1b-016c-910426317080",
        "type": "Page",
        "summary": "",
        "inReplyTo": null,
        "diaspora:guid": "ec054ce7-8062-3c1b-016c-910426317080",
        "published": "2022-03-24T07:17:21Z",
        "url": "https://www.nasaspaceflight.com/2022/03/us-eva-80/",
        "attributedTo": "https://pirati.ca/profile/heluecht",
        "sensitive": false,
        "context": "https://pirati.ca/objects/ec054ce7-8062-3c1b-016c-910426317080#context",
        "name": "ISS astronauts perform final spacewalk of Expedition 66",
        "content": "Expedition 66 astronauts Raja Chari and Matthias Maurer ventured outside the International Space Station on Wednesday, performing a spacewalk to carry out repairs and upgrades on the space station.",
        "contentMap": {
            "de": "<bdi>!<a href=\"https://ds9.lemmy.ml/c/testcom\" class=\"userinfo mention\" title=\"testcom\">testcom</a></bdi> Expedition 66 astronauts Raja Chari and Matthias Maurer ventured outside the International Space Station on Wednesday, performing a spacewalk to carry out repairs and upgrades on the space station.<br><a href=\"https://www.nasaspaceflight.com/2022/03/us-eva-80/\" target=\"_blank\" rel=\"noopener noreferrer\">ISS astronauts perform final spacewalk of Expedition 66</a>"
        },
        "source": {
            "content": "![url=https://ds9.lemmy.ml/c/testcom]testcom[/url] Expedition 66 astronauts Raja Chari and Matthias Maurer ventured outside the International Space Station on Wednesday, performing a spacewalk to carry out repairs and upgrades on the space station.\n[attachment type='link' url='https://www.nasaspaceflight.com/2022/03/us-eva-80/' title='ISS astronauts perform final spacewalk of Expedition 66' publisher_name='NASASpaceFlight.com' publisher_url='https://www.nasaspaceflight.com/' publisher_img='https://www.nasaspaceflight.com/wp-content/uploads/2017/12/logo.svg' author_name='Justin Davenport' author_url='https://www.nasaspaceflight.com/author/justin/' author_img='https://secure.gravatar.com/avatar/5dc0dc04b38dbb016bf6f15552555883?s=96&amp;d=mm&amp;r=g' image='https://www.nasaspaceflight.com/wp-content/uploads/2022/03/51941297402_fa7a00c1ee_o-scaled.jpg']Expedition 66 astronauts Raja Chari and Matthias Maurer ventured outside the International Space Station on…[/attachment]",
            "mediaType": "text/bbcode"
        },
        "attachment": [],
        "tag": [
            {
                "type": "Mention",
                "href": "https://ds9.lemmy.ml/c/testcom",
                "name": "@testcom@ds9.lemmy.ml"
            }
        ],
        "to": [
            "https://ds9.lemmy.ml/c/testcom"
        ],
        "cc": [
            "https://www.w3.org/ns/activitystreams#Public",
            "https://ds9.lemmy.ml/c/testcom/followers"
        ]
    },
    "signature": {
        "type": "RsaSignature2017",
        "nonce": "e68dbf66bac13fd0811863c32bbc59ab56dc0ced4a7f0df06a49b015dd142e29",
        "creator": "https://pirati.ca/profile/heluecht#main-key",
        "created": "2022-03-24T07:18:24Z",
        "signatureValue": "T+TZbRA0DhaCG3bRRPXQmxE2bsdIk8j/cueqsXTKCOSbrWvels2B9cg3twAYIfEmtyZ/f6iKz67MnMzAc4wDS5Gm5lJ/bVoweG3+OVtgfpzYUwR85az6qEX7NS0yLNdciqpZnh5J46F8lk+SKuLGEvlGuHVAd5yYXJoSJc0slM3rVvPv1s8toLHsJzM9H9aITLfZdEo99DmGgcAcSm1lrpFlXXMc+nWGAABpvK4eTrhj1auWOs6qb4q9GUyjfg2OdYrEq+vj4tir8uP/2azJHUea2JwIYbu0Cqt13OAPWC4Znz9MZdI6NQcQvipwFRq1tvfjsonzWIkBotDK9seBxTyj1kJfDd9hcPFXQdaNI549U4JJMxenKH5Yj5tj5Df0lg2hiFOCZ5fka5qmVpqDdPni4fnkCICzKpdJwUpwDaJlwbK8tnMlS5stQv+5+fX3O7sTy2z5PiFFYR/DdHHrMAz4eEoYe9AfrUGB5XzSyHRq0YThDMW4expIGm9KZxhfYgnKPVSqmmZLDKMYD69zwV7IMGfj+W9KqbnhrW+v1JQmWSziYmz4g+ESmo+F72kaVqu1UxIi0qToOA/QDp/HOZSM+YJUCQoCL41faO5+7MNrISL8TIjAa8Y5lXrx5oAKEXEx0biqBaxinOdzuqDl8dvyVtPa/DMez8enTbcGzdQ="
    }
}

This is a comment with the type Note:

{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
            "vcard": "http://www.w3.org/2006/vcard/ns#",
            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
            "diaspora": "https://diasporafoundation.org/ns/",
            "litepub": "http://litepub.social/ns#",
            "toot": "http://joinmastodon.org/ns#",
            "schema": "http://schema.org#",
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
            "sensitive": "as:sensitive",
            "Hashtag": "as:Hashtag",
            "directMessage": "litepub:directMessage",
            "discoverable": "toot:discoverable",
            "PropertyValue": "schema:PropertyValue",
            "value": "schema:value"
        }
    ],
    "id": "https://pirati.ca/objects/ec054ce7-4762-3c1c-3c25-0cc665717210/Create",
    "type": "Create",
    "actor": "https://pirati.ca/profile/heluecht",
    "published": "2022-03-24T07:22:36Z",
    "instrument": {
        "type": "Service",
        "name": "Friendica 'Siberian Iris' 2022.05-dev-1452",
        "url": "https://pirati.ca"
    },
    "to": [
        "https://pirati.ca/profile/test8",
        "https://ds9.lemmy.ml/c/testcom"
    ],
    "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://ds9.lemmy.ml/c/testcom/followers"
    ],
    "object": {
        "id": "https://pirati.ca/objects/ec054ce7-4762-3c1c-3c25-0cc665717210",
        "type": "Note",
        "summary": "",
        "inReplyTo": "https://pirati.ca/objects/ec054ce7-2062-3bfa-8687-ca8313624820",
        "diaspora:guid": "ec054ce7-4762-3c1c-3c25-0cc665717210",
        "published": "2022-03-24T07:22:36Z",
        "url": "https://pirati.ca/display/ec054ce7-4762-3c1c-3c25-0cc665717210",
        "attributedTo": "https://pirati.ca/profile/heluecht",
        "sensitive": false,
        "context": "https://pirati.ca/objects/ec054ce7-2062-3bfa-8687-ca8313624820#context",
        "content": "<span class=\"h-card\"><a href=\"https://pirati.ca/profile/test8\" class=\"u-url mention\">@<span>test8</span></a></span> This is a comment.",
        "contentMap": {
            "de": "This is a comment."
        },
        "source": {
            "content": "This is a comment.",
            "mediaType": "text/bbcode"
        },
        "diaspora:comment": "{\"author\":\"heluecht@pirati.ca\",\"guid\":\"ec054ce7-4762-3c1c-3c25-0cc665717210\",\"created_at\":\"2022-03-24T07:22:36Z\",\"edited_at\":\"2022-03-24T07:22:36Z\",\"parent_guid\":\"ec054ce7-2062-3bfa-8687-ca8313624820\",\"text\":\"This is a comment.\",\"author_signature\":\"oqthcfSIjETYRshGeN0Zq9yGJ9+bbghdzMH4Vfl\\/kxDyNQe7tsvK6M5cQlM46h2+jmpK2Okb4mK7K6Yenh+6aH2sJKIyMUdKIINzhp9Gav31sUtHf4\\/A0x1aqqTp1oLvnc5uKdKdIGaSdODUZY\\/ABmDjin5sE1gjIBlAkAlhvdhy\\/k+4c3UCFtazjawb1oXbh94uSgu4DxseBec4Kn5laWNwLhZLdx9PMSN1mhNqz2rnF6gWAlrlaLLeRDawh2AS5t2TUPH92QY818DW9b0rF9Gz4w1PtEIkzXDd6u\\/VEMMrwmRtd8SSDgnDPFzH4HqZDf1Y4TnQixZIqgUyv9zsiNT0pg0vOXTkuQ7hJ7hj6BI92SISTtQnEVhZBmW+i22roFs87EbSb5e6Yy4+2YphjCUd2NWlyrtG1UTR1hzCN+kzKIQU34zgXTtnwvYhi6wz71Lh3w1VoQbLthxpG1t1WRsXQ\\/QZNUNInyHyIgzWTcWAS6MdzVnmXSV+1080PQ5zFWbR6Tft3YySyk8iIyhdhTAjfEDGTRGHciiPtLBPQFlHMPTiMZjEWFnBZuhDhOrA6OazONXHRO09Xr6S\\/+ZudMvEOAG1FvcBec6gWRZdcma6UBi+2M3ay3dYFJw4+fG4XZh3H\\/sCA\\/q8MUgreP3t9q\\/wzxCW\\/BXZAv4u2FvwKvw=\"}",
        "attachment": [],
        "tag": [
            {
                "type": "Mention",
                "href": "https://pirati.ca/profile/test8",
                "name": "@test8@pirati.ca"
            },
            {
                "type": "Mention",
                "href": "https://ds9.lemmy.ml/c/testcom",
                "name": "@testcom@ds9.lemmy.ml"
            }
        ],
        "to": [
            "https://pirati.ca/profile/test8",
            "https://ds9.lemmy.ml/c/testcom"
        ],
        "cc": [
            "https://www.w3.org/ns/activitystreams#Public",
            "https://ds9.lemmy.ml/c/testcom/followers"
        ]
    },
    "signature": {
        "type": "RsaSignature2017",
        "nonce": "795bb6ebaafa9ef8e35c88e834a72325b111eaf0da14e565bc47728078c3a474",
        "creator": "https://pirati.ca/profile/heluecht#main-key",
        "created": "2022-03-24T07:23:17Z",
        "signatureValue": "PaMhJrCq3W3rGqU8KE5QEcXBEV46vusTnbL3ZOa0uS3yjIPrZYm4K/VFpktdbtDx6bjOddA0gI7tP8Oj3EmkoS6wqsNY0TKhqhEB8MBx0UPA9iclePQaJClRo2gqDydayz/o9kWI5lrN0xC9eDzF20LgdwYmR0x/4SY1ZU4aZLFHJbro5k8Porx2vkDlfmQH06nBFFSPaT7a1db3JLwOoShqyXcaKDUYAKTz5zF4TUUlkt21kq+x99J1gqHAHXFFaAMRRoxFDokFbpOX/uj8qcGe+nAYFhgxPyEzItvMm9g5pnKCAjbbaIGgqIaddgokasaR73URnzgZ1SSbv6yXt4c8nYwUudP4ZMQFC3Pre9FjMA6LwsoMA9ctUiJ16G9aCR7aXLwk+p1uZEKhPrgpU7aJH+xr0qWdHKiflQjaTqxXL2ANTLC7oH9yhoQsG/axdcTtaLmlluIXa33R/ncHYSH0+ZywWrRdFR4XsAaPmMdrO9i2MV99+IbAD1lYuKcHhVdT6d0w4rLp4JXZNO4IK20oesNswZmtzr+VTH69bpqWATqcwve4M/i7YkSQg1TLG5znf3ctNPDCpgkajZOlfFOB4sX7qOV6imFo8T300PHMPYSp1byb3gRkyrcHJosx1dV/Q4UeM3Pzym5v+p+y435C+adXK/bmcMdD/w5lyrY="
    }
}

A Dislike:

{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
            "vcard": "http://www.w3.org/2006/vcard/ns#",
            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
            "diaspora": "https://diasporafoundation.org/ns/",
            "litepub": "http://litepub.social/ns#",
            "toot": "http://joinmastodon.org/ns#",
            "schema": "http://schema.org#",
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
            "sensitive": "as:sensitive",
            "Hashtag": "as:Hashtag",
            "directMessage": "litepub:directMessage",
            "discoverable": "toot:discoverable",
            "PropertyValue": "schema:PropertyValue",
            "value": "schema:value"
        }
    ],
    "id": "https://pirati.ca/objects/ec054ce7-5762-3ce2-b3e4-87e268433367",
    "type": "Dislike",
    "actor": "https://pirati.ca/profile/heluecht",
    "published": "2022-03-24T21:29:23Z",
    "instrument": {
        "type": "Service",
        "name": "Friendica 'Siberian Iris' 2022.05-dev-1453",
        "url": "https://pirati.ca"
    },
    "to": [
        "https://pirati.ca/profile/test8",
        "https://ds9.lemmy.ml/c/testcom"
    ],
    "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://ds9.lemmy.ml/c/testcom/followers"
    ],
    "diaspora:guid": "ec054ce7-1862-3ce2-b3e4-870035437794",
    "diaspora:like": "{\"author\":\"heluecht@pirati.ca\",\"guid\":\"ec054ce7-1862-3ce2-b3e4-870035437794\",\"parent_guid\":\"ec054ce7-2062-3bfa-8687-ca8313624820\",\"parent_type\":\"Post\",\"positive\":\"false\",\"author_signature\":\"KWp5AQ71Tn4kFgGxzgLDLQUvULKMtsb4DYwP\\/Ap9QNGStMQuKvYE2VBthRBaIvX9LmknZ3cBvuqKvNaL2Nj7B2R2Goa7\\/eWYDCogwafbp6Pj93vWvdy2+fGTkHGSxobnvgLvFIqv9IOy2Lk4QjWj7o64dUCiopR0OKjL8+vPM+l8iF+7bYeG+xSqy8SX8Fai5XOoNhy9anaJzK9ASLah8VeXKdfjGrvYsx2X\\/PaP+B8xFySP2XM95kGPKxyExi7Hk0j2igvjHqC2s3Cdg9+nwuUijnUycqGHUq3djMTLoPRjMHOJquZ1t2BNY575iRbYJTlteIgQkPHf50WALkzxn8zY5MkudBzffxm8B1Q6bnwoQHK8TR7KU2gMPwnQm6\\/ncygHuq1flVm3dqrF9xG6Cp2wC2SgTcErhrS\\/6in7FzrgBIOl570cxY0ovFICrE6rinuBdJkjfWYE3CZGCo6fVTAXUmje48c0611JmGD3PM6XQigFXGE32fjjaQoIkXf8TWI01kIqJDmZn80S6NXaYSrf9maWN1CB5gQ2E6B6Zk586sTZ2nnnJNol2KTkM1BPCTSMkrdiLtpjkUEGeo1tTe87oUzFHx++rgSO\\/lM94Dw5oN2jifGQquDBgIHY5ovxXVN3xrTgfrLEx+HWxdsiuIYpPx4lu4Qe0CVgZwPMqR4=\"}",
    "object": "https://pirati.ca/objects/ec054ce7-2062-3bfa-8687-ca8313624820",
    "signature": {
        "type": "RsaSignature2017",
        "nonce": "02cae41f51765647ceeac26de13e29757cb47b7da1b54703116a7ae185fe967e",
        "creator": "https://pirati.ca/profile/heluecht#main-key",
        "created": "2022-03-24T21:32:43Z",
        "signatureValue": "C27zo2Ks9twwhMs3WndG3c8l6y6PVM/4fUZKIxHuh50eEx2g9hIRUD0GFgxR5Mbx76E0PDePbJtrEaad+H97USmylFYw+Opp12zAkpFMMsKQgZfSG6ARyKfn/AK6qn/+5gmxAvX5qTMw29Qsbhh9w7mlyYfqZb+A5xmdxi/kV7FAa5AEK9UR8wsCb6FeHhpRPBmSGFqluFyPY0m8uYHwLILZac+KkvQz2+dVQkpt5S+C2N4POxFYQwd1mEoone4HQQtSEfnrlbxLbyCgLKM4Vf6SJnzzyufTzurSySp4kmsnTxfUKsR200TUAozwWBde9UyEjdcv/j1m/ZX18YHzwE4OwAGF6G1LCDAXcwzmH3RvjJwGsFuTz68lZJ5qcAbHvsGxymPJf2RTfLS0I7E2JWZ/yStcwtm9siHNBhusUq7lwJWWkwYw4iuoZBHNT24gj0uTbj82jB5UAIlFyIXbIbR8Di70Jg2ucvQK36XKm6/6TGntkoJ3VGa1qIhB/r0KiVTBPwPSrf8v0sHB6zc3osirpyG8Gzd+FVMs11UaGDQOIur4Bu1/StmuWdh3VFwFE9t4XaR1OEIRexYh4717B8ImfPbSTtyqsc8mE0Hvp+3wkLaD4l889Zu0BGNK9KXvT2ifKGhCg/Q8mM89oNnb4Fsl3Uu5fp8GtE3RPBt4a/g="
    }
}

Like:

{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
            "vcard": "http://www.w3.org/2006/vcard/ns#",
            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
            "diaspora": "https://diasporafoundation.org/ns/",
            "litepub": "http://litepub.social/ns#",
            "toot": "http://joinmastodon.org/ns#",
            "schema": "http://schema.org#",
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
            "sensitive": "as:sensitive",
            "Hashtag": "as:Hashtag",
            "directMessage": "litepub:directMessage",
            "discoverable": "toot:discoverable",
            "PropertyValue": "schema:PropertyValue",
            "value": "schema:value"
        }
    ],
    "id": "https://pirati.ca/objects/ec054ce7-2062-3ce2-7f10-2b4451595945",
    "type": "Like",
    "actor": "https://pirati.ca/profile/heluecht",
    "published": "2022-03-24T21:28:31Z",
    "instrument": {
        "type": "Service",
        "name": "Friendica 'Siberian Iris' 2022.05-dev-1453",
        "url": "https://pirati.ca"
    },
    "to": [
        "https://pirati.ca/profile/test8",
        "https://ds9.lemmy.ml/c/testcom"
    ],
    "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://ds9.lemmy.ml/c/testcom/followers"
    ],
    "diaspora:guid": "ec054ce7-1062-3ce2-7f10-2a6640956978",
    "diaspora:like": "{\"author\":\"heluecht@pirati.ca\",\"guid\":\"ec054ce7-1062-3ce2-7f10-2a6640956978\",\"parent_guid\":\"ec054ce7-2062-3bfa-8687-ca8313624820\",\"parent_type\":\"Post\",\"positive\":\"true\",\"author_signature\":\"F7e4x++hte0pSoUwbB6BcK0gl1c4+FjxlhwjTMvmxnB4HL58Kxk8UJ\\/SiTS5g4IoDoRcvQdIgntuHZJfKx3SsIDyWQUP1U9+RrBJh1gskcVmTT15gb2E5qq30PNM8DFV0opewp33KCVWvqqkZ2DIhjiRqqF8eUASUNkdwQci732krkMul\\/B211qBbSndxLPdrqv5Wkl0F2mZJZLIiWRoIjaFNV60lUkOwdqz8p7OuD\\/DdR\\/T8g4s7ofuvKaZ\\/scpxqixYHvv7+0cWXBlsKllW97dH1VHo7SdvJKhApk2IQz9BT8JWcBhBYjkb71olF2gajo6EQxaXt2svEOtRi+mDVQ4Lb6gk\\/Fp5aC5BVAe5Fe4Wr2GUOLmo5P6Fc6IweaoTgcqH2os2OYc\\/isJtQ2jtUtw8smY7kPSa2Qo\\/FMLWyCI8XRrWI9XGo8uSA84E+eiSVuGfqYNQNDkhzr5qCZfiF457SsxFpGa3XI53IA24Iatkj91VGSMQ8OWppK7SERwax2mVc5tn7mSq+2va0k9DiLyLoHVdEdzQcjEGCWEW7rPz7ndKBT3cW\\/jjsww3znAOko7jloXWremEtiqBIZkmHhA+Ec9UnOcShedqz\\/oIB\\/IYVUhwD3STG7EpRjh6J6G0FoU1MieCKjtpSadHN+2GN4COzNTE9iIi9Uqonf4Xio=\"}",
    "object": "https://pirati.ca/objects/ec054ce7-2062-3bfa-8687-ca8313624820",
    "signature": {
        "type": "RsaSignature2017",
        "nonce": "3913cfa1f27e2e83ef770a414e477d4aac9878d1270e9056fc793fdf0a4e07d5",
        "creator": "https://pirati.ca/profile/heluecht#main-key",
        "created": "2022-03-24T21:33:58Z",
        "signatureValue": "uJBDZ4NIKTmcoh2ONypglOZ0El3RtgGeF5X2XSdy8V6QmLD6meUWVMQlcbs0LosSzXX1wxMJsj6QtnFPWEAneRW/gBa5N+F/+vkrnnodbO9CvDfwRIfmWqCNC5Hg4uGVukHbhCwsQkgKoRj9YjQVt0FSSrC5X/NcwiS7ZJkwsHuzv+ZZZE+GArkSQLcf4eOrK7wT1NY0fGGbjeO7+KpJH75kAGI+Yi1BuiGy7tl3dTIdGYb66j+e5RpeZR1AlueLKBB2lN2eT8DS0PwaGVjrgKQQ+riIUV8pWhrlWsoWj1u9ZELXOYUuFsjqzmNPeSU3cnxGcLSvAKmc7j2dm6ErCLFiadaodamYDR0Fqb9yd/IM3ojyxmAQRAMABCnhIppQWkOw5l1koJ2gHmnljh162sFsnifo7ccNuRHYUJjJxwsdQ9aLaAWHySqXDfRk+Hvf5G67+edlETr3XYmVtW96J0ZyQALp/I0QMbPR2Xa/b8RClms0QxNOBwVn8YswLWRZ2XgjQfxoCkRHSbY5nU6e65I4QBiAlSzHNOffNO4LYxj0GPDbEFZy9dFiv9EC9eN/FtIhkykV46PJTuM+hKneh1PLCmkkICWrj7dvPXT/00eQmvZcQTq/tNKlrbzBWQ8DnG6/3GZMyBPgsWk/E0aUwvwGlcQEwYWmzI1NWBe/XMc="
    }
}

And here is an Update:

{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
            "vcard": "http://www.w3.org/2006/vcard/ns#",
            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
            "diaspora": "https://diasporafoundation.org/ns/",
            "litepub": "http://litepub.social/ns#",
            "toot": "http://joinmastodon.org/ns#",
            "schema": "http://schema.org#",
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
            "sensitive": "as:sensitive",
            "Hashtag": "as:Hashtag",
            "directMessage": "litepub:directMessage",
            "discoverable": "toot:discoverable",
            "PropertyValue": "schema:PropertyValue",
            "value": "schema:value"
        }
    ],
    "id": "https://pirati.ca/objects/ec054ce7-4762-3c1c-3c25-0cc665717210/Update",
    "type": "Update",
    "actor": "https://pirati.ca/profile/heluecht",
    "published": "2022-03-24T07:22:36Z",
    "instrument": {
        "type": "Service",
        "name": "Friendica 'Siberian Iris' 2022.05-dev-1453",
        "url": "https://pirati.ca"
    },
    "to": [
        "https://pirati.ca/profile/test8",
        "https://ds9.lemmy.ml/c/testcom"
    ],
    "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://ds9.lemmy.ml/c/testcom/followers"
    ],
    "object": {
        "id": "https://pirati.ca/objects/ec054ce7-4762-3c1c-3c25-0cc665717210",
        "type": "Note",
        "summary": "",
        "inReplyTo": "https://pirati.ca/objects/ec054ce7-2062-3bfa-8687-ca8313624820",
        "diaspora:guid": "ec054ce7-4762-3c1c-3c25-0cc665717210",
        "published": "2022-03-24T07:22:36Z",
        "updated": "2022-03-24T21:37:34Z",
        "url": "https://pirati.ca/display/ec054ce7-4762-3c1c-3c25-0cc665717210",
        "attributedTo": "https://pirati.ca/profile/heluecht",
        "sensitive": false,
        "context": "https://pirati.ca/objects/ec054ce7-2062-3bfa-8687-ca8313624820#context",
        "content": "<span class=\"h-card\"><a href=\"https://pirati.ca/profile/test8\" class=\"u-url mention\">@<span>test8</span></a></span> This is an edited comment.",
        "contentMap": {
            "de": "This is an edited comment."
        },
        "source": {
            "content": "This is an edited comment.",
            "mediaType": "text/bbcode"
        },
        "diaspora:comment": "{\"author\":\"heluecht@pirati.ca\",\"guid\":\"ec054ce7-4762-3c1c-3c25-0cc665717210\",\"created_at\":\"2022-03-24T07:22:36Z\",\"edited_at\":\"2022-03-24T07:22:36Z\",\"parent_guid\":\"ec054ce7-2062-3bfa-8687-ca8313624820\",\"text\":\"This is a comment.\",\"author_signature\":\"oqthcfSIjETYRshGeN0Zq9yGJ9+bbghdzMH4Vfl\\/kxDyNQe7tsvK6M5cQlM46h2+jmpK2Okb4mK7K6Yenh+6aH2sJKIyMUdKIINzhp9Gav31sUtHf4\\/A0x1aqqTp1oLvnc5uKdKdIGaSdODUZY\\/ABmDjin5sE1gjIBlAkAlhvdhy\\/k+4c3UCFtazjawb1oXbh94uSgu4DxseBec4Kn5laWNwLhZLdx9PMSN1mhNqz2rnF6gWAlrlaLLeRDawh2AS5t2TUPH92QY818DW9b0rF9Gz4w1PtEIkzXDd6u\\/VEMMrwmRtd8SSDgnDPFzH4HqZDf1Y4TnQixZIqgUyv9zsiNT0pg0vOXTkuQ7hJ7hj6BI92SISTtQnEVhZBmW+i22roFs87EbSb5e6Yy4+2YphjCUd2NWlyrtG1UTR1hzCN+kzKIQU34zgXTtnwvYhi6wz71Lh3w1VoQbLthxpG1t1WRsXQ\\/QZNUNInyHyIgzWTcWAS6MdzVnmXSV+1080PQ5zFWbR6Tft3YySyk8iIyhdhTAjfEDGTRGHciiPtLBPQFlHMPTiMZjEWFnBZuhDhOrA6OazONXHRO09Xr6S\\/+ZudMvEOAG1FvcBec6gWRZdcma6UBi+2M3ay3dYFJw4+fG4XZh3H\\/sCA\\/q8MUgreP3t9q\\/wzxCW\\/BXZAv4u2FvwKvw=\"}",
        "attachment": [],
        "tag": [
            {
                "type": "Mention",
                "href": "https://pirati.ca/profile/test8",
                "name": "@test8@pirati.ca"
            },
            {
                "type": "Mention",
                "href": "https://ds9.lemmy.ml/c/testcom",
                "name": "@testcom@ds9.lemmy.ml"
            }
        ],
        "to": [
            "https://pirati.ca/profile/test8",
            "https://ds9.lemmy.ml/c/testcom"
        ],
        "cc": [
            "https://www.w3.org/ns/activitystreams#Public",
            "https://ds9.lemmy.ml/c/testcom/followers"
        ]
    },
    "signature": {
        "type": "RsaSignature2017",
        "nonce": "534f3e33435fa56911a12094d9918002b2d734794609019793603116b6509a54",
        "creator": "https://pirati.ca/profile/heluecht#main-key",
        "created": "2022-03-24T21:37:50Z",
        "signatureValue": "lhLotVmAv22CmiYCSmQgQA/X38ype7o89iJIC0I2FzIWGQkvZz58YAxpmW047Z2hT2qm15sV02bPgyoOBXAdXd+M8WNwz+cNwU1cE7QNZ7102Y+tQRgpTfHz+e57QwUXESo46xAG0qSVu0UQMm+3uCUFYWKgHEmAXy89sp//3J/vJtI2+3jbaC9YWdsBe8XwcoHeelnX7f8LNniRnZIkKTLfoOhcEIHAJkEV4otSCOfzwGHN0SqbGlK9xWBPQhgtN3GvnOZU9zhNQMsQiX+9Wb2X4NLXs0tTRkDubF78stH+0xbep7ZfyvRNLoebPtecN8dMnfHQs8y0a9iG9tuNjcwht2ezIwf1h140+iB8znav35sA6LzgcfEyzU8O6JYF9p9x3tCw2rcMMiy/f7mvOLCP/05d0GEoUNZXrfuXf/osysMYp1Y05Lkze5WqTMu7sEW6jDx8r1NTE6s88wqZAJa56G5NVxG5vU3Cj7yscI6LQiqaUDilVHLa+DzR0pQEUSSh2J1PgBFT2KKPZIY22UinDgI1QNl+Dhfj2nPzf/xXssuDTvWyU8vJzXc2MZNqFz7ds7tNdea6laLiMl7nOnMo1wz1f+w1bn4Y1YR/iwFgaqo2WEt+cIzAaN4dUw00WlXPCNNhrgaXHxlXI6SeFtviUfwz/dehcfbxMTxX7e0="
    }
}

Undo:

{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
            "vcard": "http://www.w3.org/2006/vcard/ns#",
            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
            "diaspora": "https://diasporafoundation.org/ns/",
            "litepub": "http://litepub.social/ns#",
            "toot": "http://joinmastodon.org/ns#",
            "schema": "http://schema.org#",
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
            "sensitive": "as:sensitive",
            "Hashtag": "as:Hashtag",
            "directMessage": "litepub:directMessage",
            "discoverable": "toot:discoverable",
            "PropertyValue": "schema:PropertyValue",
            "value": "schema:value"
        }
    ],
    "id": "https://pirati.ca/objects/ec054ce7-5762-3ce2-b3e4-87e268433367/Undo",
    "type": "Undo",
    "actor": "https://pirati.ca/profile/heluecht",
    "published": "2022-03-24T21:29:23Z",
    "instrument": {
        "type": "Service",
        "name": "Friendica 'Siberian Iris' 2022.05-dev-1453",
        "url": "https://pirati.ca"
    },
    "to": [
        "https://pirati.ca/profile/test8",
        "https://ds9.lemmy.ml/c/testcom"
    ],
    "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://ds9.lemmy.ml/c/testcom/followers"
    ],
    "object": {
        "id": "https://pirati.ca/objects/ec054ce7-5762-3ce2-b3e4-87e268433367",
        "type": "Dislike",
        "actor": "https://pirati.ca/profile/heluecht",
        "published": "2022-03-24T21:29:23Z",
        "instrument": {
            "type": "Service",
            "name": "Friendica 'Siberian Iris' 2022.05-dev-1453",
            "url": "https://pirati.ca"
        },
        "to": [
            "https://pirati.ca/profile/test8",
            "https://ds9.lemmy.ml/c/testcom"
        ],
        "cc": [
            "https://www.w3.org/ns/activitystreams#Public",
            "https://ds9.lemmy.ml/c/testcom/followers"
        ],
        "diaspora:guid": "ec054ce7-1862-3ce2-b3e4-870035437794",
        "diaspora:like": "{\"author\":\"heluecht@pirati.ca\",\"guid\":\"ec054ce7-1862-3ce2-b3e4-870035437794\",\"parent_guid\":\"ec054ce7-2062-3bfa-8687-ca8313624820\",\"parent_type\":\"Post\",\"positive\":\"false\",\"author_signature\":\"KWp5AQ71Tn4kFgGxzgLDLQUvULKMtsb4DYwP\\/Ap9QNGStMQuKvYE2VBthRBaIvX9LmknZ3cBvuqKvNaL2Nj7B2R2Goa7\\/eWYDCogwafbp6Pj93vWvdy2+fGTkHGSxobnvgLvFIqv9IOy2Lk4QjWj7o64dUCiopR0OKjL8+vPM+l8iF+7bYeG+xSqy8SX8Fai5XOoNhy9anaJzK9ASLah8VeXKdfjGrvYsx2X\\/PaP+B8xFySP2XM95kGPKxyExi7Hk0j2igvjHqC2s3Cdg9+nwuUijnUycqGHUq3djMTLoPRjMHOJquZ1t2BNY575iRbYJTlteIgQkPHf50WALkzxn8zY5MkudBzffxm8B1Q6bnwoQHK8TR7KU2gMPwnQm6\\/ncygHuq1flVm3dqrF9xG6Cp2wC2SgTcErhrS\\/6in7FzrgBIOl570cxY0ovFICrE6rinuBdJkjfWYE3CZGCo6fVTAXUmje48c0611JmGD3PM6XQigFXGE32fjjaQoIkXf8TWI01kIqJDmZn80S6NXaYSrf9maWN1CB5gQ2E6B6Zk586sTZ2nnnJNol2KTkM1BPCTSMkrdiLtpjkUEGeo1tTe87oUzFHx++rgSO\\/lM94Dw5oN2jifGQquDBgIHY5ovxXVN3xrTgfrLEx+HWxdsiuIYpPx4lu4Qe0CVgZwPMqR4=\"}",
        "object": "https://pirati.ca/objects/ec054ce7-2062-3bfa-8687-ca8313624820"
    },
    "signature": {
        "type": "RsaSignature2017",
        "nonce": "1e0f4ed490473423292524d96f3d13f7fb1425599dfadd614b174ad77eb77019",
        "creator": "https://pirati.ca/profile/heluecht#main-key",
        "created": "2022-03-24T21:41:48Z",
        "signatureValue": "PAA2RTSvWKABq84fxlbvR1UZbIvDhoECyP5rSr5mP2nGFMo+BBhOq4Enq7SO/fiNOctILaLP4cdExyHZdYs7J64jCdfScuz6h2WZIlnKGEsR7mfDeUANboXqRbTKoyisA8vS3+BSSi4T2gjiyF3GGJLxUEcpOpD7T6G2BHQCQGbDSfue71Pygs6Z2RjCdLG1NiT6basjCKamrwxC+UYqzN3mCYLqpzBB3YD8/ql+1uqPPo3TI8CyQqq8ThEzYvXOI1eJcn0H9itD3WForGs9EQ/P39YGqrT40kx+mzhMBl16BnSO9sFHwJGd+Udi0DPrwlbCdJTuTEXJyvt6VRsyXYXe50aci+msm7MS2F+WaZZpbkxCbQNkJYfF2+yV/bDmhbvexT3avObytKGZURR+jo1UCRTwD5x4LZU/8Bvg6epsYmIXqLuuifbsrELpk+zhoHZD2drbRLWJM9KGHIK2EYtQlfvk7bDCQ/ukRns9G74JZYykqLxGhLFqd51JW2yUohmv4YoEFStXVCpInQGVQigxxO7qoCTbNiFhO7mTpd0gdx2kR4g83QJpPq6ZPaqag7z+zf3IPxA9WsZgfS66CAl6lqOK5jYkLr7JOejOU7oguHUfF6P89F2MDRoBTp6wVFL1z+rTGozyPr5mpgAAN1ambv/3ouUJdJ0Q9c6vvcE="
    }
}

Delete:

{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
            "vcard": "http://www.w3.org/2006/vcard/ns#",
            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
            "diaspora": "https://diasporafoundation.org/ns/",
            "litepub": "http://litepub.social/ns#",
            "toot": "http://joinmastodon.org/ns#",
            "schema": "http://schema.org#",
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
            "sensitive": "as:sensitive",
            "Hashtag": "as:Hashtag",
            "directMessage": "litepub:directMessage",
            "discoverable": "toot:discoverable",
            "PropertyValue": "schema:PropertyValue",
            "value": "schema:value"
        }
    ],
    "id": "https://pirati.ca/objects/ec054ce7-4762-3c1c-3c25-0cc665717210/Delete",
    "type": "Delete",
    "actor": "https://pirati.ca/profile/heluecht",
    "published": "2022-03-24T07:22:36Z",
    "instrument": {
        "type": "Service",
        "name": "Friendica 'Siberian Iris' 2022.05-dev-1453",
        "url": "https://pirati.ca"
    },
    "to": [
        "https://pirati.ca/profile/test8",
        "https://ds9.lemmy.ml/c/testcom"
    ],
    "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://ds9.lemmy.ml/c/testcom/followers"
    ],
    "object": {
        "id": "https://pirati.ca/objects/ec054ce7-4762-3c1c-3c25-0cc665717210",
        "type": "Tombstone"
    },
    "signature": {
        "type": "RsaSignature2017",
        "nonce": "eecfe411c2f5b4a21354f2580593c5d6cbbafef1dfc2266c3a29d3136270e489",
        "creator": "https://pirati.ca/profile/heluecht#main-key",
        "created": "2022-03-24T21:43:46Z",
        "signatureValue": "SCu1Qj4V4JJl+GbJB/Wy//L6DFSKc0T4lTSxI2FWD+2lyeumtDu3raqg2Kfg2uR1abWgf2T0cDLJn31wpjzAQ6QpR3tGgM7o3yHV9KIZZa0QJ7Oa/cGW0ZJijiNAETKw67cthb+hy4z6dx1M+s7wCSEQZoEZqmgn/5BMY8o0NMw/BSV797uF1tJRq29AsdIgJpjX4eX2kVmVTtYMqHc8T5/l1z3FsZFyL0UkW5BypT0T3lhGlKflov47oNSPsadHgL2A8RPdiY59OLbHCJZnQgcHA3BgeMBnwlmtpGqcfsJKUo+43zXkfKikPOO03WQ+w+LzS9UOLWhhP5yfVBLmwhM5oPfps9VUjJ/gOyWtw8pPAK/LL65sUiooxdR3fqskctVRlTDGJ8WTZPsJwsH9zygBiHOmVnkIdHkNdsA80GD9iGmnPTHixEIY124QWu+o53kydEOAbOiZo7vowjSN4ViPzkhh9xI5xkkPLeIQSEgmSsxBN98xpRVBg17qjkhBWVMCwTIqFsmzlp3oWFdp0m0xwhKJLKwlcKReoaWUCUINBgBUIfAQuWHpv7Clv7xw4pcZ1w/hiZU+1ZOnEjwGQILaGpJvK2C80z5RkhCDSamT5vetS2TrkxbjkJIY6ffUzxJQ/Ox/zN4KWyaYV6DfYELfGkybBXKo3EFhLQDARos="
    }
}
annando commented 2 years ago

@Nutomic just some additional information: I'm currently preparing a change in Friendica so that posts that contain an external url will be a Page while a post without it, will be an Article or Note.

The difference between Article and Note is that a Note doesn't have got a title. Since Lemmy requires a title, it would be okay for me to only accept Article and Page.

Also there is one significant difference between those two types: On an Article the url will always point to the original URL of the post, while an url from a Page will point to the linked paged. So it would be the best, if Lemmy could handle that value differently concerning these two types (at least when receiving them).

Nutomic commented 2 years ago

@annando Perfect, thank you! All I had to change was accept Article type for posts, thats it. Your change in https://github.com/friendica/friendica/pull/11375 is really not necessary though, we dont make any difference between posts with or without url. Well it will get you some partial compatibility with older Lemmy versions.

Also there is one significant difference between those two types: On an Article the url will always point to the original URL of the post, while an url from a Page will point to the linked paged. So it would be the best, if Lemmy could handle that value differently concerning these two types (at least when receiving them).

This is strange for me. We already show a link which points to the post's original instance (based on the id field). You can for example see it on this page (the colored fediverse icon). I dont see any reason to (ab)use the url field to send this url a second time. Current behaviour will be that such articles will have the content rendered in Lemmy, and also have the title link to Friendica, so there are two ways to read the same text which might be confusing. To avoid this, we would have to ignore the url field for all articles, which seems strange (and would cause problems for other software that tries to create an article with url).

Edit: one more thing, for private messages we use Pleromas ChatMessage extension. Do you support that?

annando commented 2 years ago

We currently don't support the chat messages. But this sounds interesting.

Concerning this Article thing: On a lot of systems in the Fediverse a post is reachable via two different URL. One is used for the technical stuff and the other is the link to the post when watched via a regular user. So the message with the ID https://pirati.ca/objects/ec054ce7-4962-3bea-1323-2bb743505014 is accessible via the URL https://pirati.ca/display/ec054ce7-4962-3bea-1323-2bb743505014. This is a common pattern that is also used for example by Mastodon. The Note with the ID https://mastodon.social/users/fsfe/statuses/108033351292131346 for example is using the URL https://mastodon.social/@fsfe/108033351292131346 when displayed. Because of this they present this value in the URL field.

Since we also have got a look at the requested content types we always return the requested content (either the JSON content or the HTML content). But there are systems out there that always return the JSON content at their ID URL.

The best way to cope with this is indeed to have different treatments for the different types. The easiest solution for Lemmy surely would be to simply drop the content of the URL field on incoming Article posts.

Nutomic commented 2 years ago

We could do that, but it would lead to very unexpected behaviour if some other software tries to create an Article which links to an external website via url field. That link would be silently dropped, and it would be complicated to figure out why.

I think the real problem here is that we are using a single field for two different purposes. One, in Lemmy the url field is for links to external websites, and two, in Friendica it is used for the canonical url of that object. activitystreams-vocabulary defines url as "Identifies one or more links to representations of the object". So it seems your usage is correct and ours is wrong. I dont see any other field which could be used for this purpose, so it seems we would have to add a custom field? Honestly I dont like that idea, as url is a very fundamental part of Lemmy, and it would cause compatibility problems with a lot of other software.

annando commented 2 years ago

From my point of view the url field does serve different purposes depending of the type. So with Article and Note it refers to this "representation" of the object. And with the type Page the url refers to the external page. But we can also argue that this "representation" for a Page is the referred page and for Article it is the post itself. So this is no violation of the standard.

Best would be that for Article the content of url is used for the link to the federated post, while for Page the id is used for that purpose. Then the url is used for the preview of the external page.

Nutomic commented 2 years ago

Maybe that makes sense from Friendica perspective. But for Lemmy the only change i made is that Article can be received, sending is still done entirely using Page. So Lemmy can send Page with only external link as url, only text body as content, or both of those, or neither (only name). Lemmy doesnt use the url field to refer to the object representation.

So i'm not really sure what to do. I think its worth discussing this with other project devs as well, before making any decision (maybe on socialhub).

annando commented 2 years ago

I guess it would be best if Lemmy in the future does send the posts without some external link as an Article and not as a Page. You needn't to use the url at all for an Article. But for compatibility issues you could continue using Page without an url.

I don't know about Lemmy's release cycle. Possible it does make sense to just allow Article as a first step and to improve the handling in some upcoming release.

Can you add the link her, if you start a discussion on Socialhub about this topic? I'm not very active there.

diogogithub commented 2 years ago

Okay, I guess there are a couple of different issues on the table...

@annando: From my point of view the url field does serve different purposes depending of the type. So with Article and Note it refers to this "representation" of the object. And with the type Page the url refers to the external page. But we can also argue that this "representation" for a Page is the referred page and for Article it is the post itself. So this is no violation of the standard.

Although this makes sense. Because of this:

@annando: Since we also have got a look at the requested content types we always return the requested content (either the JSON content or the HTML content). But there are systems out there that always return the JSON content at their ID URL.

GNU social is using the url attribute, when available, for the permalink: https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub/Util/Model/Note.php#L164 , with fallback to the id.

On the other hand, we had a Bookmarks plugin in version 2, that isn't federating via ActivityPub yet. The way we had thought of federating it was with a details html element in the content, and the link to the webpage would be a source with mediaType https://www.rfc-editor.org/rfc/rfc2483#section-5 , but we haven't got there yet, it needs more thought.

Something like: ...

...
"type": "Page",
"title": "The title of this post about GNU",
"content": "<details><summary>Some briefing of what I'm sharing about GNU</summary>Let me elaborate more on my thoughts</details>",
"mediaType": "text/html"
"source": {
  "content": "http://gnu.org\r\n",
  "mediaType": "text/uri-list"
}
...

Nonetheless, I agree that moving this to SocialHub would be a good idea.

vpzomtrrfrt commented 2 years ago

I don't think the source field is correct for that either, since it's specified as "source from which the content markup was derived" which it wouldn't be if the user is adding their own comments

Maybe a Link in attachment or tag?

annando commented 2 years ago

@diogogithub like @vpzomtrrfrt suggested, I think that an attachment would be the best solution.

diogogithub commented 2 years ago

@vpzomtrrfrt and @annando I agree. The main reason why we wrote that draft idea I shared, was because we didn't want to parse the content of type text/plain differently in function of the object Type to extract the Summary and Description of the bookmark.

...
"type": "Page",
"title": "The title of this post about GNU",
"content": "<details><summary>Some briefing of what I'm sharing about GNU</summary>Let me elaborate more on my thoughts</details>",
"mediaType": "text/html"
"source": {
  "content": "Bookmark: http://gnu.org
Summary: Some briefing of what I'm sharing about GNU
Description: Let me elaborate more on my thoughts",
  "mediaType": "text/plain"
}
"attachment": [
  {
    "url": "http://gnu.org",
    "type": "Document",
    "mediaType": "text/html"
  }
]
...
vpzomtrrfrt commented 2 years ago

Started a SocialHub thread to further discuss the semantics of link posts: https://socialhub.activitypub.rocks/t/explicitly-attached-links/2357

raphaeljolivet commented 1 year ago

Hi,

I really feel that being able to create new topics from remote instances would be a game changer. Lemmy would de facto become the "groups feature" the Fediverse is missing so much.

Putting Mastodon is the game would really help.

Do you have a specific issue to track federation with Mastodon ? Or is it ok to comment on this one ?

My understanding at this point is that mastodon only sends Notes, missing a title.

One workaround would be to consider the first sentence of a Note as title. If we want to enforce it more, we could force an empty line between title and body, or force a custom syntax (like [title] for instance).

In any case, a federated user sending a bad request (bad type of message, bad format, anything) should be informed it has failed and why : maybe with a private message to him ? I don't know if this follows ActivityPub protocol : are they recommendation on how to handle user errors / feedbacks ?

Anyway, thanks for this amazing work !

Nutomic commented 1 year ago

@raphaeljolivet Thats completely offtopic, open a new issue or use the search function.