On AMQP Versions

11 views
Skip to first unread message

Kenneth Kalmer

unread,
May 27, 2011, 3:59:38 AM5/27/11
to daemon-kit
Dear list

I've had some great contributions from Marc Bowes recently where he
slapped me on the wrists for the legacy use of the 0.6-series of the
AMQP gem. I'm currently torn whether we should have the next DK
release use the new 0.8-series AMQP gem (currently in RC5 status) or
stick to 0.7 until a 0.8 stable is released.

Gut feel says we might want to take 0.8 as the preferred option for
the dk generators and the dk-ruote integration. Since DK's internal
use of the AMQP gem is minimal, I need to gauge the impact this will
have on the projects people use DK for. I personally don't leverage
all of the AMQP specification, so for my personal use it would make no
difference which version we're on. I only need to orchestrate the
version with the ruote-amqp gem.

Any objections to this, or can I hack away and get this onto master
later today ?

The next release is still a few weeks off as I'm building up speed
working through the pull requests and cleaning up some internals.

Thanks to everyone involved recently in getting various parts dusted
off and ready for a whole new life!

Ciao

--
Kenneth Kalmer
kenneth...@gmail.com
http://opensourcery.co.za
@kennethkalmer

Marc Bowes

unread,
May 27, 2011, 4:28:29 AM5/27/11
to daemo...@googlegroups.com
Why can't we just split the generators into a 0.7 and 0.8 generator? This may be overkill, but may be a generally good pattern for when APIs change significantly.


--
You received this message because you are subscribed to the Google Groups "Daemon Kit" group.
To post to this group, send email to daemo...@googlegroups.com.
To unsubscribe from this group, send email to daemon-kit+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/daemon-kit?hl=en.


Kenneth Kalmer

unread,
May 27, 2011, 5:24:05 AM5/27/11
to daemo...@googlegroups.com
On Fri, May 27, 2011 at 10:28 AM, Marc Bowes <marc...@gmail.com> wrote:
> Why can't we just split the generators into a 0.7 and 0.8 generator? This
> may be overkill, but may be a generally good pattern for when APIs change
> significantly.

Ultimately the generator just spits out a line in the Gemfile for
requiring the amqp gem, so I can have the generator default to one
version and have a commented out line for the other.

The potential issues lie in these files:

https://github.com/kennethkalmer/daemon-kit/blob/master/lib/daemon_kit/dk_amqp.rb
https://github.com/kennethkalmer/daemon-kit/blob/master/lib/daemon_kit/ruote_workitem.rb#L94
https://github.com/kennethkalmer/daemon-kit/blob/master/lib/daemon_kit/ruote_participants.rb#L98-120

If the AMQP gem's API's are the same for those three spots it would
really not make a difference.

As an aside, feedback on twitter has been both positive and not so far:

https://twitter.com/rubyamqp/status/74024997752029184 (positive)
https://twitter.com/coffeeaddict_nl/status/74034699307192321 (warning)

Thanks for the feedback so far.

Ciao !

Marc Bowes

unread,
May 27, 2011, 5:31:49 AM5/27/11
to daemo...@googlegroups.com
So my idea was a blend of the two responses on twitter. I'd go for 0.8 but have 0.7 optable, which is the reverse of the second suggestion. Otherwise you run the risk of 0.8 being the stable/adopted version by the time people figure out there is a new DK release. Then you're always playing catchup. As long as it's easy for a user to swap versions, there should be minimal damage done by defaulting to newer tech.

Kenneth Kalmer

unread,
May 29, 2011, 9:10:53 AM5/29/11
to daemo...@googlegroups.com
On Fri, May 27, 2011 at 11:31 AM, Marc Bowes <marc...@gmail.com> wrote:
> So my idea was a blend of the two responses on twitter. I'd go for 0.8 but
> have 0.7 optable, which is the reverse of the second suggestion. Otherwise
> you run the risk of 0.8 being the stable/adopted version by the time people
> figure out there is a new DK release. Then you're always playing catchup. As
> long as it's easy for a user to swap versions, there should be minimal
> damage done by defaulting to newer tech.

OK, so my experiments with ruote-amqp and the ruote-amqp-ping-pong [1]
example had me come to more or less the same conclusion as Marc. The
thing is we have to provide better documentation around the AMQP
versions (and the project overall, but that is a separate issue
altogether).

The gist of it is this:

0.7.1 works well and supports older RabbitMQ servers and all Ruby
versions (1.8.7, REE, 1.9.2), should be adoptable by developers
targeting older systems, or systems that you 'apt-get install
rabbitmq'. It targets the 0.8 AMQP SPEC.

0.8.0.rc12 is a much better design, better documentation and such and
will make for a better "default". The downsides are however that it
doesn't support 1.8.7 yet due to a Bug in Ruby itself. It also
requires RabbitMQ 2.0 or later, or another broker that implements the
0.9.1 AMQP SPEC. Oh, it also brings in EventMachine 1.0.0 which is
currently an RC.

So herewith a summary:

1. DK depends on eventmachine >= 0.10.12, which will allow the EM RC
required by AMQP 0.8
2. Default to 0.8.0 in generated Gemfile for all AMQP related projects
3. Clearly document the option to use 0.7.1 without a hitch

I'll tackle the documentation in the coming days, and make a separate
post to the list about my plans there.

For now, by show of hands, do I bump to 0.1.9 because of this
dependency change (although no API changes have been made), or will
0.1.8.2 be suitable ?

Kind regards

1. http://groups.google.com/group/openwferu-users/browse_thread/thread/f7a8138e987867a3

Marc Bowes

unread,
May 30, 2011, 3:07:38 AM5/30/11
to daemo...@googlegroups.com
Since we have this notion of generators, maybe we can be clever about this and spit out a Gemfile using the 0.7.1 gem if run on 1.8.7?

Reply all
Reply to author
Forward
0 new messages