On 31 October 2016 at 16:06, Robbie Gemmell <robbie.gemm...@gmail.com>
wrote:

> I don't think there is anything too surprising in what you said, given
> previous discussion and how things have actually progressed over the
> past couple of years.
>
> Messenger is covered upon in your comments, but slightly more in
> relation to the proton-c (+bindings) side. I think its worth going
> further and considering Messenger in proton-j a bit more distinctly.
> It has never really had much love, appearing to get written later in
> the day for completeness and having had little attention since, even
> while the equivalent in proton-c still did. Looking at the
> messenger-centric bits of the proton-j tree there seems to have been
> only 10 commits in the past 3 years (the easily viewed segment) with 4
> of those essentially no-ops as far as 'activity' goes. In addition to
> the various Messenger issues you touched on, its worth adding that
> 'messenger-j' still can't do any form of SASL except anonymous. While
> I think the proposal to transition 'messenger-c' out from the core
> (well, the opposite really) makes sense given its history, for
> 'messenger-j' I think the better thing to do would instead be to
> simply remove it immediately. Note that this may be more complicated
> than it sounds given the python test suite, but at the very least
> removing it as a released component should be simpler, and I would
> argue, more helpful to everyone.
>
> Taking this slight disparity in approach a step further, I think its
> also worth asking if we shouldn't make proton-c and proton-j
> independently releasable components in concert with this work, as we
> have with many other components over the recent years (starting
> originally, with proton itself). I don't think the coupling has really
> had the desired effect or particularly done either significant good
> over the years, arguably the opposite at times. Whilst they are
> certainly much closer than other components we have made independently
> releasable, I think many of the same arguments for doing so still
> apply in this case also. Would anyone particularly disagree there?
>


I was going to bring up a similar question - do we believe we are actually
getting benefit from trying to keep the API of Proton-J and Proton-C
"identical"?  It's been a while since I worked on it, but my feelings at
the time were that the enforcing of API identity (rather than equivalence)
actually made proton-j much less natural to use and not insignificantly
more difficult to maintain.  I'd certainly like to see something with
functional equivalence between C and Java, but it seems like we've actually
fallen far behind on that with the lack of a reactive api.

In terms of moving Messenger out of core in C and simply removing it
altogether from Java, I think those are sensible steps that will help the
user community better and make our offerings more easy to use and
comprehend.

-- Rob


>
> Robbie
>
> On 31 October 2016 at 12:54, Justin Ross <justin.r...@gmail.com> wrote:
> > Hi, everyone.  I’m writing this to give you all a clearer picture of our
> > intentions for Apache Qpid Proton and to invite your feedback.  There are
> > several moving parts, so I’ll take them in turn.
> >
> > Messenger and Proton APIs.  The Messenger API has been a source of
> trouble
> > for us for a long time.  It is attractively simple for some basic cases,
> > but once you step even a little outside the lines, it shows its
> > limitations.  There are many things that Messenger makes difficult or
> > impossible, including core aspects of API use such as error handling.
> >
> > The reactor and Proton IO.  The reactor code wants to itself be the
> master
> > event loop, and this unfortunately makes it difficult for people to
> > implement some of the IO integrations that are desirable and in keeping
> > with Protons original goals as an AMQP 1.0 protocol engine -
> > language-native IO for bindings, native Windows IO, and use of popular IO
> > frameworks such as libuv.
> >
> > We’ve been working gradually to tackle these two problems, at the top-end
> > user API level and at the bottom-end IO integration level.
> >
> > Proton APIs.  In the past year we have expanded and matured the
> > event-driven (or “reactive”) Proton APIs, now offered in C, C++, and
> > Python.  These APIs are very well suited to building AMQP 1.0
> integrations
> > and apps.  They give users full-spectrum control of AMQP, and they
> maintain
> > the virtues of Proton that we have always considered important -
> > asynchronous by design, no assumptions about threading, and minimal
> > dependencies. We don’t yet have an equivalent Java reactive API directly
> in
> > Proton, though adding one in future would be good. There are however
> > external framework integrations of the proton-j engine offering related
> > functionality that could in some cases serve such needs in the interim
> > where integrating the engine directly is deemed too onerous for folks.
> >
> > Proton IO.  Work has been progressing on a cleaner IO integration API to
> > stand between Proton’s protocol state machine and a particular IO
> > implementation.  The integration API will ease use of the protocol engine
> > and facilitate using the event loop of an external library as the primary
> > driver of events.  For proton-c, we are pursuing platform-native IO
> > implementations for Linux and Windows as well as libuv. For proton-j, we
> > would look to make similar improvements to ease and improve use of the
> > engine with popular IO frameworks in addition to the built-in IO
> constructs.
> >
> > With these changes it increasingly makes sense to separate out a Proton
> > core, with areas like Messenger and the reactor then acting as consumers
> of
> > that core, and we intend to work toward making the Proton libraries
> reflect
> > that.  In C for instance, this would involve isolating the core Proton
> > functionality (protocol engine, event-driven API, IO integration API)
> from
> > the additional APIs of Messenger and the reactor.  We would then offer
> both
> > a new libqpid-proton-core and the existing libqpid-proton library, where
> > the latter depends on the former and forwards its symbols.  Over time, we
> > can then migrate the language bindings and servers to also only use the
> > core library.
> >
> > In a sense, this is about taking Proton back to its roots.  Proton is an
> > excellent engine for processing AMQP protocol state.  It’s built for
> fast,
> > asynchronous communication, and it’s designed to fit in any environment.
> > That’s what we love about Proton, so we’re proposing these changes so
> that
> > it can continue in that role for a broader set of outside libraries and
> > applications.
> >
> > [Thanks to Robbie for his review and improvement of these comments.]
> >
> > Justin
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
> For additional commands, e-mail: users-h...@qpid.apache.org
>
>

Reply via email to