An MDP client library would be useful for software wanting to make use of the MDP overlay without needing the whole serval-dna library (e.g. I'm using the MDP client library in the Commotion Service Manager for fetching SAS keys).
An MDP client library requires far more engineering work than merely adding a target to the Makefile. For example:
All dependencies on daemon-only infrastructure like config and logging must be broken and replaced by other, programmer-customisable services on the client side.
Foundation types like sid_t and rhizome_bid_t must be factored out of the serval.h and rhizome.h headers, and into their own headers that can be exposed to client-side programs. Commit 21f51965c18948cc5de8c71793df5dc41f6c743b is an important step towards this.
The Monitor interface must be replaced by MDP control messages, so that the Monitor interface can be completely removed.
The MDP control protocol needs to be formally specified and reviewed for forward/backward compatibility issues.
The MDP API needs to be polished a bit and documented, with an eye to making it extensible.
An MDP client library would be useful for software wanting to make use of the MDP overlay without needing the whole serval-dna library (e.g. I'm using the MDP client library in the Commotion Service Manager for fetching SAS keys).