Hey, sorry for the late reply, I was expecting an e-mail notification of replies, which never came., then someone else pinged me about this. AnywayâŠ
If this proposal is mostly about the Mastodon API, shouldnât the operations
map be part of it and not NodeInfo?
The Mastodon API â more accurately, the set of all API methods offered by all past and future versions of Mastodon and similar software (Misskey, Pleroma, Friendica, GoToSocial, etc) â is the motivation for the proposal, because Iâm working on a client that needs to implement that.
A previous iteration of the proposal did as you suggested.
But then I realised that the proposal also works â I think â for client/server developers of software that isnât in the micro-blog niche. For example, Lemmy and Mbin, or Mobilizon.
Developers of those services could adopt this proposal within their own APIs (e.g., Lemmyâs /site
API call), but since Nodeinfo is right there, it seemed sensible to use it.
Nodeinfo is also server agnostic; a client can fetch the nodeinfo data without needing to know the server software. This is good for UX, as it means the user does not need to be asked to provide that information, and the client does not need to try different server-specific API endpoints to figure out what itâs talking to.
The primary purpose of NodeInfo is exposing server stats
Thatâs not obvious from things like http://nodeinfo.diaspora.software/, which says:
NodeInfo is an effort to create a standardized way of exposing metadata about a server running one of the distributed social networks. The two key goals are being able to get better insights into the user base of distributed social networking and the ability to build tools that allow users to choose the best-fitting software and server for their needs.
(emphasis added)
As noted in the proposal, this doesnât need to be a top-level property in nodeinfo, it could also be a property under the existing metadata
property.
that would save a HTTP request
I donât think thatâs a concern, given the volume of requests a client typically needs to make (many of which likely involve hitting a backend database). This is a single, small, highly cacheable request/response.
You also mention ActivityPub extensions, but I think any kind of capability negotiation is bad for federation and should be discouraged. Furthermore, extensions are already identified by URIs, reverse FQDN naming is not appropriate for that use case.
Iâm entirely agnostic on the wisdom of ActivityPub extensions as a whole, as someone who works on the client side Iâm not really qualified to comment on them further. If they do turn out to be useful this proposal provides a mechanism for them, but thatâs very secondary to the main aim of this proposal.
Changing the proposal to use IRIs instead of reverse-FQDN is certainly possible, and might be desirable. The benefits of consistency with other protocols that server developers have to implement might outweigh the case-sensitivity concerns I note in the proposal.
Strong community feedback on that point would be very helpful.