[openstack-dev] [all] The future of the integrated release

Jay Pipes jaypipes at gmail.com
Tue Aug 19 14:37:40 UTC 2014


Caution: words below may cause discomfort. I ask that folks read *all* 
of my message before reacting to any piece of it. Thanks!

On 08/19/2014 02:41 AM, Robert Collins wrote:
> On 18 August 2014 09:32, Clint Byrum <clint at fewbar.com> wrote:
>
> I can see your perspective but I don't think its internally consistent...
>
>> Here's why folk are questioning Ceilometer:
>>
>> Nova is a set of tools to abstract virtualization implementations.
>
> With a big chunk of local things - local image storage (now in
> glance), scheduling, rebalancing, ACLs and quotas. Other
> implementations that abstract over VM's at various layers already
> existed when Nova started - some bad ( some very bad!) and others
> actually quite ok.
>
>> Neutron is a set of tools to abstract SDN/NFV implementations.
>
> And implements a DHCP service, DNS service, overlay networking : its
> much more than an abstraction-over-other-implementations.
>
>> Cinder is a set of tools to abstract block-device implementations.
>> Trove is a set of tools to simplify consumption of existing databases.
>> Sahara is a set of tools to simplify Hadoop consumption.
>> Swift is a feature-complete implementation of object storage, none of
>> which existed when it was started.
>
> Swift was started in 2009; Eucalyptus goes back to 2007, with Walrus
> part of that - I haven't checked precise dates, but I'm pretty sure
> that it existed and was usable by the start of 2009. There may well be
> other object storage implementations too - I simply haven't checked.
>
>> Keystone supports all of the above, unifying their auth.
>
> And implementing an IdP (which I know they want to stop doing ;)). And
> in fact lots of OpenStack projects, for various reasons support *not*
> using Keystone (something that bugs me, but thats a different
> discussion).
>
>> Horizon supports all of the above, unifying their GUI.
>>
>> Ceilometer is a complete implementation of data collection and alerting.
>> There is no shortage of implementations that exist already.
>>
>> I'm also core on two projects that are getting some push back these
>> days:
>>
>> Heat is a complete implementation of orchestration. There are at least a
>> few of these already in existence, though not as many as their are data
>> collection and alerting systems.
>>
>> TripleO is an attempt to deploy OpenStack using tools that OpenStack
>> provides. There are already quite a few other tools that _can_ deploy
>> OpenStack, so it stands to reason that people will question why we
>> don't just use those. It is my hope we'll push more into the "unifying
>> the implementations" space and withdraw a bit from the "implementing
>> stuff" space.
>>
>> So, you see, people are happy to unify around a single abstraction, but
>> not so much around a brand new implementation of things that already
>> exist.
>
> If the other examples we had were a lot purer, this explanation would
> make sense. I think there's more to it than that though :).
>
> What exactly, I don't know, but its just too easy an answer, and one
> that doesn't stand up to non-trivial examination :(.

I actually agree with Robert about this; that Clint may have 
oversimplified whether or not certain OpenStack projects may have 
reimplemented something that previously existed. Everything is a grey 
area, after all. I'm sure each project can go back in time and point to 
some existing piece of software -- good, bad or Java -- and truthfully 
say that there was prior art that could have been used.

The issue that I think needs to be addressed more directly in this 
thread and the ongoing conversation on the TC is this:

By graduating an incubated project into the integrated release, the 
Technical Committee is blessing the project as "the OpenStack way" to do 
some thing. If there are projects that are developed *in the OpenStack 
ecosystem* that are actively being developed to serve the purpose that 
an integrated project serves, then I think it is the responsibility of 
the Technical Committee to take another look at the integrated project 
and answer the following questions definitively:

  a) Is the Thing that the project addresses something that the 
Technical Committee believes the OpenStack ecosystem benefits from by 
the TC making a judgement on what is "the "OpenStack way" of addressing 
that Thing.

and IFF the decision of the TC on a) is YES, then:

  b) Is the Vision and Implementation of the currently integrated 
project the one that the Technical Committee wishes to continue to 
"bless" as the "the OpenStack way" of addressing the Thing the project does.

If either of the above answers is NO, then I believe the Technical 
Committee should recommend that the integrated project be removed from 
the integrated release.

HOWEVER, I *also* believe that the previously-integrated project should 
not just be cast away back to Stackforge. I think the project should 
remain in its designated Program and should remain in the openstack/ 
code namespace. Furthermore, active, competing visions and 
implementations of projects that address the Thing the 
previously-integrated project addressed should be able to apply to join 
the same Program, and *also* live in the openstack/ namespace.

All of these projects should be able to live in the Program, in the 
openstack/ code namespace, for as long as the project is actively 
developed, and let the contributor communities in these competing 
projects *naturally* work to do any of the following:

  * Pick a best-of-breed implementation from the projects that address 
the same Thing
  * Combine code and efforts to merge the good bits of multiple projects 
into one
  * Let multiple valid choices of implementation live in the same 
Program with none of them being "blessed" by the TC to be part of the 
integrated release

The process of incubation and graduation to integration would be 
essentially unchanged, with the exception that an additional condition 
would be added to the graduation requirements: no other 
actively-developed projects are in the same Program that address the 
same Thing as the project proposing for incubation.

The integrated release would continue to be the projects from each 
Program that are validated via the continuous integration gates to work 
properly with each other, and Infra/CI resources would be prioritized of 
course to the integrated and incubated projects.

In this way, we would:

  1) Recognize the openstack/ code namespace for the value it brings, 
and free projects to live in the openstack/ code namespace without being 
incubated, integrated, or any of that stuff. We need to be aware that 
the openstack/ code namespace brings with it a sense of legitimacy, and 
this sense of legitimacy does wonders in getting both momentum and 
$resources behind a project. As a community, I believe we should be 
doing as much as we can to bring more projects into the OpenStack fold, 
and having *actively-developed* projects under the openstack/ code 
namespace is a way to do that.

  2) Get the TC out of the business of picking winners and losers. 
Instead, the developer market would be able to essentially incubate 
competing ideas within their own Program, naturally letting the best 
ideas float to the top, or merging good stuff together, or even choosing 
to not make a choice and letting multiple projects live harmoniously in 
the same Program.

  3) Get the TC out of the business of deciding what is or isn't in 
scope for "What is OpenStack". Instead, the TC would welcome new Program 
additions where the scope of the Program addressed some Thing that is 
relevant to cloud computing. And the TC would welcome 
*actively-developed* projects that fit into these Programs. The TC would 
be play an advisory role in architecture and design issues, but leave 
the final decisions on project development to the contributors in that 
program. And the TC would focus its decisions/judgements solely on 
incubation and graduation reviews.

> I'd like to see more unification of implementations in TripleO - but I
> still believe our basic principle of using OpenStack technologies that
> already exist in preference to third party ones is still sound, and
> offers substantial dogfood and virtuous circle benefits.

No doubt Triple-O serves a valuable dogfood and virtuous cycle purpose. 
However, I would move that the Deployment Program should welcome the 
many projects currently in the stackforge/ code namespace that do 
deployment of OpenStack using traditional configuration management tools 
like Chef, Puppet, and Ansible. It cannot be argued that these 
configuration management systems are the de-facto way that OpenStack is 
deployed outside of HP, and they belong in the Deployment Program, IMO.

As a TC member, I would welcome someone from the Chef community 
proposing the Chef cookbooks for inclusion in the Deployment program, to 
live under the openstack/ code namespace. Same for the Puppet modules.

Just my 2 cents,
-jay




More information about the OpenStack-dev mailing list