An instance is what is accessible via a domain. e.g. https://mastodon.social. regardless of scaling, operating system process, etc.
Introducing an “instance actor” for properties of an instance feels good to me. A bit like “eat your own dog food”.
if it has been specified what an “instance actor” is and what it can do, then the “single actor” of an instance can be the “instance actor” as soon as it fulfills the requirements of an "instance actor
I mostly agree, if you add the protocol and port to that definition. The definition of “origin” used for “same origin policies” could be a good guideline, but there are probably other possibilities.
I don’t know how that idiom applies here, but I prefer the principle of low coupling. One shouldn’t need to implement an “instance actor” to provide instance metadata. That said, I don’t think that was the primary purpose of this FEP, but it was mentioned as a potential use of instance actors so I suppose it’s relevant to discuss it in that context.
There are two requirements listed in the FEP for an “instance actor” (AKA application actor). The actor resource can be retrieved without authentication. Many servers implement that behavior for all actors so that’s not a problem (although it’s also doesn’t help much to define how an “instance actor” is different from other actors). The other requirement is that it has an Application type. I think many single actor instances are going to be Person actor types, so changing that to Application to also qualify as an instance actor is not going to be desirable. AP does technically allow both Person and Application to be specified as an actor type, but I suspect there would be interop problems with that approach.
A Fediverse Enhancement Proposal (FEP) is a document that provides information to the Fediverse community. The goal of a FEP is to improve interoperability and well-being of diverse services, applications and communities that form the Fediverse.
In a way, that’s unfortunate. On one hand, I have concerns about nodeinfo becoming required for federation when webfinger is already required. On the other, since “Application Actor” is not a well-defined concept, they and the extended nodeinfo support probably won’t become a general federation requirement and instead be an implementation-specific consideration.
I still believe we should have defined Application Actor better (requirements, behaviors, recommended practices) before, or in addition to, defining a discovery mechanism for a poorly-defined concept.
There has been some discussion about the definitions of Application and Service types in the SocialCG and guidance has been added to the AS2 primers. Of note is the guidance to Service instead of Application for server-level (or instance-level) actors and primarily use Application to represent client software (although the bot examples don’t seem consistent with this guidance).
If the SocialCG wants to hasten people forking the ActivityPub specification, this is exactly the type of move that leads to it. I’ll be refraining on further comments on their actions again for some time.
To clarify, the ActivityPub specification doesn’t refer to either Application or Service. This is an Activity Streams 2.0 topic although the primer discusses the implementation-specific use of those actor types in a server context (which may or may not be an AP server).
The FEP could side-step the issue by removing the requirement for the “Application Actor” to have an AS2 Application type. Instead, whatever actor is identified by the NodeInfo https://www.w3.org/ns/activitystreams#Application relation is the application actor, regardless of type (subject to AP inbox/outbox and other requirements, of course).
As an aside, I would like to see the webfinger of the instance’s own URL result in the appropriate response linking to the instance actor be standardised. e.g.,
The problem with this is: What if I want to use https://mastodon.social as the URI of the main actor for my single user instance? So me. I will want requests to this actor to require using signed requests.
Using your proposed webfinger approach makes this impossible.
I’m assuming you don’t mean Mastodon literally here since the Webfinger resolution in that context would require an “acct:” URI for the user actor. However, for another server implementation, would the following work (ignoring Mastodon interop for the moment)?
There’s a different here though, between you as a Person, @helge, and the server operating as your server. This is something that comes up time and again in RDF contexts, like whilst both represent you, both are not “you”. Even Person is not “you” strictly speaking, it’s just a representation of you. (this gets into the whole weird world of representing data about something vs representing something in the physical world.