By MortazaviBlog on Oct 09, 2008
The Group Communications stack can simply be specified by literally stacking micro-protocols into a group communications stack—each micro-protocol can be considered a micro-kernel with its own "up" and "down" threading system.
Stacking can be specified like this: "A:B:C:D" or "A:C:B:D" or "A:C:D:B" or .....
Not all stacks are semantically valid or useful.
The final, beautiful touch in Bela Ban's design was to provision a fusing concept ("fusing" is my word for it), where all the micro-protocol/micro-kernel pieces can be fused so that they will be one "kernel," using a single thread system for "up" throughout the stack and a single thread system for "down" throughout the stack.
Or course, some of the design elements for all this was probably, mostly, and already present in the Ensemble Communications System, the group with which Bela did his post-doc work, near the turn of the millennium.
Also, see Mark Hayden's PhD dissertation on Ensemble, which was written in the 1990s, and supported by DARPA funds.
And a bit about my own role in all this—
I should mention that we used Ensemble (and its Java binding, whose deficiencies led to reimplementation of the protocol stack concept, in Java by Bela) in the DARPA projects I led before joining Sun.
This is how I got to learn about Mark and Ensemble, and later, about Bela and JGroups. It was an honor to meet both of them in the course of my work with group communications systems. By the way, I wouldn't be surprised if we find out, when historians of software look back at our work some years from now, that Bela has played a role in re-architecting of JBoss's microkernel system. I may be wrong but I believe he decided to join JBoss sometime in 2004, during the same year when I was trying to bring him to Sun. We almost got him to join SunLabs. It wasn't meant to be, like many other things that go awry. Perhaps, with my managerial skills now, I could have made a better difference in that realm. At least, I'm happy to say I was able to convince Bela to change the name from JavaGroups to JGroups, which protected him from some copyright violations.