On 2013/9/23 5:08 PM, Richard Newman wrote:
>> Q: What about putting the version in the body?
>> A: This is why your developers and QA hate you. In order to do this,
>> they need to make sure that existing code supports multiple, often
>> conflicting versions or does complicated back end hand-offs, increasing
>> the testing systems and other things that are the direct opposite of
>> what they live for.
> 
> I should add to this: very, very often the code that handles some record 
> object is far away from the code that speaks the wire protocol. And very 
> often the service is a storage service, and thus can end up storing records 
> of multiple versions (if only due to bugs).
> 
> For this reason I'm in favor of *also* versioning stored records. But that's 
> a very different thing to putting the wire protocol version in the body of 
> uploads or downloads.
> 
Sadly, this is where English fails us as an appropriate language for
discussing things like this.

"Version" is a multiple term in this case. For my discussion, "API
Version" is what is placed in the URL. I'll presume that "Data Version"
or "Interface Version" is what rnewman is discussing and is a function
of the calls made to the API version.

One can presume that should a the Foo storage method change the
structure of the data that is being exchanged, that this may trigger a
Data Version change, where if the Foo storage method was being removed
or replaced, this would trigger an API version. It is important that
this sort of thing be clearly delineated and defined in the protocol
documentation.

The lot of the API developer is that the majority of folks out there are
gleefully illiterate, and will invest the least amount of reading and
effort in getting something that works. Having clear, simple, consistent
docs help customers avoid paths paved with dragons.
_______________________________________________
Sync-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/sync-dev

Reply via email to