3-Stage Standards Process: Guaranteeing an open and decentralized ecosystem

In the context I mentioned it would be how it is commonly done in Linked Data where e.g.

http://purl.org/goodrelations/v1#* namespace →
      http://www.heppnetz.de/ontologies/goodrelations/v1#* html specification docs

And for FEP’s, see FEP-888d: Using w3id.org/fep as a namespace for extension terms and for FEP documents (where I’ll have an issue with the non-descriptiveness of the namespace, that I will comment about on that thread).


Update: I added feedback on fep-888d regarding regarding descriptiveness and intuitive naming of namespaces and namespace prefixes. Two observations in the reply are relevant to copy here:

:point_right: A FEP is a formal specification of a functional building block for the creation of interoperable apps.

:point_right: Interoperability on the Fediverse is not about apps, but on finding common denominators where compliance exists.

1 Like

I think possibly the existence of a useful test-suite mitigates some or all of these concerns. It’s clear that the fediverse has evolved in the last 7 years. If it can evolve along with documentation and tested running code, then rather than a fork its showing what exists in reality and how developers can implement things and have confidence that the will interoperate with others that run the test suite. Phase (3) of the 3-step process would be some periodic publishing of this at the W3C.

1 Like

:point_right: We MUST get clarity on all the different Fediverse-related concepts and their relationships.

What is our own Domain?

In the portal content thread @helge quotes from my toot about having a Glossary. We NEED a glossary.

But we need more than that.

Somewhere in any fedi project and before or in parallel to deep-diving in tech issues, fedi developers are inevitably involved in doing some form of Domain-driven Strategic Design. Whether they do that explicitly or (in most cases) implicitly without being aware they do it.

DDD Strategic Design simply means figuring out which abstractions you are going to code, and what names to give them. You need to learn about the domain to do so. Gain enough expertise to code the right things.

:point_right:  Currently we do NOT know enough about our own domain to create good standards and process.

Ubiquitous language

In DDD terms the word for Glossary is Ubiquitous Language (UL):

Ubiquitous Language is the terminology that all stakeholders agree to use consistently when referring to concepts of a particular domain so that there is a common understanding of the domain.

Or in a picture that looks like this:

All stakeholders, code, specs and other resources use the same terminology
(source: infoq: ddd context mapping)

In the UL we should answer “What is an Extension?”, “What is a Vocabulary?”, “Are these proper namings, or should we rename?”, “What is the complete set of terminology we use?”.

Concept map

Having the UL, the Glossary, we should go further and figure out the relationships between the terms. And these might be diagrammed in a Concept Map. This concept map explains concept maps:

Concept maps are 2-dimensional diagrams of concepts and the relationships between them
(source: askopinion.com)

All kinds of assertions can be listed this way about AS/AP and trigger discussion to improve the domain model. For instance if I’d just brainstormingly gave a kick-off of this exercise, I might type stuff like:

  • A Pluggable Protocol can_have Protocol Extensions
  • ActivityPub is_a Pluggable Protocol
  • A Protocol Extension is_defined_by an Extension Specification
  • An Extension Specification defines Message Formats
  • An Extension Specification defines Message Exchange Patterns
  • An Extension Specification provides a machine-readable Message Context
  • etcetera

(Note: Don’t worry, just example. Consensus on our UL is a collective effort :slight_smile: )
(Note: Interestingly the UL when written out forms triples à la Linked Data :wink: )

Domain modeling the Fediverse

The usefulness of DDD Strategic Design goes further than use for our own domain. If you are some developer creating an eCommerce app, or a Cooking Recipes app, or a Bike Rental app, then:

  • You must model those domains in your code.
  • You must find correspondence to other domains you want to interoperate with.
  • That correspondence affects your AP extension design (vocabs, behavior to take into account).

So you might immediately do that on a technical level and code LD message formats in your project. Or you might do it with pen and paper on a napkin using DDD and create a good design with much less effort.

Bounded contexts

AP extensions are the techical representation of a Bounded Context in DDD. This is best demonstrated by another diagram:

A Banking context relating to an Expense Tracking context, and both providing different definition of a BankingAccount
(source: infoq: ddd context mapping)

In this example the BankingAccount has different behavior (message exchange pattern) depending on the bounded context. One context might be implemented as a federated Banking app in one project, and the other a federated Expense Tracking app provided by a completely independent group of developers.

2 Likes

FYI Robert W. Gehl wrote another great post on the emergence of the AP et al standards in preparation for his book Move Slowly and Build Bridges. Announced in this toot:

2 Likes

I have objected to the W3C proposal Living Spec Editors Draft in my mailing list post here.

Instead, I prefer this process outlined by @aschrijver as it ensures far greater open source diversity and inclusion.

IMHO, a living spec belongs in the socialhub/codeberg/FEP area.

Additional concern is the attempt to railroad this through in 1 week.

The Editors will be adding the proposed Errata text to the Errata document after a week

One week is too short a review period, IMO.

1 Like

Let’s try some constructive comments on this to improve the fep process.

What we have here is a classic activism 3 steps forward 3 steps back process, this is a recurring issue.

As @aschrijver outlines the ideas behind this are good, the outcome is questionable, and the process still needs work.

There is a current undeclared fight in the FEP → W3C email list, that is likely unresolvable which is a fine example of the fluffy spiky debate, the only good outcome from my prospective and likely socialhub is making the fep more Legitimacy (political) - Wikipedia this is a post with ideas for process to help that happen.


To be a valid fep they should have a non-technical (social) explanation on why it’s needed and what are the social implications of this purely technical change.

As we are NOT only talking about technical points here, most are based on social ideas and have social outcomes for social networking. We need this wider buy in to make this process legitimate.

This process is simple and can be started by the original poster, then carried on by the wider community to build buy in and legitimacy.


Currently, both the fep and the W3C are too much black boxes to have any path to build buy in, thus are being ignored defacto.

This will likely continue without some basic activism as outlined above, the is much to learn from this long history of affective activism :slight_smile:

First some general points:

  • We do not deal with an “activism process” here. This thread is scoped purely to a “technology standardization process”.

  • There are discussions on SocialCG mailing list and here on how this process can be shaped, but characterizing this as an “undeclared fight” is inaccurate. People are thinking about improvements in the way we all collaborate. That can’t be to everyone’s satisfaction, so there will be some concessions and people that’ll have to accomodate.

  • The FEP’s “legitimacy” comes from how the process allows anyone to create FEP’s on any Fediverse-related subject. All that the FEP editor team does is ensure that minimum requirements outlined in the lean FEP process are met. It is the responsibility of the FEP authors to gain social/community ‘buy-in’ as they are brought to FINAL status.

  • FEP’s have no autoritative powers. They are merely recommendations and provide guidance for specific technical matters that are encountered when building federated software. Anyone in the ecosystem is free to either adopt them or not. So FEP’s are good-practices / best-practices at best.

  • Where FEP’s see popular use and uptake, in the proposed 3-stage standardization process, they become candidates for the W3C SocialCG to be picked up for closer examination. This may lead to the creation of W3C Notes or even adoption in next versions of protocol standards. If that happens the FEP will likely be SUPERCEDED and point to the W3C artifact that replaces it.

  • The FEP and W3C are only “black boxes” in the sense that they are figuring out collaborative processes, and can make those more easily discoverable. When it comes to SocialHub one way to do so for instance is by revamping the ActivityPub Rocks Portal. W3C has its own processes. Everything happens in public with full transparency.

This may be a good idea, though it is not really on the topic of this thread. FEP-a4ed: The Fediverse Enhancement Proposal Process is where the discussion is on-topic.

Nonetheless I think it may be good to document “Externalities” of a FEP, so that implementers become aware of them. One big disadvantage is the additional friction it adds to FEP authors. There’s already a barrier to writing a FEP, where many developers just skip the effort. The social implications of the technology they build is also discussed at length throughout the decentralized Fediverse on an app-by-app basis. And that is where people are actually affected by the particular technology implementation. So, I would prioritize the idea as a Nice-to-Have, and only when the FEP Process itself reaches more maturity and uptake.


Lastly…

You view everything on this forum from a perspective of “activism” and try desperately to enforce your activist framework onto this community. Many times before members have indicated they have no affinity with your methods, and by still pushing them you are not doing this community any good. In this light you should see the current Well-being procedure started by the @well-being team. Your comment above proves you can engage in fruitful substantive discussion.

In times when this forum was less active, queries to the member base led to conclusion that SocialHub currently works best as “just-a-forum” + “do-ocracy”. Here are some of these previous discussion topics:

While we can aspire to be more than that (and this topic is part of that effort), the SocialHub being a body that is purely scoped to the technical aspects of the Fediverse ecosystem is fine as well. As mentioned above deep social and cultural aspects are discussed at length everywhere. That’s decentralized discussion, from where the Fediverse emerges organically from grassroots movement.

From that perspective I am totally fine with the purely technical scope on this forum. If you want to shape your activism, you are advised to do it elsewhere where it is more appropriate than here.

5 Likes

"A river that needs crossing political and tech – On the political side, there is arrogance and ignorance, on the geek side there is naivety and over complexity

All code is ideology solidified into action – most contemporary code is capitalism, this is hardly a surprise if you think about this for a moment. Yes you can try and act on any ideology on top of this code but the outcome and assumptions are preprogramed… cant find any good links on this."

This is obviously untrue and the subject of the post, if you keep blindly repeating this as you do then I am going to start to treat this as bad faith.

Am I finding it hard to work with these “personalized” messy posts.

The Fediverse openweb is obviously activism - a term for all the protests, social movement, #FOSS social tech going on all the time that have made it possible for all the civil rights that are “common sense” to the readers of these posts, it’s not something “owned” or controlled by an individual on this forum. To keep trying to treat activism like this is childish and unhelpful, it does nothing to further these conversations. I have asked you for the last few years not to do this. I ask agen, please stop with this personalization of every general concept, it’s irrelevant and unhelpful.

Back to the subject of the post:

That’s a point of view, fluffy vs spiky, it’s fine, though from my expirence it’s about closing down conversation not useful for any positive outcome.

NOTE the post you are replying to is not about any of this, it’s about building Legitimacy in a space that is lacking Legitimacy (political) - Wikipedia so you are thus arguing for not doing this I think, how is this positive?

For someone to think the post they are replying to has anything to do with this is troubling, I don’t think any of us won’t this, and we should not be adding FUD on subjects like this. On a positive note, let’s just presume you are stating what we know for the rest.

It’s on topic.

This is an unhelpful point of view that technology is neutral, it’s not, the on subject “black box” problem in the post replying to “fep proces guaranteeing an open and decentralized ecosystem”

This part is irrelevant as it’s off subject, will reply on the hidden post.

So, with big parties making entry to the Fediverse, things are accelerating significantly. Without going into the particulars we all know from the ways that big corporations conduct business, as well their involvement in standards processes, that this holds risks to the particular ecosystem of the Fediverse.

Until now we are in the rather unique situation where the Commons, a grassroots movement, managed to create open standards and a thriving ecosystem. Through many years of slow evolution it has led to formation of a unique culture, values and an ‘early-web’ kind of vibe.

All that is now on the line, unless we manage and mitigate the risks involved with mainstreaming of the Fediverse, and ongoing trend of corporate entries and big players carving out their niche.

I proposed this idea for a 3-stage bottom-up Standards Process about 3 months ago, as a means to guarantee an open ecosystem. Many positive reactions I’ve since received, including yours above, @codenamedmitri.

:point_right:  How do we give this proposal further arms and legs?

My own position on the Fediverse is explicitly focused on the SocialHub dev community and advocacy towards the ecosystem. As such I am deliberately not involving myself with W3C SocialCG for the most part. If the 3-stage process works, people shouldn’t be member of SocialCG and still be able to see their contributions to the Fediverse permeate upwards through Ecosystem → FEP/SocialHub → W3C CG/WG.

The SocialCG page mentions:

Discussions and meeting announcements happen on the SocialHub forum or on project-specific version control repositories.

If we have an integrated 3-stage Standards Process, this proposal here should be enough to get back a “Proposal acknowledged. This is an agenda item of the SocialCG” and efffectively delegate that decision-making.

And if approved, then the 3-stage process should be made real, i.e. integrating/interfacing, removing overlap, formalizing/documenting the relationships.


Lastly, tangentially related, I want to give a shout out to @j12t :clap: It is laudable how you took the time to inform the community, as far as restrictions allowed, on the meeting organized 8 December by Meta. Thank you! I saw a toot thread this morning by Jason Velazquez how such meetings can be part of deliberate Divide and Rule strategy.

I’ll quote for the Nth time the following:

“Any decentralized [ecosystem] requires a centralized substrate, and the more decentralized the approach is the more important it is that you can count on the underlying system.”

— Byrne Hobart. The Promise and Paradox of Decentralization

“Substrate formation” (organizing people and processes) in our grassroots ecosystem is more important than ever. The individualism and focus only on own projects led to organic evolution that was likely important factor to the unique culture we fostered and gave some resilience too. But right now if people don’t step up and collaborate beyond their own initiative, then a corporate takeover is a given.

5 Likes

In reaction to @stevebate’s concern about coupling between the SocialHub, I clarified that SocialHub is only facilating the FEP Process, and that - though we create a discussion topic for each FEP in this forum by default - people are free to choose other channels and have the tracking issue in the FEP repo, to make those known.

Wrt the Standards Process it is important to mention that IMHO the SocialHub should not claim any authoritative role, just being the FEP facilitator, and otherwise be just another nice dev community themed “ActivityPub/Fediverse et al” in the decentralized ecosystem. Put that in this toot to Steve and @eprodrom:

@steve @evan

I feel that it is important that #SocialHub does not assert authority. As a dev community on #ActivityPub it should be an attractive place to be part of and interact with others. That’s all. So it is just one hub in the decentralized ecosystem.

We seek collab with other communities, and have a liaison with the #SocialCG.

We facilitate the #FEP Process, but the process itself stands on its own.

So parentheses in 3-stage Standards Process: Ecosystem → FEP (SocialHub) → W3C.

Update: And also followed-up at SocialCG mailing list, on the same subject.

1 Like

re: forks, could you somehow collect and group forks more easily, and maybe sort by activity? so if folks join the socialhub they get to bring in their forks and you keep a page that automatically fetches the forks every now and then to infer activity levels, in a manner similar to github’s “network graph”, i.e. Network Graph · mastodon/mastodon · GitHub but opt-in, and maybe without so much visual clutter (is a full-on timeline view actually desirable?).

Could you be more specific. Are you referring to forks of the FEP repo? If this isn’t directly on the Standards Process, we best make it a separate topic (and I’ll move our posts to it).

I gave some further clarification on SocialCG mailing list to emphasize that SocialHub is in no way a “gatekeeper” in this proposed Standars Process.

someone mentioned “forking is confusing to developers” but we think we could have a highly forkable AS2 spec if we had some rough consensus mechanism, and “sorting forks by how active they are” might be a good start?

just make up a process that automatically discovers the one that most use. (whether “in active development” is a good proxy for that… who knows?)

1 Like

I thought Id repeat here my answer to Steve:

Personally I resent the need to interact with GitHubs world (and by symmetry empathize with others needing keys to numerous other git forges to participate).

I consider it a positive thing that SocialHub emerged and would like to think that things intersect in nicer ways than the silos which repos can easily become.

Also, I dont think there is a need to be dependent on SH but would encourage cross posting (working across fediverse tools and instances is the pinnacle).

1 Like

Ah, thank you. I am not aware of any true spec forks in existence right now, nor plans to create them. and I agree with @eprodrom that they are confusing and generally undesirable. However, there is an enormous flexibility in interpreting the current specs and making implementations that aren’t really (or are really not) interoperable. That is a huge issue to tackle within the boundaries of current specs, and people are having many discussions and explorations on how to do so.

Some fabulous work I am aware of is FeatherPub by @hrefna, which - I must explicitly add - is NOT a fork, but an exploration of many of the implications and complexities for implementers that aren’t immediately obvious from the specification text, and offering a generalized solution that fits a large chunk of current fedi communications. See the draft docs for more info, Developing FeatherPub and FeatherPub Data Model. And I recommend following @hrefna@hachiderm.io to learn about rationale for the choices made and to give feedback.

And also @stevebate is doing similar explorations, very interested in true Linked Data supporting implementations and making those easier for other devs. Steve explored a ActivityPub Minimum Core as a foundation for writing interoperable AS/AP apps. I believe that such a core - which is an artifact that accompanies the full W3C spec - together with good guidance on writing extensions would come a long way to seeing a heterogenous Fediverse come about. Heterogenous meaning going well beyond Microblogging-shaped interop and having many different app types and services as building blocks of our social fabric. There was much discussion on this idea, see also: Initiative: ActivityPub "Step On Board" Integration Guide

Linked Data comes with its own issues wrt complexity, ecosystem support and uptake/adoption. In that light another discussion that took place was whether - without breaking backward/forward-compat - we might emphasize the JSON-first interpretation of the spec going forwards and position the Linked Data support as something extra for those devs who want to go the extra mile. This might allow maturing the LD trajectory separately, until it may become the default again in the future, and not turn off JSON-first devs who don’t see merit, or “don’t dig” this approach at all. See: ActivityPub: A Linked Data spec or JSON spec with Linked Data profile?

Further work to look at is by @helge on Bovine and personal codeberg account, where you’ll find a lot of small experiments (also see Steve’s Github account for this). Both @helge and @j12t received funding by NLnet independently to work on test suites, which is something direly needed in the ecosystem. @stevebate also did some good work here.

There’s much other cool work going on. I maintain 3 fediverse-related curated lists at Delightful Club and hope that in 2024 we’ll relaunch the ActivityPub Rocks Developer Portal with a large directory of other places to check out on the Grassroots Fediverse.

Lastly my recommendation on people who want to fork the specs:

  • Strongly discourage them, and encourage to explore within the spec’s flexibilities. That’ll help general interop most of all.
  • If they really want to fork, then a true fork it shall be. It is NOT part of this Standards Process proposed in this thread and on SocialCG mailing list.
3 Likes

Yes, we mentioned a possible mirroring from Github to Codeberg (ideally there’d be forge federation that synched 2-way interaction, but for GH that doesn’t seem close at hand yet. But ForgeFlux by @realaravinth comes to mind, which is based on ForgeFed ).

In theory the SocialCG might choose to have Codeberg or a self-hosted forge as their default home (and e.g. mirror to Github from there), but I leave that entirely to the SocialCG to decide. You might propose this on the mailing list. CC @codenamedmitri

Talking mailing list… another thing that might be quite attractive imho, esp. in light of this Standards Process proposal is a 2-way sync of the SocialCG mailing list to a category on this forum, and - via @angus Discourse AP integration - make it Fediverse-enabled. CC @codenamedmitri, @how

Both these ideas would serve to significantly lower tool barriers and fragmentation.

2 Likes

Cross-referencing a fedi discussion started by @hrefna about a conceptual ‘boids’ model, and similarities I feel that has to DDD strategic design (i.e. bounded contexts ~~> boids).

Further clarifying 3-stage Standards Process

In FEP Process - Clarity on positioning: open and inclusive - #8 I collected feedback on the FEP process. The way I picture the FEP Process’ role as the 2nd-stage in a 3-stage standards process is:

  • Just one way how things from the ecosystem permeate bottom-up to further standardization.
    • The FEP process need not be used. Entirely optional.
    • Ecosystem can directly participate with W3C.
    • Ecosystem can define their own practices & standards (think e.g. ForgeFed)
  • FEP’s can be:
    • informative (ideas, good practices)
    • specialized (domain-specific)
    • recommended practices (when well-defined, tested, implemented)
  • FEP’s are a handy way to:
    • inform the decentralized ecosystem (“where I can find common/popular ways of doing things”)
    • inform the W3C on what to cherry-pick for further adoption (likely recommended practices)
  • SocialHub merely facilitates. SocialHub is just a community, part of the ecosystem.
    • Task of FEP editors is to minimize gatekeeping.
    • Editors are responsible for process, not content.
  • SocialHub liaisons with W3C.
    • Bottom-up. How can we help W3C evolve the standards? Inform by the FEP + discussions.
    • Top-down. How can we help W3C open standards adoption? Follow-up to W3C activity.

All this depicted in the following diagram:

(Note: Excalidraw diagram definition is included, picture can be opened/edited in the UI)


@codenamedmitri @eprodrom your feedback would be much appreciated from the perspective of W3C.

4 Likes