Standardizing on ActivityPub Groups

An interesting little tidbit came up yesterday in a conversation with a Pleroma dev who is considering using ‘audience’ specifically for group targeting, as this was in fact an example shown in the ActivityStreams vocabulary document; albeit one that preceded ActivityPub and some if its unique requirements.

As an unpopular person here who was previously driven away from this forum because of my posts on this very issue: I will stay out of any decision making on this subject. I will only mention that if the solution doesn’t support post authors that restrict comments to their own followers, as well as private groups, and allows distributed moderation, and works across both conversational as well as microblog platforms; I’ll probably provide support for your mechanism but I’m still going to keep what we have now because it works today and meets all of those requirements.

I would highly encourage folks to consider supporting ‘replyTo’ (which works exactly like reply-to in email) to solve a number of “conversation vs. microblog” issues which came up during development of this feature over ActivityPub; and mention that the details of our current implementation are provided in the zap (dev) FEDERATION.md document. The copy in the release branch is a month or two out of date and we’ve made significant progress on cross-platform compatibility during that time.

I have nothing more to say on the subject.

1 Like

Since there are a number of people interested now in aligning on Group impls, maybe this is the time to collectively start work on a design doc, before we have yet another 50+ comment inconclusive thread. And then - later on - possibly turn it into a FEP. There’s already a bunch of Requirements to be listed, and some design choices already made.

This may start with a wiki post here, or a HedgeDoc in public.cat, or directly with a FEP markdown + open issues.

2 Likes

Full ack.
I am proposing to start with a meeting, preferably in 2 days SAT or next FRI to kick it off.

About a collaborative doc: I organised a nextcloud running directly at https://cloud.w3c.social/ -
maybe we should eat our own food and use it for collaboration which can federate …

Since the waiting list of topics for Social CG is so huge now, it would be nice if we also write a
“Best practice for Client to Server” and talk about the supernice guides

I don’t see a signup button :thinking:

Yeah what I said yesterday:
image
Except we can’t really make a group until we’ve agreed upon and implemented at least a minimally compatible federation protocol… So meta, much wow.

The problem here is that this leaves us with two issues:

  • How does a group exercise its authority? How does it reject a post from a user that’s blocked in it? How does moderation work?
  • How does a group disseminate new posts to followers? Announce{Note} is a Mastodon-compatible way many use, there’s also Add{Note} which I’m pushing for as a universal “I hereby accept this object into my collection” activity. Replying to a group (or a photo album, or a collection) doesn’t provide an obvious, semantically sensible solution for this. Forwarding of LD-signed activities is nice but it’s best-effort kind of thing because of how hard LD-signatures are to implement correctly.

From a cryptographic standpoint, it should be possible to store membership in an accumulator, a fixed-length value that can track membership of any number of public keys (an implementation). To verify that you’re not dealing with an old state, there could be a revocation mechanism where admins of a group build a key revocation as they sign a new membership state.

How do you test this currently?

No, let’s not involve any additional cryptography here. It’s merely a problem of state synchronization, where the instance that the group is on contains the authoritative state. Remember: treat ActivityPub like an API, this makes reasoning about it a whole lot easier. Your Create{Note} is an API call where you ask the group to add a post to its wall, group’s Add{Note} is its API call to its followers to update their cached states.

Well, there’s a spec… And I have some test cases from Mastodon. Here’s a topic of mine where I discuss LD-signatures in detail:

Fact check: Unless something changed recently Pleroma does not use LD-Signatures. This was the whole reason for the litepub ActivityPub fork. LD signatures are tedious to implement but not necessarily difficult. The real problem with LD signatures is they rely on availability and consistency of centralised external resources in order to validate; and also apply to the entire activity, making it impossible to encapsulate signed objects within other signed objects.

2 Likes

Concerning the “centralised external resources”: To not depend on this we store the basic ones locally: https://github.com/friendica/friendica/tree/develop/static

Ditto. I’m mentioning it because then you need to stay on top of updates that you will have forgotten were a dependency five years from now. We’'re currently caching them with a TTL of a week and falling back if the fetch failed. Then the only thing we need to concern ourselves with is malicious edits or unintentional deletions upstream. There was an attempt to provide versioning of the main AS schema to solve the problem for that particular resource but I couldn’t get the versioned schema to validate at all. I think it was an upstream server configuration; which only underscores the problem instead of solving it.

I solved it by simply not doing any networking whatsoever in my JSON-LD processor. Either the corresponding schema for a URL is stored locally and I use it, or it doesn’t exist. There’s no third option.

1 Like

Me too. I’d be interested to join a discussion on standards process. RFCs, FEPs, re-implementable specs I’m all about.

FEPs go here and you can sign up there.

Can I strongly suggest that any Fediverse-wide group format take a cue from Twitter’s new group format - which they all Communities.
To
It requires users to join a group to interact or engage with the content, and if you aren’t a group member no group posts show up on anyone’s main feed… BUT no Twitter groups are private…there is no such thing as an unsearchable or invisible group or post in a group.

To my view, this transparency would make Fediverse groups far better than the cesspools of disinformation or worse that Facebook groups have become from day one of their existence.

2 Likes

So those of us that actually desire privacy and private spaces will have to leave the fediverse or create a parallel fediverse where these things are permitted?

Way ahead of you mate.

1 Like

As I’m following VK with my groups UX, there will be two kinds of groups in Smithereen:

  • Open. Searchable and joining is optional. All content is visible to everyone. You can interact regardless of membership status.
  • Closed. Without joining you only see metadata and the member list. You can send a request to join that must be approved by group admins. Once you’re a member, you can see and interact with everything.

VK also has third group type, “private”, which mostly pretends to not exist unless you’re a member, but that isn’t very possible to implement with ActivityPub.

What you want is basically closed groups. Maybe with automatic approval, but that would defeat the purpose of them being closed.

Hi Tim, thanks for following-up to the discussion. As all the posts in this thread indicate: everyone has their own requirements when it comes to implementing Groups. In the examples you gave you weigh how 2 applications implemented them (TW and FB), and prefer one to the other. As Mike says, reformulated: “my requirements are different, and Privacy is important in my use case”, and Gregory also has different use cases implemented.

As Fediverse is the ‘social fabric’ or interoperability infrastructure for any kind of application the challenge is:

Requirement: Find the simplest model that covers the broadest set of use cases.

I suggested above that we should start to document these in another manner than an ever growing discussion thread. I propose:

  1. We start with a wiki post and collect use cases, requirementes and other considerations.
  2. Once things are a bit structured, we can organize a meetup to discuss the ins and outs.
  3. Based on 1) and 2) we then begin the process to come to a good FEP document.

Unless there are objections I will create and pin the wiki post.


I would also like to ask your feedback on the conceptual model I outlined above, as I think it is very flexible in the way it allows arbitrary (and some standardized) relationship types to other actors. Is it too naive? Or is it too much of an extension with the additional relationships collection (so that following gets its original intention back)? Too complex to implement? I added some more background in the Community discussion here.

Re:Smithereen, just as an example… implemented are a very interesting set of Group features. But they are still very application-specific, and universal requirements and use cases should be further distilled. Consider:

  • Open / closed / (private) does not cut it. In my app I may define Open as read-only, or e.g. define a new state Public for that.
  • There’s the notion of ‘membership status’ or roles with currently I believe admin / mod / member privilege levels.
2 Likes

For what it’s worth we identify both the different group types and member roles as an extensible list of permissions. So your relationship with a group can take on any of over 65000 unique dimensions (currently). While it’s convenient to try and fit these into 7 or 8 named types+roles, permission discovery might prove to be more useful; as it most concisely encompasses both concepts. It’s easy enough to mock up in any case.

1 Like

Thank you, yes I agree with that. I was thinking the model at least needed some standard relationship types to have well-defined meaning and behavior when encountered. Other relationship types are then app or domain-specific and can be ignored when encountered.

Other than that I wonder if permissions and permission discovery mechanism - and some other common dimensions - should be another AP extension altogether. Separately defined and not tied to the Groups extension. So that all these extensions become like ‘micro building blocks’ that can be combined together or build on top of one another, to add some capability. For instance, for my own purposes I’d like to build on Groups and Permissions to enable Governance models.


Groups vs. Communities?

Something else I wanted to highlight. I find our overall approach to adding ‘Groups support’ to be overly technical. We look at adding as:Group in our individual apps in a standards-compliant way, rather than imagining how universal group support more broadly enriches the fediverse. This while we all recognize that empowering people and their social interactions is key. We strive to model real-world concepts and make them work online. And be innovative with that: Social networking reimagined.

I see my draft diagram not as ‘Groups support’, but rather as (the MVP of) a Community concept. In more technical terms it is a sub-domain. While I did not name my Community AP extension topic as such, I imagine it enables a paradigm shift for the Fediverse which I call “Community has no Boundary”. Not just the community is important, but the space between communities that allows them to interact. This is where the Fediverse shines. Our community model should break barriers between app / instance silo’s, and be more versatile than just offering follow and join capabilities.

Looking with this mindset shouldn’t mean that adding groups support suddenly becomes much more work, and we get stuck in ‘analysis paralysis’. It would allow us to lay the proper foundation to the paradigm shift, an MVP if you will, and maybe a maturity model to gradually expand on that. And I think it would be greatly inspirational to adopt this broader perspective.

In this Community extension post I already mentioned the work of Aldo de Moor, focusing on relationship types in his community vocabulary. But I highly recommend  reading the entire paper and imagine how the Fediverse could be supportive to realizing its goals.

And see also:

(PS. I tooted a link to this post in: Humane Tech Now: "I just wrote a plea on #SocialHub to think broade…" - Mastodon )

3 Likes

Please help me understand what actual deliverable or outcome you’re seeking. The fediverse has several implementations of groups and we do our best to make them compatible while allowing some to have a wider range of permissions and privacy features than those which see little or no value in these principles. Perhaps your personal favourite platform doesn’t provide groups natively today and can’t agree on how best to provide them and doesn’t like any of the existing implementations, but that’s a problem only that or those platforms can fix.

How do you actually propose reaching this magic space between communities? With a bill of rights? With an ontology? OK, so we let groups and sites (the other de facto organising principle for projects that don’t yet have groups) publish a taxonomy in their actor record to declare their affiliations and alliances and purpose. So, hashtags. Categories perhaps. And let people follow those hashtags and/or categories. And/or those sites. And/or those groups. Several projects already provide various combinations of the above as organising principles and tools. We’re actually very close to letting sites follow other sites which then implements all of them; and all of these organising principles can be as closed or open as the entity creators desire and you can pick and choose which organising principle or principles suits your individual needs.

But apparently this is not enough and we still don’t get it. Please help us get it. Tell us a story about what this fediverse of yours looks like and more precisely how it differs from the fediverse we have.

2 Likes

After reading the document per request, it seems the tipping point is the scaling fractality that is described in the text. This is something that we know from the Holo*-world, or which can be perceived by using one of these networked notebooks that offers backlinks and transclusion.

Another point that is made in the article is one about how in socio-technical design we cannot only perceive the technical environment alone through its implementation details, but also need to account for the actual use of knowledge epistemologies, and in a higher order ontologies, in the everyday.

This is to say, that existing categorisations, neither in hierarchic or flat namespaces, can often not replicate the actual intertwingularity of social processes. Whereas in a web of directly connected peers, supported by a and supporting the Creative Commons, pieces of knowledge (“epistems”) wander freely between domains.

I can say that, because I have been using the federated wiki for the greater part of the last decade, which employs a more “passive” type of federation. Other forms of interaction become possible, beyond the commonly known ones, beyond those replicated by the ActivityPub protocol family. Feel free to dig deeper into that rabbit hole, which can hardly be explained, and must be experienced:

What you are asking for is sometimes named inbetweenness in philosophical discourse:

This space, this “inbetweenness,” […] will then be governed by the laws of probability and uncertainty characterizing all unstable systems.
https://journals.ku.edu/jdtc/article/download/1785/1749/2113

We shall stop here, because that’s another rabbit hole to avoid for the moment.
If we allow ourselves to conceive the Web as an Atlas, an atlas of human knowledge and interaction, for example, the following words might apply as well:

An atlas (the Web) can connect space and time in new ways. An atlas (the Web) can articulate the coalescence and collision of local and global trajectories, described by the late Doreen Massey as ‘throwntogetherness’. Massey describes how different elements and trajectories – human, more-than-human, social, cultural and political – come together to define a here and now. In this understanding, space is not limited to specific areas or points on a map, instead it is produced by the encounter of multiple local and global trajectories which have also a temporal dimension.
https://www.mappingedges.org/projects/the-green-square-atlas-of-civic-ecologies/what-is-an-atlas/

I think it is this kind of random encounters, and greater-than-the-sum-of-its-parts experiences, that would render the space between communities, the space inhabited by “borderless” communities with semi-permeable membranes, into one beneficial to social plasticity. Ultimately realised through interaction, and recorded as data desiderates, before constraining our imaginaries with what is already there, this is what we morally will want to design (gestalten) our shared public space, the Web, for.

If we allow ourselves to consider the Web also as a place, than all theory around Third Spaces (Bhaba, Soja) also applies here:

The MDPI article also contains a paragraph about the nature of federation and asks:

Still, this organic process is haphazard at best. Unclear is how to more systematically boost such a self-organization process of a ‘federation of locals’ grounded in such a ‘relational epistemology’ and ‘scaling fractally’. How do we begin to realize these necessary but abstract goals at scale? This is where the literature gets fuzzy and few operational methods are offered.

Here we want to find new ways of mediating social interaction, in so unexpected forms of sociomes become possible. This is already part of establishing technical protocols. And understanding their implications and limits may help us to think around the box, to give way for the much larger, interdependent contexts of each community’s stories:

Given that communities all have their own interests, characteristics, culture, and language, how to make sense across their boundaries in order to explore and expand their common ground?

To pick up your earlier question regarding an actual proposal, let’s forget about this ontology thing and that mapping process for a moment, and focus on their hypotheses and offered pathways for resolution:

My intuition tells me an inferred proposal could be, that some kind of fuzzy search (recommendation algorithms, based on NLP and automatic classification of media?) will have a higher chance to open up “the space between” the spread (technically federated) but isolated (socially embedded) side-effects of digitally encoded social interaction, than explicitly modelled structured data, even if we’re talking about folksonomic approaches like tagging and social binning through categories/groups.

Please feel invited to recapitulate my summary and discuss the text further in its annotations

For a critical review and conversation around the paper, I have skimmed the Introduction and Conclusion and highlighted (to me) notable sections that make up the text’s core findings (for me):

1 Like