I thought I'd add my bit, and this point in the thread seemed as good any. My background's a bit different to the other people here in that I'm not a committer, but definitely consider myself part of the broader community and work with ActiveMQ on pretty much a daily basis (so have skin in the game), but am not employed by any particular vendor.

The need for a new broker architecture is pretty strong. ActiveMQ 5 just doesn't make best use of the resources that you give it - disk, network, CPU cores, whatever - and people end up jumping into clustering much sooner than they should. Having said that, performance isn't the be-all and end-all, otherwise people would switch to whatever competing product is fastest. There's loads of goodies within ActiveMQ that aren't in any equivalent broker, and a lot of that value and work that's been done ought to get carried over (replicated LevelDB as a random example). What users want to see in whatever the next version of AMQ is, is the features that they're currently using.

What I understand has always been the intent (from reading this mailing list for some time) was that all the good bits get carried over to a new core. If someone has already written a new core and donated it, as has happened, that's awesome. What I'm seeing through the JIRAs is that there are definitely two groups of distinct committers working on what appears to be two products (hence the talk about incubation etc. - which I hope ends up not happening). Splitting the HQ donation by name to a new project, and maybe merging the two at some point, seems out of line with the original intent and partitions the set of developers further. Cross-project cooperation on something as complex as this is a nice but ultimately unlikely-to-be-realised idea; under one name it has a strong chance of working out. As Rob has pointed out, rewriting a core based on the good ideas of HQ, would still require loads of work to get it do all the things that the HQ core already does - and people/time to do it.

Assuming that there is consensus around these points (which there doesn't sound like there necessarily is), the idea of a separate line of development (as is currently taking place) with milestone releases sounds like the way forward. What needs to support it from a community point of view is:

 * Clarity to users around what activity is going on (I get asked this
   all the time). To that extent, a feature-compatibility table needs
   to be drawn up and left on the wiki, that way at least from an
   outsider's view you can see what the current state of play is and
   what the future plans are.
 * Publicly accessible architecture/developer documentation around the
   HQ core. It's hard to contribute to a project that is "kindof like
   the old thing, but completely different" with no pointers.
 * Interoperability between the 2. At the network of brokers level at
   the minimum (maybe already there - see my first point), and perhaps
   the at the store level.

What I think makes sense in the future is that ActiveMQ 5 doesn't need to go away, it stays in a kind of maintenance mode++, with the big new features building on the newer core. I'm thinking a bit like what happened with Struts 1.x relative to 2.x. The commits just dropped off after a while, as the bulk of the work moved to the 2.x core (which also came from an external donation - WebWork).

Whatever happens, I look forward to working with and contributing to ActiveMQ in the future.

Jakub


On 28/03/15 21:09, Rob Davies wrote:
Art - I hope these are the questions you thought haven't been answered. This is 
my POV only.
On 27 Mar 2015, at 18:58, artnaseef <[email protected]> wrote:

I don't agree with the presumption that ActiveMQ *needs* a *new* broker.
I implemented the architecture for ActiveMQ 1.0 (before it was detonated to 
Apache) - and since then Hiram and I have pretty much alternated redesigning 
the broker with each major version. ActiveMQ 5 was designed primarily to 
address the use case that some users wanted really long term message 
persistence (hence the message cursor implementation).
Message brokers get compared on a relative small set of features - which boil 
down to usually straight throughput and scalability. The ActiveMQ threading 
model is quiet heavy - there's a lot of context switching as commands are 
passed from top to storage - and a lot of synchronisation along the way.  To 
compete on throughput and scalability - a revamp is required. Hiram wrote 
Apollo with the hope it would be ActiveMQ 6. Technically Apollo is really good 
- it  has really efficient threading model, no sync points and is completely 
asynchronous. The reason Apollo didn't gain traction is because it was written 
in Scala - actually only a couple of folks attempted to get involved.

So writing a new architecture isn't particularly hard - probably a few months - but 
making sure it can handle all the edge cases will take years. Adding a new feature or 
fixing a bug in ActiveMQ 5 can take weeks - and that's because of all the test cases you 
have to pass to ensure you don't introduce a new bug whilst "fixing" something. 
Tinkering around the edges of the broker is relatively straight forward however. I think 
it's true that only a small number of committers tackle broker issues in ActiveMQ 5.

HornetQ is asynchronous, built on top of netty (so the TCP implementation is 
extremely fast) but more importantly it's been around for a while and looks 
mature - which is why I assume it looks appealing. All the hard work involved 
in bedding in a new architecture has been done.

Nor
with the argument that it will die out if it doesn't get one.
I agree. users really seem to like ActiveMQ because it is so flexible! However, 
there are a lot of areas where I wish ActiveMQ played a bigger role - like 
infrastructure messaging or IoT - which is why Apollo was written wasn't it? 
It's a shame a lot of people were put of by Scala - me included. It's 
impossible to gauge what will happen to ActiveMQ, but there is demand for 
messaging that AotiveMQ isn't even considered - and I think that's a shame.

Whole-sale replacement is hard.  I worked in a company that *still* uses
technology dating back to 1980 because several efforts to whole-sale replace
the existing platform failed.  That approach is hard.  Note that I am not
arguing that it's impossible, but this does make me concerned that even with
the AMQ-6 name, HornetQ may fail to replace ActiveMQ - even as it continues
as a completely successful product of its own.

With all of that said, if it proves that ActiveMQ dies out without a new
broker, I am alright with that.  As mentioned before, if HornetQ takes over
the market, I don't see that as a bad thing and look forward to the
opportunity to contribute there, or move on to other things.
We have an opportunity to take the best of both implementations and make 
something compelling - and doing something bold gets attention - and we can 
grow a community of developers around that. It would be great if you could help 
drive that too.


--
View this message in context: 
http://activemq.2283324.n4.nabble.com/DISCUSS-HornetQ-ActiveMQ-s-next-generation-tp4693781p4693983.html
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.

Reply via email to