Is there a conventional way for an AP client or server to indicate which FEPs or other extensions it’s using?
What I’d really like from this is to be able to track and generate metrics on this for servers. I think that would help developers to understand and prioritize how we can improve interoperability.
Interesting idea. As far as I know, few or no servers are publishing this kind of metadata. I think it could be represented in nodeinfo
metadata. Some form of nodeinfo information is already published by most servers. The
metadata property in nodeinfo is a catch-all key/value representation so we might need an FEP to standardize how FEP extension usage is represented (one key per FEP, one key with a list of FEPs, etc.).
That would be a good start. I was also hoping for something at the level of federated messages, so we could track which extensions are in actual use. To take embedded quotes as an example, if would be nice to know both how many servers understand them, and also how many servers are sending them, and how often.
The proposed method for documenting federation behaviour is FEDERATION.md file. I think it’s a great place for listing supported FEPs.
NodeInfo is also an option, although some instances prefer to hide NodeInfo data out of privacy and security concerns.
I have a vague idea on how to do this based on fediverse-features. Basically:
- There exists a feature per fep in that repository
- An implementation can provide “something” to run said feature
Point 1. does not present any technical hurdles, except educating people that BDD and Gherkin are the best thing ever. I haven’t made up my mind on exactly how to do
Point 2. My vision is something like sharing docker images (or a similar technology). I will probably need to build a prototype before making any claims on how it should work. The problem with wrapping tests in a docker image that is then run by a runner is that it feels like wrapping a small present in a medium present in a large present. I would prefer something with less layers of obfuscation.