Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [che-dev] Maybe it's time to admit

One container per plugin is NOT a good idea. But that's something we have been discussing in the past. We have discussed how to mitigate it too [1] and running multiple plugins in one container is currently possible [2].

Anyway I think that what Thomas is trying to challenge is the choice to use a sidecar approach rather than a VM like approach for development environments.

Is it the right moment to discuss it? Probably not. We are suuuuper busy with our tight release schedules.
But will we ever have a "right moment" to discuss? Probably not so....

So why aren't we using a VM-like dev machine with a predefined set of tools and runtimes? A machine where a user could even install his favorite tool or a different version of one of the runtimes available there. UX would be similar to local machines and developers would feel at home right?

Right. But this approach has some issues too and here is a list:

The VM approach augment the divergence between dev and production (works on my machine)
The VM approach leads to snowflakes, non repeatable environments (new dev on boarding takes time)
The VM approach moves away devs from ops (they do not share a clear contract)
The VM approach doesn't scale (it takes time to switch between multiple dev environments)
The VM approach makes it harder to deploy the target app on modern cloud platforms (kubernetes)

These aren't new arguments. The twelve factors app methodology and the ultimate success of containers are based on principles that address the VM approach. But dev tools haven't been fully adapted (yet) to this new paradigm and Thomas has mentioned a list of downsides of the sidecar approach.

Should we go back to the mainstream model then? I don't think so. Addressing the downsides of the VM approach is our key differentiator and we have a great opportunity to win. Is our sidecar model mature? I don't think so. We still have some important issues to address but we have made an amazing job exploring unknown lands and we should keep up the good work.



On Tue, Oct 6, 2020 at 4:20 PM Aurélien Pupier <apupier@xxxxxxxxxx> wrote:
Hi,

On Tue, Oct 6, 2020 at 4:04 PM Eric Williams <ericwill@xxxxxxxxxx> wrote:
Hello,

On 10/6/20 7:07 AM, Thomas Mäder wrote:
> ...that our plugin model (contanier per plugin) is wrong:
>
> * we're investing a lot of effort into our container-per-plugin model,
> yet we can't really make it work for many vs code extensions, leading to
> weird errors and testing effort at each update
>
> * we need to run our own plugin registry with our own meta.yml, etc.,
> which is becoming a bottleneck

Some things we can do to reduce this maintenance cost:
* only one version of the plugin in the registry: we release Che often
enough that we don't need multiple versions of one plugin
* increased automation + testing (in progress)
* unify registry and sidecar image contribution process


> * we need a "dev-machine" image anyway (for example, with maven, npm,
> typescript or whatever the stack needs)
>
> * the focus seems to be on out-of-the-box experience, which could easily
> include making a specific "IDE" image per stack.
>
> * there is an effort to make the different containers invisible to the user
>
> * all other contenders in the market have a "single container for the
> IDE" model
>
> * the model only works for Theia and we seem to be starting to support
> other editors

I think there is a strong argument to be made for merging the language
sidecar and dev-machine images. Often the use cases for both of these
containers is so tightly coupled that it makes sense to combine them.
For example in Java, you'd have vscode-java (and related extensions) all
running on the java-maven dev machine container.

For non-language plugins (container tooling, for example), it still
makes sense to keep the plugins in separate containers, as there is no
overlap in the environment needed to run these tools.

Unfortunately, I think I have a use case with an overlap: for VS Code Camel K. VS Code Camel K requires VS Code Kubernetes and fits in "container tooling". But it also requires VS Code Java to provide Java completion for Camel K files (which is why the completion for Java is not still not working for Camel K files)
 


Eric

_______________________________________________
che-dev mailing list
che-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/che-dev


--

Aurélien Pupier

Principal Software Engineer, Fuse Tooling

Red Hat France

apupier@xxxxxxxxxx    IM: apupier

_______________________________________________
che-dev mailing list
che-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/che-dev

Back to the top