question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

There's a significant room to improve the contributor experience

See original GitHub issue

While 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 from compile to provided (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 for intellij-haskell;”. I thought it was an SBT task configuration with the plugin task, but a) it isn’t b) the error SBT gives when I’m trying to run sbt 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:

  1. 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.
  2. You could (or maybe even should?) put the module definitions into the repository, so nobody will have to change that provided/compile switch again.
  3. 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:closed
  • Created 3 years ago
  • Reactions:2
  • Comments:8 (8 by maintainers)

github_iconTop GitHub Comments

1reaction
ForNeVeRcommented, Nov 22, 2020

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.

0reactions
rikvdkleijcommented, Nov 22, 2020

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!

Read more comments on GitHub >

github_iconTop Results From Across the Web

20 Areas of Improvement for Employees | Indeed.com
Even individual contributors can benefit from improving leadership skills to run successful meetings and projects and collaborate with others ...
Read more >
23 Opportunities for Areas of Improvement in the Workplace
Thinking about areas for improvement should be a positive, growth-oriented experience instead of a negative view of your current skillset.
Read more >
Six Ways to Improve the Content Contributor Experience in SharePoint
1. Design for Both Contributors and Visitors from the Start. For any Web CMS project, there are two end user audiences to consider:...
Read more >
CoreFX contributor experience · Issue #22080 · dotnet/runtime ...
First let me say there is a lot of room for improvement in the developer experience (in particular VS) when contributing to code...
Read more >
21 Ways To Improve Work Performance and Continuously Grow
We're sharing 21 ways on how to improve work performance and continuously learn to influence career development. Try these tips out!
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found