diff --git a/0000-ecosystem.md b/0000-ecosystem.md index b9b9815..29c8166 100644 --- a/0000-ecosystem.md +++ b/0000-ecosystem.md @@ -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 @@ -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 @@ -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 @@ -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** @@ -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.