The state of plugin development on Windows

Hello, I was wondering if any of you develop plugins on Windows. I ask this question because, it has become a pain (at least on my computer :sweat_smile:):

Because of that, I’m sticking to the intellij-platform-gradle-plugin v2.1.0, which is quite old. I’m sticking to this version because it’s not affected by these issues. Unfortunately, because of that, I can’t target 2025 IDEs with this version. This is will be a problem for me soon, as I’m using more and more deprecated APIs, and I absolutely need to switch to 2025 IDEs to use newer APIs. I mean, my plugins are compatible with 2025 IDEs, but I can’t build against 2025, nor test with a 2025 sandboxed IDE.

So, I don’t know. What should I do? I have a VirtualBox VM with Linux, but this is not ideal.
This is why I’m trying to alert JetBrains about the poor state of plugin development on Windows. I don’t understand why this is not a priority. At least, this is my feeling.

Thanks for reading.

I use Windows – specifically on ARM64 – as my daily driver for plugin development. However, my plugin doesn’t use a Gradle build. That obviously comes with its own set of challenges, but it does avoid the ones you’ve cited here.

I experienced some of these when working on an open source plugin for a few months that does use a Gradle build, specifically the issue with jar locking. At some point I found a way to avoid that issue, but I honestly don’t remember the solution. Also, the Gradle plugin SDK doesn’t work well on Windows/ARM64. I had to comment out the following in build.gradle.kts or the build would fail with some known issue on that OS/arch combination:

kotlin {
    jvmToolchain {
        languageVersion = JavaLanguageVersion.of(17)
        vendor = JvmVendorSpec.JETBRAINS
    }
}

I don’t have to do that on my Windows/x64 machine, but it’s so much slower than my Windows/ARM64 machine that it’s worth the workaround(s).

So that’s probably not at all helpful, but in the spirit of ā€œmisery loves companyā€, I’ve also seen issues with plugin dev on Windows. I haven’t ever tried plugin dev on Mac or Linux, though, so I don’t know if those have their own issues.

Yeah, sometimes I think about making my own Maven build.
Or, take the Gradle platform plugin v1 and fix it in order to run 2025+ IDEs in sandboxed mode. I still have some plugins (8, all my free plugins) using this version, and they are built very quickly.

I tried to look at the source code of the Gradle platform plugin v2 several times, but it’s too complicated for me. I can’t invest a lot of time in this project. Actually, I don’t understand why JetBrains allocates so few people to it. It deserves an entire team. Jakub deserves a lot of credit for doing all the work. Seriously.

I don’t know if JetBrains is aware of that. Actually, it’s like everything is getting worse.

  • plugin dev on Windows is a pain
  • more frequent IDE releases, and the marketplace that will unset the until-build flags in order to encourage us to support EAP IDEs… (even if Junie does not support EAPs :rofl:)
  • this discourse server is now essentially a community-effort. But, we can now pay for the JetBrains support (I can’t afford that, my incomes are too low). Honestly, this is the best way to kill the community.

I know JetBrains is afraid of VSCode. The new user interface looks like VSCode’s, I’ve read the JetBrains surveys comparing IJ to VSCode… Despite this, JetBrains still has a good community, for now. It should invest in this community rather than looking elsewhere (or invest 1% less on AIs).

Hey, Jonathan!
First of all — thanks for your kind words! :slight_smile:

Unfortunately, you’re right — developing on Windows is a bit harsh due to the filesystem issues you mentioned that became visible as soon as the IntelliJ Platform Gradle Plugin started using Plugin Verifier libraries for processing zips/jars and building plugins and modules dependencies tree.

I still believe that Plugin Verifier can be improved, like not loading everything at once when reading and parsing the IDE directory and requesting some resources lazily (cc @robert.novotny).

To slightly limit the FS operations on Windows, you may turn on the IntelliJ Platform artifact custom caching with:

dependencies {
  intellijPlatform {
    create(type, version) {
      useCache = true
    }
  }
}

I’ve also already investigated the JUnit4 lock. It happens because the guest IDE loads sandbox resources into its process and keeps them open. Rebuilding the project fails at this point because Windows won’t let you do anything with that open file. I’ll get back to this story soon.

1 Like

Just a question, did someone try to use ReFS to develop? it should solve some of the issue and be more targeted to developers than NTFS