On 27/06/13 06:46, Andrew Stitcher wrote:
I've gone on a bit long here, but essentially I think that we should
minimise our use of modules and try to remove those we already have -
either stop building them as plugins or remove them altogether.

Thoughts?
Hmmm. So I'm going to have to take a completely diametrically opposite position here (sorry Andrew!) and assert that to the contrary we should actually look to maximise the modularity and (potentially) increase the use of plugins. I say "potentially" for the latter because I *generally* share Gordon's thoughts "I'm not overly concerned whether a module is compiled in to qpidd itself or compiled as a separately loaded library" however the latter approach does somewhat force the issue of decoupling, which IMHO isn't a bad thing to do.

My reasoning for feeling diametrically opposite is that qpid really does seem to be evolving, to some extent proton has acted as a catalyst here, but there are other reasons too. One non-technical reason relates to "product positioning" - I've banged on about this a number of times before, but as someone whose "day-job" role includes having to make business cases around product choices it's *really hard* to come up with compelling arguments as to why Qpid C++, Qpid Java, ActiveMQ etc. etc. and related to that there are "commercial sponsorship" aspects around products (some of you I'm sure will know what I'm alluding to - Gordon certainly will) and there may be different emphases made on support for different AMQP products.

All of that IMHO points to the very strong need to make the various Qpid products compelling and to maximise opportunities for reuse elsewhere if necessary (proton is a good example here and is I believe - ironically - being used in ActiveMQ but not -yet- in Qpid Java).

That sort of modularisation in the C++ suite I think helps play to its strong suits, ultimately the reason I chose Qpid C++ broker was its raw performance, but I have some quirky use cases - for example real time producers caused me to really like circular queues - a feature not supported in the Java broker (to quote Rob it's give some of their customers apoplexy) and of course Qpid C++ is nice and fast!

Being able to get the C++ broker absolutely "lean'n'mean" stripped back with racing suspension and nitrous injection would be awesome for me. I look at things like ZMQ and think that there could be some advantages but equally I think a modular approach in qpidd gives the opportunity to have ones cake and eat it.

I guess there are other things too, so I believe (though I'm no expert) that AMQP 1.0 places less emphasis on the need for a broker and allows more peer to peer communication between Nodes via Links (is that correct?) but I'd still assume that in practice an awful lot of the building blocks are still necessary and useful. At the very least there's a need to configure, but I'd assert a very definite need to be able to manage and monitor what might amount to the "client runtime" too.


Another good argument for modularisation is that it forces the hand in terms of better decoupling. In the recent discussions on removing chunks of code from the code base it's pretty clear that some things "organically evolved" and have ended up creating some quite monolithic artefacts.

The management and monitoring side of things is a *really good* example of this. QMF is currently quite intertwined which is less than ideal, especially given the discussions on the subject of looking towards AMQP 1.0 support. You might be aware of the fact that I recently added QMF2 support to the Java Broker in the form of a plugin. I mainly did this initially as a bit of fun to see if I could, but I think that it's been most valuable as a catalyst for focussing attention on divergence between the QPid products and the need for some cohesion in management and monitoring. I guess that one key thing I took from that was that it only really took me a couple of weekends to get some reasonable QMF support in place despite having absolutely zero background in the Java Broker code base and despite the fact that the plugin API was a moving target at the time.

This has really convinced me that improved modularisation in general and specifically moving the QMF stuff into something properly pluggable and decoupled is the absolute only way to stand a chance of migrating towards AMQP 1.0 Management without completely trashing support for existing QMF tooling. Hopefully you'll all have read the various threads that kicked of when Ken Giusti made a change to the asynchronous python QMF API relating to QMF2 support. That's a tiny shard of the likely carnage that might be caused moving to AMQP 1.0 Management unless we're very careful.

Remember I said in a previous reply about me going off on one on things I cared about :-D

Just my 2p and all that, but hopefully it's some food for thought?
Cheers,
Frase







---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to