Jump to: navigation, search

Difference between revisions of "Oslo/CreatingANewLibrary"

m (Doug-hellmann moved page Oslo/GraduationProcess to Oslo/CreatingANewLibrary)
Line 1: Line 1:
= Creating a New Oslo Library =
 
 
 
== Creating an Initial Repository for Import ==
 
== Creating an Initial Repository for Import ==
  
Line 10: Line 8:
  
 
These subsections cover incubated code and new libraries. Existing libraries can skip ahead to "Importing the Repository into the CI System" below.
 
These subsections cover incubated code and new libraries. Existing libraries can skip ahead to "Importing the Repository into the CI System" below.
 +
 +
=== Choosing a Name ===
 +
 +
Oslo libraries are either named "oslo.something" or just "something". The oslo prefix is reserved for libraries which are expected to only be of use to OpenStack developers. Libraries that may be useful outside of OpenStack should have more generic names.
  
 
=== Graduating a Library from the Incubator ===
 
=== Graduating a Library from the Incubator ===
 +
 
Graduating a library is a multi-step process. It isn't complicated, but there are a lot of details that are easy to miss. Please tread carefully.
 
Graduating a library is a multi-step process. It isn't complicated, but there are a lot of details that are easy to miss. Please tread carefully.
  
== Updating the Incubator ==
+
==== Updating the Incubator ====
  
 
# Update oslo-incubator/MAINTAINERS:
 
# Update oslo-incubator/MAINTAINERS:
Line 20: Line 23:
 
## Verify all of the correct names and contact details are present.
 
## Verify all of the correct names and contact details are present.
  
== Extracting a Clean Copy of the History ==
+
==== Extracting a Clean Copy of the History ====
  
 
The oslo-incubator repository includes a script in tools/graduate.sh that can be used to  
 
The oslo-incubator repository includes a script in tools/graduate.sh that can be used to  
  
 
== Importing the Repository into the CI System ==
 
== Importing the Repository into the CI System ==
 +
 +
These instructions are based on the [http://ci.openstack.org/stackforge.html steps for creating a new Stackforge project] with some variations.
 +
 +
# Add the project to the master project list in the openstack-infra/config repository
 +
 +
Edit modules/openstack_project/files/review.projects.yaml to add a new section like
 +
 +
  - project: openstack/project-name
 +
    description: Latest and greatest cloud stuff.
 +
    upstream: git://github.com/awesumsauce/project-name.gi
  
 
- infra/config
 
- infra/config

Revision as of 22:01, 10 February 2014

Creating an Initial Repository for Import

There are three sources for new Oslo libraries:

  1. Incubated code that is graduating.
  2. A brand new library.
  3. An existing library that we are adopting.

These subsections cover incubated code and new libraries. Existing libraries can skip ahead to "Importing the Repository into the CI System" below.

Choosing a Name

Oslo libraries are either named "oslo.something" or just "something". The oslo prefix is reserved for libraries which are expected to only be of use to OpenStack developers. Libraries that may be useful outside of OpenStack should have more generic names.

Graduating a Library from the Incubator

Graduating a library is a multi-step process. It isn't complicated, but there are a lot of details that are easy to miss. Please tread carefully.

Updating the Incubator

  1. Update oslo-incubator/MAINTAINERS:
    1. Set the status of the module(s) to "Graduating".
    2. Verify all of the correct names and contact details are present.

Extracting a Clean Copy of the History

The oslo-incubator repository includes a script in tools/graduate.sh that can be used to

Importing the Repository into the CI System

These instructions are based on the steps for creating a new Stackforge project with some variations.

  1. Add the project to the master project list in the openstack-infra/config repository

Edit modules/openstack_project/files/review.projects.yaml to add a new section like

 - project: openstack/project-name
   description: Latest and greatest cloud stuff.
   upstream: git://github.com/awesumsauce/project-name.gi

- infra/config - requirements - governance

First Testable Release

Marking Incubator Obsolete

After the first release of the new library, the status of the module(s) should be updated to "Obsolete." During this phase, only critical bug fixes will be allowed in the incubator version of the code. New features and minor bugs should be fixed in the released library, and effort should be spent focusing on having downstream projects consume the library.

After all integrated projects that use the code are using the library instead of the incubator, the module(s)_ can be deleted from the incubator.

Discussion on the mailing list here and here