Luiz Capitulino <lcapitul...@redhat.com> writes: [...] > -4. Notes to Client implementors > -------------------------------- > +4. Compatibility Considerations > +-------------------------------- > > -4.1 It is recommended to always start the Server in pause mode, thus the > - Client is able to perform any setup procedure without the risk of > - race conditions and related problems > +In order to achieve maximum compatibility between versions, the following > +changes are forbidden in newer versions of the Server: > > -4.2 It is recommended to always check the capabilities json-array, issued > - with the greeting message, at connection time > +- Removal of commands > +- Removal of command arguments > +- Addition of extra mandatory arguments for commands > +- Modification of arguments types > +- Modification of arguments, commands, events or error names > +- Modification of arguments in replies, events or errors
While I think these promises are appropriate for a mature version of the protocol, I do not think we should make them for 0.12. We've just dreamed up version 0.1 of the protocol. It hasn't been used in anger. Yes, we put some serious thought in it, and we even have prototype code using it in libvirt, but let's face it, we're not infallible: we *will* have to evolve stuff. Without a real user, there is no real need to constrict evolution of the protocol in such a harsh way. All it'll buy is is compatibility cruft. Passage of time will bring us plenty of cruft without us setting ourselves up for extras. Let's cut ourselves some slack here, please. [...]