Definitely no plans in 0.8, we are trying to get it out the door so we
really want to change as little as possible.

We haven't had huge discussions around 0.9 yet, but some of us have had an
interest in simplifying the client implementation. To me this would mean
(1) move the consumer co-ordination to the broker so it is accessible in
all languages, (2) move to non-blocking I/O for the clients, and (3) refine
the producer and consumer apis (not the protocol, the interfaces). Taken
together these represent a rewrite of the scala clients.

It would be possible to go all-in and just do them in Java at the same
time. I agree that the client code would ideally be in java and have no
dependencies, though I don't know if that is worth the cost.

There are a couple minor benefits to Java clients: clearer stack traces,
smaller jar file, fewer dependencies, and (ironically)
better compatibility with other scala versions. I don't see these as big
wins. The big win of this would actually be a clean room java
implementation with zero dependencies back or forth to the server. Ideally
in a separate repository. This and being in another language would force us
to think as the client as fundamentally different from the server. This has
mentally been very difficult for the team, for whatever reason, in a shared
code base. Having a completely stand alone client would force this issue.

I have to say I don't see huge value in trying to split the existing scala
code into multiple project directories and jars. Trying to split the
existing code would likely just make a mess, as we have tried to share as
much code as possible to avoid duplication--so things like message set
definition, network code, and utilities are all shared.

The cost of a clean-room implementation would be large amounts of code
duplication, and a much more jaring experience for us developers. In
general programming in Java kind of sucks, and maintaining similar code
across two languages would be a real headache.

-Jay


On Fri, Dec 14, 2012 at 7:57 PM, David Arthur <mum...@gmail.com> wrote:

> Seems to be a commonly discussed topic. What do people thing about this?
> Are there any plans for it in 0.8?
>
> When I've done stuff like this in the past for projects, it's been a
> combination of reorganizing code and configuring a build tool like Ivy
> using sub-modules. Does sbt support modules in a similar fashion?
>
> The counter argument, of course, is that Kafka is a small project with
> minimal dependencies, so a thin client artifact is not going to save you
> much. That said, a Java consumer/producer jar with no dependencies would be
> nice :)
>
> -David
>

Reply via email to