What are the chief differences between Theia and VS Code?

If I want to choose an IDE to develop extensions for, why would I pick Theia vs VS Code? There is also now an open-source browser version of VS Code called code-server on GitHub.

[original thread by Ariel Balter]

The most significant differences are:
Theia’s architecture is more modular and allows for way more customizations,
Theia is designed from the ground to run on Desktop and Cloud, and
Theia is developed under a vendor-neutral Open-Source Foundation.

from https://theia-ide.org/

If I want to choose an IDE to develop extensions for, why would I pick Theia vs VS Code?

In this case, don’t pick build a VS Code extension and run it in Theia and VS Code.

There is also now an open-source browser version of VS Code called code-server on GitHub.

Do you mean 3rd party git and runtime patch of electron and vscode code to make it to run somehow in browser?

Theia is designed to rely only on stable APIs like Monaco, language server and debug adapter protocols, and VS Code extension APIs. It does not rely on VS Code internals for features outside of an editor.

Theia is an IDE framework in first place. You should pick it if you are interested to build your own IDE with extended capabilities which not necessary even looks like VS Code. See for example https://os.mbed.com/studio/

[Ariel Balter]

Thanks @anton-kosyakov! I think I understand the differences a lot better now. I have never been able to successfully build Theia in my Ubuntu WSL environment. I have a lot of trouble with npm and yarn packages in general. I’m not a developer, and find it difficult to be a consumer in this regard. But hopefully if I can get past the native-keymap issue I can make some progress.

[Ariel Balter]

So just to clarify a little–I was assuming that VS Code an Theia were pretty similar in architecture, like maybe Theia as a sort of fork. But it sounds like Theia is pretty different at the bones level but compatible at a higher level. Is that correct?

I was assuming that VS Code an Theia were pretty similar in architecture, like maybe Theia as a sort of fork. But it sounds like Theia is pretty different at the bones level but compatible at a higher level. Is that correct?

Yes, you are right, internals of Theia are designed to be stable and extensible compare to VS Code. It is not a fork. UI/UX are heavily inspired from VS Code. For VS Code extensions there is one Theia extension which provides a compatibility layer.

I’m not a developer, and find it difficult to be a consumer in this regard. But hopefully if I can get past the native-keymap issue I can make some progress.

Theia targets developers who build IDE like products, not end developers. If you want to just use it look at https://github.com/theia-ide/theia-apps there are some examples, you can also use http://www.gitpod.io. I hope at some point there also be Electron distributable of the standard Theia under Eclipse Foundation. It would certainly help adoption.

But hopefully if I can get past the native-keymap issue I can make some progress.

native-keymap is only necessary if you want to have Electron version, for browser version you can just skip @theia/electron dependency while composing your app: https://theia-ide.org/docs/composing_applications/

for working from source (in case if you want to contribute to core packages), you should follow https://github.com/eclipse-theia/theia/blob/master/doc/Developing.md#prerequisites

Or you can use Gitpod: https://github.com/eclipse-theia/theia/blob/master/doc/Developing.md#run-the-browser-example-with-gitpod It’s all ready pre configured. That’s how I work.

[Ariel Balter]

Thanks for the info about the keymap. I tried building the browser version, but still got yarn errors (I can almost never get npm or yarn to build anything without error). However, I was able to build the “build your own idea” example.

Is there any documentation about which individual theia components add specific functionality? For instance, in that example, there is not even a File>New option to create a file.

@ariel-balter Please file an issue for it with documentation label. We will do it some point. Thank you!