[openstack-dev] [oslo] versioning and releases

Doug Hellmann doug.hellmann at dreamhost.com
Tue Jun 17 23:12:09 UTC 2014

On Tue, Jun 17, 2014 at 6:42 PM, Robert Collins
<robertc at robertcollins.net> wrote:
> On 11 June 2014 04:24, Doug Hellmann <doug.hellmann at dreamhost.com> wrote:
> ...
>> Incubated libraries have been released at the end of a release cycle,
>> as with the rest of the integrated packages. Adopted libraries have
>> historically been released "as needed" during their development. We
>> would like to synchronize these so that all oslo libraries are
>> officially released with the rest of the software created by OpenStack
>> developers.
> So I see a fairly big problem with this - its going to impact heavily
> on anyone that isn't part of oslo using oslo.* as a library. For
> instance, the openstack clients which use oslo.config - they will not
> be able to get new features or bugfixes from trunk without waiting 6
> months. And that means either:
>  - carrying conditional code (version checking the version of oslo) in
> their trunk,
>  - or not consuming new features until up to 6 months after release
>  - or making their trunk *uninstallable* (because it will have either
> an dep on a non-existing version, or a dep on an old version that
> doesn't actually include the needed feature).
> The last option is what I suspect will happen, and that will be very
> sad, since it seems unneeded. It will also make version management
> hard for CD deployers (like TripleO's deploy-trunk default) because
> incorrect requirements files are anaethema.

I don't follow that. What does synchronizing the release cycles have
to do with whether or not things are installable? In order to make use
of the library in unit tests, the project will have to have the
correct versions in their requirements file so the package can be
installed from pypi -- including allowing an alpha release if that's
where the feature is. To allow unit tests to work on developer
systems, we will tag alpha releases and publish them to pypi. AFAICT,
the only thing that's special about those releases is that they will
be wheels instead of sdists.

> Markmc's mail about wanting the same rhythm doesn't make sense to me
> since more than half the openstack artifacts *do not have* the 6 month
> rhythm - client libraries have always been semver, release when ready.
> AIUI the stable branches thing in the server space exists to give us
> freedom to evolve the code super rapidly, in these large, fairly
> monolithic APIs; we need it because we are always
> backward-incompatible between server /releases/ (only of the server
> HTTP API) - if we do semver, we'd be doing a breaking release every 6
> months. So stable branches is a valve to balance trunk velocity of
> independent codebases vs user demands for bugfixes and security fixes.
> The other basic model we have as software releasers is to do stable
> branches only when a backwards incompatible change has happened -
> thats what we demand from projects like setuptools *and our client
> libraries*: we want to be able to fork at that point, but the default
> behaviour is not to fork, and instead just not break things.

And that's what I plan to do with Oslo. I mentioned stable branches as
a solution for security fixes mainly, though I wouldn't say "only". I
don't expect to be doing a lot of back-porting of insignificant fixes,
since we hardly have enough reviewers to cover the changes we're
trying to make now.

> "Not break things" is roughly proportional to the size of the
> codebase, and the oslo projects are typically small focused projects
> where this seems reasonable to expect. *More than that*, I believe its
> essential, or we'll have a very hard time propogating new releases out
> amongst the servers.

Believe me, I know how hard it can be to update the version of a
library used by more than one project in OpenStack. That's why I have
been focusing so much attention on figuring out how to handle the
cross-testing at the unit test level, so we know in the gate when a
change in a library is going to break one of the servers, and can
reject the patch.

> tl;dr there seems to be no reason to do one release every 6 months of
> olso.*, and doing so seems likely to only incur costs, since the
> discipline needed to do regular semver with good backwards compat is a
> discipline we're going to have to exercise anyway.

As you point out, most of these libraries are small. I don't actually
expect to create new releases of all of them every cycle. In fact, I
expect most of them to be extremely stable over time.


> -Rob
> --
> Robert Collins <rbtcollins at hp.com>
> Distinguished Technologist
> HP Converged Cloud
> _______________________________________________
> 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