RaccoonlabDev / docs

Cyphal/DroneCAN nodes documentation
http://raccoonlab.org/store
7 stars 1 forks source link

Incorrect terminology used in UAVCAN interface description #5

Closed pavel-kirienko closed 11 months ago

pavel-kirienko commented 2 years ago

The UAVCAN node documentation uses the term "service consumer" incorrectly to describe what are in fact UAVCAN RPC-services. This applies both to the English and Russian docs.

The term "service consumer" is used in UAVCAN in the same sense as it is used in service-oriented architectures: a service consumer is a component of the distributed system whose operation is facilitated by another component via a well-defined contract. That latter component is commonly called a "service provider".

It is important to understand that while the terms "RPC-service" and "network service" sound similar, they describe entirely different entities:

To quote the Guide:

A given component of a distributed UAVCAN-based computing system is said to provide service if it participates in the data exchange using a specific well-defined set of UAVCAN data types following the formal requirements imposed by their definitions. Usually, this involves publishing messages of well-defined types carrying particular data at specific rates. Also, it may involve responding to UAVCAN service requests as dictated by their data type definitions.

Similarly, a given component is said to consume service if it relies upon the formal contractual obligations upheld by a service provider as defined above. Usually, that involves subscribing to messages of a specific type or making calls (sending requests) to a specific UAVCAN service.

There is an unfortunate linguistic complication in the fact that a service can mean both the type of UAVCAN communication (as opposed to messages) and a higher-level architectural entity. In this piece, we’re mostly focused on the latter.

PonomarevDA commented 2 years ago

Thanks! My mistake. Fixed.