On Thu, Aug 13, 2015 at 8:36 AM, Ewen Cheslack-Postava <e...@confluent.io>
wrote:

> On deprecation, I think we should definitely use the standard annotation to
> handle this.


Thanks Ewen. I agree that we should use @Deprecated for language-level
deprecations. My question was regarding the following:

- unstable - can change at any time
> - evolving - can break compatibility at minor releases (i.e. 0.9 may be
> incompatible with 0.8)
> - stable - will only break compatibility at major releases (1.0, 2.0, etc)
>


Let's pick `evolving`, as an example. Does it mean that we can break
compatibility at minor releases without a deprecation cycle? Or does it
mean that we would need to deprecate it for one minor release and then
remove in the next? The latter is nicer for users as they have one release
where both the deprecated and recommended still work, but it adds more
overhead to Kafka development. What is the current thinking around this?

The annotation doesn't necessarily work for everything (e.g.,
> deprecating older versions of the protocol doesn't work via Java
> deprecation annotations), but we should definitely use it for deprecated
> Java/Scala APIs. Perhaps we should start by marking all the old producer
> APIs deprecated


Seems sensible assuming that users have found it easy to migrate to the new
producer in the latest release.

and, after the next release, the old consumer APIs too? :)


Similar to above, it would be good to do that once we have some reports
from users who moved from one API to the next.

Best,
Ismael

Reply via email to