[all][tc] Skyline as a new official project [was: What's happening in Technical Committee: summary 15th Oct, 21: Reading: 5 min]
Jeremy Stanley
fungi at yuggoth.org
Thu Dec 9 18:03:10 UTC 2021
On 2021-12-09 16:57:27 +0100 (+0100), Jean-Philippe Evrard wrote:
[...]
> So the question is: Is OpenStack ready to move forward and adapt
> to new kinds of packaging/software? If yes, let's modify the PTIs
> (or python PTI) to cover the case for skyline, and allow that team
> to move forward. It's not like it's doing something very different
> than some new python projects.
>
> Yes, OpenStack is mature... I (simply) hope it's also a place for
> casual contributions, and where developers can have fun with tech.
> And yes, it won't please everyone from day one (especially
> distros), but I hope we can work this out together, rather than
> discard the project because it doesn't fit the mold.
[...]
The reason I raised those points on the review was in order to
highlight inconsistencies with OpenStack as a whole. If OpenStack is
defined by anything, it's consistent development workflows and
automation, which allow small groups of people to take advantage of
economies of scale in order to minimize maintenance over time across
the whole of the set of projects which comprise it. Inconsistency
has an inherent cost which the entire community bears, from tracking
integration failures in development to keeping concise recipes for
packaging in distributions to operators being able to configure all
services the same way and expect the same logging formats.
Most of the benefits a project gets from being "part of OpenStack"
are derived directly from the established standards and norms which
enable OpenStack to be treated as a cohesive whole rather than a
mere "bucket of parts" with tooling choices made independently by
their respective development teams. Deviation from these
expectations should be deliberate and come with a clear rationale
which benefits OpenStack as a whole rather than one project alone.
Let's take the current example point by point:
* Skyline implements its own routines for things like
configuration and logging rather than using Oslo libraries.
Should all OpenStack projects "move forward" to this model,
choose their own configuration and logging formats, implement
their own solutions for documenting these, and so on? Does
inconsistency here benefit operators in some way?
* Skyline defines the interdependencies between its components
with a mix of "monorepo" (multiple packages from a single
repository) and Git submodule references (pinning specific
commit ids as virtual subtrees of another repository), rather
than establishing a loose coupling with explicit version numbers
and package relationships. This choice prevents them from taking
advantage of features in Zuul like cross-project change
dependencies. Is this a pattern the other OpenStack projects
should follow? Does it benefit distribution package maintainers
to need to track fundamentally different repository layouts and
build processes for each of them?
* Skyline performs its release versioning by committing the
version strings to files in its repositories rather than
assigning them at build time from Git tag metadata. This leads
to ambiguity as to what exact state of the repository represents
that version, as well as opening up the possibility of
forgetting to merge the version update before tagging (a very
common problem which drove OpenStack to rely on its current
model). Wholly different tools are also needed in order to
track versions for these projects as a result. Should the rest
of OpenStack's projects follow suit there? Has something changed
to make the idea of using Git to signal releases a bad one?
* Skyline uses makefiles to script its build and test workflows
rather than tox, adding a tox wrapper around the make targets
in order to nominally comply with the OpenStack PTI. As a
result, it's unable to rely on most of tox's features for
environment isolation, package management, path overrides, et
cetera. OpenStack projects have solved a lot of cross-project
development workflow challenges through applying consistent
changes across the tox.ini files of repositories, should those
solutions be abandoned and recreated for make instead?
* Skyline does not put its external Python package dependencies in
central lists nor use tools which would allow it to rely on
OpenStack's global constraints implementation, making it very
hard for them to guarantee that their software can run with the
same versions of shared dependencies as the rest of OpenStack.
Is this unnecessary? Have we given up on the idea that two
pieces of OpenStack software can be coinstalled into one
environment, or that Linux distributions won't be stuck having
to package many different versions of the same software because
OpenStack projects don't agree on which versions work for them
any longer?
To be perfectly clear, I don't oppose accepting Skyline as a project
in OpenStack, even in its current state, but I do feel like it's not
going to end up released as part of OpenStack unless it can address
the challenges I outlined above. Most of these are fairly
superficial changes to implement, however, and can be done by simply
copying the solutions already used in other OpenStack projects or
retroactively applying our cookie-cutters. "Moving OpenStack
forward" to be more like Skyline, on the other hand, is bound to be
far more work than the Skyline team can handle on its own and take
far longer, though I'm not opposed to the idea of discussing which
of these differences may make sense for OpenStack to adopt in the
future.
My deeper concern is that these differences are a clear indication
that the software was written outside the OpenStack community, with
no original consideration for consistency with OpenStack itself, and
so there are probably more significant architectural modifications
needed (beyond integrating oslo.config and oslo.log) which I'm not
well-placed to spot. Those can addressed in time too, and while
Skyline is an official team within OpenStack, but they will still
need to be taken care of at some point early in the life of the
project either by becoming like the rest of OpenStack or helping the
rest of OpenStack become more like Skyline.
--
Jeremy Stanley
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 963 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack-discuss/attachments/20211209/aed49b6d/attachment.sig>
More information about the openstack-discuss
mailing list