Implemented FEP type?

In #291 - FEP-a4ed: Add types - fediverse/fep - Codeberg.org the types

  • Informational documents "informational"
  • Implementation proposals "implementation"

were introduced.

Proposal

I hereby propose adding a new type:

  • Implemented proposal implemented

to be of this type, the FEP needs to contain a section titled Implementations containing a list of at least 1 Fediverse application.

Example: fep/fep/f1d5/fep-f1d5.md at main - fediverse/fep - Codeberg.org

With the list at fep/fep/f1d5/fep-f1d5.md at main - fediverse/fep - Codeberg.org containing 18 implementations.

Reasoning

This is testable: So one can write a CI script ensuring that only FEPs satisfying the above can be merged.

This allows us to standardize the implementations section enabling building tooling. This means that one can actually provide a count of implementations (according to the FEP) and thus separate FEPs with wide adoption from unused ones.

Further Steps

One can also imagine a testable type corresponding to a Test Suite section.

3 Likes

This is roughly the idea I had when I proposed the implementation type (category).
Proposals with this type are supposed to have the ā€œImplementationsā€ section. This is not a requirement yet, but we can add it to FEP-a4ed.

type == implementation and count(implementations) > 0 would be equivalent to type == implemented

1 Like

Works for me. The following 24 FEPs currently have an implementation section. Not all contain a list of implementations … so one would need to work a bit to standardize this. However, separating out these + the meta FEPs would probably make the FEP index more readable.

Lists are easy to parse. We can count lines starting with - and * and ignore other lines. ā€œNone so farā€ and other comments won’t be counted.

We could also introduce a metadata field like implementationCount, but people will often forget to update it. I think it’s important to make counting automatic.

:+1:

In case anybody is wondering about the current count:

1 Like

FEP-f1d5 is not included in the current list of counts. I’d be surprised if the actual count isn’t more like 50+.

FEP-67ff is missing implementations (this will be a common problem for implementation counting in general) and includes some non-Fediverse implementations like Disaspora and Matrix.

I think this is a problematic goal for several reasons. What is ā€œwide adoptionā€? Number of implementations (including those that are abandoned and/or unused)? Number of users on instances of those implementations? Something else?

In general, it will be difficult to know if an FEP is unused. An FEP author may neglect to add the required section title to their FEP (like in FEP-f1d5) and implementors will not always notify an FEP author to update their FEP content (or maybe the author is no longer interested in updating it).

Putting emphasis on a noisy and possibly inaccurate implementation count metric may give the impression that innovative new FEPs with no implementations (yet) have been effectively rejected by the developer community.

I think it’s can be useful, for general information, to know which implementations have implemented an FEP. However, I’d be concerned if they are officially used to generate ā€œadoptionā€ metrics or to organize the FEPs into categories.


Although it doesn’t fix some of the issues I’ve raised, here’s another potential approach for implementation tracking.

  • Maintain implementation metadata separately from the FEP content.
  • Have projects register their project metadata (an FEP repo file (or files) with project metadata, like the name, nodeinfo identifier (if any), repository URL, maintainer emails, …).
  • These projects would be required to have a FEDERATION.md file.
  • Use a periodic repo action to retrieve the FEDERATION.md files and parse the Supported FEP section to update the implementation metadata file.

The benefit of this approach is that it is mostly automated and self-maintaining (other than merging new project metadata). The side-benefit is that it serves as a kind of FEP-related project registry that can be used for a wide variety of purposes (HTML generation, metric calculation, etc.).

2 Likes

Number of implementations is the best metric. It shows that independent developers not only agreed with the idea, but also put effort into implementing it. Abandoned and unused implementations also matter, for this reason.
Number of users is also interesting, but harder to do, and they all might be on a single implementation.

Implementation counting will motivate authors to monitor implementations.

Authors could do the first implementation, increasing the count from 0 to 1.
If no one wants to implement the FEP (even the author), this is a good sign that proposal is low quality.

1 Like

It seems like your mind is made up. I hope it works like you believe it will.

1 Like

See

https://helge.codeberg.page/fep/

for a first version of how further subdividing feps might look like. Currently it’s only by status. I’ll probably divide the DRAFT page by type.

Then add an implementation count …

cc @wakest

2 Likes

As there are currently seven final feps, I don’t think investing further time into organizing them is necessary. we can revisit the question when we have like 20 final feps.

So the focus should be on what we want this page to look like.

I like the design! Possible improvements:

See: As there are currently seven final feps, I don’t think investing further time into organizing them is necessary. we can revisit the question when we have like 20 final feps.

I think our focus should be on encouraging FEPs to become FINAL.

1 Like

This could also be used to resolve

See FEP-a4ed: Thoughts on versioning - #7 by aschrijver

However, implementing a full markdown rendering is a bit scope heavy.

1 Like

Does someone have a logo for FEP?

The repository currently uses the standard fediverse logo https://codeberg.org/repo-avatars/28250-3aeae3ea159b5c8fc690746e003c00e5

I like fediverse symbol ⁂ more, though.

Using that for now. Maybe, we should have a discussion / vote about the logo to use at one point.

Fediverse Enhancement Proposals has been updated. New features are:

  • use material for mkdocs to do the markdown → html transformation
  • remove discussions when equal tracking issue
  • add sortable rows
  • remove unused columns / change names as suggested above

One can probably use material for mkdocs to build an equivalent rendering to codeberg for markdown.

Remaining tasks; Contributions welcome

  • Render FEPs. This requires configuring mkdocs to material to be feature equivalent to the codeberg renderer. This is probably complicated. So making progress and identifying problems is a big contribution.
  • Add miscellaneous pages, e.g. ā€œHow to submit a FEPā€
2 Likes

Specifying a list of supported markdown features would also necessary if we want to offer something like a WYSIWYG editor for FEP.

See e.g. Using Plugins | Milkdown and Plugin Diagram | Milkdown

Maybe somebody could create a markdown feature test page? E.g. a diagram of Alice talking to Bob and other features you like. A suggested Markdown usage for FEP would make a good meta FEP.

I don’t find the asterism a strong symbol for this purpose. On first impression I see snowflakes, and if I remind myself that the asterisks represent people (or nodes, instances, actors?) then I see 3 individuals.

The current logo of the FEP repo is most commonly accepted still to represent the Fediverse. It is a strong brand for that. But it is arguably not the best fit for the FEP repo. Yes, FEP’s relate to Fediverse, but they enhance the ActivityPub et al protocol suite. Also ā€œFediverseā€ is a more fluffy, vague concept than the AS/AP open standards are.

Hence maybe using the ActivityPub logo is more appropriate. This would also show the affiliation to SocialHub as custodian of the FEP process, as well as the liaison to the W3C where the official specs are evolved.

Note that the purpose of the logo change should be that it provides strongest brand image for the FEP process, in order to in turn increase awareness of the FEP as an official party in the 3-stage bottom-up standardization process, and to gain any kind of adoption for new functionality one requires. That does not necessarily correspond to what fedizens in general find the most appealing logo wrt this thing called ā€œFediverseā€.

1 Like

Hubzilla already supports Markdown, although it does not support certain things like mermaid
sequenceDiagram. (Although it could if someone wanted to add it.)

Here is an example of an FEP rendered in Hubzilla using Markdown. We can change the theme or alter the CSS, if desired.

https://magicsignon.org/page/openwebauth/fep

We can also create an addon that renders the FEPs instead of using the native Webpages or Wiki functionality like the example above.

If we create an addon, one way to do it is to clone the FEP repo on a Hubzilla server, and then just have the Hubzilla addon fetch the md files and render it. Any time you want to update the website, we just get the current copy from the repo, which could be automated.

This is how I planned on doing it before I found out you all had the same idea.

1 Like

I am fine with both variants.

No, FEPs are Fediverse Enhancement Proposals. Not all of them are about enhancing ActivityPub, some are about extending NodeInfo and WebFinger, others are related to Zot/Nomad networks.

Maybe a little bit, but almost everyone knows what it means. There were attempts to associate certain centralized silos with Fediverse in the past, but they failed. I don’t think re-branding is necessary.

FEP is not a party in any standardization process. I remember that you discussed the idea of using FEPs as inputs for other processes, but this is not happening yet, and even if happens in the future, that won’t change anything about the FEP process, because it is independent from other efforts.