Skip to content
  • 5 Votes
    6 Posts
    186 Views
    julianJ

    Of course you have a wiki page for this already! Why am I not surprised.

    Yes, that follow-accept has state synchronization responsibilities means that some additional specification would be nice, though as long as everybody tends to conform to the same behaviour I suppose thats less urgent.

    I still don't like that the current UX is "follow is in a pending state", but short of additional specification re: error handling, there's not much to do here.

    At any rate it seems I am now correctly following @[email protected] so I suppose maybe my server was slow at processing the accept.

  • 3 Votes
    18 Posts
    343 Views
    julianJ

    Thanks @[email protected]! That's good feedback and it's really exciting to know that there exist implementors out there whose default is not Note.

    I think at this point a real-time discussion at the next ForumWG re: the distinction between Article vs. Note would be beneficial. It'd be a continuation of the discussion we had last month.

    It's clear there are varied opinions on it, but as intimated by others, this might not actually be a problem that has technical solution.

  • 7 Votes
    18 Posts
    299 Views
    C

    @Julian yeah that's a good point - I think tag would work but I always got the impression that they were more of a micro-level part of a specific piece of content vs. macro-level (being the place they're being discussed in). context would be set at the forum level (whatever the forum's owner specified) whereas tags might be decided by the user. So in that sense, context would more about origination of a post.

    Example might be something like this -

    { id: "https://yuforium.com/forums/cars", type: "Service", name: "Example Forum About Cars", context: "https://another-instance.org/topic/cars" }

    Where a POST to that forum's outbox with a Note would result in that note's context defaulting to the one set to the forum. Posting with another context would result in an error. This makes things a little different than a tag which is what would be user specified. In that sense, context is more about where the post was created, vs. what it was created about. In a federated system, where could be an authoritative entity that encompasses multiple instances and is dereferenceable, or where could be defined as a UUID and be completely unauthoritative and ephemeral.

    Given that it's more about the origination of the post, I would agree that the term "Community" is better in this case to define what context relates (instead of "Topic") so in the example, context could be switched to https://another-instance.org/community/cars.

    It's been a while since I wrote that up, and at the time I was considering using "Community" as the terminology for a context so I might update that soon (especially with "Topic" being a frequently used convention in forums meaning something totally different).

    In the Activity Streams docs, the one part about context that got my attention was this - "An example could be all activities relating to a common project or event", meaning that context exists outside of the scope of what a thread would be, and is more indicative of a forum level or federation setting vs. the contents (objects, activities, etc.) of a single thread.

  • 0 Votes
    5 Posts
    90 Views
    julianJ

    Nathan Fillion Speechless GIF

  • 7 Votes
    8 Posts
    139 Views
    julianJ

    @[email protected] right. I think functionally I'll never encounter a Delete, check the origin, and find that the note hasn't actually been deleted, but stranger things have happened!

  • 7 Votes
    2 Posts
    118 Views
    julianJ

    Technical stuff ahead 🚨...

    This is merely exposing the frontend UI to the already established backend logic.

    We have two methods internally that are used for this:

    Notes.assert, which when given a object url or id, parses it and attempts to resolve the parent chain all the way to the top-level post. It then creates a topic to house all of those posts. Actors.assert, which when given an object url, id, or handle, creates a local representation of the user. How come "query"/etc. didn't show up?

    For both user and post searching, if the passed-in url does not resolve or does not resolve to a processable object, then we do not proceed. It's important to realize that while in an ideal world, we'd all be passing immutable identifiers everywhere, the real world is just a bit messier.

    Search queries could be a post or user URL, or a webfinger handle, so additional logic was required to handle those use cases. Most ActivityPub-enabled software I've encountered handle these vanity URLs when queried via ActivityPub β€” it returns the appropriate representation for processing. Some do not, and so in those cases, those items will not show up in the search results.

  • 8 Votes
    4 Posts
    335 Views
    trwnh@mastodon.socialT

    @julian to clarify: this is mostly about "canonical" identifiers vs. aliases. there is generally one canonical identifier for the conversation collection, and this is what should be used as the value of `context`. this could get a bit complicated but there are potential ways to coordinate replication between equivalent conversation collections, probably involving mutual following/follower relationship, plus some indicator of aliases like `alsoKnownAs` or some other extension property.

  • 18 Votes
    42 Posts
    1k Views
    nutomic@socialhub.activitypub.rocksN
    Thats how FEP-1b12 works, its necessary if you want to federate activities such as voting, deletions or mod actions and not only post creations. But Lemmy doesnt support arbitrarily wrapped activities, only specific hardcoded ones like Announce/Create/Note, Announce/Like or Announce/Delete.
  • 9 Votes
    6 Posts
    427 Views
    luceos@socialhub.activitypub.rocksL
    trwnh: Topics can be split In addition to splitting topics, topics or their posts can also be merged into another topic. The UX for this is quite variable; sometimes entire topics can be merged into another, sometimes a certain range of posts within a topic (post 5 .. 10 from 15 posts), and sometimes a selection (post 5 and 10 from 15 posts or just a singular item post 5 from 15 posts). trwnh: Topics exist in a category For #Flarum topics can also not exist in a Category (we call them tags and that extension is optional, like all of our extensions). Even when using a Category, once the Category is deleted, we do not hard delete any topics contained within but unlink them, making them less visible but still existing within the Forum. Regardless, to us, Topics CAN exist in a category, it's not required. trwnh: Users can be followed for posts and topics Users can be messaged directly This sounds as if this is a given, I don't think it's guaranteed in every Forum software. But if can implies optional, then
  • 8 Votes
    11 Posts
    252 Views
    rimu@mastodon.nzoss.nzR

    @julian Ooo good point about adding the ? back on.

    If you're interested in a non-regex solution, here's what I have - https://codeberg.org/rimu/pyfedi/src/branch/main/app/utils.py#L247

  • 27 Votes
    32 Posts
    2k Views
    julianJ

    @[email protected] said in Article vs. Note vs. Page:

    Since then WordPress has joined the Fediverse, and now Ghost is about to join as well. I think the ability to display rich content may soon become a serious competitive advantage.

    Completely agreed. The best time to consider a different approach is now, so I am hoping we can make some headway here at the WG meeting. Stay tuned...

    cc @[email protected] @[email protected]

  • 0 Votes
    22 Posts
    876 Views
    oplik0O

    @[email protected] it was actually because of @ in actor IDs - the codepath for choosing a webfinger lookup over just accepting the URL as the ID only checked for its presence, and the code for webfinger lookups was only meant to run for the acct: protocol.

    So yeah, not WP fault at all, just a combination of a bug and missing feature πŸ™‚ Now both should be fixed.

  • 5 Votes
    26 Posts
    682 Views
    scott@authorship.studioS
    @julian
    For example, let's say I link out to Evan's profile here. If NodeBB knew that this link had an alternative AP endpoint, then we could redirect the user instead to the local representation of his profile

    Wouldn't Evan's AP endpoint be the same as his HTML endpoint?

    Most platforms are going to send you to the authoritative profile, which is the one at the user's server.

    And if you wanted to redirect a link to a local profile instead of his official profile, you don't need an endpoint to do that. You could simply parse the post and swap out the URL, since you should have data about the user in your database anyway from when you first detected the user.

    Maybe I am misunderstanding the use case here, but I am not sure why a platform would send you to a different platform to view the profile or channel.
  • 4 Votes
    4 Posts
    167 Views
    trwnh@mastodon.socialT

    @julian @rimu i think that was rimu actually, although i can probably give a summary

  • 15 Votes
    7 Posts
    551 Views
    crazycellsC

    @julian I am not sure but I guess so...

    when I clicked the link on the first post of this topic: https://community.nodebb.org/topic/cd43b9f3-c032-44cc-adc8-f32e7ee91901/our-next-meeting/

    it takes me here but gives error:

    https://socialhub.activitypub.rocks/ap/object/1899f65c062200daec50a4c89ed76dc9

  • 2 Votes
    12 Posts
    373 Views
    julianJ

    @[email protected] Yes, I think that's what @oplik0 and I ended up agreeing on. If we normalize all incoming requests so that any requests containing a full object on a different domain is just reduced down to its id, then you'd safeguard yourself from most edge cases. Applying FEP-8b32 would be handy to save yourself a few network calls but is optional.

    The cost is you might have to make a couple extra calls, but it's probably worth it in order to keep the logic simple, predictable, and easily auditable.

  • 19 Votes
    8 Posts
    2k Views
    hrefna@hachyderm.ioH

    @julian I am once again reminded of why Roberts Rules are written the way that they are and why the "Roberts Rules for small groups" caps at 12 people.

  • 3 Votes
    1 Posts
    317 Views
    julianJ

    A small quality-of-life update I just pushed to NodeBB will now allow you to view the content posted by non-local users.

    When discovering new users and determining whether to follow them, their post history is rather important!

    You can view post history for a remote user just as with a regular user: Profile > Posts

    359b6584-606f-4afa-9964-b6f314814522-image.png

  • 13 Votes
    7 Posts
    613 Views
    julianJ

    @[email protected] not a problem, I'll post up the minutes soon for open discussion!

    We didn't get into any technical details re: ordered collections, etc., so there's still time to discuss the intricacies of 9988.

  • 15 Votes
    18 Posts
    876 Views
    julianJ

    @crazycells I do not like repeated logic, as it adds maintenance burden. I will be removing it regardless πŸ™‚