There's a significant room to improve the contributor experience
See original GitHub issueWhile setting up a local development environment for the plugin, I was constantly frustrated by the intricacies of this process.
This issue doesn’t mean to be offensive at all; I’d really like to help to improve the contributor experience as much as possible. Please forgive me if I should address this issue to some other project, e.g. SbtIdeaPlugin
; I would gladly do so if you direct me to this project.
For background, I know Scala a little (was actively using it for several pet projects a couple of years ago), and I’m one of IDE developers at JetBrains (so, well, I’m supposed to know stuff about IDEA plugin development). So, I believe that if I was confused by the initial dev env setup, most of the other contributors will probably struggle with it, too.
I was expecting a straightforward experience like the one you get when using gradle-intellij-plugin: when using this nice contraption, you could build the plugin from terminal (./gradlew buildPlugin
) and start the IDE from your terminal, too (./gradlew runIde
); working with the project from the IDE exactly mirrors these commands.
But when trying to set up IntelliJ Haskell, I was very confused by these issues:
-
sbt runIDE
starts an IDE (I’ve found that it uses a version in~/.IntelliJ-HaskellPluginIC
for a purpose I don’t understand), but it has no development version of the IntelliJ-Haskell plugin installed, and there’s no clear documented way to make it so.As an anecdote, in my case it actually had IntelliJ Haskell plugin installed, because it offered to import my main IDEA configuration (which has the plugin installed from the plugin portal), and I blindly accepted it. So, I was blocked for several hours trying to get why isn’t the code I’m adding to the plugin getting called: some of the breakpoints were hit, some of them weren’t, and, as the result, I was knocking my head against a wall for several hours straight.
-
I have to manually perform these actions from the
CONTRIBUTING.md
file: set up the right IDEA Plugin SDK (I had multiple versions of these, and thought I should use the one from~/.IntelliJ-HaskellPluginIC/sdk
). -
Some of the required settings are very subtle: e.g. changing the
unmanaged-jars
dependency scope fromcompile
toprovided
(without this, everytihing was very terrible and the plugin was bricking any IDEA installation I add it to). -
One of the points requires me to “create
plugin
configuration forintellij-haskell
;”. I thought it was an SBT task configuration with theplugin
task, but a) it isn’t b) the error SBT gives when I’m trying to runsbt plugin
is extremely cryptic (“missing ;”, what?), and I was very confused by what’s wrong with it
I believe this issue is actionable in two directions:
- First of all, you could put some IDEA run configurations to the repository: e.g. this
plugin
run configuration. It would help me, as a new contributor, a lot. - You could (or maybe even should?) put the module definitions into the repository, so nobody will have to change that
provided
/compile
switch again. - Also, I understand that most of the issues are caused by clunky development experience of IDEA plugins in Scala, but it seems like the mainstream Scala plugin has most of them solved, and the resulting experience is much more straightforward (essentially, one has to just open the project and run the
scalaCommunity
configuration, and that’s it). So, probably, you could try to migrate current plugin build infrastructure to the one like in intellij-scala.
Issue Analytics
- State:
- Created 3 years ago
- Reactions:2
- Comments:8 (8 by maintainers)
Top GitHub Comments
Alright, thanks a lot! I read the update, and it looks great!
Let’s consider this issue as resolved, then.
I anyway had plans to make some small new contributions to the plugin, so I’ll have to thoroughly re-read the contributing guide when I’ll be doing that, and will leave additional feedback (probably as PR) if I’ll still have any problems.
@ForNeVeR Thanks!