Skip Navigation
Posts
1
Comments
22
Joined
2 mo. ago
  • @julian This post as it appears on kbin.earth thinks it's from 11 months in the future, with a timestamp of 2026-02-27. It looks fine elsewhere though (e.g. on Lemmy). NodeBB has sent out some incorrect activities for this post, so I'm guessing that Lemmy fixed itself after processing a later Update, but MBIN didn't get it or didn't process it (I'm not that familiar with it, but it looks like no-one there is subscribed to either the category or you, so I don't even know how they created it in the first place)

  • @julian I tested out a root post that mentioned a PieFed community, and it got there okay - it's viewable at https://pythag.net/c/sci_fi (and federated out okay to another PieFed instance at https://palaver.p3x.de/c/sci_fi@pythag.net)

    My guess as to why Lemmy might not like it is that the activity contains:

     json
        
    "audience": "https://community.nodebb.org/category/-1"
    
      

    It looks like Lemmy tries to fetch that and can't parse the response.

  • @rikudou Yeah, sorry, I didn't mean to derail this thread. The GitHub issue was intended to only really be about the 'cc' problem, because it looks like PieFed will have to start sending Create/Note to non-Lemmy platforms anyway, but it'd easier if 'cc' doesn't have to be artificially included to keep NodeBB happy.

  • @julian Oh, I've just realised I read Nutomic's PR the wrong way around. After 2.0, you'll start getting Notes from them. If 'ChatMessage' processing isn't worth handling by NodeBB, I can change PieFed to send you Notes instead.

  • @julian I've added support to PieFed to successfully receive Create / Note as a PM from NodeBB.

    From Nutomic's PR, it looks like you'll continue you get Create / ChatMessage from them, as also you will from PieFed. This currently fails, as I guess that it converts them into a Create / Note, but then complains of there being no 'cc'.

    It doesn't make sense for PMs to be 'carbon copied' to anyone, so I'll raise an Issue at your repo.

  • @freamon Update: no, Lemmy doesn't understand them either. It rejects Create / Note without a community with the usual "did not match any variant of untagged enum AnnouncableActivities"

  • @julian It currently doesn't. If someone is Mentioned, the assumption is that it was part of post / comment in a community, and it fails because it can't find the community. I know that, for Lemmy, if you Mention someone in a comment, and they don't have a copy of the community (or they do and there's no local subscribers to it), then it will reject it. I don't know what it does if there's no community at all (I'll figure out a way to test it, on a server I can control).

  • @julian Oh, right. Thanks. But yeah, it's what Lemmy (and PieFed) uses, so I just assumed it was part of AP, and never looked into it any further.

    I was thinking while typing this "I bet that means that chat messages from NodeBB to PieFed will fail", which I just tested, and sure enough they do (I'll make an Issue for it on PieFed's repo).

  • @rikudou As far as I understand things, a 'private message' in ActivityPub is Create / ChatMessage, not Create / Note. I think NodeBB wouldn't be the only software to complain if 'cc' is missing from either part of Create / Note (although it's not expected in either part of Create / ChatMessage).

  • Guppe Announces the original post, and the replies to it, but doesn't Announce anything else. For the replies, it also does what PeerTube does and sends out them unsigned, for instances to verify using the LD signature in the activity, or to fetch from the source. If you want to meaningfully vote on something that came from a.gup.pe, you have to send it to the original author, not to a.gup.pe like you would if you were voting from something from Lemmy, because a.gup.pe will just silently drop it.

    Lemmy's communities Announce everything, but Mastodon only comprehends Announce as a Boost, so it just rejects the Announce of anything that's not a Page or a Note. There are other platforms though (e.g. Friendica) who will see the Announce of a Like, and go fetch it from it's source (most non-Lemmy platforms don't trust Lemmy-style Announces, because whilst it's against the spec for Announce contents not to be an exact copy of the original activity, there's nothing stopping a rogue community from misrepresenting users or undoing their intentions).

  • @kirk@social.coop

    The AP from NodeBB is missing the 'name' field for images (where alt-text is put). If you inspect that first image in a web browser, the alt-text reads "Pic of a flow battery development kit ...", but for the relevant AP, compare NodeBB with a random image on pixelfed:

    curl -L -H 'accept: application/activity+json' https://fbrc.nodebb.com/post/8 | jq .attachment[0]

    vs.

    curl -L -H 'accept: application/activity+json' https://pixelfed.de/p/tercean/364 | jq .attachment[0]

  • @julian Awesome, thanks.

    Hopefully Announce / Update isn't similarly afflicted! (I realise that activity is the source of its own Issue, so I haven't seen any yet).

  • @rglullis@communick.news No, I don't there's any overlap between PieFed and Fediverser either. The potential of Fediverser seems like it got cut off at the knees by how widely defederated alien.top is.

  • Looks like I was wrong before: whilst it's true that Lemmy isn't always great at sending an 'Accept' back, that's not the issue here. I was thinking about it from the perspective of a Person following a Group, not a Group following a Group.

    It'll be interesting to see how the Lemmy devs respond. It's not really relevant for PieFed, because I'm not sure that there's communities there that have enough activity to warrant syncing to a category, but I thought about what would happen if you tried, and it would fail. The follower would be checked to see if they are a Person, and the request would go no further if not (there's no handy error returned, though).

    I'm not sure it would be possible to enable, with the way the database is currently set up. We have a 'community_member' table, that looks like:

     text
        
    pyfedi=# \d community_member
                             Table "public.community_member"
          Column      |            Type             | Collation | Nullable | Default
    ------------------+-----------------------------+-----------+----------+---------
     user_id          | integer                     |           | not null |
     community_id     | integer                     |           | not null |
     is_moderator     | boolean                     |           |          |
     is_owner         | boolean                     |           |          |
     is_banned        | boolean                     |           |          |
     notify_new_posts | boolean                     |           |          |
     created_at       | timestamp without time zone |           |          |
    Indexes:
        "community_member_pkey" PRIMARY KEY, btree (user_id, community_id)
        "ix_community_member_is_banned" btree (is_banned)
    Foreign-key constraints:
        "community_member_community_id_fkey" FOREIGN KEY (community_id) REFERENCES community(id)
        "community_member_user_id_fkey" FOREIGN KEY (user_id) REFERENCES "user"(id)
    
      

    So if the 'user_id' was actually a Group instead of a Person, then it would have a join to the wrong table.

  • Yeah, as mentioned - Lemmy is often quite bad at sending the 'Accept' back for a Follow. It's particularly the case if the instance hasn't heard of you before, because in the process of fetching your user and instance details, it 'forgets' about the Accept. Within Lemmy, everyone's sort of got into the habit of 'Subscribe / Unsubscribe / Subscribe'. (where the first 'subscribe' lets them get your details, and the second one actually gets an 'Accept' back.)

    PieFed is more reliable at sending 'Accept' back, so it's maybe useful to check your logic from this end with a community from there, e.g. https://piefed.social/c/antisocialmedia

  • @darkpollo Oh, sorry. It turns out that that link worked because I'm logged in to defcon.social.

    I've crowbarred your comment into my dev instance for PieFed instead: https://pythag.net/post/4695#comment_27962

  • @darkpollo I'll have a go at answering some of your questions, until something better comes along.

    1. Yes. Here's your reply on another server: link
    2. Yes. I tested out creating and then deleting stuff from a remote account, and this forum acknowledged both.
    3. Remote users don't get any privileges - their profile on this forum is just a text copy of the one they have on their own platforms. In terms of identifying local vs. remote (visually, at least), you can hover over users and see whether they have an '@' in their name. You could do the same programmatically, but I imagine that there's better ways.
  • Oh, yeah. It's still ongoing. You can track the progress at https://codeberg.org/rimu/pyfedi/src/branch/main/app/api/alpha/routes.py if you like. At the bottom of that page, things with a 'Stage 1' are what's left to do.

    The remaining stuff is mostly to do with chat / notifications. Once done, a basic app could be released, and then improved to include stuff that's missing (things like uploading an image to post or a comment, and viewing reports)

    EDIT: sorry, this was meant to be a reply to another comment. Still getting the hang of NodeBB. Now will this edit work ...

  • ActivityPub @community.nodebb.org
    freamon @community.nodebb.org

    Any plans to add 'actor' to Create activities from nodebb users?

    I subscribed to activitypub@community.nodebb.org earlier, and got my first post. The activity looked like:

     json
        
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "actor": "https://community.nodebb.org/category/30",
      "cc": [
        "https://community.nodebb.org/category/30/followers"
      ],
      "id": "https://community.nodebb.org/post/https%3A%2F%2Fcommunity.nodebb.org%2Fpost%2F102768#activity/announce/1737427447686",
      "object": {
        "cc": [
          "https://community.nodebb.org/uid/24276/followers"
        ],
        "id": "https://community.nodebb.org/post/102768#activity/create/1737427442685",
        "object": {
          "@context": [
            "https://www.w3.org/ns/activitystreams",
            {
              "Emoji": "toot:Emoji",
              "toot": "http://joinmastodon.org/ns"
            }
          ],
          "attachment": [],
          "attributedTo": "https://community.nodebb.org/uid/24276",
          "audience": "https://community.nodebb.org/category/30",
          "cc": [
            "https://community.nodebb.org/ui