w3c / activitystreams

Activity Streams 2.0
https://www.w3.org/TR/activitystreams-core/
Other
285 stars 60 forks source link

Clarify the definitions of Application and Service types #563

Open trwnh opened 11 months ago

trwnh commented 11 months ago

Please Indicate One:

Please Describe the Issue:

It is fairly clear what Person, Organization, and Group are supposed to be -- they are directly parallel (or even equivalent to) the VCard kinds of Individual, Organization, and Group. (AS2-Core even recommends that you SHOULD use VCard properties to mark these up.)

However, it is much less clear what Application and Service are supposed to be. An Application is described as a "software app", which is workable enough, but a Service is incredibly vague, as it "represents a service of any kind". Given that the noun "service" has at least 9 different definitions, it would probably make sense to apply some limitations on this description. For example, it could be used to describe actors that provide help or do work or offer commercial support or any number of other things.

As a deliverable, a Primer page describing the actor types more in-depth and providing guidance on when to use each type would probably be a good thing to have. I'm not sure if there's any errata that could be proposed or applied to the AS2-Vocab spec doc's language too, but that's something else to consider.

evanp commented 10 months ago

In issue triage, we put together two pages in the AS2 primer on Application and Service:

https://www.w3.org/wiki/Activity_Streams/Primer/Application_type

https://www.w3.org/wiki/Activity_Streams/Primer/Service_type

There are definitely a lot of subtleties, but from a first-order review, Application = client and Service = server is an OK definition.

silverpill commented 10 months ago

All popular implementations use Application type for instance actors and Service type for automated accounts (aka bots). The role of Application actor is also described in FEP-2677: Identifying the Application Actor

Given the interchangeable nature of terms "application" and "service", I think these Primer pages should be changed to reflect de-facto standards:

ThisIsMissEm commented 8 months ago

591 has been opened relating to this issue.

w3c/ActivityPub#431 has also been opened relating to this issue.

evanp commented 7 months ago

@silverpill I've incorporated your comments into the Primer pages. Can you review, and if you're satisfied, comment here?

silverpill commented 7 months ago

@evanp Thanks. I can see the new revision of "Service type" page which adds information about bots. But it seems that general recommendations haven't been changed?

I think it could be helpful to look at this from a user's perspective. Whether software runs on a client side or a server side is not very important. What our user is interested in is interaction. This is probably the reason why some implementers have decided to use one type for bots and a different type for everything else: a bot can be followed and interacted with, but other software actors only work in background.

In my opinion Service and Application are good terms to describe these two categories, even if originally they had different meanings.

evanp commented 2 months ago

@silverpill OK, based on your feedback, it sounds like you think the types defined in the spec should reflect FEP definitions. I'm not sure that's the case. It's also not particularly important, since both types are actor types. I am very reluctant to say that these types must or should be used in these particular ways. Again, Postel's law is our friend here.

nightpool commented 2 months ago

I read over the Primer pages in question and I think they're clear and straightforward. The only thing I might add is a mention of the FEP-d8c2 Oauth client URIs, which I think should generally be Application types?

trwnh commented 2 months ago

Another thing I would probably consider is a property like automated: true that can be used to signal "bot accounts" regardless of the actor type. I can very easily imagine a case where you would want the type to be Person since the actor represents an individual person, but you also want to signal that the actor produces automated activities and/or is generally not monitored. Over time, usage of such a property should replace current usage of Application/Service for this purpose, since that has always been a hack and we haven't actually reached 100% consensus for those types -- aside from silverpill's comments above, there is still an open sub-issue for Service being "a service of any kind" and this definition covering commercial services, legal services, etc. I think there should be disambiguation for these use cases mentioned in the Primer as well, and potentially some more thought given to what the best way would be to represent those semantics for service types that are not strictly a social networking service.

silverpill commented 2 months ago

OK, based on your feedback, it sounds like you think the types defined in the spec should reflect FEP definitions. I'm not sure that's the case. It's also not particularly important, since both types are actor types. I am very reluctant to say that these types must or should be used in these particular ways. Again, Postel's law is our friend here.

@evanp I thought the wiki page should describe existing practices. But I'm also fine if it stays as it is and I wouldn't be against closing this issue.

silverpill commented 2 months ago

Another thing I would probably consider is a property like automated: true that can be used to signal "bot accounts" regardless of the actor type

@trwnh Good idea

ThisIsMissEm commented 2 months ago

@silverpill @trwnh have opened https://github.com/w3c/activitystreams/issues/614 for automated: true regardless of actor type.

trwnh commented 2 months ago

I'm fine with this issue being closed given two resolutions: