Distribute and Monetize IntelliJ/WebStorm Plugins

Hey folks,

I have some very general question on plugin development:

  • Am I generally allowed to monetize an IntelliJ/WebStorm plugin? What restrictions are there? Is there any support from JetBrains in terms of licensing/billing or alike?
  • Is there any support from JetBrains in distribution?

Thanks for your help. I'm sure I will follow up with dozens of technical questions as well soon ;)

BR

Christian

13 comments

Hi Christian,

Yes, you're allowed to do this, and several of us are already doing so. I'm working on Cursive (https://cursive-ide.com), there's also WallabyJS (http://wallabyjs.com), Illuminated Cloud (http://www.illuminatedcloud.com), Armory (http://www.visprogramming.com/docs/overview) and MultiMarkdown (http://vladsch.com/product/multimarkdown) that I know of.

Generally there is no support (except for occasional moral support) from JetBrains, so you'll have to write your own licensing code etc, which is a pain since it's a surprising amount of work and from your users' point of view is very different to how they're used to managing their licensing. There is hope that this might change though, there have been some mutterings but not much more. There is no assistance with distribution either.

Let us know if you have any further questions!

Cheers,

Colin

2
Avatar
Christian Schuff

Hi Colin,

thanks a lot for your reply and the moral support ;)

So you guys are all managing licensing with your own custom implementations or do you have any third-party library/service supporting this at least on the server side? So that one would only have to worry about chechking license-validity in the plugin itself but not worry about license generation, billing what so ever?

BR
Chris

0

I wrote all my own licensing code, it's not that hard but it's a little fiddly to get right. It's a digital signature, basically. I'm using Paddle (https://www.paddle.com) for billing, and they've been good. If you'd like some pointers on how to integrate with them or an introduction, drop me a mail (<firstname>@<firstname><lastname>.net). You'll need a server component somewhere that responds to a webhook from them and generates a licence. They do also offer some licence generation facilities, but I don't recall the details - I'm not using it.

0

Hi,

Recently I've been looking into how JetBrains might support developers of paid plugins with licensing/billing solution, but at this point we don't have any agreed plan or decision made whether JetBrains would do that or not. I'd be very glad to discuss with you some of the ideas we have to understand what level of support would be interesting for you, please drop me an email at mikhail.vink [at] jetbrains.com

Thanks!

1

Hello Mikhail,

Hopefully this is ok to suggest on forum too. The ideal support level may be:

  1. code obfuscation & copy protection
  2. prevent (or at least monitor) unlicensed use
  3. help distribute free trial and full versions through main channels (plugin repository)
  4. collect license fees from users in any way convenient for you and pass these fees to plugin devs.

While these tasks may be done by plugin devs, they require additional efforts.

JetBrains could also check plugin for code which may not be related to advertised plugin features. 

A bit like certain AppStores.

1

Thanks for the information, Imants! Yes, writing in forums is totally good for me as well.

0

Hi Mikhail,

Great to hear that you've been looking into this, I've had some side conversations with some JetBrains folk but nothing official. Here's what I think is most important:

  • For me, the #1 feature request would be to be able to generate licences for a JetBrains account so I don't have to create user accounts, generate licences myself, and write all the licence validation code. All this functionality that I have developed was a significant amount of work, requires server infrastructure, may have bugs and works in a different way to how users expect the IntelliJ licensing to work. It is also less complete than JetBrains' solution, for example currently I don't check if multiple users are using the same licence on the same LAN.
  • Similarly, none of my customers have so far requested a licence server, but I've sold 50 licences each to several customers now so it's only a matter of time. If I have to develop a licence server, my customers will have to run two separate licence server processes which do essentially the same thing but work in different ways.
  • Having JetBrains process payments would be nice too, but is less important than the licence management. If users could take payment using Stripe, PayPal or whatever (I'm using Paddle) and then make an API call to have the licence generated, that would be fine by me. It's tricky since it would probably require the user to OAuth or something for permission to use their account, I'm not quite sure what this would look like.
  • If JetBrains did take the payment, being able to offer bundles would be really great. I've discussed this with various users, the issue is that they're used to using PyCharm or RedMine, then eventually they use enough of the functionality and just upgrade to Ultimate and forget about all their license juggling. In that case I still have to charge them on top of the Ultimate license and that's problematic. If the marketplace allowed bundles of plugins to be purchased, or at least that plugins could participate in the Toolbox that would be good for all concerned, I think.
  • There's also other functionality that currently I have to duplicate, but which works in annoyingly slightly different ways. Stats gathering would be a good example - I have to independently ask permission to do it, write the infrastructure to receive it and the functionality within the editor to send it, and so forth. If I could just use the standard infrastructure and get a report from the marketplace with stats for all the features starting with cursive.* that would also be great.
  • I don't think that obfuscation is something JetBrains would have to provide, there are good solutions for that out there already.

Cheers,

Colin

2

I'll throw in my own $0.02.  Like Colin, I've had a few discussions with JetBrains folks around this particular topic and am very interested in what comes of it in the future.

Right now I already have code obfuscation via a well-known solution and am happy with that.  I also have an online payment processor that operates based on a percentage-of-revenue from each unit sold.  I've integrated a third-party cross-platform library for license key generation and enforcement that integrates well with my payment processor and operates based on a monthly recurring fee based on the number of active licenses.

While I'm generally content with my online payment processor, I'm not entirely thrilled with my license key solution.  It works, but it's not without its issues.  Right now there are some issues with how the solution determines the uniqueness of the underlying machine to which the license is tied such that false negatives are raised from time to time.  To be fair, there's a fix for that issue that's being readied for release now, but it's been quite a pain.

Additionally, there's not a great way for my customers to perform centralized license management, e.g., if a developer leaves and the license should be reassigned to another developer, or if a workstation dies and the same license key should be used on another workstation (this evidently happens more than I'd have thought!).  Right now my users contact me in these situations and I help them, but again like Colin, I've had increasing numbers of department(/company)-level purchases where this should be something that the customer's IT can manage internally.  I can implement this using the license management solution's API, but I'd prefer to avoid that if possible and take advantage of something with more self-service type features.

As one last comment on the license key management aspect, it would be wonderful if there were some way to grandfather existing license keys into anything offered by JetBrains so that I just have to update the service being used and not redistribute keys to existing customers, nor do I have to maintain two licensing options indefinitely.

And of course a user of my plugin is also automatically a user of IntelliJ IDEA.  While a number of these users are on Community Edition, over half are using Ultimate Edition and would love to be able to tie end-to-end management of my plugin into their existing Toolbox license model.

I'm happy to provide additional thoughts as needed going forward!

Best regards,

Scott

0

2c from me as well. I'm working on wallaby.js and even though I also sell licenses for other platforms/IDEs, IntelliJ platform integration licenses is a big part of my sales.

I'd say for me personally license management and payment processing are equally important (simply because I need to have both for other platforms anyway). So ideally, I'd just like to be able to use JetBrains infrastructure for everything.

It would be great if when purchasing/renewing JetBrains products, a user could just add some commercial plugins he would like to use, the total price would include those plugins, the platform would use whatever licensing mechanism it uses for itself for the plugins as well (including a license server).

A solution like this would allow to have a low entry barrier for new comers who would like to start selling their plugins without too much time spent on the infrastructure.

For existing vendors with higher sales volumes and existing payment/licensing solutions it will largely depend on the rates that JetBrains would charge for the service.

A separate licensing solution that could integrate with a third-party payment processor would be awesome too. And as a vendor I'd love to have and ideally for free :), but I don't see much commercial value for JetBrains in it. Except as an investment into the commercial plugins ecosystem growth, but I don't believe the absence of such mechanism is a significant growth barrier for the ecosystem.

Regards, Artem

0

 

Hi,

First of all, thanks a lot for your comments here - they've helped us a lot! We're doing some prototyping/planning work around this project, and will share more information about our plans and estimates publicly in upcoming months.

At this moment we're running a series of interviews / proposed terms disclosure with paid plugin developers to verify some of our ideas and plans before setting them in stone, so I've emailed everyone on this thread to talk about it.

Feel free to point others here or to me directly (mikhail.vink [at] jetbrains.com or @mikhail_vink). 

Thank you!

1

Any update on the latest status of this development? I too am interested in a solution provided by JetBrains. I can't contribute much knowledge on how JetBrains could implement this, just what I like to see as a beginning plugin developer. Basically, make it as easy for developers and customers to sell and buy add-ons as it is to sell and buy Android or Apple apps.

Thank you,

Pieter

0

I too, have a plugin idea in mind, which I would invest in provided there would be easy monetization option.

0

We have some exciting public news to share: JetBrains Marketplace.

Today we are delighted to share something with you which has been in the works for quite some time and has come about because of earlier requests from some of you. We are also seeing a growing interest in this opportunity from IntelliJ Platform plugin developers.

Meet JetBrains Marketplace, a new platform and an evolution of the plugins repository which turns it into a marketplace for third-party plugin developers to sell their plugins and take advantage of an out-of-the-box licensing and billing solution provided by JetBrains.

The Early Access Program is already available, and we are ready to start the technical testing of a few third-party plugins that are ready to switch to the Marketplace in the nearest future.

(in addition to what we have been talking about in DM)

3

Please sign in to leave a comment.