About naming: in specification and code, I will use the z<name>_v<unstable-version>
unstable naming convention, while I will just use <name>
in explanations.
First, our protocol:
<?xml version="1.0" encoding="UTF-8"?>
<protocol name="rainbow">
<copyright>
</copyright>
<interface name="zex_rainbow_v1" version="1">