<div dir="ltr">On Wed, Jun 17, 2015 at 2:44 PM, Sean Dague <span dir="ltr"><<a href="mailto:sean@dague.net" target="_blank">sean@dague.net</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 06/17/2015 03:08 PM, Doug Hellmann wrote:<br>
> Excerpts from Sean Dague's message of 2015-06-17 14:07:35 -0400:<br>
>> On 06/17/2015 01:29 PM, Clint Byrum wrote:<br>
>>> Excerpts from Sean Dague's message of 2015-06-16 10:16:34 -0700:<br>
>>>> On 06/16/2015 12:49 PM, Clint Byrum wrote:<br>
>>>>> Excerpts from Sean Dague's message of 2015-06-16 06:22:23 -0700:<br>
>>>>>> FYI,<br>
>>>>>><br>
>>>>>> One of the things that came out of the summit for Devstack plans going<br>
>>>>>> forward is to trim it back to something more opinionated and remove a<br>
>>>>>> bunch of low use optionality in the process.<br>
>>>>>><br>
>>>>>> One of those branches to be trimmed is all the support for things beyond<br>
>>>>>> RabbitMQ in the rpc layer. RabbitMQ is what's used by 95%+ of our<br>
>>>>>> community, that's what the development environment should focus on.<br>
>>>>>><br>
>>>>>> The patch to remove all of this is here -<br>
>>>>>> <a href="https://review.openstack.org/#/c/192154/" rel="noreferrer" target="_blank">https://review.openstack.org/#/c/192154/</a>. Expect this to merge by the<br>
>>>>>> end of the month. If people are interested in non RabbitMQ external<br>
>>>>>> plugins, now is the time to start writing them. The oslo.messaging team<br>
>>>>>> already moved their functional test installation for alternative<br>
>>>>>> platforms off of devstack, so this should impact a very small number of<br>
>>>>>> people.<br>
>>>>>><br>
>>>>><br>
>>>>> The recent spec we added to define a policy for oslo.messaging drivers is<br>
>>>>> intended as a way to encourage that 5% who feels a different messaging<br>
>>>>> layer is critical to participate upstream by adding devstack-gate jobs<br>
>>>>> and committing developers to keep them stable. This change basically<br>
>>>>> slams the door in their face and says "good luck, we don't actually care<br>
>>>>> about accomodating you." This will drive them more into the shadows,<br>
>>>>> and push their forks even further away from the core of the project. If<br>
>>>>> that's your intention, then we need to have a longer conversation where<br>
>>>>> you explain to me why you feel that's a good thing.<br>
>>>><br>
>>>> I believe it is not the responsibility of the devstack team to support<br>
>>>> every possible backend one could imagine and carry that technical debt<br>
>>>> in tree, confusing new users in the process that any of these things<br>
>>>> might actually work. I believe that if you feel that your spec assumed<br>
>>>> that was going to be the case, you made a large incorrect externalities<br>
>>>> assumption.<br>
>>>><br>
>>><br>
>>> I agree with you, and support your desire to move things into plugins.<br>
>>><br>
>>> However, your timing is problematic and the lack of coordination with<br>
>>> the ongoing effort to deprecate untested messaging drivers gracefully<br>
>>> is really frustrating. We've been asking (on this list) zmq interested<br>
>>> parties to add devstack-gate jobs and identify themselves as contacts<br>
>>> to support these drivers. Meanwhile this change and the wording around<br>
>>> it suggest that they're not welcome in devstack.<br>
>><br>
>> So there has clearly been some disconnect here. This patch was<br>
>> originally going to come later in the cycle, but some back and forth on<br>
>> proton fixes with Flavio made me realize we really needed to get this<br>
>> direction out in front of more people (which is why it wasn't just a<br>
>> patch, it was also an email heads up). So there wasn't surprise when it<br>
>> was merged.<br>
>><br>
>> We built the external plugin mechanism in devstack to make it very easy<br>
>> to extend out of tree, and make it easy to let people consume your out<br>
>> of tree stuff. It's the only way that devstack works in the big tent<br>
>> world, because there just is too much stuff for the team to support.<br>
><br>
> Every change like this makes it harder for newcomers to participate.<br>
> Frankly, it makes it harder for everyone because it means there are<br>
> more moving parts, but in this specific case many of the people<br>
> involved in these messaging drivers are relatively new, so I point<br>
> that out. The already difficult task of setting up sufficient<br>
> functional tests has now turned into "figure out devstack", too.<br>
> The long-term Oslo team members can't do all of this work, any more<br>
> than the devstack team can, but things were at least working in<br>
> what we thought was a stable way so we could try to provide guidance.<br>
><br>
>><br>
>>>>> Also, I take issue with the value assigned to dropping it. If that 95%<br>
>>>>> is calculated as orgs_running_on_rabbit/orgs then it's telling a really<br>
>>>>> lop-sided story. I'd rather see compute_nodes_on_rabbit/compute_nodes.<br>
>>>>><br>
>>>>> I'd like to propose that we leave all of this in tree to match what is<br>
>>>>> in oslo.messaging. I think devstack should follow oslo.messaging and<br>
>>>>> deprecate the ones that oslo.messaging deprecates. Otherwise I feel like<br>
>>>>> we're Vizzini cutting the rope just as The Dread Pirate 0mq is about to<br>
>>>>> climb the last 10 meters to the top of the cliffs of insanity and battle<br>
>>>>> RabbitMQ left handed. I know, "inconceivable" right?<br>
>>>><br>
>>>> We have an external plugin mechanism for devstack. That's a viable<br>
>>>> option here. People will have to own and do that work, instead of<br>
>>>> expecting the small devstack team to do that for them. I believe I left<br>
>>>> enough of a hook in place that it's possible.<br>
>>>><br>
>>><br>
>>> So lets do some communication, and ask for the qpid and zmq people to<br>
>>> step up, and help them move their code into an external plugin, and add<br>
>>> documentation to help their users find it. The burden should shift, but<br>
>>> it still rests with devstack until it _does_ shift.<br>
>><br>
>> We still need to set a clock, because in the past when we haven't, the<br>
>> burden never shifts.<br>
><br>
> In the past when we've made big changes like this, we've treated<br>
> them as deprecations with long lead times. So, how about the beginning<br>
> of the N cycle (or end of M)? That gives the teams time to ramp up<br>
> and understand what's going on within Oslo, before having to figure<br>
> out the whole world in order to meet the publicly discussed testing<br>
> requirements they already knew about.<br>
><br>
>><br>
>>>> That would also let them control the code relevant to their plugin,<br>
>>>> because there is no way that devstack was going to gate against other<br>
>>>> backends here, so we'd end up breaking them pretty often, and it taking<br>
>>>> a while to fix them in tree.<br>
>>><br>
>>> I love that idea. That is not what the change does though. It deletes<br>
>>> with nary a word about what users of this code should do until new<br>
>>> external plugins appear.<br>
>><br>
>> Sure, lets get folks engaged now. I'm happy to help people debug this<br>
>> code to get it working. The burden of the effort does need to be on the<br>
>> folks with the feature they want to easily enable in devstack, but we've<br>
>> spent a lot of time getting this stuff working for a lot of different<br>
>> use cases. It should only be a couple of days of poking, even for<br>
>> someone pretty new at this.<br>
><br>
> Does the existing code in devstack not work? Is retaining it<br>
> preventing other work the devstack team wants to undertake? Does<br>
> this have to be done *right now*? Because, as Clint pointed out, the<br>
> timing is really bad for the people your change affects.<br>
><br>
>> If we have a "pretty close" attempt by a team, I'll happily work out any<br>
>> last mile problems. That actually worked out really great with the<br>
>> modular grenade / heat effort, as all the last mile bits got sorted in 2<br>
>> hrs time because there was mostly functional bits on both sides of the<br>
>> fence.<br>
><br>
> Is there documentation for the new plugin system? Are there examples<br>
> available?<br>
<br>
</div></div>Yes - <a href="http://docs.openstack.org/developer/devstack/plugins.html" rel="noreferrer" target="_blank">http://docs.openstack.org/developer/devstack/plugins.html</a><br>
<br>
And yes:<br>
<br>
* <a href="https://github.com/stackforge/ec2-api/tree/master/devstack" rel="noreferrer" target="_blank">https://github.com/stackforge/ec2-api/tree/master/devstack</a><br>
* <a href="https://github.com/openstack/trove/tree/master/devstack" rel="noreferrer" target="_blank">https://github.com/openstack/trove/tree/master/devstack</a><br>
* <a href="https://github.com/openstack/zaqar/tree/master/devstack" rel="noreferrer" target="_blank">https://github.com/openstack/zaqar/tree/master/devstack</a><br>
* <a href="https://github.com/openstack/gnocchi/tree/master/devstack" rel="noreferrer" target="_blank">https://github.com/openstack/gnocchi/tree/master/devstack</a><br>
* <a href="https://git.openstack.org/openstack/dragonflow" rel="noreferrer" target="_blank">https://git.openstack.org/openstack/dragonflow</a><br>
* <a href="https://github.com/openstack/networking-odl/tree/master/devstack" rel="noreferrer" target="_blank">https://github.com/openstack/networking-odl/tree/master/devstack</a><br>
* <a href="https://github.com/openstack/magnum/tree/master/devstack" rel="noreferrer" target="_blank">https://github.com/openstack/magnum/tree/master/devstack</a><br>
<br>
And a few more I could dig up. Projects have been running this way as<br>
gating jobs since Feb (I think ec2-api was the first, that commit is Feb<br>
7th). We should bring links to all the examples back into the devstack<br>
tree, just haven't gotten around to it yet.<br>
<span class="im HOEnZb"><br></span></blockquote><div><br></div><div>I should note that Sean was extremely helpful in setting this up for networking-odl, and I suspect others as well. And once we got this working, it's been awesome to control our devstack destiny out of tree like this. It's a little work to get it going, but once you do, it's totally worth it for both the devstack community as well as the projects making use of this. Kudos to the team for making this possible!<br><br></div><div>The examples sited above should make it easy for other teams to copy this work and adapt to their own needs as well.<br><br></div><div>Thanks,<br></div><div>Kyle<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="im HOEnZb">
        -Sean<br>
<br>
--<br>
Sean Dague<br>
<a href="http://dague.net" rel="noreferrer" target="_blank">http://dague.net</a><br>
<br>
</span><div class="HOEnZb"><div class="h5">__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</div></div></blockquote></div><br></div></div>