[openstack-dev] [all][tc] Languages vs. Scope of "OpenStack"
thierry at openstack.org
Thu May 19 13:19:20 UTC 2016
The discussion on the addition of golang focuses on estimating community
costs vs. technical benefits, so that the TC can make the right call for
"OpenStack". From that discussion, we established that the costs for
cross-project teams (Infra...) seem to be workable. There is still
significant community fragmentation effects as we add another language,
creating language-expert silos, duplicating efforts, and losing some
productivity as some needlessly rewrite things in golang. But we seem
generally ready to accept that cost because we are missing a tool in our
toolbelt: a language that lets us do such native optimization.
We have a number of projects in OpenStack that are more low-level than
others and which require such optimization, and for those projects (or
subprojects) our current mix of language is not satisfactory. The Swift
team in particular has spent a lot of time trying to get the I/O
behavior they require with hard disk access using Python, and they
certainly did not jump on the golang bandwagon lightly.
I believe the programming languages you need in OpenStack official
projects are a function of the scope you define for OpenStack official
considered that web interfaces that purely consume OpenStack APIs are
projects that consume OpenStack, rather than part of OpenStack itself.
In the same vein, if we consider lower-level projects (which often
require such native optimization) as part of "OpenStack", rather than as
external open source projects that should be integrated by "OpenStack",
then we need a language like golang in our toolbelt. There is basically
no point in saying no to golang in OpenStack if we need lower-level
native optimization in OpenStack: we'll have to accept the community
cost that comes with such a community scope.
So the real question we need to answer is... where does OpenStack stop,
and where does the wider open source community start ? If OpenStack is
purely an "integration engine", glue code for other lower-level
technologies like hypervisors, databases, or distributed block storage,
then the scope is limited, Python should be plenty enough, and we don't
need to fragment our community. If OpenStack is "whatever it takes to
reach our mission", then yes we need to add one language to cover
lower-level/native optimization, because we'll need that... and we need
to accept the community cost as a consequence of that scope choice.
Those are the only two options on the table.
I'm actually not sure what is the best answer. But I'm convinced we, as
a community, need to have a clear answer to that. We've been avoiding
that clear answer until now, creating tension between the advocates of
an ASF-like collection of tools and the advocates of a
tighter-integrated "openstack" product. We have created silos and
specialized areas as we got into the business of developing time-series
databases or SDNs. As a result, it's not "one community" anymore. Should
we further encourage that, or should we focus on what the core of our
mission is, what we have in common, this integration engine that binds
all those other open source projects into one programmable
infrastructure solution ?
Thierry Carrez (ttx)
More information about the OpenStack-dev