It needs a KIP if it introduces new public APIs and/or there are
compatibility implications. Otherwise, no KIP is required.

Ismael

On Wed, Aug 16, 2017 at 4:38 PM, Paolo Patierno <ppatie...@live.com> wrote:

> Hi Ismael,
>
>
> after your first review on my PR and the conversation here in the mailing
> list ... I have a doubt ...
>
> We are going to remove the --zookeeper option but adding the --broker-list
> but according to this discussion we agree on your solution having the
> choice at shell script level.
>
> Does the Java re-implementation of the TopicCommand tool need a KIP ?
>
>
> Thanks,
>
> Paolo
>
>
> Paolo Patierno
> Senior Software Engineer (IoT) @ Red Hat
> Microsoft MVP on Windows Embedded & IoT
> Microsoft Azure Advisor
>
> Twitter : @ppatierno<http://twitter.com/ppatierno>
> Linkedin : paolopatierno<http://it.linkedin.com/in/paolopatierno>
> Blog : DevExperience<http://paolopatierno.wordpress.com/>
>
>
> ________________________________
> From: isma...@gmail.com <isma...@gmail.com> on behalf of Ismael Juma <
> ism...@juma.me.uk>
> Sent: Wednesday, August 2, 2017 8:51 AM
> To: dev@kafka.apache.org
> Subject: Re: Command tools : from Scala to Java, from Zookeeper utils to
> Admin Client API
>
> Hi Arseniy,
>
> At some point (before I joined), it was decided that clients would be
> written in Java for a few reasons:
>
> 1. It's easier to maintain binary compatibility
> 2. Calling Java from Scala is easier than calling Scala from Java (without
> extra effort)
> 3. A single artifact instead of one artifact per Scala version supported
> 4. There are a larger number of Java users than Scala users
>
> Since the plan is for most tools to be a thin wrapper over the Java
> clients, it seems sensible for such tools not to bring unnecessary
> dependencies.
>
> Ismael
>
>
> On Wed, Aug 2, 2017 at 9:28 AM, Arseniy Tashoyan <tasho...@gmail.com>
> wrote:
>
> > Hi Paolo,
> >
> > I doubt that rewriting in Java makes value by itself. What is the reason
> of
> > redoing the things that are already done? The switching to new API can be
> > done without the switching to another language. Less new code - less new
> > bugs.
> > In some cases, Scala may be more convenient than Java. For example, one
> can
> > find Scala collections more handy than Java collections. Just select a
> > language that gives necessary tools.
> >
> > Arseniy
> >
> > 2017-08-01 17:30 GMT+03:00 Paolo Patierno <ppatie...@live.com>:
> >
> > > Hi Tom,
> > >
> > >
> > > thanks for your reply. I think that you are right and what you have
> > > proposed should be the way to go.
> > >
> > >
> > > Until today I have been working on refactoring the TopicCommand tool in
> > > Java using the AdminClient getting rid of the Zookeeper usage in only
> > "one
> > > step" and maybe it's wrong.
> > >
> > > I'd like to have some input from committers as well to be sure that the
> > > way is good about how handling such use cases.
> > >
> > >
> > > Thanks,
> > >
> > >
> > > Paolo Patierno
> > > Senior Software Engineer (IoT) @ Red Hat
> > > Microsoft MVP on Windows Embedded & IoT
> > > Microsoft Azure Advisor
> > >
> > > Twitter : @ppatierno<http://twitter.com/ppatierno>
> > > Linkedin : paolopatierno<http://it.linkedin.com/in/paolopatierno>
> > > Blog : DevExperience<http://paolopatierno.wordpress.com/>
> > >
> > >
> > > ________________________________
> > > From: Tom Bentley <t.j.bent...@gmail.com>
> > > Sent: Friday, July 28, 2017 10:36 AM
> > > To: dev@kafka.apache.org
> > > Subject: Re: Command tools : from Scala to Java, from Zookeeper utils
> to
> > > Admin Client API
> > >
> > > Hi Paolo,
> > >
> > > Replies in line...
> > >
> > > On 28 July 2017 at 11:14, Paolo Patierno <ppatie...@live.com> wrote:
> > >
> > > > Hi committers,
> > > >
> > > > in my understanding there is the common idea to move all tools from
> > Scala
> > > > to Java and then using the new Admin Client API instead of using the
> > > > Zookeeper connection.
> > > >
> > > > Regarding this subject I started to work on refactoring the
> > TopicCommand
> > > > tool but with two steps at same time :
> > > >
> > > >
> > > >   *   re-writing it in Java
> > > >   *   removing --zookeeper option (so no Zookeeper connection) and
> > adding
> > > > --broker-list option (so using the Admin Client API)
> > > >
> > > > Of course, such option substitution is a breaking change for the tool
> > > (and
> > > > the users who are using it).
> > > > In such a scenario, the two steps path should be needed : first
> > > > deprecation, then removal (for the --zookeeper option)
> > > >
> > >
> > > A change to tools (and their options) requires a KIP. There's no
> > > fundamental reason why both couldn't be supported during a transition
> > > period. So I doubt a KIP that didn't propose a transition period would
> > get
> > > passed.
> > >
> > >
> > > It seems that in the "deprecation" phase we have two possible
> solutions :
> > > >
> > > >
> > > >   1.  Adding Admin Client API to the Scala tools and so the
> > --broker-list
> > > > option and a warning on --zookeeper for deprecation
> > > >   2.  Rewriting the tool in Java using the Admin Client API (so
> > > > --broker-list) but at same time providing --zookeeper as well (so
> > > Zookeeper
> > > > connection)
> > > >
> > > > With the solution 2) we have the advantage to have the tool already
> in
> > > > Java when the --zookeeper option will be removed in a next step. In
> any
> > > > case we have to write the part related to use the Admin Client API so
> > it
> > > > make more sense to me option 2) porting the Zookeeper needed code
> from
> > > > Scala to Java (then removing it in the next phase).
> > > >
> > > > Is my understanding right on how we have to handle deprecation and
> > > removal
> > > > for something that is a breaking change ?
> > > > Or this case is something "special" and we can live with a new Java
> > based
> > > > tool without zookeeper but with Admin Client API at same time ?
> > > >
> > > > Of course having both Admin Client API and Zookeeper utils working at
> > the
> > > > same time in the tools means more complexity in the code but it's
> > > something
> > > > that could be factorized.
> > > >
> > >
> > > I think the right thing to do would be:
> > >
> > > 1. deprecate the old option, adding support for the replacement option
> > > (using the AdminClient). Keep the code in scala. All this is in one
> KIP.
> > > 2. Remove the old option (needs a KIP)
> > > 3. Rewrite the tool in Java.
> > >
> > > Parts 2 and 3 could be done at the same time. I don't believe part 3
> > needs
> > > a KIP if it were a drop-in replacement.
> > >
> > > The reason I think this is the right way to proceed is:
> > >
> > > * It gives users a transition period to learn about the new option, and
> > > replace any tooling of their own.
> > > * By keeping the tool in scala you get to release your new AdminClient
> > API
> > > and get to iron out all the creases while users still have the
> > --zookeeper
> > > option as a fallback.
> > > * Then when you know the AdminClient API works in the field you have a
> > > straight porting job to do, and you have less code to port because you
> > > don't have to port the code to support --zookeeper.
> > >
> > > But I'm fairly new here, so maybe a committer will chime in an correct
> me
> > > where I'm wrong!
> > >
> > > Cheers,
> > >
> > > Tom
> > >
> >
>

Reply via email to