A few short weeks after Corosync 1.0.0 was released, the developers huddled for our future planning of Corosync 2.0.0. The major focus of that meeting was “Corosync as implemented is too complicated”. We had threads, semaphores, mutexes, an entire protocol, plugins, a bunch of unused services, a backwards compatability layer, multiple cryptographic engines.
Going for us, we did have a world class group communication system implementation (if not a little complicated) developed by a large community of developers, battle hardened by thousands of field deployments, tested by tens of thousands of community members.
As a result of that meeting, we decided to keep the good and throw out the bad, as we did between the openais and corosync transitions. Gone are threads. Gone are compatibility layers. Gone are plugins. Gone are unsupported encryption engines. Gone are a bunch of other user-invisible junk that was crudding up the code base.
Shortly after Corosync 2.0.0 development was started, Angus Salkeld had the great idea of taking the infrastructure in corosync (IPC, Logging, Timers, Poll loop, shared memory, etc) and putting that into a new project called libqb. The objective of this work was obvious: To create a world-class infrastructure library specifically focused on the needs of cluster developers with a great built-in make-check test suite.
This helped us reach even closer to our goals of simplification. As we pushed the infrastructure out of base Corosync, we could focus more on protocols/APIs. You would be surprised to find that implementing the infrastructure took about as much effort as the rest of the system (APIs and Totem).
All of this herculean effort wouldn’t be possible without our developer and user community. I’d especially like to acknowledge Jan Friesse in his leadership role of helping to coordinate the upstream release process and drive the upstream feature set to 2.0.0 resolution. Angus Salkeld was invaluable in his huge libqb effort which occurred on time and with great quality. Finally I want to thank Fabio Di Nitto for beating various parts of the Corosync code base into submission and his special role in designing the votequorum API. There are many other contributors including developers and tested who I won’t mention individually, but I’d also like to thank for their improvements to the code base.
Great job devs!! Now its up to the users of Corosync to tell us if we delivered on our objective we set out with 18 months ago – making Corosync 2.0 faster, simpler, smaller, and most importantly higher quality.
The software can be downloaded from Corosync’s Website. Corosync 2.0, as well as the rest of the improved community developed cluster stack will show up in distros as they refresh their stacks.