This is the time to make these kinds of calls.
Rename Cell interface to KeyValue with current Cell interface + "old" KeyValue methods that are not part of Cell, the latter being deprecated, and being implemented by KV.
That way people's code will work without rebuilding vs both 94 and 96, and they won't need shims.
This is possibly true if with a recompile but there will still be broken parts with for apis that didn't make it to the Cell interface. Recompile is necessary because we are converting a class to an interface (there was a similar problem with one of the hadoop2 job classes).
I do think that changing Cell to fit in where KeyValue used to be confusing and opaque. Something similar was done when hbase went onto hadoop2/mr2 and at least by having new names it is easier to tell where we are and where we were.
Previous to 0.96/0.95 we haven't had clear markers on what was InterfaceVisiblity.Public and InterfaceStability.Evolving. Before we release an 0.96 I'd like to go through common and client with a fine tooth comb and @deprecate / Privatize more to make it simpler for the future upgrades.
We should see whether this will cover the changes required for flume, ycsb and hive.
I've looked at flume, hive, and impala will look at ycsb (which one are you guys using? link?).
- Flume is Put-centric, and seems unaffected by these changes since it only really affects Get Results.
- Brock Noland in Hive-land has a patch that already takes into account the current hbase changes.
- Impala needs to be updated to use the more public api (it goes under the covers one layer too deep).