In various channels where the Standards Process is discussed there’s mention of a 2-stage structure that goes like: FEP → W3C.
As I proposed many times before (like here, and here, and here, and implied here) I do NOT think that that is sufficient. Simply because it doesn’t match current reality, and will also not correspond to the future that we are able to shape.
On a technical level the Fediverse is decentralized (federated, and in future possibly hybrid p2p + federated), and we all agree that this is major important. Equally important is the realization that the grassroots evolution of the Fediverse by people expanding and improving it, is equally decentralized: The Fediverse consists of countless independent initiatives. This is the social perspective and a reality we SHOULD take into account.
In any case what we want to establish is:
The current FEP Process is on a good path to gain more traction, but it DOES NOT yet offer the guarantee above. Currently it is positioned to do everything but the kitchen sink: you must write your FEP with us, does not take decentralized communities and devhubs into account.
In order to do so I feel the Standards Process MUST be 3-stage. Reversing the steps as I listed them before, that then boils down to:
- AP extensions (msg formats + behaviors for particular use cases) emerge/evolve in-the-wild.
- FEP / SocialHub provide a pathway to further standardization and broader adoption.
- FEP makes AP extensions discoverable, may offer an NPM-like registry for that.
- FEP Process offers a more formal standards track, similar to what exists now.
- W3C standards track goes a step further, up to any formal W3C deliverable.
- SocialCG and/or WG are in charge. Outcome can be a Wiki page, Note, Recommendation, etc.
Step 1) is the first guarantee that the Fediverse remains a decentralized and open ecosystem not only in a technical sense, but people evolving it for their own areas of interest. Step 2) is open to anyone’s participation, in line with this guarantee.
Transitioning from step 1) to step 2) hinges on a good extensibility mechanism and guidance to adhere to it.
Copied from FediDevs chat. Elaborating a bit on the 3 stage process above…
- Someone defines namespace Foo for use in their project.
- It may be just code in their codebase initially, like in current fedi
- Spec of formats, behavior is created according to best practice guidelines
- Foo may be published to one or more namespace/spec registries (compare: apt)
- Foo matures, evolves, gains popular uptake
- Foo may become managed by some community/devhub who fosters it for all its use cases
- Foo graduates to become part of the FEP process
- There’s a formal process now, and a range of quality criteria
- Initiator (project/community/devhub) has authorship and commitment to bring to FINAL
- FEP teams only facilitate, any fedizen can see their voice be heard by participating
- Foo has gained such adoption, it is candidate to for the W3C standards track
- Foo is taken into SocialCG and/or WG processes, outcome may be any W3C deliverable.