Created: Tue, 20 Dec 2011 13:01:37 -0800
Contributors: Josh Harlow
Package Stability
Contents
Summary
We would like to propose a blueprint to ensure that going forward all dependencies have their versions and names listed publicly (not just using the latest ubuntu versions) and (possibly) have separate package repositories that can be used for each development release and all stable releases (so that the dependencies are exactly what is expected). These repos may only be needed if the packages being developed with or used are newer than what can be found in a repository for the supported distributions.
In the future, if a linux distro decides to include an openstack release in their distribution, they will need to ensure they pick up the exact same dependencies. This should be a stated openstack redistribution policy (or at least "best practice") that distributions agree to, so that support issues and bug reports can be tracked to a specific release with a specific set of known packages + versions.
Rationale
In order to support, use and develop on a system that is not ubuntu based we need to fully understand the set of package dependencies (with versions) for every release and development branch, so that companies that run more than just ubuntu (rhel, centos, fedora, ...) can know exactly what packages are needed and which package versions have been tested with a given openstack release. That way they can have confidence that the platform should work as expected, no matter which distro they choose to go with.
Assumptions
NA
Design
From a high level this would involve the following:
- Document each and every package and version (?? +dependencies ??) that each openstack component requires
- Dependencies may be needed as well (as not all package management systems will work the same)
- This includes PIP (python packages) versions
- Ensure that there is a publicly available repo/s for the different development releases
- If and only if the exact versions can not be found in the distro's being developed on
- Some of these may have to be built since it may not be the case that every distro will have the agreed upon packages
- Create a documented formalized process for the inclusion of new packages
- Ensure that jenson will run tests on multiple operating system guests (for validation)
- Create a robust set of installation scripts (similar to devstack) that can be used on every distro.
- Don't push chef/puppet, make it simpler...
Expected Code Changes
We may have to update some installation/setup/... files to use some kind of manifest rather than using whatever is in ubuntu. This file will specify the versions + packages, and the script must be able to translate that file into a useable installation. We should not require a system like chef or puppet to just get developers going.
Expected Documentation Changes
We will need to provide documentation on the new dependencies as well as creating a webpage or sub-site (also it would be good to have this in a README/PACKAGE.list in the openstack codebase) that would explain what the dependencies are for each operating system and each version of openstack (possibly off of http://wiki.openstack.org/ReleaseNotes/Diablo or the like). Right now this is pretty bare and not really well known (devstack.org just doesn't fulfill this need).
This site should provide install scripts/programs... similar to devstack.org that will work with different operating systems and different releases.
This site would need to be updated for each stable release as well as explaining what the dependencies are for development and development milestone releases, ideally either providing the necessary packages (rpm, dpkg) or explaining how to get those (from yum, apt-get...). This will ensure that all developers are using exactly the same versions of packages across the various operating systems that openstack is being used and developed on.
Dependencies
For ubuntu we should list the current dependencies (that are currently from a mainline ubuntu repo) and versions and make that available from a apt repo (or just to start list them and ensure everyone developing is on that same set), thus disconnecting openstack from being dependent on a mainline ubuntu repo for stable and development releases.
Test/Demo Plan
Migration Plan
For development, developers should no longer be using the latest ubuntu but a specific version of ubuntu, RHEL or other distro with a repo (if needed) that we have designated as the development repository which will have packages and versions for that development cycle.
It may be required that before each development cycle that we poll everyone to determine what this set of packages and versions are and determine who is going to build them (if needed). The main point here is that we should not depend on the latest and greatest ubuntu dependencies but should have everyone on approved repositories (with accepted versions and packages) for all different distributions that we support.
Unresolved Issues
- Where should a publicly available repo/s be placed (ie one for ubuntu, one for RHEL...)?
How do we communicate with other openstack developers/users what the current dependencies are for each development & stable
release?
- How do we communicate with linux distro manufacturers that in order to include openstack in there main-line release they need to
ensure they have the correct packages and versions?
- What do we do if they do not agree?
- How much disruption will this cause (since openstack is heavily ubuntu centric right now)?
- Who is responsible for keeping the documentation and inter-distro packages up to date?
Notes
The only thing I've seen that comes anywhere close to this (at least dependency information) is at:
https://github.com/cloudbuilders/devstack/tree/master/files/apts which attempts to define the package names needed for the different openstack components for ubuntu.
Version information is lacking. Also it seems like rackspace is putting up a apt repo (? is this just a mirror ?):
https://github.com/cloudbuilders/devstack/blob/master/files/sources.list.
Contacts