Thank you Flavio and Raul. > 1- You'd like to be able to plug in new algorithms or at least make a clear > separation of the replication protocol and the logic of the service. > 2- You'd like to have an implementation of Zab that you could use for other > things, like a kv store.
Thank you for pointing me to ZOOKEEPER-30. Yes, I was focused more on 2, but it's definitely a good idea to have a generic interface for atomic broadcast so that you can plug in different algorithms. It seems like the project can be broken into 3 pieces: 1. Define an interface for atomic broadcast. I'm not sure how things like session tracker and dynamic reconfig fits into this. 2. Add a ZAB implementation of the interface. 3. Create a simple reference implementation of a service (maybe a simple key-value store or a benchmark tool). I agree with both of you that it's better to do this as a separate project. Also, It might be better to do this as an incubator project from the beginning. I think it makes it easier for people from different organizations to collaborate. I'm willing to champion the project. I'll open a JIRA once the intern is committed to the project. Thanks! --Michi