<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Mar 2, 2015 at 3:38 PM, Joe Gordon <span dir="ltr"><<a href="mailto:joe.gordon0@gmail.com" target="_blank">joe.gordon0@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Mon, Mar 2, 2015 at 9:59 AM, Kyle Mestery <span dir="ltr"><<a href="mailto:mestery@mestery.com" target="_blank">mestery@mestery.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On Mon, Mar 2, 2015 at 9:57 AM, Ihar Hrachyshka <span dir="ltr"><<a href="mailto:ihrachys@redhat.com" target="_blank">ihrachys@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">-----BEGIN PGP SIGNED MESSAGE-----<br>
Hash: SHA1<br>
<br>
Hi Daniel,<br>
<br>
thanks for a clear write-up of the matter and food for thought.<br>
<br>
I think the idea of having more smooth development mode that would not<br>
make people to wait for 6+ months to release a new feature is great.<br>
<br></blockquote></span><div>++<br> <br></div><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
It's insane to expect that feature priorities won't ever slightly<br>
shift in the next 6 months. Having a limited list of features targeted<br>
for the next 6 months is prone to mistakes, since people behind some<br></blockquote></span></div></div></div></blockquote><div><br></div></span><div>* Sure, we have had a few things that popped up, nova EC2 split for example. But this is fairly rare.</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
of approved features may need to postpone the effort for any type of<br>
reasons (personal, job rush, bad resource allocation, ...), and we</blockquote></span></div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
then end up with approved specs with no actual code drops, using<br>
review 'slots' that would better be spent for other features that were<br>
not that lucky to get a rubber stamp during spec phase. Prior resource<br></blockquote></span></div></div></div></blockquote><div><br></div></span><div><div>* As stated below specs approval is very much not rubber stamping</div></div><div>* As stated below this doesn't even make sense, we are *not* using review slots.</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
allocation would probably work somehow if we were working for the same<br>
company that would define priorities to us, but it's not the case. </blockquote></span></div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br></blockquote></span><div>It should be noted that even though Nova is using slots for reviews, Neutron is not. I've found that it's hard to try and "slot" people in to review specific things. During Juno I tried this for Neutron, and it failed miserably. For Kilo in Neutron, we're not using slots but instead I've tried to highlight the approved specs of "Essential" and "High" priority for review by all reviews, core and non-core included. It's gone ok, but the reality is you can't force people to review things. There are steps submitters can take to try and get timely review (lots of small, easy to digest patches, quick turnaround of comments, engagement in IRC and ML, etc.).<br></div></div></div></div></blockquote><div><br></div></span><div>So this is a big fat lie, one that others believe as well. Nova is *not* using slots for reviews. We discussed using slots for reviews but did not adopt them.</div><div><div class="h5"><div> </div></div></div></div></div></div></blockquote><div>"But I read it on the internet, it must be true."<br><br></div><div>As I said in a prior email, I'm sorry for that. I recalled reading about nova's use of slots.<br><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> <br></div><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Anecdotally, in neutron, we have two Essential blueprints for Kilo,<br>
and there are no code drops or patches in review for any of those, so<br>
I would expect them to fail to merge. At the same time, I will need to<br>
wait for the end of Kilo to consider adding support for guru reports<br>
to the project. Or in oslo world, I will need to wait for Liberty to<br>
introduce features in oslo.policy that are needed by neutron to switch<br>
to it, etc.<br>
<br></blockquote></span><div>To be fair, there are many reasons those to "Essential" BPs do not have code. I still expect the Pecan focused to have code, but I already moved the Plugin one out of Kilo at this point because there was no chance the code would land.<br><br></div><div>But I get your point here. I think this thread has highlighted the fact that the BP/spec process worked to some extent, but for small things, the core reviewer team should have the ability to say "Yes, we can easily merge that, lets approve that spec" even if it's late in the cycle.<br></div><span><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Another problem is that currently milestones are used merely for<br>
targeting bugs and features, but no one really cares about whether the<br>
actual milestone shipment actually works. Again, a story from neutron<br>
world: Kilo-1 was shipped in the middle of advanced services split,<br>
with some essential patches around distutils setup missing (no proper<br>
migration plan applied, conflicting config files in neutron and *aas<br>
repos, etc.)<br>
<br></blockquote></span><div>This is true, the milestone release matter but are not given enough focus and they release (for the most part) irregardless of items in them, given they are not long-lived, etc.<br><br></div><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
So I'm all for reforms around processes we apply.<br>
<br></blockquote></span><div>"If there's one thing OpenStack is good at, it's change."<br> <br></div><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
That said, I don't believe the real problem here is that we don't<br>
generate project tarballs frequently enough.<br>
<br>
Major problems I see as critical to tackle in our dev process are:<br>
<br>
- - enforced spec/dev mode. Solution: allow to propose (and approve) a<br>
reasonable spec at any moment in the cycle; allow code drops for<br>
approved specs at any moment in the cycle (except pre-release<br>
stabilization time); stop targeting specs: if it's sane, it's probably<br>
sane N+2 cycle from now too.<br>
<br></blockquote></span><div>I'd say this is fine for specs that are small and people agree can easily be merged. I'd say this is not the case for large features near the end of the release which are unlikely to gather enough review momentum to actually merge.<br> <br></div><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
- - core team rubber stamping a random set of specs and putting -2 on<br>
all other specs due to "project priorities". Solution: stop pretending</blockquote></span></div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
core team (or core drivers) can reasonably estimate review and coding<br>
resources for the next cycle. Instead allows community to decide<br>
what's worth the effort by approving all technically reasonable specs<br>
and allowing everyone to invest time and effort in specs (s)he seems<br>
worth it.<br>
<br></blockquote></span><div>If you're referring to Neutron here, I think you fail to estimate the amount of time the neutron-drivers team (along with a handful of other folks) spent reviewing specs and trying to allocate them for this release. We're not just rubber stamping things, we're reviewing, providing comment, and ensuring things fit in a consistent roadmap for the next release. In the past, we've had this sort of "wild west" where all specs are approved, everyone focuses on their own stuff, and a large chunk of things fail to merge. Juno was a classic example of that. Now, we'll likely see a similar amount of that happening in Kilo despite the changes to the process. But I'd at least argue the process here around spec approvals is trying to maintain some coherency release to release.<br></div></div></div></div></blockquote><div><br></div></div></div><div>Same thing is true in nova as well.</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><span><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
- - no due stabilization process before dev milestones. Solution:<br>
introduce one in your team workflow, be more strict in what goes in<br>
during pre milestone stabilization time.<br>
<br>
If all above is properly applied, we would get into position similar<br>
to your proposal. The difference though is that upstream project would<br>
not call milestone tarballs 'Releases'. Still, if there are brave<br>
vendors to ship milestones, fine, they would have the same freedom as<br>
in your proposal.<br>
<br></blockquote></span></div></div></div></blockquote><div><br></div></span><div>While I don't agree with some of your points above, I think what you state above is a good goal IMHO (In fact I proposed the same thing in a previous thread)</div><div><div class="h5"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Note: all the steps mentioned above can be applied on *per team* basis<br>
without breaking existing release workflow.<br>
<br></blockquote></span><div>I think the ideas above are worth exploring further, and I look forward to some discussions on this in Vancouver, as well as continued discussion here on the ML before then.</div></div></div></div></blockquote><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>Thanks,<br></div><div>Kyle<br></div><div><div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Some more comments from stable-maint/distribution side below.<br>
<br>
On 02/24/2015 10:53 AM, Daniel P. Berrange wrote:<br>
[...skip...]<br>
> The modest proposal ===================<br>
[...skip...]<br>
<span>><br>
> Stable branches ---------------<br>
><br>
> The consequences of a 2 month release cycle appear fairly severe<br>
> for the stable branch maint teams at first sight. This is not,<br>
> however, an insurmountable problem. The linux kernel shows an easy<br>
> way forward with their approach of only maintaining stable branches<br>
> for a subset of major releases, based around user / vendor demand.<br>
> So it is still entirely conceivable that the stable team only<br>
> provide stable branch releases for 2 out of the 6 yearly releases.<br>
> ie no additional burden over what they face today. Of course they<br>
> might decide they want to do more stable branches, but maintain<br>
> each for a shorter time. So I could equally see them choosing todo<br>
> 3 or 4 stable branches a year. Whatever is most effective for those<br>
> involved and those consuming them is fine.<br>
><br>
<br>
</span>Since it's not only stable branches that are affected (translators,<br>
documentation writers, VMT were already mentioned), those affected<br>
will probably need to come up with some synchronized decision.<br>
<br>
Let's say we still decide to support two out of six releases (same<br>
scheme as is now). In that case no process that we usually attach to<br>
releases will be running after release dates. This makes me wonder how<br>
it's different from milestones we already have.<br>
<br>
Do you think any downstream vendors will actually ship and support<br>
upstream releases that upstream drops any guarantees for (no VMT, no<br>
stable branches, no gate runs, ...) right after the release date? I<br>
doubt there will be significant interest in it.<br>
<div><div><br>
> Downstream vendors ------------------<br>
><br>
> Downstream product vendors would face a similar decision about how<br>
> they wished to produce. Some OS vendors may choose to ship all<br>
> stable releases in their distros as they become available, others<br>
> may choose to focus on a subset of the releases. In some cases more<br>
> frequent release may actually simplify life for the vendors. For<br>
> example, if there is a feature they need which doesn't make the cut<br>
> for a release today, they currently have the choice of waiting 6<br>
> months for the next release, or carrying non-upstream patches, or<br>
> backporting patches from master. With a 2 month release cycle, it<br>
> is more practical for vendors to simply wait 2 months for the next<br>
> release to ship. So this would probably reduce the amount of patch<br>
> backporting vendors have todo in general, giving them more time to<br>
> focus on useful upstream work.<br>
><br>
> Design summit -------------<br>
><br>
> Another consequence of 2 month release cycles would be that the<br>
> design summits become entirely detached from the release cycles,<br>
> as they'd be on different cycle lengths. So instead of having a<br>
> focus on release planning, design summits would likely become a<br>
> forum for general ongoing collaboration and discussions. Probably a<br>
> half & half merge between the current design summit format and a<br>
> more traditional open source conference. This also ought to result<br>
> in less pressure for all contributors to attend all summits, and so<br>
> be time efficient travelwise and beneficial in cost reduction for<br>
> vendors.<br>
><br>
> More interestingly, is that by detaching them from release cycles,<br>
> the summit organizers could have more flexibility with scheduling<br>
> the summits. They could be placed on the dates that are most<br>
> suitable for desired travel locations, rather than dates suited to<br>
> release schedules. Likewise there is more freedom if there was ever<br>
> a wish to have design summits and the main track conference<br>
> separated.<br>
><br>
> Election process ----------------<br>
><br>
> I wouldn't suggest any changes to project elections or governance.<br>
> It is fine to have elections every 6 months. There is no need for<br>
> that to be tied to release cycle length in any way, particularly as<br>
> people often serve for more than one release already.<br>
><br>
> Release naming --------------<br>
><br>
> Last but not least, there would be some questions around what this<br>
> might mean for release naming. There are many options and I don't<br>
> intend to suggest a particular one is best, just highlight some<br>
> possibilities that could be considered.<br>
><br>
> The easiest is to just drop the idea of release names entirely and<br>
> have everyone refer to the release versions instead. Another<br>
> option is to give each 2 month release its own name, so we'd have<br>
> to come up with 3x as many names during the year. The person<br>
> running the release naming elections will probably have a heart<br>
> attack at this idea :-) Another option is to have names that span a<br>
> couple of releases, perhaps all releases for an entire year get a<br>
> given name.<br>
><br>
> Upgrades & deprecation ----------------------<br>
><br>
> It is common right now for projects to say upgrades are only<br>
> supported between releases N-1 and N. ie to go from Icehouse to<br>
> Kilo, you need to first deploy Juno. This is passable when you're<br>
> talking 6 month gaps between cycles, but when there are 2 month<br>
> gaps it is not reasonable to expect everyone to be moving fast<br>
> enough to keep up with every release. If an organization's<br>
> beurocracy means they can't deploy more often than every 12 months,<br>
> forcing them to deploy the 5 intermediate releases to run upgrade<br>
> scripts is quite unpleasant. We would likely have to look at<br>
> officially allowing upgrades between any (N-3, N-2, N-1) to N. From<br>
> a database POV this should not be hard, since the DB migration<br>
> scripts don't have any built in assumptions about this. Similarly<br>
> the versioned objects used by Nova are quite flexible in this<br>
> regard too, as long as the compat code isn't deleted too soon.<br>
<br>
</div></div>Let's say horizontal teams decided to stick to 2 supported releases<br>
per year scheme (the current one). What would grenade jobs for stable<br>
branches (and master) test in this case?<br>
<div><div><br>
><br>
> Deprecation warnings would need similar consideration. It would not<br>
> be sufficient to deprecate in one release and delete in the next.<br>
> We'd likely want to say that depecations last for a given time<br>
> period rather than number of releases, eg 6 months. This could be<br>
> easily handled by simply including the date of initial deprecation<br>
> in the deprecation message. It would thus be clear when the feature<br>
> will be removed to all involved.<br>
><br>
> Why do releases at all ? ------------------------<br>
><br>
> Some people might wonder why we should do releases at all. We<br>
> already aim to support a continuous deployment model for users as<br>
> an option. Continuous deployment, however, is quite a conceptual<br>
> jump for many users and organizations in particular. Their internal<br>
> software approval processes and bureaucracy can make this<br>
> impractical to even consider in the forseeable future. So if<br>
> openstack did not do releases, then many downstream vendors would<br>
> still end up taking git snapshots and forming periodic releases<br>
> around them. The unsatisfactory result would be a balkanization of<br>
> OpenStack where each vendor duplicated the others work with their<br>
> own release cycles in slightly different ways. To some extent this<br>
> happens already as vendors backport features, due to inability to<br>
> wait 6 months for next major release. A two month release cycle<br>
> though would likely reduce the amount of difference between what<br>
> each vendor ships which would be a good thing in general. Releases<br>
> also serve as a useful hook for marketing activities by the project<br>
> and vendors alike, giving a good opportunity to promote the new<br>
> body of features now available to users. It might be difficult to<br>
> drum up media enthusiasm to promote arbitrary git snapshots, but<br>
> then I'm no marketing expert.<br>
><br>
<br>
</div></div>I think it's still easier for people to work in release/stability mode<br>
for some predefined time than "forever".<br>
<span><br>
><br>
><br>
><br>
> Regards, Daniel<br>
><br>
> [1]<br>
> <a href="http://lists.openstack.org/pipermail/openstack-dev/2014-September/044872.html" target="_blank">http://lists.openstack.org/pipermail/openstack-dev/2014-September/044872.html</a><br>
><br>
><br>
[2] <a href="http://www.openstack.org/projects/openstack-faq/" target="_blank">http://www.openstack.org/projects/openstack-faq/</a><br>
> [3] <a href="https://wiki.openstack.org/wiki/Kilo_Release_Schedule" target="_blank">https://wiki.openstack.org/wiki/Kilo_Release_Schedule</a> [4]<br>
> <a href="http://lists.openstack.org/pipermail/openstack-dev/2014-October/047922.html" target="_blank">http://lists.openstack.org/pipermail/openstack-dev/2014-October/047922.html</a><br>
><br>
</span>-----BEGIN PGP SIGNATURE-----<br>
Version: GnuPG v1<br>
<br>
iQEbBAEBAgAGBQJU9IheAAoJEC5aWaUY1u57/M4H912jtcA8IP424DZnkDVm/6dF<br>
uXl02JqeUeFvne+M9/JoRIO+GwuY05kfmwFAXY5RNX5PmW1MA+eLpirKI5waMjzJ<br>
6zAwViir2sLtrXjpHNKkUrQxzURWN72qvnU+idCJlExU4ZXCkKcTuGo0YC6j46WH<br>
mLuRheb3wRqmkMrZ7nlShaAiSkLBYpslP+NuKH4JuWzyAZqrQsTwcu9duOD9QiTR<br>
294ojzqihCth7npMeXcdMtdkl+GoxP494ojouWqVTAYCpWDfTiZw3/Slb0VTYVIe<br>
uIS1gN2Hmur1vTbkM4kgvU3D9Uf+uLS9vH9GDg+zyDsjQQm/6RToCOTFiAYp8w==<br>
=nhsu<br>
-----END PGP SIGNATURE-----<br>
<div><div><br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</div></div></blockquote></div></div></div><br></div></div>
<br>__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div></div></div><br></div></div>
<br>__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div></div>