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

RFC: Qwik Community Plugins Support #191

Open
shairez opened this issue Nov 14, 2024 Discussed in #20 · 0 comments
Open

RFC: Qwik Community Plugins Support #191

shairez opened this issue Nov 14, 2024 Discussed in #20 · 0 comments
Assignees
Labels
[STAGE-2] incomplete implementation Remove this label when implementation is complete [STAGE-2] not fully covered by tests yet Remove this label when tests are verified to cover the implementation [STAGE-2] unresolved discussions left Remove this label when all critical discussions are resolved on the issue [STAGE-3] docs changes not added yet Remove this label when the necessary documentation for the feature / change is added [STAGE-3] missing 2 reviews for RFC PRs Remove this label when at least 2 core team members reviewed and approved the RFC implementation

Comments

@shairez
Copy link
Contributor

shairez commented Nov 14, 2024

Discussed in #20

Originally posted by shairez September 16, 2024

What is it about?

A way to expand Qwik without increasing core size

What's the motivation for this proposal?

Problems you are trying to solve:

  • Currently the Qwik monorepo contains a lot of adapters, plugins and integrations. We would like to make sure anything that is in core stays stable over time and it's hard to do it with an ever growing number of possible integrations.

Goals you are trying to achieve:

  • Keep qwik core stable and trustworthy
  • Give a way to community contributors to integrate their package into the Qwik CLI

Any other context or information you want to share:


Proposed Solution / Feature

A Qwik plugin system.

Scanability

Every package in node_modules that starts with a specific convention like qwik- should be scanned for its qwik-plugin-manifest.json file which describes specific instructions of which files to copy, modify, etc.

Extracting some of the existing plugins from core

Separating possible integrations as "maintained by core team" (anything under the QwikDev org) or "maintained by community" (anything under the QwikCommunity org) will allow the core team to take responsibility of fewer things but make sure they are always stable / maintained.

File management

We need to brainstorm how different types of plugins will look like (usually there is a difference between the types).

Plus, we would need to modify the Qwik CLI to be aware of external integrations so we could install or add them with ease (running their script).
We would need to provide an infrastructure for copying new files and modifying existing files that are read from the plugin's manifest.

Discoverability

We need a way to list core plugins and community plugins in a searchable area under the Qwik docs


Links / References

Here are some examples for existing plugin systems from several projects:

Example for a "discover plugins" page -

(via @ianlet):
Adding this one for inspiration:

Which is the usual npm|pnpm|yarn create [...] command.

And this one for an other example of "plugin registry":

@github-project-automation github-project-automation bot moved this to In Progress (STAGE 2) in Qwik Evolution Nov 14, 2024
@shairez shairez self-assigned this Nov 14, 2024
@github-actions github-actions bot added [STAGE-2] incomplete implementation Remove this label when implementation is complete [STAGE-2] not fully covered by tests yet Remove this label when tests are verified to cover the implementation [STAGE-2] unresolved discussions left Remove this label when all critical discussions are resolved on the issue [STAGE-3] docs changes not added yet Remove this label when the necessary documentation for the feature / change is added [STAGE-3] missing 2 reviews for RFC PRs Remove this label when at least 2 core team members reviewed and approved the RFC implementation labels Nov 14, 2024
@shairez shairez moved this from Backlog to Upcoming in Qwik Development Nov 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[STAGE-2] incomplete implementation Remove this label when implementation is complete [STAGE-2] not fully covered by tests yet Remove this label when tests are verified to cover the implementation [STAGE-2] unresolved discussions left Remove this label when all critical discussions are resolved on the issue [STAGE-3] docs changes not added yet Remove this label when the necessary documentation for the feature / change is added [STAGE-3] missing 2 reviews for RFC PRs Remove this label when at least 2 core team members reviewed and approved the RFC implementation
Projects
Status: Upcoming
Status: In Progress (STAGE 2)
Development

No branches or pull requests

2 participants