Daniel P. Berrange wrote:
On Mon, Mar 05, 2007 at 09:49:42AM +0000, Mark McLoughlin wrote:On Thu, 2007-03-01 at 13:56 +0000, Richard W.M. Jones wrote:Do you have some actual concrete problems with SunRPC? For me it solves the problem of marshalling complicated data structures, including all the error infrastructure, over the wire (see src/remote_rpc.x). It is very trim and efficient. It demonstrably allows us to run over TLS, Unix domain sockets, and ssh. It handles versioning for us.On the other hand, coding with it is grotty to say the least.But we definitely shouldn't publish the SunRPC interface or allow others to interoperate with it, so that we can keep our options open in future.So, thoughts on the SunRPC stuff:- IMHO, we're never going to encourage people to use the SunRPC interface directly, but at some point we may really want to expose the remote interface directly and so we'll move to anothertransport.I'm not sure what you mean by 'expose the remote interface directly' ? Do you mean allow arbitrary non-libvirt clients to speak to the server daemon directly, or something else ?
I've been wondering this morning what reasons clients would have for wanting to reverse-engineer/reimplement the wire protocol. If they're using an obscure language without libvirt support? (Answer: write some libvirt bindings, stupid!) If they're using an obscure language which lacks a C FFI? If they have license problems with libvirt?
My overriding concern is that we don't release anything until we're confident we can support it long term without breaking compatability with future releases. ie at very least old clients should always be able to talk to new servers. Arguably new clients ought to be able to talk to old servers too - albeit with possibly reduced functionality. That clearly means we need stability in the wire format from day-1. That puts some constraints on our internal API - but it is still internal so it could be re-written completely if desired, provided we keep wire format. API efficiency feels like one of those issues we can evolve over time - if we have a wire format that lets us do versioning, we can add new RPC calls at will without breaking old ones.
So far, the release model for libvirt (correct me if I'm wrong) has been that you periodically bundle up the latest version of libvirt and put it on the website. There's no experimental branch where we can place things like a libvirt remote patch with the proviso that at some point later we can say "sorry, that didn't work". Apart from CVS of course but even there it seems that once a patch is committed the libvirt maintainers aim to support it forever.
Rich. -- Emerging Technologies, Red Hat http://et.redhat.com/~rjones/ 64 Baker Street, London, W1U 7DF Mobile: +44 7866 314 421 "[Negative numbers] darken the very whole doctrines of the equations and make dark of the things which are in their nature excessively obvious and simple" (Francis Maseres FRS, mathematician, 1759)
Description: S/MIME Cryptographic Signature