OpenStack is an open source software based cloud infrastructure. Some time it is also referred as the cloud OS. OpenStack is used to manage compute, storage and/or networking resources.
OpenStack comprises of different projects. Each project is to manage a specific portion of the cloud infrastructure and to provide the cloud consumer a service and sometime it is referred to “X As A Service” For example Nova is to manage the compute resources and is referred to as “Compute As A Service”.
The software for each of these projects resides on “https://github.com/openstack”. Developers use the software “git” to check out the source code, made modification, unit test and then check the code back into the repository.
At the inception of OpenStack, there are projects that are referred to as the “core” project – without them OpenStack will not run. As OpenStack progresses, it deploys a 3 tier model to classify different projects in OpenStack. The 3 different types of projects are:
image source: https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/_assets/04-02-lifecycle.png
These are considered as the main components of OpenStack. The reason that they are referred to as integrated is because the are tested as a whole at the gate when code change s are checked in. OpenStack has a very systematic unit testing system. There are close to 18,000 unit test cases to test the integrated project as a whole system.
These are the projects that are on track to be come an integrated project for OpenStack. All projects has to be an incubated project before being promoted to being an integrated project.
These project are considered as not being part of OpenStack at all but are good ideas or concepts that can be in-cooperated into OpenStack. These projects can applied to become "incubated" project.
There is, however, one draw back with this incubate/integrated approach of project classification. New projects which are good concepts or useful to OpenStack but are in the external or incubated status does not get enough attention for developers to commit code changes to make them work or to fix bugs in these projects.
OpenStack is now moving to a new way for project classification - the "Big Tent" approach. In this "Big Tent" approach, projects are no longer being classified as incubated or integrated. Instead, projects are assigned tags. Existing tags can be found here. Tags for the projects are assigned by Technical Committee in which it will co-ordinate to make sure various projects are
aligned to the OpenStack mission,
interoperable with each other
projects will not overlap with each other trying to solve the same problem
development efforts are evenly distributed
There are a few challenges to this "Big Tent" approach. The first one is for the cross functional groups such as documentation and infrastructure may be over loaded with more works as their works are not limited to the integrated projects only. Another challenge is the number of unit test that needs to be run. Currently unit test are only done for the integrated project.
I like the symbol of Tai Chi where inside black there is white and inside white there is black. This is very true in the world that we live in - Everything has its pros and cons.
Hopefully, this "Big Tent" approach is able to move OpenStack to a good and healthy direction.