On 07/19/2012 01:13 AM, Rafael Schloming wrote:
On Wed, 2012-07-18 at 19:05 +0100, Gordon Sim wrote:
On 07/18/2012 05:40 PM, Rafael Schloming wrote:
So while the Proton mission is in many ways compatible with the
original Qpid charter, the de facto Qpid mission of today is really
quite different from Proton's.

I tend to disagree.

I should have pointed out that while I have a different, though I think not entirely opposing, view to you on this one aspect, I agree entirely with the bulk of what your wrote.


In my mind, the purpose of Qpid has always been to develop software
under the ASF governance and licensing in order to support adoption of
AMQP and the emergence of an ecosystem built around it that better
serves users needs.

As I stated above, I agree that the Proton mission is compatible with
the original Qpid charter, but I believe they are still quite different.
The above statement permits the development of just about any kind of
application that happens to speak AMQP since that furthers adoption of
AMQP.

Yes, I think in my view that is indeed the case.

The Proton mission on the other hand is about making it as easy as
possible for any application (either existing or under development) to
speak AMQP. This really doesn't include building any such applications
as part of Proton, and doing so would compromise Proton's embeddability
and neutrality.

To my mind, that is merely stating that Proton plays a specific, well defined role in achieving the Qpid mission. The same is true for e.g. a JMS client. Qpid's mission as a whole encompasses the different strands.

At the time Qpid was formed, that meant client libraries and messaging
brokers. We have always wanted to have embeddable libraries that other
broker/clients/frameworks/etc could use to support AMQP however.

As AMQP has evolved, a clearer, cleaner layering has emerged. The
specification defines how different components can interoperate, rather
than attempting to define the behaviour an interchangeable message
broker (which the earlier specifications did not in fact achieve anyway).

In addition I think through developing and maintaining different
language implementations we have come to appreciate ways in which this
can be kept more manageable for maintainers and less confusing for end
users.

The landscape is therefore different now than it was when Qpid began. To
my mind however the mission of the project is not, though we should
always be prepared as a community to re-evaluate how best to achieve it.

I think the problem is that were we to reform Qpid in today's world, the
best way to support adoption of AMQP would not be to build yet another
broker, but rather to build a library that makes it easy to adapt all of
the many existing brokers to speak AMQP. That is certainly very much
where proton is aimed, but unless you're prepared to take the view that
we should dump the brokers and ignore existing Qpid users, it's a
stretch to say that the de facto mission is no different from the
original as the de facto mission clearly involves doing something with
the brokers we've built.

I don't think ignoring users is ever something we should do.

However I think we should always be fully prepared to re-evaluate how we are achieving and re-prioritise if needed. As such questioning whether the brokers or indeed any component are failing to adequately meet our overall objective and if so to take appropriate action is entirely sensible. What we have today need not constrain what we have in the future.

I do think that in the 1.0 landscape a message broker is going to be a very, very common part of the deployed infrastructure. I absolutely agree that we should be providing a library that makes it easy for any existing broker to support AMQP. However I also think it is important to have a truly open, ASF governed AMQP broker. I don't see these separate strands as in any way in conflict.

I believe wholeheartedly in the development of a protocol engine for the
three 'platforms' mentioned (C, Java and JavaScript). I believe these
should be usable by any higher level component that wants to speak AMQP
in some way, whether part of Qpid or not.

It seems clear there is also opportunity for wide reuse of a 'driver' -
an IO subsystem as you put it - designed to work well with the engine,
for cases where that functionality is not already provided.

I also fully appreciate and welcome the expanded understanding of the
'API space' that these developments have brought into focus, though I
think there is still some thinking to be done there.

As I stated on another thread, I think we need a shift in emphasis. A
renewed emphasis on interoperability, a new emphasis on enabling an
ecosystem that is wider than perhaps first imagined.

To my mind this is not a change to the mission or Qpid, nor does not
necessarily negate the value of existing components (though again, we
should never be afraid to re-evaluate).

To be clear, I don't believe I ever proposed any sort of change to the
Qpid mission.

Indeed not, and I was certainly not implying that you did. I simply meant that the 'defacto Qpid mission of today' is in my view the same as it was at the projects inception. The changing landscape in which we evaluate that mission, or any loss of focus on it that may have occurred and need corrected, is a separate thing.

My point is that the Proton mission is just different to
the Qpid mission *of today* (if it were not there would be no point in
doing it),

I don't follow your logic there. I would say that the purpose of Proton follows quite logically from the mission of Qpid, as your excellent notes pointed out so clearly.

and depending on what you think the Qpid mission is or should
be, you may feel it is more or less compatible and/or overlapping with
the Proton mission. For example, lot's of people think that Qpid is
about building brokers, and that's pretty much entirely disjoint to what
Proton is about.

I'm firmly in the camp that is 100% comfortable with Proton being entirely compatible with-, and supportive of-, the Qpid mission.

However equally I have no philosophical objection to spinning of proton or indeed any other component(s) as a separate top level project in the future. (Apache Hadoop is perhaps a good example).

An ASF governed, open, AMQP enabled JMS client is clearly a valuable
piece of the 1.0 ecosystem, as is a broker that can support the full
functionality that JMS defines. These should likewise be usable on their
own, against AMQP-enabled components developed outside Qpid, and outside
the ASF. They play a different role than proton in promoting AMQP, but
in my view are merely different initiatives supporting the same mission.

What's the important distinction between initiative and mission? I
certainly think you can interpret the Qpid mission as broad enough to
include a lot of things, but that simply begs the question of what are
the sub-missions/objectives/whatever of each initiative, and how are
they governed when they have distinct sets of users?

I agree, any task or artefact can generally be broken down into smaller components.

(Indeed, if you'll forgive the digression, the very name of Proton provides an interesting analogy there. The atom is no longer seen as indivisible; the proton is itself composed of quarks).

To me the key is that they be governed in 'The Apache Way' - openly, meritocratically, seeking consensus - as the best way to serve the community as a whole.

As I said, I think the actual structure that makes the most sense will I think become clearer with time. I can see merit in all three of the hypothetical scenarios you listed.

Lets get through a couple of proton releases; lets grow the community and hear how they get on using it; lets see where the deeper understanding of APIs that has emerged leads us; and yes, by all means lets re-evaluate what we are doing along side proton.

I anticipate new behaviours and components that can be built on top of
the core AMQP protocol in the future and what better place to explore
and develop those than here at Qpid, under an established, well
respected governance model? I think we also have a responsibility, and
perhaps a unique position, to help bridge users of the earlier revisions
of AMQP onto the better world that 1.0 promises, the users that in large
part have fuelled that very evolution of the specification.

How do you define what is in/out?  If I write a chat server, distributed
ray tracer, or MMO that happens to speak AMQP, is Qpid the perfect place
to build these things?

I think to me an important question is what the primary purpose of the hypothetical component is. The primary purpose of an AMQP broker is to be an intermediary in AMQP-based communication and that I think is within the scope of the mission. The primary purpose of a ray tracer seems on the face of it to be out of scope to me.

However, such decisions should always be based on debates in the community. We don't want one-man projects, we want community initiatives and the community can thrash out the best structure.

What structuring makes most sense is something I think will become
clearer organically as we make progress. The key is - as always! -
continual, open communication and debate, not only amongst the
developers but with users in the widest sense.

I think it's important to recognize that Proton needs to be *neutral*,
i.e. it is a general purpose library that any application can use to
speak AMQP.

Agree 100%.

It can't favor any one particular application's usage of
AMQP, for example Bundling together a JMS Broker with Proton would
obviously give any existing JMS vendor pause if they were considering
using Proton to support AMQP.

I don't think anyone is proposing bundling a JMS broker with the library. I believe the intention is to have them as completely separate artefacts. The svn structure was explicitly designed to make that clear.

The fact that a broker might be available from the same source is an entirely separate thing. I don't see why a vendor who found one component useful would be hindered from using that simply because they offered an alternative to some other component.

As you point out, proton has evolved towards providing a general purpose API. Now a broker vendor may well have their own APIs and clients, and could in some sense be seen to be offering an alternative even to proton. They are free to pick and choose the pieces they find is useful, and indeed to get involved in shaping those pieces.

So while it's all fine and well to paint a picture of Qpid as an
umbrella project which is open to all things AMQP, that picture is
missing an important distinction between software that underpins an
ecosystem (e.g. the TCP stack), and software that is part of an
ecosystem (e.g. an http server).

Yes, that is a good distinction. To me though it simply distinguishes different roles. It doesn't in and of itself mean that different layers in the stack can't be used and developed in the same community, even if some users choose different sub-sets of that stack.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to