@newyorktimes's veteran tech reporter John Markoff interviewed some of #TeamFediverse including @Gargron, @reckless1280 and our CEO @mike for a feature on the rise of decentralized social media. “It goes back to the original principles where the internet started out as decentralized,” Eugen Rochko told Markoff. Here's the full story [may be paywalled].

We're so excited to develop these conversations further at SXSW this weekend — check out the itinerary and sign up to join us at #FediverseHouse at the second link.

https://flip.it/NcjhLL

https://lu.ma/xbve5fa0

I'm finally unveiling the #ActivityPub project that has been consuming my weekends: Encyclia, an #ORCID bridge that will make ORCID records followable and interactable on the fediverse. 🙂

It's early-stage and the ORCID following function is not publicly available yet. We're seeking community feedback on functionality and safety aspects. Read more at https://encyclia.pub or follow @encyclia for news!

Wanted to start a convo with @johnonolan@mastodon.xyz from Ghost and @angus@socialhub.activitypub.rocks from Discourse about AP resource discovery.

A common use case from fediverse users is to be linked out to a site, and attempt to "bring it in" to their local instance/app of choice. This is done by taking the browser URL and pasting it into their site/app's search bar, or equivalent.

For example:

For context, last night I discovered that Ghost's latest blog post didn't make it into NodeBB, due to a bug on my end. I attempted to resolve it via URL but there was no AP resource at that URL. I ended up having to query the instance actor (which I happened to already know), and looking at the outbox.

To my knowledge there is no way to find a Discourse post or topic's AP resource ID without having a local Discourse account.

Would it be possible for you to send back an HTTP 301 Moved Permanently (or similar) if the Accepts header contains one of the AP-related types?

N.B. This probably has some overlap with @evan@cosocial.ca's HTTP Discovery Task Force, a 308 is recommended there.

Even before the arrival of #atproto was the question of what #decentralization of the web means quite murky, with multiple competing protocols at different abstraction layers. As frequently said, at one level the web is already decentralized so envisaging pure #p2p is also conceivable, why the need for #activitypub (or whatever) "servers"?

We come to realize that the problem is not well defined. First of all it does matter what you assume about the distribution of silicon and networks...

1/

Yes, of course Peertube sends hashtags without the #, why would I expect otherwise? :laughing:

8d97461a-d0ca-4699-8c72-2859c1f3e14b-image.png

Just wrapped up a call with @pfefferle@mastodon.social and @jesseplusplus@mastodon.social to review their implementations of FEP 7888, specifically in relation to conversational backfill.

:heavy_check_mark: individual objects serve a context property
:heavy_check_mark: that context property is a URL that resolves

One of the concerns raised was related to the OrderedCollection of items served by the context. Specifically, if the items presented in the collection were not in chronological order, NodeBB failed at importing some of the items as the inReplyTo referenced an object that did not exist.

The solution to this was to ensure that the collection items were in chronological order from oldest to newest. Once fixed:

:heavy_check_mark: the context resolved to an OrderedCollection containing objects
:heavy_check_mark: NodeBB was able to pull in the entire conversation

NodeBB used to guard against this by ordering all received items by chronological order, but I realized that while this worked 99%+ of the time, there are some fun (ahem...) individuals who send objects with timestamps way in the future.

Personally I think removing the sorting just to fix one edge case was premature. At the same time, I think specifying that the OrderedCollection be sorted in chronological order should be a requirement.

cc @trwnh@mastodon.social

How to subscribe to a thread?

Several days ago FEP-efda: Followable objects was published. I don't like this solution because ActivityPub spec only talks about "following" in the context of actors, and the proposed "proxy-following" mechanism forces us to change some well-established practices.

So here is an alternative: FEP-f06f: Object observers.

Object observer is an actor that can be followed to receive object updates. If conversation thread is a collection, its observer will broadcast Add and Remove activities that have thread collection as their target. Observer's followers will have an up-to-date view of the thread.

does a preview object have to have it's own unique ID: https://www.w3.org/TR/activitystreams-vocabulary/#dfn-preview ???

/cc @evan @trwnh @johnonolan

After a long silence, Tumblr confirms it is still planning to join the fediverse.

> The migration is still a work in progress, as we’ve previously detailed here, but we can say for sure that it will include support for WordPress’s existing ActivityPub plugins. We hope this comes as good news.

In other words, what’s the best #ActivityPub software for a single-user instance?

Movie where an ActivityPub author has retreated to a hermit life in the woods and some organization is trying to get then back

(Author, outside a wood cabin, gardening)
"Hey, I'm here to talk about ActivityPub v3"
"Bring that leaf bin over there will ya"
(Grizzled author fetches it themselves)
"So, would you be open to talking?"
"I need a chock for this here woodsaw table, split one of them logs"
"Is that a no?"
(Author approaches the city slicker, fatigued)
"If they want me to invent protocol extensions, (huff) they gotta send someone better than you"
(City slicker turns as they depart inside)

#ActivityPub @cwebber

Today's the day! :tada:

After nearly a full year in development, NodeBB v4.0.0 has landed, bringing federation between NodeBB instances (and a connection to the wider fediverse of social media) to forum software.

Fedi-what?

Fediverse! Here's a TechCrunch primer about it, but at the end of the day, it doesn't really matter. All you need to know is that NodeBB plugs in to a wider social network so that you don't have to cultivate an audience, they're already there.

The genesis

It was back in mid-2023 when I had the initial idea of interconnecting NodeBB forums. Back then, I had far smaller ambitions... I wanted a singular NodeBB to be able to communicate with other forums running NodeBB. To do that, we'd need to build out a centralized service to act as a bridge between instances, and corresponding slim clients on individual installs to consume the relayed data. At the time, concept like decentralization were not even part of my thought process.

It was during this period when I was doing my research that I stumbled on Mastodon, and later, ActivityPub, the protocol that powers it all. Since then, it's been one wild ride getting NodeBB to speak the same language.

Funding

Soon after dipping my toes into all that Mastodon had to offer, I discovered the NLNet Foundation, and their corresponding fund — NGI Zero Core. With the promise of funding, NodeBB could fully commit to implementing the protocol in short order, instead of piece by piece over time. We sent in an application and were delighted to be approved for the August 2023 call.

Their funding was instrumental in providing the financial stability to experiment with ActivityPub and to participate in developer circles, such as the SWICG, FediForum, and much more.

The fund continues to operate, perhaps you could benefit, or donate to the cause. It has certainly made a difference to NodeBB.

Federate, or not, it's your choice

NodeBB v4 comes shipped with the capability to interact with other NodeBB forums and any other ActivityPub-speaking software, right out of the box. We opted to make this a core feature instead of a plugin, since there were many changes made to core to support even the concept of accepting content from outside itself.

To that end, any users upgrading from v3.x will automatically have federation disabled, in order to reduce surprise. Any new forums will federate automatically.

You can turn federation on and off (and adjust some other fun toggles) directly from ACP > Settings > Federation (ActivityPub).

Even after turning federation on, how you use it shapes how well connected you will be. There is no centralized authority artificially boosting your content, so the name of the game is establishing two-way follow relationships to other sites.

The ActivityPub Equalizer

We're not alone in this journey to interoperate with other decentralized services. We're not even the only forum software to attempt to do so.

  • Discourse has a working plugin.
  • Ghost is building out in the open.

I specifically highlight these two because they both started in the early 2010s, same as NodeBB. It's always been a bit of an informal competition between us, and we always checked in on what the others were doing (growth-wise, pricing-wise, etc.) Truth be told, I don't think the ghost team ever really noticed NodeBB, but I digress...

The funny thing about ActivityPub is that at the end of the day, the overarching goal of seamless communication breaks down any barriers between competing organizations.

NodeBB and Discourse have been vying for the exact same market share (forums, community-building, self-started or enterprise) for over 10 years, and it was only after ActivityPub came around that the dev teams even started talking to one another.

Funny how that works.

So how does it all work?

Our documentation portal has been updated with the latest information about the ActivityPub functionality in v4.

If you have any questions about how it works or how to configure some aspect of it, please don't hesitate to reach out in the corresponding v4 support thread.

If you run NodeBB, the quickest way to see this in action is to upgrade to v4, and then paste this post's URL into your search bar. It should show up automatically, and you should be able to read and reply to it, directly from your own forum. Neat!

@trwnh

I was just talking about this here. I think I even mentioned you.

https://fedia.io/m/fediverse@lemmy.world/t/1437745

Is there any future where we could see this being the future of #activitypub?

The https://freeourfeeds.com/ FAQ is missing one question that's actually being asked frequently: How does this approach relate to existing nonprofit, open source, standards-based efforts centered around #ActivityPub?

@elipariser @wearenew_public Can you fix that? It's a bit tone-deaf to promote this effort here without speaking to how it intersects.

#activitypub thonk: delivering to a Collection is nonsensical because a Collection could be an actor. but so can a Group

basically you have implicit behavior "the Collection needs to be expanded to its items which are assumed to all be actors" just like a Group might expand to all its members (except the assumption there is a bit stronger, you can generally expect a Group's members to all be individuals?)

whereas something like WAC makes a distinction between agent, agentGroup, agentClass

The end of an era?

RE: https://misskey.io/notes/a2o2aj7zb81f05g3

MastodonはMastodon、MisskeyはMisskeyとだけ連合する方が幸せになる可能性がある​:nullcatchan_goodnight:​
機能差によるトラブルは日常茶飯時だし、連合相手に合わせて挙動を変えたり機能の制限・対応をしたりする実装も結構コストがかかる(そもそも連合相手がどのような実装なのかを予め知る術も限られている)し​:nullcatchan_goodnight:​

@Gargron @mosseri

eugen it's good news, but only in the scope of championing #activitypub

i don't think when you made #mastodon 8 yrs ago you thought "yes! i get to work with #facebook someday!"

i'm happy you're happy but i step back and see #threads #interop as sad

what you and your team built is amazing and i appreciate all you've done

because it is #decentralized

it's not #centralized #socialmedia hell that is eating our psychology, our societies, our politics

it should stay that way

:rotating_light: We have emoji! :arrow_left:

I like emoji, I like them quite a bit. I grew up using emoticons (gosh, remember those?), and definitely love to sprinkle them in my forum responses.

If you've been following me since I've been contributing to the fediverse, you might've thought I eschewed emoji, but let's put that misconception to rest :laughing:

Thanks to the hard work by @PitaJ, NodeBB now federates emoji used in posts outward to remote instances. This works across all emoji packs (android, apple, cubicopp, etc.) available to the emoji plugin, and also includes custom added emoji :arrow_right: :voodoo:

This is a two-way integration, so custom emoji served by other instances are also picked up by NodeBB and displayed properly in posts.

You might notice that the emoji I use are all blobs. :smile: It's the default emoji set for all NodeBB instances, because blobs are amazing and it's a travesty Google decided to move away from them.

Long live the blobmoji :flushed:

A little-known feature was added in the 3.x develop branch of NodeBB, custom fields. It was an often-asked-for feature that had a couple of plugins built to accommodate, but @baris decided to make this part of NodeBB core.

I will let him do a more detailed write-up on the NodeBB side, but suffice to say, those custom fields will now federate out with your profile:

<img alt="" src="https://community.nodebb.org/post/101859">

<img alt="" src="https://community.nodebb.org/post/101859">

Likewise, custom fields as defined by remote users will be saved and displayed in NodeBB in metadata boxes just like those defined in NodeBB.

In NodeBB, administrators are able to globally specify a set of fields that individual users can change/set.

@Gargron What do you think about the idea of #mastadon servers supporting #atproto in addition to #activitypub?

By the way, thank you very much for your work and vision!

"So what are you?"

A believer

Is this valid in #ActivityPub / AS2 ?
{
"@context": "https://www.w3.org/ns/activitystreams",
...
"tag": [
{
"type": "Hashtag",
"name": "example",
"href": "https://example.com/tag/example"
}
}
Note that "Hashtag" is not a term in the normative AP/AS2 context. It seems to break linked data processing, but it also seems to pass the JSON-LD compaction requirements of AS2 (based on the JSON-LD Playground). If true, this means you can use extended types without extending the context. 🤷‍♂️

Let's say for some contrived (but very real) reason, I want to add { "toot": "http://joinmastodon.org/ns#", "Emoji": "toot:Emoji" } to @context, but another member of @context might be { "toot": "http://joinmastodon.org/ns#", "focalPoint": ... }

Would it be acceptable if I just pushed my object to the end and assumed that JSON-LD parsers would correctly reduce it down to:

{
  "toot": "http://joinmastodon.org/ns#",
  "Emoji": "toot:Emoji",
  "focalPoint": ...
}

... or should I be adding in logic to detect the existing member defining toot and merge the Emoji property in?

In this document https://www.w3.org/wiki/ActivityPub/Primer/Authentication_Authorization#Server_to_Server there is a dead link to https://web-payments.org/vocabs/security#publicKey.

the owner attribute idea maybe comes from here:

https://docs.joinmastodon.org/spec/activitypub/#publicKey

the sample is strange, i cannot find one of this properties:

https://www.w3.org/ns/activitystreams#publicKey
https://w3id.org/security/v1#publicKey
https://w3id.org/security#publicKey

https://www.w3.org/ns/activitystreams#owner
https://w3id.org/security/v1#owner
https://w3id.org/security#owner