This page is an attempt to summarize the findings in ticket #765 and its sub-tickets.
This is a breakdown of our true requirements:
|License Compatibility||Yes - AFL||Yes - Boost Software License (BSD-like)||Yes - Boost Software License (BSD-like)||No - Mozilla Public License||Yes - Apache License|
|Point-to-Point||Yes||Yes||Yes (with extra coding)||-||Yes|
|Multiple OS Support||Yes||Yes||Yes||-||Limited|
From this, we see that only D-Bus and boost::mpi meet all of the needs. RabbitMQ has an incompatible license, and neither boost::multiprocess::message_queue nor MessagePack RPC provide group communication.
Note that in the case of boost::mpi we would also have to run a separate MPI daemon, in addition to using boost::mpi as a basis for the library in our processes. This is basically the same as D-Bus, although there are many more implementations and setup is likely to be more complex. Also, we can use MPI with other libraries than boost::mpi if we go that route. But for simplicity I'll continue to refer to the option as boost::mpi.
Here is a comparison of our "extra" features, for D-Bus and boost::mpi only:
|Secure across machines||Unclear||Possible (SSH)|
|Send file descriptors||Yes||No|
|C++ & Python clients||Yes||Yes|
|Not have to declare types before sending||Okay||Okay|
|Unit tests for code itself||Some||Unknown|
|Mock test support||No||No|
Note from 2013-02-05: Apache Qpid seems to meet almost everything we need... except it doesn't appear to work on FreeBSD or OS X and related OS. It does support Linux, Solaris, and Windows. Perhaps it is worth looking at fixing it.
Note from 2013-09-19: Apache Qpid seems to have fixed the FreeBSD issue:
Perhaps this is the way forward after all!