Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[ide-dev] IntelliJ's OpenAPI / PSI platform.

So, recently Mickael Istria pointed out to me a comment on Twitter of someone who switched from Eclipse to IntelliJ for Go development, mentioning it was "a thousand times better" ( )

Whilst Mickael tried to get to the bottom of what the issues were, the ensuing conversation confirmed what I already knew, which is that the Go plugin for IntelliJ is vastly superior to the Eclipse one (Goclipse) - the main reason being because it has a better language engine (a secondary reason being much better debugging support).

Goclipse uses externals tools for the language engine (gocode, guru, godef, gofmt, etc.), same as every other Go IDE/editor out there, except IntelliJ. IntelliJ, unlike Eclipse, actually has a platform - OpenAPI, the PSI structures, etc. - to develop language engines for IDE use. This platform makes it easier to develop engine support for new languages, with functionality such as code completion, find-def, formatting, syntax highlighting, even refactoring and cross-language integration. On top of that, Jetbrains actually has paid developers (employees) working full time on the IntelliJ Go plugin. (also on the Rust plugin BTW)

This makes it extremely hard, if not impossible, to compete with IntelliJ on those terms, unless there was also a major investment in the Go external language tools - of which there is not, not on the same level as IntelliJ. The Go tools are currently developed on the basis of volunteer work.

But the interesting bit, is that the OpenAPI platform, as well as the whole of the Go plugin for IntelliJ are entirely Open Source. So it should be possible in theory to pick out the OpenAPI platform from the rest of IntelliJ and use it in Eclipse (even better, in a LSP-based language engine)

Has anyone ever thought of doing something like this? I guess it might have occurred to people before, but there was never sufficient corporate interest. It might take a while to get there, and require enough expertise, but if fully achived the gains would be massive (not just for Go, but many other languages)

Back to the top