Skip to content

Commit

Permalink
Finish first draft
Browse files Browse the repository at this point in the history
  • Loading branch information
frankharkins committed Aug 24, 2023
1 parent 6992bc6 commit bd63afe
Showing 1 changed file with 51 additions and 24 deletions.
75 changes: 51 additions & 24 deletions 0000-ecosystem.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
## Summary

The Qiskit Ecosystem is a collection of projects that use Qiskit. We display
these projects on qiskit.org/ecosystem, and track these projects to understand
how Qiskit is being used.
these projects on [qiskit.org/ecosystem](https://qiskit.org/ecosystem), and
track these projects to understand how Qiskit is being used.


## Motivation
Expand All @@ -22,13 +22,13 @@ We want to acknowledge the importance of Qiskit-based projects, and help users
discover these projects. We also want to better understand how Qiskit is being
used so we can make decisions with our users in mind.

There has been concern about the core Qiskit pacakge becoming too large; an
There has been concern about the core Qiskit package becoming too large; an
official Ecosystem encourages developers to create independent projects, rather
than trying to integrate their work into core Qiskit. This also applies to
experimental code that may eventually become part of the Qiskit package.


## User Benefit
## User benefit

The Qiskit team can use the Ecosystem to keep track of Qiskit-based projects
and understand how Qiskit is being used. Labelling projects reduces IBM's legal
Expand All @@ -46,7 +46,7 @@ end users will have clearer expectations of a project's quality and maintenance
status.


## Design Proposal
## Design proposal

The main function of the Ecosystem is to store a database of Qiskit-based
projects. We will label each project according to it's purpose, importance, and
Expand Down Expand Up @@ -82,26 +82,29 @@ After a few months, we will assess these changes and decide whether to continue
regular testing.


## Detailed Design
## Detailed design

- **Database**

Each record is a TOML file in a GitHub repository. This record will contain
Each record is a TOML file in a GitHub repository. A record must contain
at least the following information:
- Name
- Description
- License
- GitHub stars
- Link to repository
- Maintenance status ("IBM maintained" or "Community maintained")
- Category labels (purpose and importance) TODO: Think about this
- Maintenance status label ("IBM maintained" or "Community maintained")
- Importance label ("Main", or no label)

And may also contain the following information:
- GitHub stars
- Category labels (the purpose of the project)
- Test results

A GitHub action regularly compiles the TOML files into a single JSON file
(stored in the same repo) to be read by the web page. Project maintainers can
(stored in the same repository) to be read by the web page. Project maintainers can
submit applications to join the Ecosystem creating a GitHub issue. A GitHub
action reads these issue templates and creates a pull request adding the TOML
file to the repo. Applications are reviewed by a member of the Qiskit team
file to repository. Applications are reviewed by a member of the Qiskit team
before acceptance.

- **Web page**
Expand Down Expand Up @@ -129,21 +132,45 @@ regular testing.
We will improve the reliability of this action.


## Alternative Approaches
> Discuss other approaches to solving this problem and why these were not
> selected.
## Alternative approaches

Alternatives to the Ecosystem are:

- **Merging everything into core Qiskit**

Rather than keep an official list of Qiskit projects, we could encourage
developers to make pull requests to the main Qiskit package. This is rejected
as it would place a huge maintenance burden on Qiskit developers, and the
Qiskit package would lose its focus.

- **No formal ecosystem:**

* How to include or remove projects from each tier?
We could encourage developers to create their own projects, without keeping
an official list of Qiskit-based projects. This is rejected as it does not
have the benefits of an official Ecosystem (listed in the "User benefit"
section).


## Questions
> Open questions for discussion and an opening for feedback.

## Future Extensions
> Consider what extensions might spawn from this RFC. Discuss the roadmap of
> related projects and how these might interact. This section is also an opening
> for discussions and a great place to dump ideas.
>
> If you do not have any future extensions in mind, state that you cannot think
> of anything. This section should not be left blank.

## Future extensions

We have some future ideas that mostly involve extending the current goals:

- **Better support Qiskit-based projects**

Future goals could be to:
- Make a better Qiskit project template, to make creating new projects
easier, and to improve their quality.
- Find ways to help Ecosystem projects improve their documentation
- Find ways to make updating to the latest version of Qiskit easier
- Run events (such as hackathons) to support Qiskit-based projects

- **Improve data collection**

Having a curated Ecosystem is an opportunity to learn more about how Qiskit
is being used. We may be able to analyze repositories beyond just running
regular tests, but it's not yet clear what information (if any) would be most
useful.

0 comments on commit bd63afe

Please sign in to comment.