Skip to content

Commit

Permalink
Proper trademarking of IBM and third-party names (#746)
Browse files Browse the repository at this point in the history
Closes #726 

The first instance on a page of every trademarked name (whether IBM or
third-party) should be marked with the trademark symbol (except in
headings, where the code will not render as a symbol).

Outstanding questions: Where does the trademark symbol occur if the
following are the first instance on a page?:
(editing to add: preliminary guidance directs us as follows: )

- [ ] IBM Quantum™ systems
- [ ] Qiskit® Runtime service
- [ ] Qiskit® Runtime
- [ ] Qiskit IBM Provider (still unknown)
- [ ] Qiskit® Patterns
- [ ] Qiskit® Experiments
- [ ] Qiskit® 1.0
- [ ] Qiskit® Runtime IBM Client
- [ ] Qiskit® Runtime IBM REST API
- [ ] IBM Quantum™ Network

References: 
https://www.ibm.com/brand/experience-guides/quantum/voice#usage
https://www.ibm.com/legal/copyright-trademark


### Progress

- [x] Migration guides
- [x] Start
- [x] Build
- [x] Transpile
- [x] Verify
- [x] Run
- [x] Support

---------

Co-authored-by: Eric Arellano <[email protected]>
  • Loading branch information
abbycross and Eric-Arellano authored Feb 12, 2024
1 parent a29000e commit ae57b26
Show file tree
Hide file tree
Showing 75 changed files with 235 additions and 215 deletions.
31 changes: 30 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Read on for more information about how to support this project:

### 1. Report bugs, inaccuracies or general content issues

This is the quickest, easiest, and most helpful way to contribute to this project and improve the quality of Qiskit and IBM Quantum documentation. There are a few different ways to report issues, depending on where it was found:
This is the quickest, easiest, and most helpful way to contribute to this project and improve the quality of Qiskit&reg; and IBM Quantum&trade; documentation. There are a few different ways to report issues, depending on where it was found:

- For problems you've found in the [Qiskit API Reference](https://docs.quantum.ibm.com/api/qiskit) section, open an issue in the Qiskit repo [here](https://github.com/Qiskit/qiskit/issues/new/choose).
- For problems you've found in the [Qiskit Runtime IBM Client](https://docs.quantum.ibm.com/api/qiskit-ibm-runtime) section, open an issue in the Qiskit IBM Runtime repo [here](https://github.com/Qiskit/qiskit-ibm-runtime/issues/new/choose).
Expand Down Expand Up @@ -541,3 +541,32 @@ To display a qasm operation (like a not gate), you can use the `Operation` compo
```mdx
<Operation name="x" />
```

## Proper marking and attribution

**All information needs to identify, mark, and attribute IBM and applicable third-party trademarks.** We do this the first time an IBM trademark appears on each page. See the [Copyright and trademark information](https://www.ibm.com/legal/copyright-trademark) page for more details.

Some companies require a special attribution notice. View a list of the companies to include in a special attribution notice at the [Special attributions](https://www.ibm.com/legal/copyright-trademark#special) section of the IBM Legal site.

<details>
<summary>A (non-exhaustive) list of trademarked names found in our docs:</summary>

- IBM&reg;
- IBM Cloud&reg;
- IBM Quantum&trade;
- Qiskit&reg;
</details>

See the Usage section of the IBM Quantum Experience Guide for guidance on when to use IBM and when to use IBM Quantum.

### Trademark symbols

To create the symbols in markdown:

Use `&reg;` to get &reg; for registered trademarks.

use `&trade;` to get &trade; for nonregistered trademarks.

<Admonition type="caution">
Do not include trademarks in headings. The code will display rather than the symbol.
</Admonition
4 changes: 2 additions & 2 deletions docs/api/migration-guides/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: Migrate to using the newest from Qiskit and Qiskit Runtime

# Introduction

We've prepared various migration guides to help you more effectively use Qiskit and Qiskit Runtime:
We've prepared various migration guides to help you more effectively use Qiskit&reg; and Qiskit Runtime:

* Migrate to Qiskit Runtime
* [How to migrate](./qiskit-runtime)
Expand All @@ -15,4 +15,4 @@ We've prepared various migration guides to help you more effectively use Qiskit
* Qiskit 0.44 changes
* [`qiskit.algorithms` new interface](./qiskit-algorithms-module)
* [`qiskit.opflow` deprecation](./qiskit-opflow-module)
* [`QuantumIntance` deprecation](./qiskit-quantum-instance)
* [`QuantumInstance` deprecation](./qiskit-quantum-instance)
6 changes: 3 additions & 3 deletions docs/api/migration-guides/qiskit-1.0.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Adapt to changes in installing and depending on Qiskit 1.0

# Qiskit 1.0 packaging changes

Qiskit 1.0 uses a different packaging structure than previous Qiskit versions and might cause problems in environments that use packages that are not ready for Qiskit 1.0.
Qiskit&reg; 1.0 uses a different packaging structure than previous Qiskit versions and might cause problems in environments that use packages that are not ready for Qiskit 1.0.

<Admonition type="caution">
Do not try to upgrade an existing Python virtual environment to Qiskit 1.0 in-place.
Expand Down Expand Up @@ -397,7 +397,7 @@ Further complications aren't necessary to understand the problems described in t

### The old Qiskit structure

Historically, Qiskit was comprised of many Python distributions: `qiskit-terra`, the compiler core; `qiskit-aer`, the high-performance simulator; the original IBM Quantum provider; and several now-obsolete packages providing particular exploratory algorithmic or experiment-running features.
Historically, Qiskit was comprised of many Python distributions: `qiskit-terra`, the compiler core; `qiskit-aer`, the high-performance simulator; the original IBM Quantum&trade; provider; and several now-obsolete packages providing particular exploratory algorithmic or experiment-running features.
For user ease, we also provided a Python distribution called `qiskit`, which contained no code of its own, but caused all the other components to be installed.
We called this the _metapackage_, by analogy to similar concepts in other package managers.
The code of the core of Qiskit lived in `qiskit-terra`, which owned the root of the Python package `qiskit`. In other words, `qiskit-terra` controlled what happened when you ran `import qiskit`.
Expand Down Expand Up @@ -467,7 +467,7 @@ Exit Jupyter, activate the Qiskit virtual environment on the command line, run `

### `import qiskit` succeeds, but trying to do anything returns "AttributeError: module 'qiskit' has no attribute '...'"

This likely means that your environment had an old version of Qiskit in it alongside a package that extended its namespace (such as old versions of Qiskit Aer, or the long-obsolete Qiskit IBMQ Provider), and then Qiskit was uninstalled.
This likely means that your environment had an old version of Qiskit in it alongside a package that extended its namespace (such as old versions of Qiskit Aer, or the long-obsolete Qiskit IBM Q&reg; Provider), and then Qiskit was uninstalled.
The easiest thing to do is to start a new virtual environment, and only install recent, non-obsolete packages into it.

If you have just started a new virtual environment, or you're sure that legacy packages are not the problem, make sure that your current working directory (the directory your shell session was in when you launched Python / Jupyter) does not contain a folder called `qiskit`.
Expand Down
4 changes: 2 additions & 2 deletions docs/api/migration-guides/qiskit-algorithms-module.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Use the new interface for `qiskit.algorithms`

# Algorithms migration guide

In Qiskit 0.44 and later releases, the `qiskit.algorithms` module has been superseded by a new standalone library, `qiskit_algorithms`,
In Qiskit&reg; 0.44 and later releases, the `qiskit.algorithms` module has been superseded by a new standalone library, `qiskit_algorithms`,
available on [GitHub](https://github.com/qiskit-community/qiskit-algorithms) and
[PyPi](https://pypi.org/project/qiskit-algorithms). The `qiskit.algorithms` module was migrated to a
separate package in order to clarify the purpose of Qiskit and make a distinction between the tools and libraries built on top of it.
Expand Down Expand Up @@ -86,7 +86,7 @@ Once you know which primitive you want to use, choose the primitive implementati

* For running on quantum hardware choose from these options:

- Access services with native primitive implementations, such as the IBM Qiskit Runtime service by using [`qiskit_ibm_runtime.Sampler`](../qiskit-ibm-runtime/qiskit_ibm_runtime.Sampler) and [`qiskit_ibm_runtime.Estimator`.](../qiskit-ibm-runtime/qiskit_ibm_runtime.Estimator)
- Access services with native primitive implementations, such as the Qiskit Runtime service by using [`qiskit_ibm_runtime.Sampler`](../qiskit-ibm-runtime/qiskit_ibm_runtime.Sampler) and [`qiskit_ibm_runtime.Estimator`.](../qiskit-ibm-runtime/qiskit_ibm_runtime.Estimator)
- Wrap any system with `Backend` primitives ([`qiskit.primitives.BackendSampler`](../qiskit/qiskit.primitives.BackendSampler) and [`qiskit.primitives.BackendEstimator`](../qiskit/qiskit.primitives.BackendEstimator)). These wrappers implement a primitive interface on top of a backend that only supports `backend.run()`.

For detailed information and examples, particularly on the use of the `Backend` primitives, refer to
Expand Down
10 changes: 5 additions & 5 deletions docs/api/migration-guides/qiskit-opflow-module.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: Stop using the deprecated `qiskit.opflow` module
The new [`qiskit.primitives`](../qiskit/primitives), in combination with the [`qiskit.quantum_info`](../qiskit/quantum_info) module, have superseded
functionality of [`qiskit.opflow`](../qiskit/0.44/opflow), which is being deprecated.

This migration guide contains instructions and code examples to migrate code that uses
This migration guide contains instructions and code examples to migrate Qiskit&reg; code that uses
the [`qiskit.opflow`](../qiskit/0.44/opflow) module to the [`qiskit.primitives`](../qiskit/primitives) and [`qiskit.quantum_info`](../qiskit/quantum_info) modules.

<Admonition type="note">
Expand All @@ -20,7 +20,7 @@ the [`qiskit.opflow`](../qiskit/0.44/opflow) module to the [`qiskit.primitives`]
<span id="attention_primitives"></span>
<Admonition type="note">
Most references to the [`qiskit.primitives.Sampler`](../qiskit/qiskit.primitives.Sampler) or [`qiskit.primitives.Estimator`](../qiskit/qiskit.primitives.Estimator) in this guide
can be replaced with instances of any primitive implementation. For example Aer primitives ([`qiskit_aer.primitives.Sampler`](https://qiskit.org/ecosystem/aer/stubs/qiskit_aer.primitives.Sampler.html)/[`qiskit_aer.primitives.Estimator`](https://qiskit.org/ecosystem/aer/stubs/qiskit_aer.primitives.Estimator.html)) or the IBM Qiskit Runtime primitives ([`qiskit_ibm_runtime.Sampler`](../qiskit-ibm-runtime/qiskit_ibm_runtime.Sampler)/[`qiskit_ibm_runtime.Estimator`](../qiskit-ibm-runtime/qiskit_ibm_runtime.Estimator)).
can be replaced with instances of any primitive implementation. For example Aer primitives ([`qiskit_aer.primitives.Sampler`](https://qiskit.org/ecosystem/aer/stubs/qiskit_aer.primitives.Sampler.html)/[`qiskit_aer.primitives.Estimator`](https://qiskit.org/ecosystem/aer/stubs/qiskit_aer.primitives.Estimator.html)) or the Qiskit Runtime primitives ([`qiskit_ibm_runtime.Sampler`](../qiskit-ibm-runtime/qiskit_ibm_runtime.Sampler)/[`qiskit_ibm_runtime.Estimator`](../qiskit-ibm-runtime/qiskit_ibm_runtime.Estimator)).
Specific systems can be wrapped with ([`qiskit.primitives.BackendSampler`](../qiskit/qiskit.primitives.BackendSampler), [`qiskit.primitives.BackendEstimator`](../qiskit/qiskit.primitives.BackendEstimator)) to also present primitive-compatible interfaces.

Certain classes, such as the
Expand Down Expand Up @@ -91,9 +91,9 @@ These were mainly used for didactic purposes or quick prototyping and can easily
[`qiskit.quantum_info`](../qiskit/quantum_info) class: [`qiskit.quantum_info.Pauli`](../qiskit/qiskit.quantum_info.Pauli), [`qiskit.quantum_info.Clifford`](../qiskit/qiskit.quantum_info.Clifford) or
[`qiskit.quantum_info.Statevector`](../qiskit/qiskit.quantum_info.Statevector).

### 1-qubit paulis
### Single-qubit Paulis

The 1-qubit paulis were commonly used for algorithm testing, as they could be combined to create more complex operators
The single-qubit Paulis were commonly used for algorithm testing, as they could be combined to create more complex operators
(for example, `0.39 * (I ^ Z) + 0.5 * (X ^ X)`).
These operations implicitly created operators of type [`qiskit.opflow.primitive_ops.PauliSumOp`](../qiskit/0.44/qiskit.opflow.primitive_ops.PauliSumOp), and can be replaced by
directly creating a corresponding [`qiskit.quantum_info.SparsePauliOp`](../qiskit/qiskit.quantum_info.SparsePauliOp), as shown in the following examples.
Expand Down Expand Up @@ -477,7 +477,7 @@ or [`qiskit.opflow.state_fns`](../qiskit/0.44/qiskit.opflow.state_fns). The [`qi

| Opflow | Alternative |
| --- | --- |
| [`qiskit.opflow.list_ops.ListOp`](../qiskit/0.44/qiskit.opflow.list_ops.ListOp) | No direct replacement. This is the base class for operator lists. In general, these could be replaced with a Python `list`s. For [`qiskit.quantum_info.Pauli`](../qiskit/qiskit.quantum_info.Pauli) operators, there are a few alternatives, depending on the use case. One alternative is [`qiskit.quantum_info.PauliList`](../qiskit/qiskit.quantum_info.PauliList). |
| [`qiskit.opflow.list_ops.ListOp`](../qiskit/0.44/qiskit.opflow.list_ops.ListOp) | No direct replacement. This is the base class for operator lists. In general, these could be replaced with a Python `list`. For [`qiskit.quantum_info.Pauli`](../qiskit/qiskit.quantum_info.Pauli) operators, there are a few alternatives, depending on the use case. One alternative is [`qiskit.quantum_info.PauliList`](../qiskit/qiskit.quantum_info.PauliList). |
| [`qiskit.opflow.list_ops.ComposedOp`](../qiskit/0.44/qiskit.opflow.list_ops.ComposedOp) | No direct replacement. Current workflows do not require composing states and operators within one object (no lazy evaluation). |
| [`qiskit.opflow.list_ops.SummedOp`](../qiskit/0.44/qiskit.opflow.list_ops.SummedOp) | No direct replacement. For [`qiskit.quantum_info.Pauli`](../qiskit/qiskit.quantum_info.Pauli) operators, use [`qiskit.quantum_info.SparsePauliOp`](../qiskit/qiskit.quantum_info.SparsePauliOp). |
| [`qiskit.opflow.list_ops.TensoredOp`](../qiskit/0.44/qiskit.opflow.list_ops.TensoredOp) | No direct replacement. For [`qiskit.quantum_info.Pauli`](../qiskit/qiskit.quantum_info.Pauli) operators, use [`qiskit.quantum_info.SparsePauliOp`](../qiskit/qiskit.quantum_info.SparsePauliOp). |
Expand Down
6 changes: 3 additions & 3 deletions docs/api/migration-guides/qiskit-quantum-instance.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ The remainder of this guide focused on the [`qiskit.utils.QuantumInstance.execut
[`qiskit.primitives`](../qiskit/primitives) migration path.

<Admonition type="caution">
**Background on the Qiskit primitives**
**Background on the Qiskit&reg; primitives**

The Qiskit primitives are algorithmic abstractions that encapsulate system or simulator access for easy integration into algorithm workflows.

Expand All @@ -39,14 +39,14 @@ The remainder of this guide focused on the [`qiskit.utils.QuantumInstance.execut
wrappers for `backend.run()` that follow the primitives interface.

Providers can implement these primitives as subclasses of [`qiskit.primitives.BaseSampler`](../qiskit/qiskit.primitives.BaseSampler) and [`qiskit.primitives.BaseEstimator`](../qiskit/qiskit.primitives.BaseEstimator), respectively.
IBM Qiskit Runtime ([`qiskit_ibm_runtime`](../qiskit-ibm-runtime/qiskit_ibm_runtime.QiskitRuntimeService)) and Aer ([`qiskit_aer.primitives`](https://qiskit.org/ecosystem/aer/apidocs/aer_primitives.html)) are examples of native implementations of primitives.
Qiskit Runtime ([`qiskit_ibm_runtime`](../qiskit-ibm-runtime/qiskit_ibm_runtime.QiskitRuntimeService)) and Aer ([`qiskit_aer.primitives`](https://qiskit.org/ecosystem/aer/apidocs/aer_primitives.html)) are examples of native implementations of primitives.

This guide uses the following naming convention:

- *Primitives* - Any Sampler or Estimator implementation using base classes [`qiskit.primitives.BackendSampler`](../qiskit/qiskit.primitives.BackendSampler) and a [`qiskit.primitives.BackendEstimator`](../qiskit/qiskit.primitives.BackendEstimator).
- *Reference primitives* - [`qiskit.primitives.Sampler`](../qiskit/qiskit.primitives.Sampler) and [`qiskit.primitives.Estimator`](../qiskit/qiskit.primitives.Estimator) are reference implementations that come with Qiskit.
- *Aer primitives* - The [Aer](https://qiskit.org/ecosystem/aer) primitive implementations [`qiskit_aer.primitives.Sampler`](https://qiskit.org/ecosystem/aer/stubs/qiskit_aer.primitives.Sampler.html) and [`qiskit_aer.primitives.Estimator`](https://qiskit.org/ecosystem/aer/stubs/qiskit_aer.primitives.Estimator.html).
- *Qiskit Runtime primitives* - The IBM Qiskit Runtime primitive implementations [`qiskit_ibm_runtime.Sampler`](../qiskit-ibm-runtime/qiskit_ibm_runtime.Sampler) and [`qiskit_ibm_runtime.Estimator`](../qiskit-ibm-runtime/qiskit_ibm_runtime.Estimator).
- *Qiskit Runtime primitives* - The Qiskit Runtime primitive implementations [`qiskit_ibm_runtime.Sampler`](../qiskit-ibm-runtime/qiskit_ibm_runtime.Sampler) and [`qiskit_ibm_runtime.Estimator`](../qiskit-ibm-runtime/qiskit_ibm_runtime.Estimator).
- *`Backend` primitives* - Instances of [`qiskit.primitives.BackendSampler`](../qiskit/qiskit.primitives.BackendSampler) and [`qiskit.primitives.BackendEstimator`](../qiskit/qiskit.primitives.BackendEstimator). These allow any system to implement primitive interfaces.

</Admonition>
Expand Down
2 changes: 1 addition & 1 deletion docs/api/migration-guides/qiskit-runtime-examples.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: Examples of migrating from using backend.run to using Qiskit Runtim

# Migration examples

Follow these examples to design a Qiskit Runtime algorithm.
Follow these examples to design a Qiskit&reg; Runtime algorithm.

<span id="estimator-algorithm"></span>
## Use Estimator to design an algorithm
Expand Down
4 changes: 2 additions & 2 deletions docs/api/migration-guides/qiskit-runtime-from-provider.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: How to migrate `backend.run()` from Qiskit IBM Provider to Qiskit I

# Migrate `backend.run()` from `qiskit_ibm_provider` to `qiskit_ibm_runtime`

The Qiskit Runtime interface includes two packages:
The Qiskit&reg; Runtime interface includes two packages:
Qiskit IBM Provider (the [`qiskit_ibm_provider`](../qiskit-ibm-provider) package) and
Qiskit IBM Runtime (the [`qiskit_ibm_runtime`](../qiskit-ibm-runtime) package). Until now,
primitives (`Sampler` and `Estimator`)
Expand All @@ -16,7 +16,7 @@ In the `qiskit-ibm-runtime` 0.15 release, we added support for running custom ci
so users can run all programs through Runtime.

This guide describes how to migrate code that implemented `IBMBackend.run()`
using Qiskit IBM Provider to use Qiskit IBM Runtime instead.
using qiskit_ibm_provider to use qiskit_ibm_runtime instead.

**Example 1: Straightforward execution of IBMBackend.run()**

Expand Down
4 changes: 2 additions & 2 deletions docs/api/migration-guides/qiskit-runtime.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ in_page_toc_max_heading_level: 2

This guide describes key patterns of behavior and use cases with code
examples to help you migrate code from the legacy `qiskit-ibmq-provider`
package to use the Qiskit Runtime primitives.
package to use the Qiskit&reg; Runtime primitives.

## Overview

There are two methods for accessing IBM Quantum systems. First, the `qiskit-ibm-provider` package provides the `backend.run()` interface, allowing direct access to IBM Quantum systems with no pre- or post-processing involved. This level of access is suitable for those users who want **precise control** over circuit execution and result processing. This level of access is needed for those at the level of kernel developer who are looking to develop, for example, circuit optimization routines or error mitigation techniques, or who want to characterize quantum systems.
There are two methods for accessing IBM Quantum&trade; systems. First, the `qiskit-ibm-provider` package provides the `backend.run()` interface, allowing direct access to IBM Quantum systems with no pre- or post-processing involved. This level of access is suitable for those users who want **precise control** over circuit execution and result processing. This level of access is needed for those at the level of kernel developer who are looking to develop, for example, circuit optimization routines or error mitigation techniques, or who want to characterize quantum systems.

In contrast, Qiskit Runtime is designed to **streamline algorithm and application construction** by removing the need for users to understand technical hardware and low-level software details. Advanced processing techniques for error suppression and mitigation are automatically applied, giving users high-fidelity results without the burden of having to code these routines themselves. Sessions within Qiskit Runtime allow users to run iterative algorithm circuits back to back, or batch collections of circuits without having to re-queue each job. This results in more efficient quantum processor use and reduces the time users spend running complex computations.

Expand Down
4 changes: 2 additions & 2 deletions docs/build/bit-ordering.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ these bits both in computer memory and when displayed on-screen.

## Qiskit conventions

Here's how Qiskit orders bits in different scenarios.
Here's how Qiskit&reg; orders bits in different scenarios.

### Quantum circuits

Expand Down Expand Up @@ -75,7 +75,7 @@ usually write numbers with the most significant digit on the left, and in
Qiskit, bit $n$ is interpreted as the most significant bit.

For example, the following cell defines a `Statevector` from a string of
single-qubit states. In this case, qubit $0$ is in state $|{+}\rangle$, and
single-qubit states. In this case, qubit $0$ is in state $|+\rangle$, and
qubit $1$ in state $|0\rangle$.

```python
Expand Down
Loading

0 comments on commit ae57b26

Please sign in to comment.