I'd like to propose a change to the way we version our API.

Currently, we publish a version string via the thrift method
get_string_property("version"). This version string always moves in
lock-step with the current release, i.e. 0.4.0-beta2, 0.5.0-rc3, etc.

There is no useful correlation that can be made like this. If a client
API worked with 0.5.0-beta1, it might or might not work with
0.5.0-beta2. I think we can do better.

I propose that we return a string composed of joining two integers with
a ".", where the integers represent a major and minor respectively. The
rules for incrementing these would be simple:

1. If it is absolutely breaking, then the major is incremented by one.
For example, changing the number or disposition of required arguments.

2. If it will result in an API that is backward-compatible with the
previous version, then the minor is incremented. For example, if a new
method is added.

This would provide client API authors the tools necessary to ensure
compatibility at runtime, and to better manage the life-cycle of their
projects.

What does everyone think?


-- 
Eric Evans
eev...@rackspace.com

Reply via email to