diff --git a/doc/publican/sources/Protocol.xml b/doc/publican/sources/Protocol.xml
index 477063be..66cebfb6 100644
--- a/doc/publican/sources/Protocol.xml
+++ b/doc/publican/sources/Protocol.xml
@@ -14,6 +14,38 @@
object implements an interface and the requests include an opcode that
identifies which method in the interface to invoke.
+
+ The protocol is message-based. A message sent by a client to the server
+ is called request. A message from the server to a client is called event.
+ A message has a number of arguments, each of which has a certain type (see
+ for a list of argument types).
+
+
+ Additionally, the protocol can specify enums which associate
+ names to specific numeric enumeration values. These are primarily just
+ descriptive in nature: at the wire format level enums are just integers.
+ But they also serve a secondary purpose to enhance type safety or
+ otherwise add context for use in language bindings or other such code.
+ This latter usage is only supported so long as code written before these
+ attributes were introduced still works after; in other words, adding an
+ enum should not break API, otherwise it puts backwards compatibility at
+ risk.
+
+
+ enums can be defined as just a set of integers, or as
+ bitfields. This is specified via the bitfield boolean
+ attribute in the enum definition. If this attribute is true,
+ the enum is intended to be accessed primarily using bitwise operations,
+ for example when arbitrarily many choices of the enum can be ORed
+ together; if it is false, or the attribute is omitted, then the enum
+ arguments are a just a sequence of numerical values.
+
+
+ The enum attribute can be used on either uint
+ or int arguments, however if the enum is
+ defined as a bitfield, it can only be used on
+ uint args.
+
The server sends back events to the client, each event is emitted from
an object. Events can be error conditions. The event includes the
@@ -62,14 +94,11 @@
The protocol is sent over a UNIX domain stream socket, where the endpoint
usually is named wayland-0
(although it can be changed via WAYLAND_DISPLAY
- in the environment). The protocol is message-based. A
- message sent by a client to the server is called request. A message
- from the server to a client is called event. Every message is
- structured as 32-bit words, values are represented in the host's
- byte-order.
+ in the environment).
- The message header has 2 words in it:
+ Every message is structured as 32-bit words; values are represented in the
+ host's byte-order. The message header has 2 words in it: