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