Prior our last task force meeting, @rimu@mastodon.nzoss.nz brought up the need for a common nomenclature for ease of communication between ActivityPub implementors. Rimu also took the initiative to conduct an informal survey to see what terminology was used across fediverse-capable software (and some non-federating software).
Going beyond "toots" vs "posts", it was noted (not surprisingly) that each software has their own name for things.
The most common object type passed around via the ActivityPub protocol (as:Note) could be called a comment, a post, or a reply
A grouping of as:Notes could be a post (!!), a topic, a thread, a conversation, or a discussion
A higher order grouping of those could be a community, a category, a forum, a (sub)tag, a group, or a magazine
The main takeaways were that while there was occasional convergence, it wasn't entirely surprising that there were more names for things than things to name. Secondly, it was fairly clear that putting forth a recommendation to align on nomenclature would be fairly futile.
What were we expecting... naming things is, after all, one of the hard problems in computing.
All joking aside, up with a common terminology — a lingua franca (thanks @AaronNGray@fosstodon.org!) — definitely has some advantages.
What terms do you think communicate these levels of organization most succinctly? Let us know!
@julian@rimu I am slowly working on how to seamlessly integrate Post/Comment/Like feeds into the ActivityStreams architecture as an extension but with both fall back and also accepting as:Note as Posts and inReplyTo replies as Comments. So I view nomenclature and standardisation as quite important but also being able to map between different systems and user models as equally important.
@AaronNGray@fosstodon.org@rimu@mastodon.nzoss.nz we could very well do this over the fediverse (which is my eventual aim) — after all, we're all building software for the fediverse, so why aren't we having meta-discussions on the fediverse?
But to that end I may as well mention that the fine folks at SWICG set us up a task force repo.
@julian@rimu Yes can we open an nomenclature issue there ? It would be good to have a central place for a more normative discussion. Although we can always discuss things on this thread and others obviously.
@julian @Aaron Gray @Rimu Good luck making a standard for something that isn’t even all the same all over the Fediverse.
Take replies as an example. Mastodon mimics Twitter. All posts are technically the same, whether they’re replies or not. It makes absolutely no sense whatsoever for Mastodon to name replies something else than start/stand-alone posts.
On the other hand, there are many projects that have a concept of conversations. Threads aren’t made up of posts and more posts, but of one posts and many of something different. So a reply is something vastly different from a start/stand-alone post and handled differently. Separate entry fields. Fewer features. Replies have a different set of recipients than start/stand-alone posts. Or you don’t even own your reply to someone’s post because that someone does.
This is the case for nodeBB, at least partially. It has been the case for Friendica since its inception almost 14 years ago when it was still named Mistpark. It has been the case for Hubzilla since its inception almost 12 years ago when it was still Red. It was and is the case for everything that came after Hubzilla, including (streams). It’s the case for everything that mimics Reddit, i.e. Lemmy, /kbin, Mbin, PieFed, Sublinks etc. It’s the case for Plume as well as the WordPress plug-in. And so forth.
In all these cases, it’s counter-productive to use the exact same term for start/stand-alone posts and for replies.
On the other hand, the same term is used for different things on different projects which leads to confusion. On Mastodon, “community” is an unofficial word for loose gatherings of users who have something in common. On Lemmy, it means the same as a subreddit, basically a forum. On (streams), it means a server instance.
Like Hubzilla, (streams) can’t use “instance” for server instances because an “instance” refers to an instance of a cloned channel. Speaking of which, for almost 12 years again, Hubzilla has been using “channel” for a kind of identity container that’s unique to these two and completely alien to pretty much the whole non-nomadic rest of the Fediverse. So “channel” may refer to other things elsewhere.
If you really aim to create a common language for the whole Fediverse and make it pretty much mandatory, you’ll have to get the developers of all projects (or “projects” because (streams) isn’t one) on board. Otherwise they’ll be overruled by a committee that has no idea what they’re even doing.
For example, if both @Mario Vavti (Hubzilla) and @Mike Macgirvin (streams repository) are left out, and nobody in the committee has ever heard of Hubzilla and (streams) and their channel concept and nomadic identity, Hubzilla and (streams) will be forced to rename all kinds of unique features while not even having any words to name them anymore because they’re all officially redefined otherwise, because the common Fediverse language was defined with complete disregard for nomadic identity.
Also, I expect two things to happen. One, everyone wants to keep their own language. Some may argue that it sets them apart from others which is the reason for Lemmy communities vs /kbin magazines. Others may argue for how long they’ve been using certain terms, especially Friendica, and they don’t want these terms taken away by “intruders”. Others again may just be stubborn and, in turn, try to push their language onto everyone else. The latter I can see happen with Mastodon whose representatives will argue that Mastodon is twice as big as everything else combined, maybe even in combination with fake news propaganda that Mastodon was here first.
"If you really aim to create a common language for the whole Fediverse and make it pretty much mandatory"
No no, that's not the intent :)
It's great if we use different words as long as we all understand the meaning behind them. Ideally when a NodeBB dev says "Post" they mean X and when I see them say "Post" i know they mean X (which I as a PieFed dev refer to as "Comment" or whatever).
Attached is the current state of the spreadsheet, FYI.
@silverpill@rimu@julian@aaronngray@community.nodebb.org The idea is to look at all existing models and map the terminology and the differences to the ActivityPub/Streams terminology. I think need to look at this in terms of the protocols, the existing technologies, and from a users perspective in order to encompassing everything for future convergent inclusive standards to be set. A bit like ISO OSI did.
Mastodon is really an extended implementatation of the W3C ActivityStreams 2 Specification.
Regarding as:Notes and Replies as I hinted previously on my fosstodon.org account:-
the difference between as:Notes and Replies, is as:Objects which as:Notes are is they have a **as:Object.inReplyTo** field that might be a copy of the whole instance of the original Note or just a URI to it. You can think of this as a normalization ;)
This scheme is then quite versatile AFAICS. We really need to map out as many of the different protocols semantic models. Forming and providing a path for this to be performed and getting the interests and confidence of different fediverse implementations will be key.
We can and look at how we can either align them isomorphically or work out how we can produce transformations to allow conversions between different implementations.
Regarding other Fediverse systems I have not really looked at this properly as of yet, we are already getting bridging and interop implmentations we can learn from. I think relay based systems like Lemmy and others, can be treated just like feeds simular to RSS would be treated for recieving posts by subscription and for sending can be based on posting to either to named relays or to the relay of the recipient. AFAICT as the actual message structure is so simple for Lemmy anyway, there is nothing complex about this. If we can look at systems and construct archetypes then we can form a general interop model. Something like ShuttleButt might be fun but I realize there is alos a lot of politics and real world issues around messaging across different networks and their communities that also have to be taken into account.
I have been looking at supporting communication between a Posts/Comments/[Nested Comments]/Likes type feed like NNTP or FaceBook and ActivityStreams. Technically AFAICS its a simple mapping very much like what NodeBB is doing nicely here, but what the users sees in the Fediverse using say Mastodon is a more disparate set of Notes (Posts / Toots) and their Replies (posts / Toots). Toot! which I use on my iPhone is nice as it forms threads of Notes and Replies. Clients are important !
Just a note, if anyone is wondering, that @julian and I have figured out why this topic didn't quite make it to threadiverse-wg@socialhub.activitypub.rocks even though that actor is following this category. A fix will be coming soon.