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

Move che tasks related logic to extension #16893

Closed
RomanNikitenko opened this issue May 12, 2020 · 9 comments
Closed

Move che tasks related logic to extension #16893

RomanNikitenko opened this issue May 12, 2020 · 9 comments
Labels
area/editor/theia Issues related to the che-theia IDE of Che kind/task Internal things, technical debt, and to-do tasks to be performed. 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

@RomanNikitenko
Copy link
Member

RomanNikitenko commented May 12, 2020

Is your task related to a problem? Please describe.

At the moment che tasks related logic is placed in task plugin.
I would like to discuss withing this issue if we still should keep it as plugin or we should consider moving this logic to extension.

Theia has the corresponding plugin API to manage tasks related system. But one of the problems is:

  • che tasks are remote tasks, they are run in separate containers
  • thus we are using remote terminals to display output for them
  • AFAIK one of our goals is ability to run vs code tasks in separate containers

Also from time to time we have to provide che specific API or move some logic on plugin-ext side.
I believe it would be more simple and more reliable to manage che tasks related logic from extension side.

Describe the solution you'd like

Move che tasks related logic from plugin to extension

@RomanNikitenko RomanNikitenko added kind/task Internal things, technical debt, and to-do tasks to be performed. area/editor/theia Issues related to the che-theia IDE of Che labels May 12, 2020
@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 May 12, 2020
@RomanNikitenko
Copy link
Member Author

@benoitf @l0rd @scela @azatsarynnyy @ericwill
please let me know your opinion

@mshaposhnik mshaposhnik added 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 May 12, 2020
@ericwill
Copy link
Contributor

Are there any downsides to moving this to the extension side? Running tasks in separate containers is definitely something we are interested in supporting, so the work is valuable from that POV alone.

@tsmaeder
Copy link
Contributor

AFAIK one of our goals is ability to run vs code tasks in separate containers

That would be very cool, indeed

@ghost
Copy link

ghost commented May 13, 2020 via email

@azatsarynnyy
Copy link
Member

azatsarynnyy commented May 28, 2020

Are there any downsides to moving this to the extension side?

That's a good question @ericwill
And the short answer is - there are absolutely no downsides. On the contrary - it provides a lot of benefits in our case.

Note, I'm not comparing Theia Plug-ins and Extensions in general but I'm talking specifically in the context of the functionality of supporting Che Commands in Che Theia.

Now, I'd like to give a more detailed answer for a better understanding of the reasons and motivations behind that.
Currently, Che Task Plugin doesn't benefit from any of Theia Plug-ins advantages. Let's look at them:

  • we don't benefit from the code isolation as we trust the code we own and maintain, unlike the 3'rd party plugins;
  • one doesn't need to (un)load the code at runtime enabling/disabling the Plug-in for different Workspaces. As Task Plugin actually is an integral part of Che Theia;
  • reduced compilation time - there're very rare cases when it's not needed to recompile the whole Che Theia as the related code is not on the Plug-in side only but on the main Che Theia application as well (aka plugin-ext);
  • self-contained artifact - Che Task Plugin doesn't have external dependencies so it doesn't need to be run in a separate sidecar;
  • simple Plug-in API - Task Plugin is very complex and only a part of the functionality is implemented with Theia Plug-in API.
    VS Code compatible Theia Task Plug-in API doesn't provide all the required capabilities, e. g. running the commands remotely or adding custom macros. That's why we also have Che Theia Plug-in API which provides all the accompanying functionality.
    And another part is in Extension, plugin-ext;
  • no InversifyJS - we do need DI framework.

In addition to the mentioned above, ^^ what we'd gain more, having Che Commands support in Che Theia through Theia Extension?

  • reduce the amount of data (de)serializations and JSON-RPC communications overhead. That's critical on such infrastructures as Hosted Che. BTW that's one of the reasons for the general slowness of Che Tasks there, e.g. fetching, resolving, running.
  • lower maintenance cost since we'll get rid of a lot of extra burdens to maintain the layer of Che specific Plugin APIs that exposes Theia's components, e.g. Che Tasks Runner API, Che Macros Resolver API;
  • move forward much faster and easier with the new features or while investigating the bugs. As we'll be able to just tweak the required Theia functionality by overriding/rebinding the interesting components.

@ericwill
Copy link
Contributor

Thanks for the very detailed answer! 👍 from me

@che-bot
Copy link
Contributor

che-bot commented Jan 4, 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 Jan 4, 2021
@RomanNikitenko RomanNikitenko removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 11, 2021
@che-bot
Copy link
Contributor

che-bot commented Jul 19, 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 Jul 19, 2021
@RomanNikitenko RomanNikitenko removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jul 19, 2021
@che-bot
Copy link
Contributor

che-bot commented Jan 15, 2022

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 Jan 15, 2022
@che-bot che-bot closed this as completed Jan 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/editor/theia Issues related to the che-theia IDE of Che kind/task Internal things, technical debt, and to-do tasks to be performed. 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

6 participants