[openstack-dev] Core API vs. implementation (was: The future of Incubation and Core - a motion)
Zane Bitter
zbitter at redhat.com
Tue Nov 20 15:50:58 UTC 2012
On 19/11/12 22:18, Boris Renski Jr. wrote:
> For instance, similar to Quantum, Swift could have been designed as an API
> centric service with implementations as plug-ins; but it is not. And largely
> due to the history of how OpenStack evolved, Swift now became the monopoly
> implementation on object store, indefinitely enjoying core project status.
> It is not unlikely that Swift could become less active and its opinionated
> architecture - less relevant to the newer paradigms of storage. More
> importantly, because something like Swift is core, nobody in the community
> would even consider developing a different, competing implementation....
>
> I am not trying to pick on Swift in particular (so John, don't get mad) but
> am using it to illustrate a scenario.
You appear to be thinking about Swift as a particular collection of
code, and IMHO that is a mistake. Swift *has* a bunch of code, but Swift
*is* a community.
There is no reason that the Swift architecture could not move toward a
plugin model, and arguably they have been right not to do so before now
since an abstraction with only one implementation is rarely a good
abstraction.
However, anybody wanting the push that kind of code change is going to
need to have the support of the Swift community. That support will not
be forthcoming unless the change protects the interests of the existing
Swift community (in particular, that probably means providing the
existing functionality as a plugin with a simple migration path, not
impacting maintainability, and so on).
So yes, blessing a project as an official part of OpenStack is
inherently more conservative than leaving users to select from a random
collection of freewheeling projects, and that is exactly the point of
OpenStack. It gives members of the community confidence that things
won't change drastically without their input, which is particularly
important in deployments where multiple services are integrated (and
that is most of them).
> 1. We can say we don't care about the rigidity of coupling between API and
> implementation in general. All we care about is if the project is mature
> enough and if it solves a substantial IaaS problem.... in that case we need
> to have a mechanism to deprecate projects from core when a particular
> implementation is no longer optimal or if the project becomes inactive.
We should deprecate a project from Core if and only if its community is
moribund (most likely because there's nobody around to maintain it).
cheers,
Zane.
More information about the OpenStack-dev
mailing list