[openstack-dev] [oslo] change to deprecation policy in the incubator

Doug Hellmann doug at doughellmann.com
Mon Sep 1 17:15:04 UTC 2014


On Aug 29, 2014, at 5:53 AM, Flavio Percoco <flavio at redhat.com> wrote:

> On 08/28/2014 06:14 PM, Doug Hellmann wrote:
>> Before Juno we set a deprecation policy for graduating libraries that said the incubated versions of the modules would stay in the incubator repository for one full cycle after graduation. This gives projects time to adopt the libraries and still receive bug fixes to the incubated version (see https://wiki.openstack.org/wiki/Oslo#Graduation).
>> 
>> That policy worked well early on, but has recently introduced some challenges with the low level modules. Other modules in the incubator are still importing the incubated versions of, for example, timeutils, and so tests that rely on mocking out or modifying the behavior of timeutils do not work as expected when different parts of the application code end up calling different versions of timeutils. We had similar issues with the notifiers and RPC code, and I expect to find other cases as we continue with the graduations.
>> 
>> To deal with this problem, I propose that for Kilo we delete graduating modules as soon as the new library is released, rather than waiting to the end of the cycle. We can update the other incubated modules at the same time, so that the incubator will always use the new libraries and be consistent.
>> 
>> We have not had a lot of patches where backports were necessary, but there have been a few important ones, so we need to retain the ability to handle them and allow projects to adopt libraries at a reasonable pace. To handle backports cleanly, we can “freeze” all changes to the master branch version of modules slated for graduation during Kilo (we would need to make a good list very early in the cycle), and use the stable/juno branch for backports.
>> 
>> The new process would be:
>> 
>> 1. Declare which modules we expect to graduate during Kilo.
>> 2. Changes to those pre-graduation modules could be made in the master branch before their library is released, as long as the change is also backported to the stable/juno branch at the same time (we should enforce this by having both patches submitted before accepting either).
>> 3. When graduation for a library starts, freeze those modules in all branches until the library is released.
>> 4. Remove modules from the incubator’s master branch after the library is released.
>> 5. Land changes in the library first.
>> 6. Backport changes, as needed, to stable/juno instead of master.
>> 
>> It would be better to begin the export/import process as early as possible in Kilo to keep the window where point 2 applies very short.
>> 
>> If there are objections to using stable/juno, we could introduce a new branch with a name like backports/kilo, but I am afraid having the extra branch to manage would just cause confusion.
>> 
>> I would like to move ahead with this plan by creating the stable/juno branch and starting to update the incubator as soon as the oslo.log repository is imported (https://review.openstack.org/116934).
>> 
>> Thoughts?
> 
> I like the plan. By being more aggressive in the way we deprecate
> graduated modules from oslo-incubator helps making sure the projects are
> all aligned.
> 
> One thing we may want to think about is to graduate fewer modules in
> order to give liaisons enough time to migrate the projects they're
> taking care of. The more libs we graduate, the more work we're putting
> on liaisons, which means they'll need more time (besides the time
> they're dedicating to other projects) to do that work.

I think the libs we’ll be working on in Kilo are a bit more complicated than what we’ve done in Juno, so that’s likely to happen as a natural consequence. We also don’t expect projects to adopt the libraries automatically in the cycle where they are graduated (that was the original intent behind delaying when we delete the code from the repository). 

> 
> One more thing, we need to add to the list of ports to do during Kilo
> the backlog of ports that haven't happened yet. For example, I haven't
> ported glance to oslo.utils yet. I expect to do it before the end of the
> cycle but.... Murphy :)

You raise a good point, that we need to audit which projects are using code that has now graduated, and work with the liaisons from those projects on patches and reviews. It would be good if we could get caught up by K1 or K2 at the latest. I’m already working on checking the libraries we have released to ensure we finished all of the steps after that initial release. Does anyone else want to volunteer to do the audit of consuming projects?

Doug


> 
> Flavio
> 
> 
> -- 
> @flaper87
> Flavio Percoco
> 
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




More information about the OpenStack-dev mailing list