James Strachan wrote:
The desire is to share code - partlcularly the low level Qpid framing
code. We're all Apache folk afterall and projects are meant to work
together & share code where it makes sense to do so.
Ideally qpid and ActiveMQ would share a large chunk of ocde for the
AMQP framing stuff; though right now its hard to do that as qpid is
not terribly easy to reuse and is based on MINA and ActiveMQ has its
own transport framework.
I agree, sharing code is ideal. The qpid proposal included reusable
libraries as an objective and this seems sensible in the effort to
promote AMQP and interoperability.
Right now the feedback seems to be that the code is mainly useful as
'seed' code for a fork. Forks are clearly not ideal as they dilute the
collective effort, but sometimes they may be inevitable due to different
long term needs/aims or lack of short term resources to make more minor
adjustments to satisfy all needs.
The second reason certainly applies here and perhaps the first one does
as well. Regardless, moving to a more componentized code base for qpid
is desirable and will happen (though perhaps not fast enough for everyone).
On more specific issues, the main obstacle in reuse of the framing layer
is I believe the coupling to Mina. As stated in an earlier mail, I think
there will always be different needs here: jdk ByteBuffer, mina
ByteBuffer, Data- Input/Output. As a lot of the code here is already
generated, we may be able when time allows, to address all needs through
different (or parameterized) templates.
At a higher level, e.g. the various exchange classes, there seem to be
less changes between the codebases now (mainly just repackaging?) so
maybe there we can more easily share in the short term.
Finally: Good job, Hiram, your work and feedback has been valuable in
opening up the discussion and giving food for thought! Thanks also for
keeping us in the loop with all your changes, much appreciated.