Revising this protocol to allow tags has brought into question the necessity of attributes when tags are free-form and necessary.

There are four attributes to worry about.

  • ID can be a tag of form "ID:identifier"
  • Time-stamp can be a tag of form "TS:time-stamp"
  • Recipient can be a tag of form "ENVR:recipient"
  • Sender can be a tag of form "ENVS:sender"

Given those solutions, I don't see a need to have "special" attributes for each message, just have some required tags and define how they are set by the server/client depending on the situation.

If attributes are needed, then a command is needed to set those attributes, otherwise, not so much.

Odd that I missed that... hrm. The ID cannot be a tag, as (otherwise) how would we determine which message was associated with that particular tag? The ID must be something unique to that message, and outside the tag framework. Otherwise we'd have two IDs for each message: One as a tag, and one used internally. That way lies madness!

There is a fourth attribute, though, and it is message-size.

  • Message-size can be a tag of form "SIZE:message-size"