Plugin Link Negotiation Protocol

This is a draft document.

Introduction
The Plugin Link Negotiation Protocol (PLNP) is a low-level line-oriented protocol for enabling parties communicating over a network socket to arrive at joint agreement on a set of operating options.

It is purposely lightweight and minimalist to support options negotiation before more powerful structured or hierarchical mechanisms are in place on the link, in order that these mechanism can themselves be open to negotiation.

Protocol commands

 * HELP
 * WANT   [] ...
 * OK   
 * NO   
 * START
 * QUIT
 * QUIT

Protocol semantics and implementation constraints

 * 1) Each command appears on a separate CRLF-terminated line.
 * 2) Fields within each line are separated by whitespace consisting of ASCII spaces and/or tabs only.
 * 3) Each field consists of a string of one or more characters excluding whitespace or CRLF.
 * 4) Every command contains at the very least a commandName field.
 * 5) Some commands may follow the commandName field with an option field.
 * 6) If present, the option field is a keyword that names a particular option.
 * 7) An option field may also be followed by zero or more argument fields.
 * 8) If present, argument fields supply additional information for the option.
 * 9) CommandNames are not case-sensitive, whereas options are.
 * 10) Lines have a maximum length of 255 characters including the CRLF.