@julian@community.nodebb.org
@julian@community.nodebb.org avatar

julian

@julian@community.nodebb.org

Hi! I'm Julian, one of the co-founders of NodeBB, the forum software you are using right now. I started this company with two colleagues, Baris and Andrew, in 2013, and have been doing the startup thing since (although I think at some point along the way we stopped being a startup and just became a boring ol' small business). In my free time I rock climb, cycle, and lift weights. I live just outside Toronto, Canada, with my wife and three children.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

eeeee, to random
@eeeee@community.nodebb.org avatar

Its been a while since I tried getting the email working (which sends out confirmation links, password resets etc)
So I retried ...
put in my Zoho email and its password in the Admin - settings - email, but nothing gets sent out. Ive put an ecample email in for this screenshot
Is there something else I need to do Zoho end to let Nodebb send emails?
1000018854.jpg

julian,
@julian@community.nodebb.org avatar

@eeeee You may need to reach out to Zoho support to figure that one out... if NodeBB reports that the email was sent.

Could be you need proper DKIM and SPF records.

J12t, to fediverse
@J12t@social.coop avatar

Ghost has a (pretty funny) update on their development.

https://activitypub.ghost.org/building-activitypub-day-1/

julian,
@julian@community.nodebb.org avatar

@J12t personally, I'm still waiting for someone to call me out on having actors whose outboxes resolve to an empty collection

ducks

julian,
@julian@community.nodebb.org avatar

@J12t no legitimate reason, we just don't use it, and basic federation doesn't break when it's not implemented, so it's just very low down on our to-do list!

julian,
@julian@community.nodebb.org avatar

@J12t Yes, that's certainly one use-case for the outbox... to "catch up" on things you missed, on a per-user basis.

But as far as I am concerned they're separate APIs that pull from a common data source.

For example, reading the ActivityPub spec, one could draw the conclusion that the outbox is an ordered list of activities, likely read as-is from the database.. but that's not strictly defined, so it's possible to dynamically create outbox items on-demand based on user history stored elsewhere.

That would mean less duplication of content (and the syncing that is required), fewer bugs, etc... but the cost is the collection then has to be dynamically constructed.

julian, to random
@julian@community.nodebb.org avatar

At the last ForumWG meeting, we discussed at length about Article vs. Note, and whether there was a desire to expand usage of as:Article. You can review those minutes here.

One of the action items that came out was to collate the state of current implementations. Unfortunately, outside of implementations that federate non-textual content (e.g. Pixelfed Stories, Mobilizon Events, etc.), the majority of implementors just use as:Note, which is not surprising given Mastodon's treatment of non-Note objects.

You can see the results of the summary here.


What is less clear is whether there is pent-up demand for use of a different data type for more richly forrmatted content. @mikedev and @jupiter_rowland provided some very illuminating history behind previous attempts to use as:Article, but importantly it seems that Mastodon (via @renchap) may be open to supporting this in some form as well.

While Mastodon has every reason to display as:Note as it sees fit, I'd like to hopefully address the undue influence towards using it especially in instances where as:Article were more appropriate. Mike (upthread) suggested a compromise:

  • that as:Note be reserved for content with attachments (images or otherwise), perhaps with a limited subset of html
  • and as:Article be used for content with a richer set of html (e.g. tables), and including the ability to display inline images

I explicitly did not specify that Note was for shorter content and Article for longer, because there exist plenty of examples of the reverse.

Does anybody see potential complications from such an arrangement?

julian, to random
@julian@community.nodebb.org avatar

My post from a couple weeks back indicated that NodeBB started following part of FEP-7888: Demystifying the context property.

Our implementation is an endorsement of @trwnh's proposal that the context property be given additional formalization.

During the last ForumWG call, they intentionally (or perhaps unintentionally) summarized their desire that implementors should "just use collections", and that that would be a good starting point for future iteration.

With the current state of context being "there is no coordinated usage of context", this topic aims to provide a snapshot of implementors' use of that property (or lack thereof), and to stimulate further discussion on potential use cases.

Note that this is not the first time the question has been raised. trwnh's discussion topic contained one such summary of current implementations.

As per that topic:

  • Mastodon โ€” does not use context, but provides an ostatus:conversation property
  • Pleroma/Akkoma โ€” uses context, but the url provided is unresolvable, likely used similarly to Mastodon
  • Streams (@mikedev) โ€” uses context, resolves to an OrderedCollection containing all activities encontered (Creates, Updates, etc.)

My hope is that a provided context resolving to a Collection (or subtype thereof) would allow for proactive topic backfill, instead of relying on reply chain traversal, which while workable, has some rather specific downsides.

As mentioned per the above linked announcement that NodeBB was following FEP-7888:

  • We attach context to all Note objects (NodeBB posts), and it resolves to an OrderedCollection that contains the uris to the other objects in the context (the NodeBB topic).
julian,
@julian@community.nodebb.org avatar

I have created a spreadsheet with open editing permissions (for now) and invite implementors to add their implementations if applicable.

One thing I am noticing now (and should've expected) is that not every software has the concept of a discrete context, nor can you expect one from remote activities. In those scenarios, the fallback seems to be to point to the root-node Object and iterate via replies collection.

For example:

  • @mariusor's FedBOX defines context as the root-node Object.
  • @mikedev's (streams) has a concept of conversation containers, and if context is received, inherits it, but otherwise, context becomes the root-node Object.

@trwnh does FEP-7888 account for this use-case?

hrefna, to fediverse
@hrefna@hachyderm.io avatar

Part of my frustration with and one of the things I find baffling giving everything else in it: the lack of tools for backpressure.

Backpressure is fundamental in building reliable distributed systems (c.f., Notes on Distributed Systems for Young Bloods). From a C2S perspective I get why it wouldn't need to be specified, but from a S2S federated protocol perspective its absence is frustrating.

All that it says is to take care not to overwhelm others and a bit on rate limits

julian,
@julian@community.nodebb.org avatar

@hrefna What needs to be specified at the protocol level?

If I received a 429 I'd naturally assume that I should put the request back in the queue for retry, but I can see how other implementations might not support that.

julian,
@julian@community.nodebb.org avatar

@hrefna @jenniferplusplus well, that's because we're all building apps around a protocol whose largest implementor doesn't specify context, ever.

So you end up receiving disjoint objects whose only relation to other objects is inReplyTo, and you have to hope you can find a match.

That automatically precludes the ability to develop sync/backfill.

julian,
@julian@community.nodebb.org avatar

@jenniferplusplus:

I want a mechanism to determine if two party's view of a collection are equivalent. I want to be able to query if an object is contained in a collection without enumerating the whole collection. I want a mechanism to request re-delivery or maybe failed delivery notifications.

For what it's worth, these are all goals that would align well with the interests of a broad set of implementors. I make a little noise now and again about the SWICG forum task force, but directly addressing some of these concerns would definitely be on our radar.

Current focus is on aligning on a common object type for higher level collections (the context), but I'm thinking that Collection (ordered, ideally) would be the best fit and also allow for future use cases like you mentioned earlier.

You have the ideas, we might be able to supply the coordination...

cc @hrefna @SoniEx2

julian,
@julian@community.nodebb.org avatar

@mikedev do you know any other implementors who expose a collection (even if not defined by ?

julian,
@julian@community.nodebb.org avatar

@mikedev said in Part of my frustration with #ActivityPub and one of the things I find baffling giving everything else in it: the lack of tools for backpressure.:

And of course as mentioned we use them for conversations so that everybody sees the same view of the discussion. It's a very under-utilised organisational mechanism and that seems odd. They're quite useful.

Ah yes, that was what I was referring to, a collection for a conversation. It certainly does seem under-utilised but I wasn't entirely sure whether that was true or not.

Are you aware of any other implementors that expose a collection for a collection of a topic's content?

julian,
@julian@community.nodebb.org avatar

@mariusor Thanks for sharing this use-case, it's very helpful and quite novel, I might add!

An inReplyTo array addresses the problem of backfill/ghost-replies with a bottom-up approach, vs a context collection which would be a top-down approach... though depending on what direction your tree grows, perhaps it's the other way around ๐Ÿค”

A context collection would also provides the entire tree, which depending on size may or may not be preferred. Tradeoffs...

I think perhaps there is space for both, although I will admit that if my code encountered an Array in inReplyTo it might just terminate because it expects a single uri.


re: the original ask, specifically I was asking whether any other implementors specify context in an as:Note, resolvable to a Collection.

cc @jenniferplusplus

andypiper, (edited ) to fediverse
@andypiper@macaw.social avatar

Today was a great set of meetings and discussions, moving the #Fediverse forward. Nice to reconnect after too long with @chrismessina - and to meet @snarfed.org@snarfed.org @J12t @anca @frozencanuck in person, lots more connections to make tomorrow. It is an exciting time in the #ActivityPub and #MastodonAPI ecosystem!

julian,
@julian@community.nodebb.org avatar

@andypiper oh, neat, what event is this? Not that I'd be able to go there but just wondering!

julian, to random
@julian@community.nodebb.org avatar

I'm confused about a particular aspect of Inbox Forwarding as detailed in the ActivityPub spec:

... the server needs to forward these to recipients that the origin was unable to deliver them to. To do this, the server MUST target and deliver to the values of to, cc, and/or audience...

... The server MUST only target the values of to, cc, and/or audience on the original object being forwarded, and not pick up any new addressees whilst recursing through the linked objects (in case these addressees were purposefully amended by or via the client).

Emphasis mine.

My reading suggests that only the values of to, cc, and audience on the referenced object should be used, and not those values on the activity itself.

But doing so would preclude the use of Inbox Forwarding in scenarios where the Activity wrapper contains additional addressees that the underlying object does not have.

e.g. A Note by A contains a single addressee: as:Public. It is then Announced by B and C. Later, A updates the Note, and their server sends out Update(Note) with the following addressees: as:Public, B, B/followers, C, C/followers, but the object referenced still contains a single addressee: as:Public.

In that case, when received by B and C, should they forward the activity to their followers?

iamlayer8, to mastodon
@iamlayer8@mastodon.social avatar

@IceCubesApp
Iโ€™d like to be able to subscribe to a post and itโ€™s responses. Would that be

julian,
@julian@community.nodebb.org avatar

@liaizon @iamlayer8 The thing is, what qualifies as a response worthy of a notification?

I'd argue that at minimum Mastodon could notify you if you receive responses to reply chains you've commented in. That would go a long way towards reducing mention spam.

Mastodon doesn't really store a context that can be referred against, though it is of course possible.

ActivityPub supports the context property, which the forum working group is hoping to support.

FWIW NodeBB already supports topic notifications, because we build our own context. If @liaizon or anyone else I follow replies to your post, I'll still be notified, even if I am not mentioned!

thisismissem, to random
@thisismissem@hachyderm.io avatar

@julian hey, how does NodeBB federate things like categories with posts?

julian,
@julian@community.nodebb.org avatar

@thisismissem still being worked on and liable to change, but right now a category/audience is on the fediverse as a Group actor and announces all posts made to topics within it, as per FEP-1b12

Topics/contexts are currently not sent out to inboxes, but when queried, return an OrderedCollection.

julian,
@julian@community.nodebb.org avatar

@thisismissem Ah, yes, Notes also do contain that information.

The earlier post I made contains context (the topic OrderedCollection), and audience (the containing category). Here's a subset of that object json:

{
	"id":"https://community.nodebb.org/post/99688",
	"type":"Note",
	"to":[...],
	"cc":[...],
	"inReplyTo":"https://hachyderm.io/users/thisismissem/statuses/112440197848097443",
	"published":"2024-05-14T15:44:53.375Z",
	"url":"https://community.nodebb.org/post/99688",
	"attributedTo":"https://community.nodebb.org/uid/2",
	"context":"https://community.nodebb.org/topic/2d35681b-8aee-42f2-9edc-cfc145cf294e",
	"audience":"https://community.nodebb.org/category/-1",
	"sensitive":false,
	"summary":null,
	"name":null,
	"content":"...",
}

audience is mentioned in FEP-1b12 (@nutomic), and context is mentioned in FEP-7888 (@trwnh)

julian,
@julian@community.nodebb.org avatar

Current implementations of ActivityPub are passive. You follow people, content comes in, and you build a context around it based on what you already know.

The long view here is that an active means of content discovery should be possible, and the first step to doing that is maintaining a both a context and audience at the object level, but also to have higher-level collections be backreferenceable to those same objects.

audience being a Group and not an OrderedCollection potentially makes this problematic, but... one problem at a time. Maybe this is where the streams property could work, who knows.

@thisismissem @trwnh

Jeremiah, (edited ) to webdev
@Jeremiah@alpaca.gold avatar

Hey @MDN, with Stack Overflowโ€™s ongoing community implosion, now would be an excellent time to launch MDN Answers so people have a better place to help each other learn.

https://answer.apache.org/

Edit: Or @nodebb / other ActivityPub-enabled forum/threaded discussion community server software

julian,
@julian@community.nodebb.org avatar

@thisismissem @Jeremiah @flyboy yep, we've been working on federation this year.

We're watching the implosion of StackOverflow with interest and would help facilitate a federated alternative if there is interest.

julian,
@julian@community.nodebb.org avatar

@liaizon honestly I'm interested in this purely just to see how badly Mastodon will muck things up if I start sending NodeBB Q&A topics as a Question activity, because Mastodon currently uses it for Polls.

But they don't have a monopoly on using it, and I can make the argument that my use case is more in spirit to the protocol ๐Ÿ˜ธ

julian,
@julian@community.nodebb.org avatar

@liaizon oh I know, I'll send a Question activity, and all of the answers won't be text (as Mastodon expects, but uris to as:Note) hahahah

julian,
@julian@community.nodebb.org avatar

@jenniferplusplus theoretically a Q&A site would bundle in answers, so we'd send anyOf or oneOf too!

@liaizon @thisismissem

julian,
@julian@community.nodebb.org avatar

@thisismissem ๐Ÿ˜ˆ

(That's an imp smiling emoji btw, Mastodon strips it out because we send inline images)...

box464, to DoctorWho
@box464@mastodon.social avatar

Alright letโ€™s see what this new Doctor can do.

julian,
@julian@community.nodebb.org avatar

@box464 ... and? What did you think?

via https://www.avclub.com/doctor-who-season-14-review-tv-disney-plus-ncuti-gatwa-1851454502:

That said, thereโ€™s no denying Ruby has a whiff of the โ€œImpossible Girlโ€ about her, by which we mean sheโ€™s less of a Rose Tyler or Donna Noble (ordinary women doing extraordinary things) and more of a Clara Oswin, Amy Pond, or even a Rey Palpatine, if you fancy getting all Star Wars about it.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • โ€ข
  • provamag3
  • khanakhh
  • mdbf
  • InstantRegret
  • Durango
  • Youngstown
  • rosin
  • slotface
  • thenastyranch
  • osvaldo12
  • ngwrru68w68
  • kavyap
  • cisconetworking
  • DreamBathrooms
  • megavids
  • magazineikmin
  • cubers
  • vwfavf
  • modclub
  • everett
  • ethstaker
  • Leos
  • tacticalgear
  • normalnudes
  • tester
  • GTA5RPClips
  • anitta
  • JUstTest
  • All magazines