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