diff --git a/informational/chatdefs.md b/informational/chatdefs.md index 2c32a69..5377a23 100644 --- a/informational/chatdefs.md +++ b/informational/chatdefs.md @@ -48,17 +48,22 @@ Terms are organized into the following categories for clarity and ease of refere ### Message Types -**Payload**: The encoded bytes as produced by a chat protocol. The term `message` is avoided due to conflicts with other layers. +The term "message" often has multiple meanings depending on context. The following definitions are used to disambiguate between different abstraction levels. -**Frame**: A data structure which is required to implement a chat protocol. Frames are used to disambiguate the objects defined by chat protocols from transport 'messages' and application `content`. +**Content**: The data that is intended for end-users or applications - this includes text, images and other user valued data. These messages originate from the application, and are ultimately delivered to other applications. -**Content**: The data that is intended for end-users or applications. Chat protocols transmit and route content between clients. +**Frame**: The data generated by a chat protocol. Frames are messages used by protocols to provide functionality - they are how clients exchange information with eachother and coordinate state. + +**Payload**: The encoded data or datastructures used by lower layer protocols. This includes the encoded bytes passed to a delivery service or subsequent layers. Payloads are usually associated with the delivery process, which is not defined by chat protocols. + + +Other specfic message types include: **Content Type**: The structured format of content. These data structures represent specific encodings of Text, Image, Audio data. **Delivery Acknowledgement**: A notification from a receiving client to sender that their message was successfully received. While similar to a read-receipt delivery acknowledgements differ in that the acknowledgement originates based on the client, where read-receipts are fired when they are displayed to a user. -**Invite**: An protocol message from one client to another to establish a communication channel. Invites notify a client that someone wants to communicate with them, and provides the required information to do so. +**Invite**: A frame used to initialize a new conversation. Invites notify a client that someone wants to communicate with them, and provides the required information to do so. ### Transports @@ -68,9 +73,9 @@ Terms are organized into the following categories for clarity and ease of refere ### Software Entities -**Client**: Software that implements a chat protocol. It is responsible for establishing and maintaining communication with the underlying network, performing protocol operations (e.g., encryption, key management, frame generation), and exposing an interface for higher-level software. A Client serves as the technical component that provides messaging capabilities to Applications. +**Client**: A Software component that provides messaging capabilities to Applications. Clients are responsible for establishing and maintaining communication with the underlying network, performing protocol operations (e.g., encryption, key management, frame generation), and exposing an interface for higher-level software. -**Application**: Software that integrates with a Client in order to send and receive content. +**Application**: Software that integrates with a Client in order to send and receive content. Applications are responsible for displaying content and controlling what content gets sent.