SRW Version Compatability

Version 1.1, 12th January 2004

Introduction

In any actively developed protocol or piece of software, there is a concern about interoperability between different versions. In SRW, there is an explicit interoperability mechanism, with precisely defined semantics. The mechanism defined allows for different versions of both clients and servers to interact without protocol level errors. Versions of SRW will always be recorded as strings of the format 'major.minor' where major and minor are independent integers.

Operations

All operations in SRW have a version parameter, with the exception of the parameterless explain GET request. The version parameter on a request is a statement by the client that the protocol version of the request is that version and it wants the response to be less than or, preferably, equal to that version. The version parameter in the response message is the version of the response. This is similar to the HTTP versioning method. If the server cannot supply a response in that version or lower, then it must return a diagnostic. If possible this diagnostic would be in the version requested or lower, but that is not a requirement.

Here are some examples of how this works in practice. If a 2.0 client asks a 1.1 server for a 2.0 response, then the server is able to respond with a 1.1 response as it is lower than version 2.0. If a 1.1 client asks a 2.0 server for a 1.1 response then the server is able to reduce its response version to accommodate the client. If a 1.1 client asks a 1.1 server for a 1.1 response, then there is no version mismatch and the server is able to accommodate the request.

Version Documentation and Changes

Documentation for all versions of SRW will be maintained such that server and client authors are able to track changes between versions. A summary document of changes between versions will also be maintained. This version interoperability solution will only work so long as there are no additional mandatory parameters added to a request, and as such the SRW editorial board will endeavour to only ever add optional elements. If there is a requirement to add a mandatory parameter to a request, then this will be announced with as much prior warning as possible.

Version 1.0

Version 1.0 was an experiment, and has been officially deprecated. The version 1.0 implementation trial was incredibly useful in informing the development of version 1.1, the first non experimental version. Version 1.0 does not have a version parameter in any of the requests or responses and hence cannot be considered to be part of this version interoperability system.