It started with a Freemarker plugin. We were using Freemarker templates in ScipioERP and the IDE support was limited - no completion, no navigation, no syntax highlighting worth mentioning. I thought, how hard can it be.
Turns out: not that hard, actually. The JetBrains platform is powerful. The documentation just does not tell you that.
One plugin became a pattern
The Freemarker plugin worked. People downloaded it. I got emails. And I noticed something: the core infrastructure I had built - the PSI tree builder, the completion engine, the settings framework - was reusable. Adding support for a new language meant implementing the grammar and a few custom inspections. Everything else was shared.
So I built another one. Julia. Then Solidity, Elixir, Haskell, ABAP, Swift, Arduino, OpenSCAD, Nuxt.js, Gutenberg. And then the UI component libraries - Mantine, DaisyUI, Base UI, shadcn. Plus some specialized integrations for OFBiz, Magnolia CMS, AEM, and most recently Spryker.
That is 22 plugins. I did not plan for 22. Each one solved a problem I had or a request I got, and the shared infrastructure made each new one fast to build.
The marketplace surprised me
When Kronk CMS hit 10k+ downloads in its first month without any marketing, I realized the JetBrains Marketplace is a real distribution channel. Developers browse it. They search for solutions to specific problems. And they pay for plugins that solve them.
Some of our plugins have thousands of downloads. Some have 50. The difference is almost always the size of the language community, not the quality of the plugin. Our OpenSCAD and Arduino plugins serve small communities. The users are happy, but the economics are marginal. I keep maintaining them because I use them myself and because taking a plugin offline feels wrong when people depend on it.
Pricing model that works: a 30-day trial, then monthly or annual. JetBrains handles billing, licensing, trial management. You build the plugin, they handle the commerce. For a small team, that is exactly the right split.
Freemium works better than free, by the way. Some of our early plugins were completely free. They got downloads, but no feedback. The moment we added a trial-to-paid flow, we started getting bug reports, feature requests, emails. Paying users care.
What is genuinely painful
The IntelliJ Platform API is powerful but maybe 30% documented. The rest you learn by reading the IntelliJ Community Edition source code, which is at least open source. I spent more time reading Kotlin source than writing my own code in the early days.
Testing across IDE versions is brutal. JetBrains releases roughly quarterly, and each version can break plugin APIs. We maintain compatibility across six or more versions per plugin. It is not fun, but users do not all update on the same day.
And the marketplace review process is opaque. You submit an update, it goes into a queue, and you wait. Sometimes two days, sometimes two weeks. No status page, no estimated timeline. If you have a critical bug fix, you submit it and hope.
Plugin discovery is hard, too. If someone searches “Julia IDE support” they might find us. If they search “Julia language” they probably will not. SEO for marketplace listings is its own skill that I am still figuring out.
22 plugins later
Some are successful. Some are experiments. All of them taught me something about IDE development that I could not have learned any other way. If you are thinking about building a JetBrains plugin - do it. Start with a problem you have yourself. The platform is better than the documentation suggests. And that first plugin took me a weekend.