Skip to content

Commit

Permalink
Add RFC table in README (#40)
Browse files Browse the repository at this point in the history
* add index

* references and discussion

* implementation link

* Update CONTRIBUTING.md

* updating status
  • Loading branch information
1ucian0 committed May 24, 2023
1 parent b5cb7fd commit 3a068bb
Show file tree
Hide file tree
Showing 11 changed files with 171 additions and 133 deletions.
4 changes: 2 additions & 2 deletions 0001-ansatz-rfc.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Aqua 0.7: Ansatz Design Doc

| **Status** | **Accepted** |
| **Status** | **Deprecated** |
|:------------------|:---------------------------------------------|
| **RFC #** | 0001 |
| **Authors** | Julien Gacon (jul@zurich.ibm.com) |
| **Submitted** | 2020-01-06 |
| **Updated** | 2020-01-24 |
| **Updated** | 2023-05-10 |

# Overview

Expand Down
4 changes: 2 additions & 2 deletions 0002-Aqua_0.7_release_priorities_and_plan.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Aqua 0.7 Release Priorities and Plan

| **Status** | **Accepted** |
| **Status** | **Deprecated** |
|:------------------|:---------------------------------------------|
| **RFC #** | 0002 |
| **Authors** | Donny Greenberg (donny@ibm.com) |
| **Deprecates** | NA |
| **Submitted** | 2019-12-04 |
| **Updated** | 2020-01-23 |
| **Updated** | 2023-05-10 |

_Release target: 17-Mar-2020_

Expand Down
4 changes: 2 additions & 2 deletions 0003-Aqua_0.7_operator_redesign.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Aqua 0.7 Operator Redesign

| **Status** | **Accepted** |
| **Status** | **Deprecated** |
|:------------------|:----------------------------------------------|
| **RFC #** | 0003 |
| **Authors** | Donny Greenberg (donny@ibm.com) |
| **Deprecates** | NA |
| **Submitted** | 2020-01-17 |
| **Updated** | 2020-01-23 |
| **Updated** | 2023-05-10 |

## Purpose
To improve the transparency, ease of understanding, and programming power of Aqua’s operator logic and usage. Specifically, to reconcile with the Terra operator hierarchy and make the Aqua algorithmic flow more visible, explicit, and extensible.
Expand Down
8 changes: 7 additions & 1 deletion 0005-Aqua_circuit_interoperability.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# Aqua Circuit Interoperability Update

_Donny Greenberg, Julien Gacon, Ali Javadi, Steve Wood, 24-Mar-19_
| **Status** | **Deprecated** |
|:------------------|:----------------------------------------------|
| **RFC #** | 0005 |
| **Authors** | Donny Greenberg (donny@ibm.com), Julien Gacon, Ali Javadi, Steve Wood |
| **Submitted** | 2019-03-24 |
| **Updated** | 2023-05-10 |


## Basic Vision & End Goal

Expand Down
5 changes: 2 additions & 3 deletions 0006-rfc-generalized-unroller-and-equivalence-library.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
# Generalized Unroller and Equivalence Library

| **Status** | **Proposed** |
| **Status** | **Implemented** |
|:------------------|:---------------------------------------------|
| **RFC #** | 0006 |
| **Authors** | Kevin Krsulich (kevin.krsulich@ibm.com), |
| | Luciano Bello (Luciano.Bello@ibm.com), |
| | Ali Javadi (Ali.Javadi@ibm.com), |
| **Deprecates** | |
| **Submitted** | 2020-05-21 |
| **Updated** | 2020-05-21 |
| **Updated** | 2023-05-10 |


# Summary
Expand Down
1 change: 0 additions & 1 deletion 0007-experiment-dataframe.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
|:------------------|:---------------------------------------------|
| **RFC #** | 0007 |
| **Authors** | Naoki Kanazawa (nkanazawa1989@gmail.com), Gadi Aleksandrowicz (gadial@gmail.com) |
| **Deprecates** | N/A |
| **Submitted** | 2022-08-25 |
| **Updated** | 2023-01-26 |

Expand Down
5 changes: 2 additions & 3 deletions 0008-unify-pulse-commands-and-instructions.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
# Unify Pulse Commands and Instructions

| **Status** | **Proposed** |
| **Status** | **Implemented** |
|:------------------|:---------------------------------------------|
| **RFC #** | 0008 |
| **Authors** | Thomas Alexander (talexander@ibm.com) |
| **Deprecates** | None |
| **Submitted** | 2020-02-04 |
| **Updated** | 2020-02-04 |
| **Updated** | 2023-05-10 |

## Summary
`Command`s were initially created so as to allow pulses to be only defined once as a `SamplePulse` and then have their usage tracked based on the class instance through equality checking. To enable this, every `Instruction` instance was defined as containing a `Command` and its `Channel` operands that the command would be applied to. This resulted in a confusing API as one must first define a command and then call it with a channel to emit an instruction. We we propose a way of gracefully unifying `Command`s and `Instruction`s to make pulse programming more straightforward and in-line with traditional instruction sets.
Expand Down
4 changes: 2 additions & 2 deletions 0009-interface-for-circuit-operations.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# `Operation`: the interface for valid `QuantumCircuit` operations

| **Status** | **Proposed** |
| **Status** | **Implemented** |
|:------------------|:---------------------------------------------|
| **RFC #** | 0009 |
| **Authors** | Jake Lishman (jake.lishman@ibm.com) |
| **Deprecates** | None |
| **Submitted** | 2022-05-31 |
| **Updated** | 2022-05-31 |
| **Updated** | 2023-05-10 |


## Summary
Expand Down
6 changes: 3 additions & 3 deletions 0011-repo-rename.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Plan to rename `Qiskit/qiskit-terra` repo to `Qiskit/qiskit`

| **Status** | **Proposed** |
| **Status** | **Accepted** |
|:------------------|:---------------------------------------------|
| **RFC #** | 0011 |
| **Authors** | [Luciano Bello](https://github.com/1ucian0), [Kevin Krsulich](https://github.com/kdk) |
| **Submitted** | 2023-03-31 |
| **Updated** | 2023-04-27 |
| **Updated** | 2023-05-10 |


## Summary
Expand Down Expand Up @@ -147,4 +147,4 @@ There is no easy way to move PRs in GitHub. It is technically harder than renami

## Future Extensions

After archive-metapackage/move-setup-out-of-metapackage, the versions for packages `qiskit` and `qiskit-terra` are equalised and can be released at once and as one. This is planned for October release.
After archive-metapackage/move-setup-out-of-metapackage, the versions for packages `qiskit` and `qiskit-terra` are equalised and can be released at once and as one. This is planned for October release.
131 changes: 131 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# Qiskit Request for Comments (RFC) process

The purpose of a Qiskit Request for Comments (RFC) is to communicate and engage
with the wider community in the development and direction of Qiskit. RFCs enable
engineering and research stakeholders to communicate design changes to the larger
Qiskit ecosystem, as weel as to document the desion making process.

Some changes though are "substantial", and we ask that these be put through a
bit of a design process and produce a consensus among the Qiskit community and
the core team.

# When Should You Write an RFC?

RFC's should be reserved for 'substantial' changes to any Qiskit project
and the RFC process itself. By this, we mean changes where the implementation
path is not immediately clear and needs to be deconstructed by the Qiskit team.

To understand whether a change is considered substantial some questions you
might ask yourself are:

- Will the implementation involve many developers?
- Will the implementation span across multiple points in the Qiskit stack?
- Will the changes cause ramifications for the average user?
- Will the changes require collaboration with outside sources?

if the answer to any of these is yes, than it probably is a substantial change
and going through the RFC process is recommended.

# Process
- Fork the [rfcs repository](https://github.com/Qiskit/rfcs)
- Copy the template [0000-template.md](0000-template.md) to
`####-rfc-title.md`, do not yet assign a number. If the RFC requires additional
files, it may be placed in the `text` folder with the name `####-rfc-title`.
- Fill in the template with your RFC. Be thorough and convincing, use proper
grammar and technical language where appropriate. The aim of an RFC is to
convey both a change and a vision for the future it will enable, you must
convince the larger Qiskit team that it is valuable.
- Each RFC will be labeled with the relevant packages, so that the respective
maintainers of the packages may be notified of the RFC.
- The RFC will be triaged and if it is of sufficient quality a
*review committee* will be formed by assigning the PR to a group of
*committee members* who are each maintainer(s) of the relevant Qiskit packages.
Committee members are responsible for moderating the development of the RFC and
acceptance or closure of the RFC. It is expected that RFC should fail in the
early, rather than later stages of the development cycle. If the RFC author is
themselves a maintainer of one of the relevant packages, they should not be a
committee member for their own RFC.
- Interested parties should discuss and modify the RFC within the pull-request.
Efforts should be made to summarize offline discussions within the PR. The aim
is to capture the outcome of discussion within the RFC, and the flow of
development within the PR.
- The RFC will go through many iterations at this stage, *do not* squash/rebase
the RFC commits. The aim is to capture the history of the document.
- When the RFC has satisfied a committee member, they should review and approve
the PR. If it is not progressing satisfactorily, or supported by the review
committee it may be closed at any time. This may be petitioned by reopening the
PR, along with a potential request for a new review committee.
- Upon approval by all review committee members, the RFC will be assigned a
number of `max(rfc_####) + 1`, the filename will be updated to reflect this and
the author list should be validated. Note that as Qiskit is still undergoing
rapid-development there is no required grace period between acceptance and
merger, as the project matures this is expected to change.
- The RFC will then be merged by one of the committee members.
- After acceptance, the implementation of the contents of the RFC may proceed.

## The RFC life-cycle

Once an RFC becomes "active" (i.e. is approved and merged) then authors may
implement it and submit the feature as a pull request to the relevant Qiskit
repos. Being "active" is not a rubber stamp, and in particular still does not
mean the feature will ultimately be merged; it does mean that in principle all
the major stakeholders have agreed to the feature and are amenable to merging
it.

Furthermore, the fact that a given RFC has been accepted and is "active"
implies nothing about what priority is assigned to its implementation, nor does
it imply anything about whether a Qiskit developer has been assigned the task of
implementing the feature. While it is not *necessary* that the author of the
RFC also write the implementation, it is by far the most effective way to see
an RFC through to completion: authors should not expect that other project
developers will take on responsibility for implementing their accepted feature.

Modifications to "active" RFCs can be done in follow-up pull requests. We
strive to write each RFC in a manner that it will reflect the final design of
the feature; but the nature of the process means that we cannot expect every
merged RFC to actually reflect what the end result will be at the time of the
next major release.

In general, once accepted, RFCs should not be substantially changed. Only very
minor changes should be submitted as amendments. More substantial changes
should be new RFCs, with a note added to the original RFC. Exactly what counts
as a "very minor change" is up to the sub-team to decide; check
[Sub-package guidelines] for more details.

# RFC Postponement

Some RFC pull requests are tagged with the "postponed" label when they are
closed (as part of the rejection process). An RFC closed with "postponed" is
marked as such because we want neither to think about evaluating the proposal
nor about implementing the described feature until some time in the future, and
we believe that we can afford to wait until then to do so. This normally means
a topic for discussion after the Qiskit 1.0 release. Postponed pull
requests may be re-opened when the time is right. We don't have any formal
process for that, you should ask members of the relevant sub-team.

Usually an RFC pull request marked as "postponed" has already passed an
informal first round of evaluation, namely the round of "do we think we would
ever possibly consider making this change, as outlined in the RFC pull request,
or some semi-obvious variation of it." (When the answer to the latter question
is "no", then the appropriate response is to close the RFC, not postpone it.)

# Contributors
An *RFC author* write and champions and RFC through the process.

A *community member* provides feedback on an RFC either as a PR comment, or an
edit to the RFC.

A *review committee* is the group *committee members*, all of which are RFC PR
assignees and are maintainers of one or many of the Qiskit meta-package
projects. The committee is responsible for guiding, reviewing and finally
closing/approving the RFC.

# Template
Use the [Qiskit RFC template](0000-template.md) to prepare your RFC.

## License
[License]: #license

This repository is licensed under

Apache License, Version 2.0, ([LICENSE](LICENSE) or http://www.apache.org/licenses/LICENSE-2.0)

0 comments on commit 3a068bb

Please sign in to comment.