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

Universal plugin definition in Devfile #18892

Closed
sunix opened this issue Jan 26, 2021 · 1 comment
Closed

Universal plugin definition in Devfile #18892

sunix opened this issue Jan 26, 2021 · 1 comment
Labels
kind/enhancement A feature request - must adhere to the feature request template. lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. severity/P2 Has a minor but important impact to the usage or development of the system.

Comments

@sunix
Copy link
Contributor

sunix commented Jan 26, 2021

Is your enhancement related to a problem? Please describe.

  • Automating the setup of a development environment
  • From one single file
  • To ease on-boarding
  • That works for any editors

are the main purpose of the devfile.

At the moment everything may not working as expected:

  • devfiles plugins are too tight to che-theia.
  • there is no plugin for other IDEs
  • The proposal Remove plugins from the Devfile schema #18669 would make a nightmare to maintain plugins for each IDEs for teams with diverse IDEs. When starting a new project, developers would have to write the extensions.json for each IDEs. In a team, if only one developer is using netbeans ... he would have to write the right configuration file for each projects.

At the end of the day, the only thing users are interested into is to have a simple and unique way to express what would be the development environnement and the plugins it would like to generate for a project and for any IDE's used.

Describe the solution you'd like

Plugins declaration in devfile

It should be more generic and IDE/editor agnostic, users' wishes should be as simple as I want Java11 support or I want github tools or i want openshift connector or I want mysql tools

Taking as an example this project: https://github.com/sunix/scratch-kubernetes/blob/master/devfile.yaml

Current way:

  - id: che-incubator/typescript/latest
    memoryLimit: 0.4Gi
    type: chePlugin

  - id: redhat/quarkus-java11/latest
    memoryLimit: 1.5Gi
    type: chePlugin

  - id: redhat/vscode-openshift-connector/latest
    memoryLimit: 0.7Gi
    type: chePlugin

  - id: redhat/vscode-didact/latest
    preferences:
      didact.openDefaultTutorialAtStartup: true
      che.welcome.enable: false
      didact.defaultUrl: /projects/quarkus-kubernetes-client-service/scratch-k8s-che.didact.md
    type: chePlugin
    registryUrl: 'https://che-plugin-registry-main.surge.sh/v3'
    alias: didact

The proposal is to declare plugins like category/feature something that could look like:

  - id: language/typescript
    type: plugin

  - id: language/quarkus-java11
    type: plugin

  - id: connector/openshift
    type: plugin

  - id: guide/didact
    preferences:
      didact.openDefaultTutorialAtStartup: true
      default.welcome.enable: false
      didact.defaultUrl: ${projects-root}/quarkus-kubernetes-client-service/scratch-k8s-che.didact.md
    type: plugin

So these are some example on the plugins id we could have:

  • language/java11
  • language/quarkus
  • guide/didact
  • connector/openshift
  • scm/git
  • scm/github
  • database/mysql
  • database/postgresql
  • database/mongo
  • issues/bugzilla
  • issues/github
  • issues/jira
  • etc.

As you can see there is nothing specific to a editor or IDE.

Implementation

On the IDE side, we would just have to maintain one plugin or generator per IDEs. These ones would have the right mapping and provide extensions/plugins/configuration that match each plugin id.
For instance, the `devfile plugin or generator in the Eclipse Desktop IDE could rely on Eclipse Oomph and enable/install the right plugins matching the plugin id.

An advance feature for could be to allow a user to override the set of extensions/configuration to be used for language/java11 that would be done in the IDE level.

Another advance feature could be to let the user define the extension that he always wants to enable, whatever the project.

Describe alternatives you've considered

N/A

@sunix sunix added the kind/enhancement A feature request - must adhere to the feature request template. label Jan 26, 2021
@che-bot che-bot added the status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. label Jan 26, 2021
@azatsarynnyy azatsarynnyy added area/dev-experience severity/P2 Has a minor but important impact to the usage or development of the system. and removed status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. labels Jan 26, 2021
@che-bot
Copy link
Contributor

che-bot commented Aug 9, 2021

Issues go stale after 180 days of inactivity. lifecycle/stale issues rot after an additional 7 days of inactivity and eventually close.

Mark the issue as fresh with /remove-lifecycle stale in a new comment.

If this issue is safe to close now please do so.

Moderators: Add lifecycle/frozen label to avoid stale mode.

@che-bot che-bot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Aug 9, 2021
@che-bot che-bot closed this as completed Sep 2, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/enhancement A feature request - must adhere to the feature request template. lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. severity/P2 Has a minor but important impact to the usage or development of the system.
Projects
None yet
Development

No branches or pull requests

3 participants