Service Versioning

Just thinking out loud -- not sure if this is a good idea or not.

What if components were labelled with an indication of the revision  
of the service that they were introduced with?

E.g.,

<resource introduced="/revision/1">
    <method name="GET">
      ...
    </method>
    <method name="POST" introduced="/revision/2">
      ...
    </method>
</resource>

with rules for appropriate defaulting, etc. "introduced" probably  
isn't the best name, but gets the idea across; the value should be a  
URI-reference.

This would allow clients to query the service for what revision it  
implements, and then know what (backwards-compatible) changes are  
implemented; it wouldn't have to optimistically try to POST, for  
example.

In doing so, backwards-compatible changes (e.g., adding methods,  
adding representations, adding resources, adding optional query args)  
could be layered into descriptions without losing information about  
when they were introduced.

Thoughts?

--
Mark Nottingham     http://www.mnot.net/

Received on Thursday, 27 April 2006 20:12:30 UTC