Cinder/how-to-contribute-new-feature

= How To Contribute A New Feature =

Please add a release note along with your patch. See the Reno Documentation for details on how to generate new release notes.

What's the Deadline For New Features
It depends on what you mean by a "feature" and what deliverable it's a feature for. Also, keep in mind that everyone else will want their features reviewed, too, so the earlier you have your code ready the better.


 * New Cinder drivers must be code complete with functioning third party CI by Milestone-2 of the current development cycle.
 * The os-brick library must be released one week before Milestone-3 of the current development cycle, so any brick contributions must obviously be merged before then.
 * The python-cinderclient and python-brick-cinderclient-ext client libraries must be released at Milestone-3 of the current development cycle.
 * The deadline for all cinder features is the Feature Freeze, which happens at Milestone-3 of the current development cycle.
 * The cinderlib library is on a cycle-trailing release schedule, so the deadline for new features is around Milestone-1 of the next development cycle.

You can find the release schedule for the current development cycle from: https://releases.openstack.org/

When Do I Need A Blueprint & Spec
If you meet any of the following:
 * New Cinder core feature
 * Example: Add ability to force-detach a volume.
 * Involves mass changes to existing volume drivers, backup drivers, or target drivers (e.g. API)

When Do I Just Need A Blueprint
If you meet any of the following:
 * Contributing a new volume, backup, target driver.
 * My driver is going to support something that already exists in the base volume, backup, or target driver.
 * Example: Driver X is going to support volume types.

What is a blueprint?
A proposal to implement an already existing feature. You submit it through Launchpad.

What is a spec?
A detailed specification on a feature that has not been defined yet. This is for getting consensus on how features will work across different implementations or in Cinder core. These are submitted via the cinder-spec repo.

Why are blueprints even needed?
We get a lot of proposals, and we need to make a cut. If we don't have your blueprint submitted by whatever date has been discussed in the Cinder Meeting and on the OpenStack Dev mailing list, it doesn't get in the release.