Hi community!

As outlined in the start document, it was planned to separate the java
files to server and client, with common files in a separate common module.
It was said here:

"Fifth iteration - move src/java/main to zk-server, which will be further
separated in Phase 2."

But in order to save rebase for the contributors, I merged this into one
step. (I had a letter about it)
So I already created zookeeper-server, zookeeper-client and
zookeeper-common.

But after doing the separation, I have to say... this just hardly makes any
sense.
Without breaking backward compatibility by making changes in the package
structure, it just makes the code more unreadable than before. Multiple
packages has to be present in all 3 modules (as it was never an intention
to separate it, so many classes are just not in their logical package, and
even inner classes used when top level would be required for the
separation). Client and server code can not be divided to only depend on
common. Either server depends on client - which makes more sense than the
other option - or client depend on server.
(Or make common so fat, only literally a few class remains in server and
client - which again, makes no sense).

I created a pull request to illustrate what needs to be done, and this is
not even half complete:
https://docs.google.com/document/d/1WXqhaPlCwchcWc8RCEzbCmVa4WbBDlfR3GQngikGjqc/edit?usp=sharing

Some more detail in the description.

My suggestion:
forget about zookeeper-client-java and zookeeper-common, and just leave
zookeeper-server.

It just doesn't make any sense looking at the result, only makes the
project much more complicated. The java code is too much tangled together.

What would this mean if I just create zookeeper-common? All the files had
to be renamed anyway, so some now would have 2 renames (fortunately most of
the files are in zookeeper-server anyway), and possible another rebase for
some PR's.

Any input is appreciated.

Regards,
Norbert

Reply via email to