-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Next Gen Che as an extensible platform #8266
Comments
With server-side plugins running with their own dependencies and probably in their own container with containers limits on RAM we may face the situation where developer tools take a lot of RAM in the workspace. For example:
|
I would also add for ease the pluggability of user docker image to move workspace agent to its own docker image/container so it would be easy to monitor memory used by the "user container" and the "tooling memory" required by "workspace agent" (exec agent and terminal can still be started into the user docker image as they're native tools) @garagatyi it may allow also use to adjust memory for your current usage. Also, if you're doing php you may not need all Java plugins enabled into memory as well (because for example for now all workspace agent plugins are loaded into the memory even if you don't need them for example when you work on different languages) |
This would also enable packaging of the IDE to Electron as Theia has support for Electron packaging, thereby allowing the usage of the client to connect to the Che server without needing to open the browser. |
Closing this epic is covered over different efforts.
|
Description
Motivations
There is a difference between white labelling a product and making a product extensible.
When, someone is white labelling Che, he is going to create a complete new product, add his own specific tools and manage the distribution of the new product. This worked well with the current Che.
But for a product to be an extensible platform - it requires different aspects. As contributor, I don’t want to deliver my tools as a custom Che and manage the distribution myself, I’m expecting to find a base platform where I can propose my tools to users. As a user, I’m expecting to find a list of plugins that I can add to my Che without having to rebuild a new custom Che.
For example: Mercurial plugin, Custom theme...
In order to achieve this, we will introduce Theia as the future of Che's IDE, and build the foundations of the next generation of Che to become a complete extensible platform.
Theia Integration
Our current IDE is built with GWT and our stack is quite complex, requiring to understand many different layers of the architecture. As a result, the developer experience is not seen as efficient and does not allow fast turnarounds (compared to what a developer would expect when working on web applications).
In order to increase the engagement of the community, we need to provide Che's IDE with a more up-to-date technology stack.
The community has shown a growing interest for Theia and during the latest Eclipse Con, the Eclipse community was looking into a solution which would bring the power of Che's workspaces + Theia IDE - as an extensible platform for cloud native tooling.
We want to enable Theia as soon as possible in Che and allow anyone being able to use Theia in Che.
Until Theia replace the current GWT IDE, Theia could be activate either:
Define new architecture for ws-agent
We need to define a new architecture for the ws-agent which will keep only the pieces which will be needed for Theia.
Moreover, for a microservice based approach, we need to consider that the server side of a plugin could be getting a different set of dependencies than the ones used by the default IDE. The server side of a plugin, might be written in NodeJS and run in a sidecar of the other workspace's containers.
We could have two kind of server extensions:
Packaging
We will need to define a packaging format for Che plugins.
The packaging might include:
Next Gen Che Dogfooding
In order to dogfood the next gen Che, we will start building real plugins with it which will be leveraging the extensibility model.
We will be targeting
Linked Issues
Sub Tasks
The text was updated successfully, but these errors were encountered: