Re: svn commit: r1402510 - in /qpid/proton/trunk: examples/broker/ examples/mailbox/ proton-c/ proton-c/bindings/php/ proton-c/bindings/php/examples/ proton-c/bindings/python/ proton-c/bindings/ruby/

2012-10-26 Thread Robbie Gemmell
It doesnt really affect the release since the files are now licenced, but
the diff below suggests the header wasn't added to the Java files where we
normally put it (at the top of the file), it would be nice if they were
consistent with the others.

Robbie

On 26 October 2012 14:42,  wrote:

> Author: rajith
> Date: Fri Oct 26 13:42:54 2012
> New Revision: 1402510
>
> URL: http://svn.apache.org/viewvc?rev=1402510&view=rev
> Log:
> NO_JIRA Added missing license headers based on the RAT output
>
> Modified:
> qpid/proton/trunk/examples/broker/example-nodes
> qpid/proton/trunk/examples/mailbox/ssl-setup.sh
> qpid/proton/trunk/proton-c/CMakeLists.txt
> qpid/proton/trunk/proton-c/bindings/php/cproton.ini
> qpid/proton/trunk/proton-c/bindings/php/examples/client.php
> qpid/proton/trunk/proton-c/bindings/php/examples/server.php
> qpid/proton/trunk/proton-c/bindings/php/get_include_dir.php
> qpid/proton/trunk/proton-c/bindings/php/php.i
> qpid/proton/trunk/proton-c/bindings/php/tests.php
> qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt
> qpid/proton/trunk/proton-c/bindings/python/python.i
> qpid/proton/trunk/proton-c/bindings/ruby/ruby.i
> qpid/proton/trunk/proton-c/docs/api/user.doxygen.in
> qpid/proton/trunk/proton-c/include/proton/cproton.i
> qpid/proton/trunk/proton-c/src/libqpid-proton.pc.in
> qpid/proton/trunk/proton-c/src/sasl/sasl-internal.h
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/CompositeWritableBuffer.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/EndpointError.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/EndpointState.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Sasl.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/SaslClient.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/SaslServer.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EndpointImplQuery.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/LinkNode.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslClientImpl.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslServerImpl.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/message/Message.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/message/MessageFormat.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/messaging/Outcome.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/FrameBody.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Source.java
>
> qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Target.java
>
> Modified: qpid/proton/trunk/examples/broker/example-nodes
> URL:
> http://svn.apache.org/viewvc/qpid/proton/trunk/examples/broker/example-nodes?rev=1402510&r1=1402509&r2=1402510&view=diff
>
> ==
> --- qpid/proton/trunk/examples/broker/example-nodes (original)
> +++ qpid/proton/trunk/examples/broker/example-nodes Fri Oct 26 13:42:54
> 2012
> @@ -1,3 +1,22 @@
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one
> +# or more contributor license agreements.  See the NOTICE file
> +# distributed with this work for additional information
> +# regarding copyright ownership.  The ASF licenses this file
> +# to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance
> +# with the License.  You may obtain a copy of the License at
> +#
> +#   http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing,
> +# software distributed under the License is distributed on an
> +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> +# KIND, either express or implied.  See the License for the
> +# specific language governing permissions and limitations
> +# under the License.
> +#
> +
>  from queue import Queue
>  from hole import Hole
>
>
> Modified: qpid/proton/trunk/examples/mailbox/ssl-setup.sh
> URL:
> http://svn.apache.org/viewvc/qpid/proton/trunk/examples/mailbox/ssl-setup.sh?rev=1402510&r1=1402509&r2=1402510&view=diff
>
> ==
> --- qpid/proton/trunk/examples/mailbox/ssl-setup.sh (original)
> +++ qpid/proton/trunk/examples/mailbox/ssl-setup.sh Fri Oct 26 13:42:54
> 2012
> @@ -1,3 +1,23 @@
> +#
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one
> +# or more contributor license agreements.  See the NOTICE file
> +# distributed with 

Re: acks for messenger

2012-10-26 Thread William Henry
+1  I like the separation.  And the analogy to tracking is not only palatable 
but also kinda proves out the idea.

William

- Original Message -
> I like option 2) for two reasons.  One, it produces very
> straightforward
> semantics for the various levels of delivery guarantee.  Two, it's
> easy to
> ignore if you'd like: if you just want fire-and-forget messaging, you
> don't have to engage delivery as an api concept; if you later change
> your
> mind, it's not hard to level up.
> 
> Justin
> 
> On Fri, 26 Oct 2012, Rafael Schloming wrote:
> 
> > I'm taking a look at expanding the messenger API to support
> > reliability and so far there seem to be two directions to explore
> > which I'll attempt to describe below:
> >
> > Option 1)
> >
> >  Messenger.ack(Message) or possibly Message.ack()
> >
> >  I'll describe this as the simple/expected/conservative option, and
> >  those really are its strong points. Some less desirable points are
> >  that it takes the Message concept in a bit of a different
> >  direction
> >  from where it is now. Message is no longer simply a holder of
> >  content, but it is also now (at least internally) tracking some
> >  kind
> >  of delivery state. This is undesirable from a design perspective
> >  since you're really merging two separate concepts here, delivery
> >  state and message content, e.g. you now end up holding onto the
> >  message content to track the delivery state when arguablly the
> >  common case is that an app will be done processing the content
> >  quickly but may care about the delivery state for longer. Another
> >  implication of this merging is that it makes messages harder to
> >  reuse, e.g. imagine if you want to receive a message, mutate it a
> >  bit, and then resend it or send a number of similar messages.
> >
> >  It's also potentially more work from an implementation perspective
> >  as the underlying model treats Message as pure content and has
> >  delivery factored out as a separate concept, so this would be the
> >  start of a bit of an impedence missmatch between layers. It's
> >  certainly doable, but might result in more overall code since we'd
> >  be expressing similar concepts in two different ways.
> >
> > Option 2)
> >
> >  Introduce/surface the notion of a delivery/tracking number through
> >  the Messenger API, e.g.:
> >
> >  Messenger.put(Message) -> Delivery/Tracking-Number/Whatever
> >  Messenger.get(Message) -> Delivery/Tracking-Number/Whatever
> >
> >  (I'll abbreviate Delivery/Tracking-Number/Whatever as DTW for
> >  now.)
> >
> >  There are a couple of choices with this option, DTW could be a
> >  value
> >  object (i.e. similar to a handle), with actions on the messenger
> >  itself, e.g. Messenger.ack(DTW), Messenger.status(DTW). This kind
> >  of
> >  takes the tracking number analogy and runs with it, you ask your
> >  messenger about the status of a given delivery via its tracking
> >  number. Alternatively, DTW itself could be a more action oriented
> >  interface with its own methods for acking/status/etc. This isn't
> >  necessarily an either/or as there are reasons the C API might want
> >  to use a handle approach even if we wish to conceptualize/surface
> >  DTW as more of an independent thing in the object oriented
> >  interfaces.
> >
> >  On the negative side this is less traditional/expected relative to
> >  Option (1), and it does in total add more surface area to the API.
> >  On the positive side however it does provide a lot more capability
> >  since the same concept extends quite easily to track the state of
> >  outgoing deliveries.
> >
> >  From a design perspective this is nicer for a couple of reasons,
> >  unlike Option (1) by keeping Message as a pure holder of content
> >  you
> >  have more flexibility with how you use the API, e.g. you can
> >  discard/reuse the Message but still track the status of your
> >  deliveries. Also, it seems likely that once the Option 1) path
> >  includes the ability to track the status of outgoing deliveries,
> >  the
> >  total surface area balance might fall more in favor of Option (2).
> >
> >  A possible addendum to Option (2) suggested by Rob in order to
> >  deal
> >  with the surface area concerns is adding some kind of
> >  Messenger.ack() that would acknowledge all unacked deliveries
> >  pulled
> >  from the incoming queue. This would enable you to do basic acking
> >  without ever needing to bother with DTWs if you don't care about
> >  them. This could in fact be a nice place to start as it doesn't
> >  necessarily commit us to either path initially.
> >
> > FWIW, my bias right now is towards exploring Option (2). I think
> > the
> > fact that it is less expected is sufficiently mitigated by the fact
> > that with the addendum there is a very gentle learning curve, and
> > even
> > if you explain all the concepts up front, the whole tracking number
> > analogy makes it fairly intuitive. I can even imagine playing up
> > the
> > difference as 

Re: acks for messenger

2012-10-26 Thread Darryl L. Pierce
On Fri, Oct 26, 2012 at 11:07:38AM -0400, Rafael Schloming wrote:
 
> FWIW, my bias right now is towards exploring Option (2). I think the
> fact that it is less expected is sufficiently mitigated by the fact
> that with the addendum there is a very gentle learning curve, and even
> if you explain all the concepts up front, the whole tracking number
> analogy makes it fairly intuitive. I can even imagine playing up the
> difference as a selling point from a technical marketing perspective.

+1 to option 2 as well for me. Since Messenger is the type that performs
communications, then it should be the means by which acknowledgements
are sent. It's a more logical place to look for that sort of
functionality.

-- 
Darryl L. Pierce, Sr. Software Engineer @ Red Hat, Inc.
Delivering value year after year.
Red Hat ranks #1 in value among software vendors.
http://www.redhat.com/promo/vendor/



pgp28IN7Ycz89.pgp
Description: PGP signature


Re: RC7

2012-10-26 Thread Ken Giusti
+1 RC7 proton-c {mainly Debian6 i686 testing}

-K

- Original Message -
> Lucky number 7 posted here:
> 
>   http://people.apache.org/~rhs/qpid-proton-0.1rc7/
> 
> Only changes from RC6 are added LICENSE headers and two minor fixes
> to the
> Java SASL implementation (PROTON-103).
> 
> --Rafael
> 


Re: RC7

2012-10-26 Thread Darryl L. Pierce
On Fri, Oct 26, 2012 at 11:13:55AM -0400, Rafael Schloming wrote:
> Lucky number 7 posted here:
> 
>   http://people.apache.org/~rhs/qpid-proton-0.1rc7/
> 
> Only changes from RC6 are added LICENSE headers and two minor fixes to the
> Java SASL implementation (PROTON-103).

Local package build worked (F17 x86_64).
Koji build [1] was successful.

[1] http://koji.fedoraproject.org/koji/taskinfo?taskID=4628912

-- 
Darryl L. Pierce, Sr. Software Engineer @ Red Hat, Inc.
Delivering value year after year.
Red Hat ranks #1 in value among software vendors.
http://www.redhat.com/promo/vendor/



pgpikI1FjKaxc.pgp
Description: PGP signature


Re: acks for messenger

2012-10-26 Thread Justin Ross
I like option 2) for two reasons.  One, it produces very straightforward 
semantics for the various levels of delivery guarantee.  Two, it's easy to 
ignore if you'd like: if you just want fire-and-forget messaging, you 
don't have to engage delivery as an api concept; if you later change your 
mind, it's not hard to level up.


Justin

On Fri, 26 Oct 2012, Rafael Schloming wrote:


I'm taking a look at expanding the messenger API to support
reliability and so far there seem to be two directions to explore
which I'll attempt to describe below:

Option 1)

 Messenger.ack(Message) or possibly Message.ack()

 I'll describe this as the simple/expected/conservative option, and
 those really are its strong points. Some less desirable points are
 that it takes the Message concept in a bit of a different direction
 from where it is now. Message is no longer simply a holder of
 content, but it is also now (at least internally) tracking some kind
 of delivery state. This is undesirable from a design perspective
 since you're really merging two separate concepts here, delivery
 state and message content, e.g. you now end up holding onto the
 message content to track the delivery state when arguablly the
 common case is that an app will be done processing the content
 quickly but may care about the delivery state for longer. Another
 implication of this merging is that it makes messages harder to
 reuse, e.g. imagine if you want to receive a message, mutate it a
 bit, and then resend it or send a number of similar messages.

 It's also potentially more work from an implementation perspective
 as the underlying model treats Message as pure content and has
 delivery factored out as a separate concept, so this would be the
 start of a bit of an impedence missmatch between layers. It's
 certainly doable, but might result in more overall code since we'd
 be expressing similar concepts in two different ways.

Option 2)

 Introduce/surface the notion of a delivery/tracking number through
 the Messenger API, e.g.:

 Messenger.put(Message) -> Delivery/Tracking-Number/Whatever
 Messenger.get(Message) -> Delivery/Tracking-Number/Whatever

 (I'll abbreviate Delivery/Tracking-Number/Whatever as DTW for now.)

 There are a couple of choices with this option, DTW could be a value
 object (i.e. similar to a handle), with actions on the messenger
 itself, e.g. Messenger.ack(DTW), Messenger.status(DTW). This kind of
 takes the tracking number analogy and runs with it, you ask your
 messenger about the status of a given delivery via its tracking
 number. Alternatively, DTW itself could be a more action oriented
 interface with its own methods for acking/status/etc. This isn't
 necessarily an either/or as there are reasons the C API might want
 to use a handle approach even if we wish to conceptualize/surface
 DTW as more of an independent thing in the object oriented
 interfaces.

 On the negative side this is less traditional/expected relative to
 Option (1), and it does in total add more surface area to the API.
 On the positive side however it does provide a lot more capability
 since the same concept extends quite easily to track the state of
 outgoing deliveries.

 From a design perspective this is nicer for a couple of reasons,
 unlike Option (1) by keeping Message as a pure holder of content you
 have more flexibility with how you use the API, e.g. you can
 discard/reuse the Message but still track the status of your
 deliveries. Also, it seems likely that once the Option 1) path
 includes the ability to track the status of outgoing deliveries, the
 total surface area balance might fall more in favor of Option (2).

 A possible addendum to Option (2) suggested by Rob in order to deal
 with the surface area concerns is adding some kind of
 Messenger.ack() that would acknowledge all unacked deliveries pulled
 from the incoming queue. This would enable you to do basic acking
 without ever needing to bother with DTWs if you don't care about
 them. This could in fact be a nice place to start as it doesn't
 necessarily commit us to either path initially.

FWIW, my bias right now is towards exploring Option (2). I think the
fact that it is less expected is sufficiently mitigated by the fact
that with the addendum there is a very gentle learning curve, and even
if you explain all the concepts up front, the whole tracking number
analogy makes it fairly intuitive. I can even imagine playing up the
difference as a selling point from a technical marketing perspective.

--Rafael



Re: acks for messenger

2012-10-26 Thread Rob Godfrey
On 26 October 2012 17:14, Rob Godfrey  wrote:
> So, for me I probably started out being biased to Option 1) from a
> "simplicity" standpoint, but I'm now leaning towards option 2), though
> I'm not quite sure what form the DTW should take, nor how it would be
> best presented in the Java API.
>
> One other issue that makes me uncomfortable with Option 1) it is that
> by adding .ack() or even (per a previous JIRA) .getSubscription() to
> Message we're potentially tying Message directly into Messenger which
> is not a dependency I really want to introduce.  If we stick with
> Messenger as a value object then we don't have any such coupling

Clearly I meant *Message* as a value object (really shouldn't try to
e-mail, IM and have a conf call at the same time :-) )...

-- Rob

> (Messenger depends on Message, but not vice versa).
>
> -- Rob
>
> On 26 October 2012 17:07, Rafael Schloming  wrote:
>> I'm taking a look at expanding the messenger API to support
>> reliability and so far there seem to be two directions to explore
>> which I'll attempt to describe below:
>>
>> Option 1)
>>
>>   Messenger.ack(Message) or possibly Message.ack()
>>
>>   I'll describe this as the simple/expected/conservative option, and
>>   those really are its strong points. Some less desirable points are
>>   that it takes the Message concept in a bit of a different direction
>>   from where it is now. Message is no longer simply a holder of
>>   content, but it is also now (at least internally) tracking some kind
>>   of delivery state. This is undesirable from a design perspective
>>   since you're really merging two separate concepts here, delivery
>>   state and message content, e.g. you now end up holding onto the
>>   message content to track the delivery state when arguablly the
>>   common case is that an app will be done processing the content
>>   quickly but may care about the delivery state for longer. Another
>>   implication of this merging is that it makes messages harder to
>>   reuse, e.g. imagine if you want to receive a message, mutate it a
>>   bit, and then resend it or send a number of similar messages.
>>
>>   It's also potentially more work from an implementation perspective
>>   as the underlying model treats Message as pure content and has
>>   delivery factored out as a separate concept, so this would be the
>>   start of a bit of an impedence missmatch between layers. It's
>>   certainly doable, but might result in more overall code since we'd
>>   be expressing similar concepts in two different ways.
>>
>> Option 2)
>>
>>   Introduce/surface the notion of a delivery/tracking number through
>>   the Messenger API, e.g.:
>>
>>   Messenger.put(Message) -> Delivery/Tracking-Number/Whatever
>>   Messenger.get(Message) -> Delivery/Tracking-Number/Whatever
>>
>>   (I'll abbreviate Delivery/Tracking-Number/Whatever as DTW for now.)
>>
>>   There are a couple of choices with this option, DTW could be a value
>>   object (i.e. similar to a handle), with actions on the messenger
>>   itself, e.g. Messenger.ack(DTW), Messenger.status(DTW). This kind of
>>   takes the tracking number analogy and runs with it, you ask your
>>   messenger about the status of a given delivery via its tracking
>>   number. Alternatively, DTW itself could be a more action oriented
>>   interface with its own methods for acking/status/etc. This isn't
>>   necessarily an either/or as there are reasons the C API might want
>>   to use a handle approach even if we wish to conceptualize/surface
>>   DTW as more of an independent thing in the object oriented
>>   interfaces.
>>
>>   On the negative side this is less traditional/expected relative to
>>   Option (1), and it does in total add more surface area to the API.
>>   On the positive side however it does provide a lot more capability
>>   since the same concept extends quite easily to track the state of
>>   outgoing deliveries.
>>
>>   From a design perspective this is nicer for a couple of reasons,
>>   unlike Option (1) by keeping Message as a pure holder of content you
>>   have more flexibility with how you use the API, e.g. you can
>>   discard/reuse the Message but still track the status of your
>>   deliveries. Also, it seems likely that once the Option 1) path
>>   includes the ability to track the status of outgoing deliveries, the
>>   total surface area balance might fall more in favor of Option (2).
>>
>>   A possible addendum to Option (2) suggested by Rob in order to deal
>>   with the surface area concerns is adding some kind of
>>   Messenger.ack() that would acknowledge all unacked deliveries pulled
>>   from the incoming queue. This would enable you to do basic acking
>>   without ever needing to bother with DTWs if you don't care about
>>   them. This could in fact be a nice place to start as it doesn't
>>   necessarily commit us to either path initially.
>>
>> FWIW, my bias right now is towards exploring Option (2). I think the
>> fact that it is less expected is suffici

Re: acks for messenger

2012-10-26 Thread Rob Godfrey
So, for me I probably started out being biased to Option 1) from a
"simplicity" standpoint, but I'm now leaning towards option 2), though
I'm not quite sure what form the DTW should take, nor how it would be
best presented in the Java API.

One other issue that makes me uncomfortable with Option 1) it is that
by adding .ack() or even (per a previous JIRA) .getSubscription() to
Message we're potentially tying Message directly into Messenger which
is not a dependency I really want to introduce.  If we stick with
Messenger as a value object then we don't have any such coupling
(Messenger depends on Message, but not vice versa).

-- Rob

On 26 October 2012 17:07, Rafael Schloming  wrote:
> I'm taking a look at expanding the messenger API to support
> reliability and so far there seem to be two directions to explore
> which I'll attempt to describe below:
>
> Option 1)
>
>   Messenger.ack(Message) or possibly Message.ack()
>
>   I'll describe this as the simple/expected/conservative option, and
>   those really are its strong points. Some less desirable points are
>   that it takes the Message concept in a bit of a different direction
>   from where it is now. Message is no longer simply a holder of
>   content, but it is also now (at least internally) tracking some kind
>   of delivery state. This is undesirable from a design perspective
>   since you're really merging two separate concepts here, delivery
>   state and message content, e.g. you now end up holding onto the
>   message content to track the delivery state when arguablly the
>   common case is that an app will be done processing the content
>   quickly but may care about the delivery state for longer. Another
>   implication of this merging is that it makes messages harder to
>   reuse, e.g. imagine if you want to receive a message, mutate it a
>   bit, and then resend it or send a number of similar messages.
>
>   It's also potentially more work from an implementation perspective
>   as the underlying model treats Message as pure content and has
>   delivery factored out as a separate concept, so this would be the
>   start of a bit of an impedence missmatch between layers. It's
>   certainly doable, but might result in more overall code since we'd
>   be expressing similar concepts in two different ways.
>
> Option 2)
>
>   Introduce/surface the notion of a delivery/tracking number through
>   the Messenger API, e.g.:
>
>   Messenger.put(Message) -> Delivery/Tracking-Number/Whatever
>   Messenger.get(Message) -> Delivery/Tracking-Number/Whatever
>
>   (I'll abbreviate Delivery/Tracking-Number/Whatever as DTW for now.)
>
>   There are a couple of choices with this option, DTW could be a value
>   object (i.e. similar to a handle), with actions on the messenger
>   itself, e.g. Messenger.ack(DTW), Messenger.status(DTW). This kind of
>   takes the tracking number analogy and runs with it, you ask your
>   messenger about the status of a given delivery via its tracking
>   number. Alternatively, DTW itself could be a more action oriented
>   interface with its own methods for acking/status/etc. This isn't
>   necessarily an either/or as there are reasons the C API might want
>   to use a handle approach even if we wish to conceptualize/surface
>   DTW as more of an independent thing in the object oriented
>   interfaces.
>
>   On the negative side this is less traditional/expected relative to
>   Option (1), and it does in total add more surface area to the API.
>   On the positive side however it does provide a lot more capability
>   since the same concept extends quite easily to track the state of
>   outgoing deliveries.
>
>   From a design perspective this is nicer for a couple of reasons,
>   unlike Option (1) by keeping Message as a pure holder of content you
>   have more flexibility with how you use the API, e.g. you can
>   discard/reuse the Message but still track the status of your
>   deliveries. Also, it seems likely that once the Option 1) path
>   includes the ability to track the status of outgoing deliveries, the
>   total surface area balance might fall more in favor of Option (2).
>
>   A possible addendum to Option (2) suggested by Rob in order to deal
>   with the surface area concerns is adding some kind of
>   Messenger.ack() that would acknowledge all unacked deliveries pulled
>   from the incoming queue. This would enable you to do basic acking
>   without ever needing to bother with DTWs if you don't care about
>   them. This could in fact be a nice place to start as it doesn't
>   necessarily commit us to either path initially.
>
> FWIW, my bias right now is towards exploring Option (2). I think the
> fact that it is less expected is sufficiently mitigated by the fact
> that with the addendum there is a very gentle learning curve, and even
> if you explain all the concepts up front, the whole tracking number
> analogy makes it fairly intuitive. I can even imagine playing up the
> difference as a selling point from a techn

RC7

2012-10-26 Thread Rafael Schloming
Lucky number 7 posted here:

  http://people.apache.org/~rhs/qpid-proton-0.1rc7/

Only changes from RC6 are added LICENSE headers and two minor fixes to the
Java SASL implementation (PROTON-103).

--Rafael


acks for messenger

2012-10-26 Thread Rafael Schloming
I'm taking a look at expanding the messenger API to support
reliability and so far there seem to be two directions to explore
which I'll attempt to describe below:

Option 1)

  Messenger.ack(Message) or possibly Message.ack()

  I'll describe this as the simple/expected/conservative option, and
  those really are its strong points. Some less desirable points are
  that it takes the Message concept in a bit of a different direction
  from where it is now. Message is no longer simply a holder of
  content, but it is also now (at least internally) tracking some kind
  of delivery state. This is undesirable from a design perspective
  since you're really merging two separate concepts here, delivery
  state and message content, e.g. you now end up holding onto the
  message content to track the delivery state when arguablly the
  common case is that an app will be done processing the content
  quickly but may care about the delivery state for longer. Another
  implication of this merging is that it makes messages harder to
  reuse, e.g. imagine if you want to receive a message, mutate it a
  bit, and then resend it or send a number of similar messages.

  It's also potentially more work from an implementation perspective
  as the underlying model treats Message as pure content and has
  delivery factored out as a separate concept, so this would be the
  start of a bit of an impedence missmatch between layers. It's
  certainly doable, but might result in more overall code since we'd
  be expressing similar concepts in two different ways.

Option 2)

  Introduce/surface the notion of a delivery/tracking number through
  the Messenger API, e.g.:

  Messenger.put(Message) -> Delivery/Tracking-Number/Whatever
  Messenger.get(Message) -> Delivery/Tracking-Number/Whatever

  (I'll abbreviate Delivery/Tracking-Number/Whatever as DTW for now.)

  There are a couple of choices with this option, DTW could be a value
  object (i.e. similar to a handle), with actions on the messenger
  itself, e.g. Messenger.ack(DTW), Messenger.status(DTW). This kind of
  takes the tracking number analogy and runs with it, you ask your
  messenger about the status of a given delivery via its tracking
  number. Alternatively, DTW itself could be a more action oriented
  interface with its own methods for acking/status/etc. This isn't
  necessarily an either/or as there are reasons the C API might want
  to use a handle approach even if we wish to conceptualize/surface
  DTW as more of an independent thing in the object oriented
  interfaces.

  On the negative side this is less traditional/expected relative to
  Option (1), and it does in total add more surface area to the API.
  On the positive side however it does provide a lot more capability
  since the same concept extends quite easily to track the state of
  outgoing deliveries.

  From a design perspective this is nicer for a couple of reasons,
  unlike Option (1) by keeping Message as a pure holder of content you
  have more flexibility with how you use the API, e.g. you can
  discard/reuse the Message but still track the status of your
  deliveries. Also, it seems likely that once the Option 1) path
  includes the ability to track the status of outgoing deliveries, the
  total surface area balance might fall more in favor of Option (2).

  A possible addendum to Option (2) suggested by Rob in order to deal
  with the surface area concerns is adding some kind of
  Messenger.ack() that would acknowledge all unacked deliveries pulled
  from the incoming queue. This would enable you to do basic acking
  without ever needing to bother with DTWs if you don't care about
  them. This could in fact be a nice place to start as it doesn't
  necessarily commit us to either path initially.

FWIW, my bias right now is towards exploring Option (2). I think the
fact that it is less expected is sufficiently mitigated by the fact
that with the addendum there is a very gentle learning curve, and even
if you explain all the concepts up front, the whole tracking number
analogy makes it fairly intuitive. I can even imagine playing up the
difference as a selling point from a technical marketing perspective.

--Rafael


Re: RC6

2012-10-26 Thread Darryl L. Pierce
On Thu, Oct 25, 2012 at 08:38:04PM -0400, Rafael Schloming wrote:
> I put up an RC6 here[1] with the java shim fixed so the SSL tests skip
> properly. That's the only change from RC5.
> 
> [1] http://people.apache.org/~rhs/qpid-proton-0.1rc6/

Packages build fine locally (F17 x86_64).
Scratch build in Koji [1] was successful as well.

[1] http://koji.fedoraproject.org/koji/taskinfo?taskID=4628740

-- 
Darryl L. Pierce, Sr. Software Engineer @ Red Hat, Inc.
Delivering value year after year.
Red Hat ranks #1 in value among software vendors.
http://www.redhat.com/promo/vendor/



pgp7Fso70zc9R.pgp
Description: PGP signature


Re: RC6

2012-10-26 Thread Robbie Gemmell
I have forwarded you (and the pmc) the original email from committers@ with
the details.

Robbie

On 26 October 2012 14:48, Rafael Schloming  wrote:

> Do you know how I get my key to show up there?
>
> --Rafael
>
> On Fri, Oct 26, 2012 at 5:30 AM, Robbie Gemmell  >wrote:
>
> > I dont think KEYS should be proton specific, its just the Qpid committers
> > and should be the same file as a result. Commons-* seem to use the same
> > KEYS file for example.
> >
> > (Aside: we should probably be transitioning away from the KEYS file
> anyway
> > and using the new system they put in place for distribution via
> > https://people.apache.org/keys/).
> >
> > Robbie
> >
> > On 26 October 2012 02:05, Rajith Attapattu  wrote:
> >
> > > Sorry I should have done this before you posted RC6 :(
> > > We have a few files (mostly java files) that are missing license
> headers.
> > > Please look at the RAT output I posted.
> > >
> > > Once the final RC is voted, the release manager (in this case Rafi)
> > > will have to sign the final artefacts.
> > > You already have your key listed here [1]
> > > We should move [1] under the proton main dir.
> > >
> > > Regards,
> > >
> > > Rajith
> > >
> > > [1] https://svn.apache.org/repos/asf/qpid/trunk/qpid/KEYS
> > >
> > > On Thu, Oct 25, 2012 at 8:38 PM, Rafael Schloming 
> > > wrote:
> > > > I put up an RC6 here[1] with the java shim fixed so the SSL tests
> skip
> > > > properly. That's the only change from RC5.
> > > >
> > > > [1] http://people.apache.org/~rhs/qpid-proton-0.1rc6/
> > > >
> > > > --Rafael
> > >
> >
>


Re: RAT output for Proton

2012-10-26 Thread Rajith Attapattu
I have now added the missing license headers.
Updated RAT output here [1]

I used the following options in case someone wants to try it in the future.
-e *gitignore -e *xml -e TODO -e README* -e *html -e EXAMPLES  -d


Regards,

Rajith

[1] http://creadur.apache.org/rat/

On Thu, Oct 25, 2012 at 9:01 PM, Rajith Attapattu  wrote:
> The following RAT output shows that we are missing a few license
> headers, mostly java files.
>
> http://people.apache.org/~rajith/proton/proton-rat-output.txt
>
> We need to fix them before releasing.
> Unfortunately I need to step out now.
> If somebody hasn't gotten to it by tomorrow morning, I can take care of it.
>
> Regards,
>
> Rajith
>
> P.S There is an option in RAT "-a" that will automatically add the
> license header.
>   This could potentially mess up cmake files. So be careful :)
>
> [1] http://creadur.apache.org/rat/
> [2] http://people.apache.org/~rajith/proton/proton-rat-output.txt


Re: RC6

2012-10-26 Thread Rafael Schloming
Do you know how I get my key to show up there?

--Rafael

On Fri, Oct 26, 2012 at 5:30 AM, Robbie Gemmell wrote:

> I dont think KEYS should be proton specific, its just the Qpid committers
> and should be the same file as a result. Commons-* seem to use the same
> KEYS file for example.
>
> (Aside: we should probably be transitioning away from the KEYS file anyway
> and using the new system they put in place for distribution via
> https://people.apache.org/keys/).
>
> Robbie
>
> On 26 October 2012 02:05, Rajith Attapattu  wrote:
>
> > Sorry I should have done this before you posted RC6 :(
> > We have a few files (mostly java files) that are missing license headers.
> > Please look at the RAT output I posted.
> >
> > Once the final RC is voted, the release manager (in this case Rafi)
> > will have to sign the final artefacts.
> > You already have your key listed here [1]
> > We should move [1] under the proton main dir.
> >
> > Regards,
> >
> > Rajith
> >
> > [1] https://svn.apache.org/repos/asf/qpid/trunk/qpid/KEYS
> >
> > On Thu, Oct 25, 2012 at 8:38 PM, Rafael Schloming 
> > wrote:
> > > I put up an RC6 here[1] with the java shim fixed so the SSL tests skip
> > > properly. That's the only change from RC5.
> > >
> > > [1] http://people.apache.org/~rhs/qpid-proton-0.1rc6/
> > >
> > > --Rafael
> >
>


Re: RC6

2012-10-26 Thread Rajith Attapattu
On Fri, Oct 26, 2012 at 5:30 AM, Robbie Gemmell
 wrote:
> I dont think KEYS should be proton specific, its just the Qpid committers
> and should be the same file as a result. Commons-* seem to use the same
> KEYS file for example.
>
> (Aside: we should probably be transitioning away from the KEYS file anyway
> and using the new system they put in place for distribution via
> https://people.apache.org/keys/).
>

Sorry I haven't looked at this stuff for a while now, so wasn't aware
about the new mechanism.
The existing KEYS file was inside the qpid tree, hence my suggestion.
Actually a better suggestion would have been to move that file to the top level.

But anyways, given that we have a new system in place it's irrelevant now.
We should make an attempt to use the new approach.

Rajith

> Robbie
>
> On 26 October 2012 02:05, Rajith Attapattu  wrote:
>
>> Sorry I should have done this before you posted RC6 :(
>> We have a few files (mostly java files) that are missing license headers.
>> Please look at the RAT output I posted.
>>
>> Once the final RC is voted, the release manager (in this case Rafi)
>> will have to sign the final artefacts.
>> You already have your key listed here [1]
>> We should move [1] under the proton main dir.
>>
>> Regards,
>>
>> Rajith
>>
>> [1] https://svn.apache.org/repos/asf/qpid/trunk/qpid/KEYS
>>
>> On Thu, Oct 25, 2012 at 8:38 PM, Rafael Schloming 
>> wrote:
>> > I put up an RC6 here[1] with the java shim fixed so the SSL tests skip
>> > properly. That's the only change from RC5.
>> >
>> > [1] http://people.apache.org/~rhs/qpid-proton-0.1rc6/
>> >
>> > --Rafael
>>


Re: RC6

2012-10-26 Thread Robbie Gemmell
I dont think KEYS should be proton specific, its just the Qpid committers
and should be the same file as a result. Commons-* seem to use the same
KEYS file for example.

(Aside: we should probably be transitioning away from the KEYS file anyway
and using the new system they put in place for distribution via
https://people.apache.org/keys/).

Robbie

On 26 October 2012 02:05, Rajith Attapattu  wrote:

> Sorry I should have done this before you posted RC6 :(
> We have a few files (mostly java files) that are missing license headers.
> Please look at the RAT output I posted.
>
> Once the final RC is voted, the release manager (in this case Rafi)
> will have to sign the final artefacts.
> You already have your key listed here [1]
> We should move [1] under the proton main dir.
>
> Regards,
>
> Rajith
>
> [1] https://svn.apache.org/repos/asf/qpid/trunk/qpid/KEYS
>
> On Thu, Oct 25, 2012 at 8:38 PM, Rafael Schloming 
> wrote:
> > I put up an RC6 here[1] with the java shim fixed so the SSL tests skip
> > properly. That's the only change from RC5.
> >
> > [1] http://people.apache.org/~rhs/qpid-proton-0.1rc6/
> >
> > --Rafael
>