Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document Qiskit versioning and stability policy #366

Merged
merged 22 commits into from
Dec 1, 2023

Conversation

mtreinish
Copy link
Member

This commit adds a new document to the hosted documentation for Qiskit's versioning and stability policy. This is a continuation of Qiskit/qiskit#11205 which documents for Qiskit users the versioning and stability policy for the library. It includes an explanation of how to interpret version numbers, the tentative release schedule for the project, as well as a definition of what interfaces are considered stable. This outlines the minimum support windows for major versions and how deprecations and breaking changes will work with regards to versioning. This documentation is critical to include with the Qiskit 1.0.0 release as it establishes the expectations around the major version release for users (all previous documentation on the subject tactically avoided the discussion of a major version).

This commit adds a new document to the hosted documentation for
Qiskit's versioning and stability policy. This is a continuation of
Qiskit/qiskit#11205 which documents for Qiskit users the versioning
and stability policy for the library. It includes an explanation of
how to interpret version numbers, the tentative release schedule for
the project, as well as a definition of what interfaces are considered
stable. This outlines the minimum support windows for major versions
and how deprecations and breaking changes will work with regards to
versioning. This documentation is critical to include with the Qiskit
1.0.0 release as it establishes the expectations around the major
version release for users (all previous documentation on the subject
tactically avoided the discussion of a major version).
@mtreinish mtreinish added the section: start work related to https://docs.quantum-computing.ibm.com/start label Nov 16, 2023
@mtreinish mtreinish added this to the 23-11-29 dec release milestone Nov 16, 2023
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was generated via the following python script:

import pandas as pd
import plotly.express as px

data = [
    ["0.44.0", "2023-07-27", "2023-11-03", "0.x"],
    ["0.45.0", "2023-11-03", "2024-01-18", "0.x"],
    ["0.46.0", "2024-01-18", "2024-08-15", "0.x"],
    ["1.0.0", "2024-01-31", "2024-05-17", "1.x"],
    ["1.1.0", "2024-05-17", "2024-08-15", "1.x"],
    ["1.2.0", "2024-08-15", "2024-11-21", "1.x"],
    ["1.3.0", "2024-11-21", "2025-02-06", "1.x"],
    ["1.4.0", "2025-02-06", "2025-08-28", "1.x"],
    ["2.0.0", "2025-02-20", "2025-05-29", "2.x"],
    ["2.1.0", "2025-05-29", "2025-08-28", "2.x"],
    ["2.2.0", "2025-08-28", "2025-11-27", "2.x"],
]
release_schedule = pd.DataFrame(
    data, columns=["Release", "Release Date", "End of Support", "Major version"]
)
fig = px.timeline(release_schedule, x_start="Release Date", x_end="End of Support", y="Release", color="Major version", title="Tentative Qiskit Release Schedule")
fig.update_yaxes(autorange="reversed")

Plotly is a javascript library under the covers and generates a web interactive version of this plot (you can zoom in and hover over the releases to get more details) we should be to embed this more natively into the documentation in the future. For example, I just used the plotly api to generate a minified js version of the plot embedded in a standalone html file here: https://gist.githubusercontent.com/mtreinish/18cde5e482b5315b1b2fb09f048276a6/raw/f1a399be8d12ded44f49ecae4295844d48392162/gistfile1.txt

But in the interest of time I just opted to use a static png file for this first commit.

Copy link
Collaborator

@Eric-Arellano Eric-Arellano left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

docs/start/qiskit-versioning.mdx Outdated Show resolved Hide resolved
docs/start/qiskit-versioning.mdx Outdated Show resolved Hide resolved
docs/start/qiskit-versioning.mdx Outdated Show resolved Hide resolved
docs/start/qiskit-versioning.mdx Outdated Show resolved Hide resolved
docs/start/qiskit-versioning.mdx Outdated Show resolved Hide resolved
docs/start/qiskit-versioning.mdx Outdated Show resolved Hide resolved
docs/start/qiskit-versioning.mdx Outdated Show resolved Hide resolved
docs/start/qiskit-versioning.mdx Outdated Show resolved Hide resolved
docs/start/qiskit-versioning.mdx Outdated Show resolved Hide resolved
docs/start/qiskit-versioning.mdx Outdated Show resolved Hide resolved
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>
@javabster
Copy link
Collaborator

We discussed with the docs team earlier today where the best place to put this info would be. There's no clear "best place" to put it and after dec we want to think more carefully about where content like this should ideally go. In the meantime these are the other "good enough" options we can think about:

  1. add this page inside the Advanced setup dropdown in Start
  2. add this page inside the Install dropdown in Start
  3. instead of a whole page take the words in this PR and put it in the existing qiskit install page, underneath the operating system support section.

@mtreinish I'm happy with either of these 3 options, but is there one that would prefer?

@mtreinish
Copy link
Member Author

If you don't think it'll make the install page too long, I'll go with number 3. It is really just extra information about installing and having an extra page for this felt a bit much.

@Eric-Arellano
Copy link
Collaborator

If you don't think it'll make the install page too long

We were thinking of using <details> so that the advanced information on that page (e.g. platform support) is expandable and closed by default, #369, like this:

Screenshot 2023-11-20 at 9 14 22 AM

<details>
<summary>
How do I cite Qiskit in my research?
</summary>
Please cite Qiskit by using the included [BibTeX file](https://github.com/Qiskit/qiskit/blob/main/CITATION.bib).
</details>

It might be helpful to use this mechanism in your PR, too. You'd keep the headers the same as top-level, but could put certain details in the details.

The doc was originally written under the assumption it would be
published as part of Qiskit 1.0.0 on qiskit.org/documentation (with a
dev build available with the 1.0.0pre1 release). However since we
intend this to be published for real with the pre release this adjusts
the tense around the 1.0.0 release to indicate it's coming out in the
future. Everything in this guide is still valid prior to the 1.0.0
release because it just documents the versioning and stability
guidelines moving forward and still apply to 0.45.x (the current release
series).
@mtreinish
Copy link
Member Author

I've updated this to be in the install guide. If there needs to be any changes to the formatting please feel free to just push it to the PR branch

Comment on lines 177 to 180
(with a `_` prefix). However, there can be explicit exceptions made in the case
of specific documented APIs. In such cases these APIs will be clearly documented
as not being considered stable interfaces yet and a user visible warning will be
actively emitted on any use of these unstable interfaces. Additionally, in some
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe "experimental APIs" need it's own subsection as their exceptionality might be important to set the expectations on breaking changes during stable cycles.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TBH, I didn't want to call it out too much as I think it's an anti-pattern we wouldn't want to use widely. I just wanted to make sure we document it as something that we can do if needed. I'm not sure we should make it a specific subsection.

Comment on lines 215 to 223
As a user of Qiskit, it's recommended that you first upgrade to this final minor
version first, so you can see any deprecation warnings and adjust your Qiskit
usage ahead of time before trying a potentially breaking release. The previous
major version will be supported for at least 6 months to give sufficient time
to upgrade. A typical pattern to deal with this is to pin the max version to
avoid using the next major release series until you're sure of compatibility.
For example, specifying in a requirements file `qiskit<2` when the current
major Qiskit version is 1 will ensure that you're using a version of Qiskit
that won't have breaking API changes.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think a "Qiskit as a dependency" can be its own section, to give more relevance and detail (for example, downstream using a feature introduced in a minor should use ~=.)

docs/start/install.mdx Outdated Show resolved Hide resolved
docs/start/install.mdx Outdated Show resolved Hide resolved
docs/start/install.mdx Outdated Show resolved Hide resolved
docs/start/install.mdx Outdated Show resolved Hide resolved
Co-authored-by: Luciano Bello <bel@zurich.ibm.com>
docs/start/install.mdx Outdated Show resolved Hide resolved
docs/start/install.mdx Outdated Show resolved Hide resolved
docs/start/install.mdx Outdated Show resolved Hide resolved
docs/start/install.mdx Outdated Show resolved Hide resolved
docs/start/install.mdx Outdated Show resolved Hide resolved
docs/start/install.mdx Outdated Show resolved Hide resolved
for at least 6 months; only bug and security fixes will be accepted during this
time and only patch releases will be published for this major version. A final
patch version will be published when support is dropped and that release will
also document the end of support for that major version series. A longer
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you clarify what this means to document this? Does it include deprecation warning logic?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just meant something like the prelude in the release notes will say something like "0.46.4 is the final release for the major version 0.x and there will be no further release for the 0.x release series."

Co-authored-by: abbycross <across@us.ibm.com>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only significant feedback I have on this is that can we please put each subheading into a </details> component like the sections above? This is quite a lengthy page and we're trying to prevent users feeling overwhelmed

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added the details section in: f7ff76c feel free to just push to this branch if I did it incorrectly.

Copy link
Collaborator

@javabster javabster left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🚀 thanks for the contribution!

@javabster javabster added this pull request to the merge queue Dec 1, 2023
Merged via the queue into Qiskit:main with commit a315e13 Dec 1, 2023
4 checks passed
@mtreinish mtreinish deleted the add-release-policy-docs branch December 1, 2023 22:05
frankharkins pushed a commit to frankharkins/documentation that referenced this pull request Jul 22, 2024
This commit adds a new document to the hosted documentation for Qiskit's
versioning and stability policy. This is a continuation of
Qiskit/qiskit#11205 which documents for Qiskit users the versioning and
stability policy for the library. It includes an explanation of how to
interpret version numbers, the tentative release schedule for the
project, as well as a definition of what interfaces are considered
stable. This outlines the minimum support windows for major versions and
how deprecations and breaking changes will work with regards to
versioning. This documentation is critical to include with the Qiskit
1.0.0 release as it establishes the expectations around the major
version release for users (all previous documentation on the subject
tactically avoided the discussion of a major version).

---------

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>
Co-authored-by: Luciano Bello <bel@zurich.ibm.com>
Co-authored-by: abbycross <across@us.ibm.com>
Co-authored-by: Kevin Hartman <kevin@hart.mn>
Co-authored-by: javabster <abby.s.mitchell@gmail.com>
Co-authored-by: Abby Mitchell <23662430+javabster@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
content 📄 section: start work related to https://docs.quantum-computing.ibm.com/start
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

6 participants