Che: Basic support IntelliJ IDEA as a Che editor

Created on 4 Sep 2020  路  23Comments  路  Source: eclipse/che

Is your enhancement related to a problem? Please describe.

Che-theia is the default editor. We support alternative editors such as dirigible, desktop eclipse and code-server. But not IntelliJ.

Describe the solution you'd like

Add support for IntelliJ as an editor. IntelliJ would run in the browser. IntelliJ community edition should be used. These are the subtasks:

What is NOT included in this issue

A fully supported editor should also:

  • describe the IDE configuration in a devfile (commands, plugins, runtime services)
  • automatically inject users configs in the IDE (such as proxy, git, kubernetes settings)
  • airgap support

But these features are not in this issue scope. We will create dedicated issues for that.

Describe alternatives you've considered

Additional context

This is a feature provided by coder enterprise (this is the dockerfile).

@benoitf has provided PoC that uses webswing and that can be tried out with the following devfile or using docker locally docker run --rm -it -p 8080:8080 quay.io/fbenoit/webswing-intellij:20200904.

image

areeditointellij kinepic severitP1

All 23 comments

Please note that IntelliJ Community does not require a license

Adding GTK broadway as an alternative (this is used by Desktop Eclipse)

@jeffmaury broadway is for GTK/AWT but inteliij is not using AWT/gtk

Here is with novnc:
https://che.openshift.io/f?url=https://gist.githubusercontent.com/benoitf/1b85a426971790687f5b057ff205dbea/raw/c6ea1b2a75c3e3c16ea217eef37965cb68606e47/devfile.yaml

image

xpra:

http://che.openshift.io/f/?url=https://gist.githubusercontent.com/benoitf/6ccdb0ee11658c5efb794ca1b161bfb0/raw/f8cea506db476614ea9b94b898cac359df926fda/devile-intellj-xpra.yaml

image

latest novnc attempt by Florent http://che.openshift.io/f?url=https://gist.githubusercontent.com/benoitf/3c69b0290e6b6901dd20a505e1024267/raw/7f6523f7ec8a5bcbdbbc82eb4800fe565cb74c9f/gistfile1.txt

source code of POC are there

(with VNC I was able to use browser resizing and maximize widgets using a lightweight wm (here it's fluxbox) where I can hide toolbar/workspaces, etc by default)

I have added a few more requirements in the description:

  • It should be possible to minimize the sidebar as it's possible for Theia.
  • We should provide documentation about how to use the ultimate edition.
  • We should test that it works properly with a Floating License Server.

I would say order should be

  1. publish image of the intellij community + vnc
  2. Add plugin in the registry
  3. Add devfile using this plug-in (turn into documentation)
  4. doc: a) probably need to have a 'base image' that ppl can extend to their own use
    b) example of devfile with JETBRAINS_LICENSE_SERVER and ultimate edition
  5. persistent settings across workspace restart
  6. idle timeout che/intellij plug-in
  7. image for CRW based on ubi8
  8. clone projects on boot or do https://github.com/eclipse/che/issues/15973
  9. terminal/containers intellij/che plug-in
  10. minimize che dashboard sidebar (workaround if not done is to open the ide in a new full window. I did that there: https://github.com/benoitf/che-intellij-editor-webswing/blob/master/index.html#L25-L30)
  11. execute devfile tasks (let's avoid that for now)

What are the deliverables here? new container image(s)? new plugin(s)? new devfile(s)?

If any of the above, what are the dependencies, and how are they built? What licenses apply re: redistribution, attribution, etc.? is crypto involved? Are there any security concerns?

This smells like an Epic, which would need some subtasks under it re: the above items.

Intellij Idea's configuration directory is described in the following doc: https://www.jetbrains.com/help/idea/tuning-the-ide.html?_ga=2.152130681.1731799723.1600938923-801667806.1600783588#config-directory

@vzhukovskii note that $HOME/.local and $HOME/.java are used as well but not documented !

@benoitf thanks for the pointing! Will take a note about these directories.

@benoitf @vzhukovskii I have updated the description with the ordered list provided by @benoitf above with a few changes:

  • added ubi based image (to make productization easier)
  • added end to end test
  • removed 9, 10 and 11 that IMO are nice to have

@l0rd thanks! At this moment there is a work on implementing simple activity tracker, because this is a kinda blocker for user experience. Issue for that will post in this comment soon. _(update: https://github.com/eclipse/che/issues/17953)_

To make the work coherent, I'll create a dedicate issues for each subtask, because this looks like an epic.

Another thing, that needs to be resolved is handling Enter key in the built-in terminal. At this moment it's also kinda blocker. There's a workaround to copy \n from the editor and paste to the terminal, but it's really slows down the any interaction with the terminal. Added to the description.

Disabling
image

in settings make it work
terminal-intellij

Then this option needs to be disabled by default in settings all the time

I think, we can add additional item into description, to have a preliminary IDE configuration and set up specific options like https://github.com/eclipse/che/issues/17790#issuecomment-698854133. Because when workspace opens at first time, user has to configure this option to operate with terminal. _//upd: updated the last item in the list_

I've added the issue for a UBI-based Dockerfile as it's a requirement for including it to CRW.
https://github.com/eclipse/che/issues/18031

Two subtasks not yet complete, so move to 7.22 milestone:

The basic support is done :tada:
If this will be our priority in the future, then all further enhancements will be tracked with separate issues.

Was this page helpful?
0 / 5 - 0 ratings