{"id":20111166,"url":"https://github.com/openstack/nova-specs","last_synced_at":"2025-04-04T19:15:22.224Z","repository":{"id":15037427,"uuid":"17763330","full_name":"openstack/nova-specs","owner":"openstack","description":"OpenStack Compute (Nova) Specifications. Mirror of code maintained at opendev.org.","archived":false,"fork":false,"pushed_at":"2025-03-21T14:13:30.000Z","size":4090,"stargazers_count":67,"open_issues_count":0,"forks_count":47,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-03-28T18:08:43.480Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://opendev.org/openstack/nova-specs","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"learn-co-curriculum/sinatra-multiple-controllers","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openstack.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-03-14T23:10:01.000Z","updated_at":"2025-03-21T14:13:37.000Z","dependencies_parsed_at":"2024-01-15T11:09:41.149Z","dependency_job_id":"ab59bb8f-250a-49a2-9456-167f65661ccc","html_url":"https://github.com/openstack/nova-specs","commit_stats":{"total_commits":1263,"total_committers":287,"mean_commits":4.400696864111498,"dds":0.9596199524940617,"last_synced_commit":"b7fe7d8d25cf9bbbd58b33815e337164d50e148b"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fnova-specs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fnova-specs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fnova-specs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fnova-specs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openstack","download_url":"https://codeload.github.com/openstack/nova-specs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247234930,"owners_count":20905854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T18:14:40.561Z","updated_at":"2025-04-04T19:15:22.199Z","avatar_url":"https://github.com/openstack.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"=======\nREADME\n=======\n\nOpenStack Nova Specifications\n=============================\n\n\nThis git repository is used to hold approved design specifications for additions\nto the Nova project.  Reviews of the specs are done in gerrit, using a similar\nworkflow to how we review and merge changes to the code itself. For specific\npolicies around specification review, refer to the end of this document.\n\nThe layout of this repository is::\n\n  specs/\u003crelease\u003e/\n\nWhere there are two sub-directories:\n\nspecs/\u003crelease\u003e/approved\n  specifications approved but not yet implemented\n\nspecs/\u003crelease\u003e/implemented\n  implemented specifications\n\nThis directory structure allows you to see what we thought about doing,\ndecided to do, and actually got done. Users interested in functionality in a\ngiven release should only refer to the ``implemented`` directory.\n\nThe lifecycle of a specification\n--------------------------------\n\nDevelopers proposing a specification should propose a new file in the\n``approved`` directory. `nova-specs-core\n\u003chttps://review.opendev.org/#/admin/groups/302,members\u003e`_ will review the\nchange in the usual manner for the OpenStack project, and eventually it will\nget merged if a consensus is reached.\n\nAt this time the Launchpad blueprint is also \"Definition\" approved. The\ndeveloper is then free to propose code reviews to implement their\nspecification. These reviews should be sure to reference the Launchpad\nblueprint in their commit message for tracking purposes.\n\n.. note:: The launchpad blueprint's \"Definition\" approval indicates that the\n          nova-specs-core team agrees with the technical aspects of the\n          proposal (\"if we are going to do this, this is how\"). The blueprint's\n          \"Direction\" approval is a separate indication of commitment to the\n          targeted release (\"we want to do this now\"). It is possible to have a\n          specification and blueprint \"Definition\" approved, but not have its\n          \"Direction\" approved due to subsequent planning activities. In such\n          cases, the blueprint (and any unmerged code) could be deferred for\n          consideration in a future release.\n\n.. todo:: Document the specifics of these \"planning activities\".\n\nOnce all code for the feature is merged into Nova, the Launchpad blueprint is\nmarked \"Implemented\" by a nova maintainer.\n\nAt the end of the release cycle, implemented specifications are moved from the\n``approved`` directory to the ``implemented`` directory, creating redirects so\nthat existing links to the approved specification are not broken. (Redirects\naren't symbolic links, they are defined in a file which sphinx consumes. An\nexample is at ``specs/stein/redirects``.)\n\nWe use the ``tox -e move-implemented-specs`` target at the end of each release\nto automatically move completed specs and populate the redirects file for that\nrelease. For example::\n\n  tox -r -e move-implemented-specs -- --dry-run --verbose train\n\nRemove the ``--dry-run`` flag to perform the actual file moves/writes. Then\ncommit the changes and submit the review to gerrit as usual.\n\nExample specifications\n----------------------\n\nYou can find a spec template for a given release in\n``specs/\u003crelease\u003e-template.rst``.\n\nBacklog specifications\n----------------------\n\nAdditionally, we allow the proposal of specifications that either do not have a\ndeveloper assigned to them or are not targeted for the current release. These\nare proposed for review in the same manner as above, but are added to::\n\n  specs/backlog/approved\n\nSpecifications in this directory indicate the original author has either become\nunavailable or has indicated that they are not going to implement the\nspecification. The specifications found here are available as projects for\npeople looking to get involved with Nova. Alternatively, they may be for ideas\ngenerated during a given release cycle to begin design discussions, but not\nintended to be implemented until a future cycle. If you are interested in\nclaiming an unassigned backlog spec, or are the assignee and are ready to\npropose it for implementation in the current release, start by posting a review\nfor the specification that moves it from this directory to the next active\nrelease. To ensure existing links are not broken, redirects must be created in\na fashion similar to the process for ``implemented`` specs above. The\n``move-spec`` tox target is available to help with this. For example::\n\n  tox -e move-spec -- --dry-run --verbose specs/backlog/my-great-idea.rst specs/train/approved\n\nRemove the ``--dry-run`` option to perform the actual file moves/writes. Then\ncommit the changes and submit the review to gerrit as usual.\n\n.. note:: Please do not use ``move-spec`` to repropose an unimplemented spec\n          from one release to another. Instead follow the instructions at\n          `Previously approved specifications`_\n\nWhen claiming an unassigned backlog spec, please set yourself as the new\n`primary assignee` and maintain the original author in the `other contributors`\nlist.\n\nAbandoning a specification\n--------------------------\n.. note:: For now, this process should only be used to abandon backlog specs.\n          Please do not use this process for specs in a real release's\n          ``approved`` directory. Currently the indication that such a spec is\n          abandoned is that it never appears in any release's ``implemented``\n          directory. We may change this process in the future.\n\nIf it is decided that a ``backlog`` spec is \"never\" going to be implemented,\npost a review moving the specification from ``specs/\u003crelease\u003e/approved`` to\n``specs/abandoned``. As with the above processes, redirects must be created to\nensure existing links are not broken. The ``abandon-spec`` tox target is\navailable to help with this. For example::\n\n  tox -e abandon-spec -- --dry-run --verbose specs/backlog/it-was-a-great-idea.rst\n\nRemove the ``--dry-run`` option to perform the actual file moves/writes.\n\nPlease add an explanation to the spec indicating why it is being abandoned, and\nupdate the History section accordingly.\n\nDesign documents for releases prior to Juno\n-------------------------------------------\n\nPrior to the Juno development cycle, this repository was not used for spec\nreviews.  Reviews prior to Juno were completed entirely through `Launchpad\nblueprints \u003chttp://blueprints.launchpad.net/nova\u003e`_\n\nPlease note, Launchpad blueprints are still used for tracking the\ncurrent status of blueprints. For more information, see\nhttps://wiki.openstack.org/wiki/Blueprints\n\nWorking with gerrit and specification unit tests\n------------------------------------------------\n\nFor more information about working with gerrit, see\nhttp://docs.openstack.org/infra/manual/developers.html#development-workflow\n\nTo validate that the specification is syntactically correct (i.e. get more\nconfidence in the Zuul result), please execute the following command::\n\n  $ tox\n\nAfter running ``tox``, the documentation will be available for viewing in HTML\nformat in the ``doc/build/html/`` directory.\n\nSpecification review policies\n=============================\n\nThere are a number of review policies which nova-specs-core will apply when\nreviewing proposed specifications. They are:\n\nTrivial specifications\n----------------------\n\nProposed changes which are trivial (very small amounts of code) and don't\nchange any of our public APIs are sometimes not required to provide a\nspecification. In these cases a Launchpad blueprint is considered sufficient.\nThese proposals are approved during the `Open Discussion` portion of the\nweekly `nova IRC meeting`_. If you think your proposed feature is trivial and\nmeets these requirements, we recommend you bring it up for discussion there\nbefore writing a full specification.\n\nPreviously approved specifications\n----------------------------------\n\n**Specifications are only approved for a single release**. If your\nspecification was previously approved but not implemented (or not completely\nimplemented), then you must seek re-approval for the specification. You can\nre-propose your specification by doing the following:\n\n* Copy (not move) your specification to the right directory for the current release.\n* Update the document to comply with the new template; modify the History\n  section; select a new :ref:`feature liaison \u003cfeature-liaisons\u003e` if needed.\n* If there are no functional changes to the specification (only template\n  changes) then add the ``Previously-approved: \u003crelease\u003e`` tag to your commit\n  message.\n* Send for review.\n* These specifications are subject to the same review process as any other.\n  They need to be reevaluated to ensure the technical aspects are still valid\n  and that we still wish to implement it given resource constraints and other\n  priorities.\n\nSpecifications which depend on merging code in other OpenStack projects\n-----------------------------------------------------------------------\n\nFor specifications **that depend on code in other OpenStack projects merging**\nwe will not approve the nova specification until the code in that other project\nhas merged. The best example of this is Cinder and Neutron drivers. To\nindicate your specification is in this state, please use the Depends-On git\ncommit message tag. The correct format is ``Depends-On: \u003cchange id of other\nwork\u003e``. nova-specs-core can approve the specification at any time, but it\nwon't merge until the code we need to land in the other project has merged as\nwell.\n\nNew libvirt image backends\n--------------------------\n\nThere are some cases where an author might propose adding a new libvirt\ndriver image storage backend which does not require code in other OpenStack\nprojects. An example was the ceph image storage backend, if we treat that as\nseparate from the ceph volume support code. Implementing a new image storage\nbackend in the libvirt driver always requires a specification because of our\nhistorical concerns around adequate CI testing.\n\n.. todo:: Write a fleshed-out section on the roles and responsibilities of the\n          nova team, including things like the two +2 rule, the same-company\n          trifecta rule, whether +2ing a spec represents a commitment to review\n          the corresponding code, etc.\n\n.. _feature-liaisons:\n\nFeature Liaison FAQ\n===================\n\nIn Ussuri, a mandatory \"Feature Liaison\" section was added to the spec\ntemplate. This section attempts to address some of the questions around this\nconcept. In Victoria we made filling the section optional but still encourage\ncontributors to use it.\n\nWhat does a Feature Liaison do?\n  By signing up to be a feature liaison for a spec, you're agreeing to help\n  shepherd the feature through the development process. This has different\n  implications depending on the identity/role of the spec owner and your\n  relative roles in the project. Some examples:\n\n  * **Liaison for an inexperienced contributor:** This is the case for which\n    the liaison concept was conceived. In this case the liaison's job is to\n    mentor the spec owner, keep an eye on their progress, let them know when\n    they're missing some obscure (or not-so-obscure) part of the process, help\n    them understand what \"review-ready\" means, etc. You are also committing to\n    reviewing their code -- or at the very least helping them track down\n    suitable reviewers.\n  * **Designating yourself as your own liaison:** If you're a nova core or\n    experienced nova developer, you're already culturally indoctrinated. You\n    know how to navigate the process. You know how to ask for reviews. You\n    still can't +1/+2 your own code.\n  * **Core or experienced nova dev procures separate liaison:** Since you don't\n    need the mentorship aspect, your liaison in this case is really just\n    committing to doing reviews. While not necessary, it might be nice to get\n    that kind of commitment up front.\n\n  The above is not exhaustive; clearly there is a lot of middle ground between\n  an inexperienced contributor and a nova-core as a spec owner. It should\n  hopefully be fairly obvious how the liaison's role shifts in that middle\n  ground. If further clarification is necessary, please edit this doc.\n\nFeature Liaison need not be a nova-core.\n  The role of a liaison does not require +2 powers. A feature liaison should be\n  taken to mean \"experienced nova developer capable of doing the job\". That\n  said, whereas nova cores implicitly match that description by virtue of\n  having been made cores, non-cores proposed as liaisons should be evaluated on\n  a case-by-case basis (by the reviewers of the spec) as part of the spec\n  review process to determine whether they qualify. For the most part, \"we know\n  who you are\". (Note that in cases where an experienced non-core is a liaison\n  for someone else's feature, they're still signing up to do reviews, which are\n  still valuable despite maxing out at +1.)\n\nHow do I find a Feature Liaison?\n  If you do not already have agreement from someone to act as your liaison,\n  note this in your spec draft. You may accelerate the process by communicating\n  with the nova development team on IRC (``#openstack-nova``), in a `nova IRC\n  meeting`_, or via the `openstack-discuss`_ mailing list.\n\nWhat about specless blueprints?\n  We'll put the name of the feature liaison into the blueprint description.\n  It's not as automatically-enforceable as the template checker, but oh well.\n\nHow does liaison-hood relate to blueprint approval and prioritization?\n  It really doesn't. If you sign up to be a liaison for blueprint X, the nova\n  team may still decide blueprint X is a nonstarter for technical reasons; or\n  that we don't have the bandwidth to get it done this cycle in light of other\n  priorities. You're really just saying, \"If this goes, I'm on it.\"\n\nHow does liaison-hood relate to the gerrit review for the spec?\n  A liaison can (and really should, though it's not a hard requirement (yet))\n  review and +2/+1 a spec for which they're the liaison (but not the owner).\n  However, everyone is still encouraged to review and approve other specs as\n  well (otherwise nothing will get done) (also see below). (It would be nice if\n  an upvote on a spec patch also acted as a commitment to review the\n  corresponding code, but the liaison process does not attempt to address\n  that (yet).)\n\nAm I still allowed to care about / review / shepherd other approved features for which I didn't volunteer to be a liaison?\n  Of course. The point of this is the converse: If you *don't* pay attention to\n  features you *did* sign up for, people will draw moustaches on pictures of\n  your face. Or horns, if you already have a moustache.\n\n.. _`nova IRC meeting`: https://wiki.openstack.org/wiki/Meetings/Nova\n.. _openstack-discuss: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-discuss\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstack%2Fnova-specs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenstack%2Fnova-specs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstack%2Fnova-specs/lists"}