How to monetise a plug-in with external licensing and shop solution

Dear Plug-in-Developers

what external services / packages / API do you use to generate, sell, validate and manage the licenses of your customers / plug-in-users?

I am looking for a very lean solution, for a very small amount of customers and licences and don t want to set up my own shop, nor reinvent the wheel…

Are there typical approaches / service providers that have proven records in the context of rhino plug-ins or offer example implementations, best practice ?

Some related posts might be:
create-licenced-plugin

the functinality of Zoo is clear (and does not do the job)


Maybe some services might be — but to be honest I have no experience in this field - maybe a tip which to evaluate first ? or some keyword that will speed up searching ?

https://licensespring.com
https://netlicensing.io
www.softwarekey.com
https://keygen.sh/pricing

thanks for your input / feedback / support / experience
Tom

1 Like

Hi @Tom_,

You might also give StackOverflow a search.

– Dale

Hi @dale, @pascal, @fraguada, @carlosperez

Would it be possible to get some more help or to make it easier to do licensing on a tool/plug-in/grasshopper definition people develop? It seems pretty complicated and cumbersome to do right now and not worth the fuss trying to figure out for the size of the tools/plug-ins I (and lots of other people) make. Like some explanations on the developers website with an example project on github would help a lot. Even better would be to have a built-in way of doing it using RhinoCommon or the Food4Rhino website.

3 Likes

The problem is not the licensing (license and activation key), but instead creating an web service where people get the activation key, based on a payment. A simple license key could just be a combination of the Mac address and some specific encryption with some “salt and pepper” values. I would do it like Kaspersky. Create a webservice where a user can activate a plugin for 3 Pcs, otherwise a new license has to be purchased. No floating license etc. But yes its super complicated and requires the same amount of work, as a commerical plugin itself would take. Would be easier, if McNeel or someone else would somehow provide a shop open for external developers.

1 Like

Also be aware that if you’re shipping .NET plug-ins (i.e. based on RhinoCommon) that it is trivial to get to the code with a decompiler like dotPeek by JetBrains. Once the code is decompiled, the user can copy-paste it and work around the license parts to get the functionality without paying for it. I’m not saying that this is what every user will be able to to do, but the more code/tech savvy ones with determination can do it.
To guard against this would be to also employ a code obfuscator, but that will only make it harder, not impossible.

Dear Menno - yes i agree on that, obfuscation is on the protection side of this topic - but i think more important is to give reliable customers a possibility to pay and get support / service and benefit from a developer(company) that stays alive and update and further develop the software.

As discussed at many places it does not make sense to have a nearly proof protection, but make reliable customs angry, because the installation / update / licence-migration … gets complicated.

I think the rhino-community has a great spirit regarding an open mindset between developers and users, feedback culture and so on… And i think the multiple API-Approaches (scripting / python, c#, c++…) are really modern regarding a hands on “make your own digital tools” mindset.

But as some of us (as me) also have to earn some money, you can not give everything for free…
; - )

looking forward to keep this topic vivid.

kind regards - Tom

They consider that the cost of a marketplace exceeds its benefits, as you can see in this post.

This is like a party where there is a good atmosphere and a good place, but they don’t serve drinks. From far away they see that people keep coming in, that the first time djs still want to play here, but they are not inside to get thirsty or to listen to all the times the djs have stopped the song you were going to dance, or finding out that that dj you liked was now a resident at another party. They simply have they private party, and there’s no choice but to have yours if you want to serve drinks. Yes, the party of the moment would be cooler with active top djs, but there is little you can do after so many complaints about lack of drink. They don’t want to serve drinks, they think that it is enough with the good atmosphere and the good place, they don’t need the best djs nor the best music for the public party, they prefer a party without any drunks to an epic party.

Hi @,

What specifically do you need help with?

– Dale

@dale
for me it would be great, if McNeel could do a recommendation.
maybe together with another company that is specialised in licence selling / software protection solutions.
…some kind of example would be fantastic “make some little money and deploy your first plug-in with a licence”. … but some simple recommendation “check the offer from”… and some starting points … put the ///code her the ///code there…would also be enough. Thanks.

2 Likes

Hi @Tom_P

Since we do not use any publicly available 3rd party licensing and money collecting tools, we cannot make any recommendations.

Your best bet might be to search the Internet and see what others are using for their standalone applications, and then apply the recommendations to your plug-in(s).

– Dale

We use Obsidium protection system and from all those tested it is.the best. Examples on how to make a web base license system and easy tools to generate license codes.
I must admit that used on c++ but from the web site it seems that any kind of module can be protected.
Not so expensive as a bonus.

I must underline that making a robust protection system can take so much time,effort and energy with potential bugs that can make your customers unhappy, the reason why better to use a third party tool or no protection at all.

Gd

1 Like

Would you know if it is possible to use Obsidium to protect rhp files? (compiled Python or RhinoScript plugins)

–jarek

Not sure on this , the system is able to encrypt part of the code and un-encrypt automatically at runtime , at least on dll’s and exe.files.
Maybe you should ask the obsidium guys for that

Sorry for rhp files I use to make a DLL protect it and use it to license the plugin linking my rhp file to the DLL, now I am not a python or script guy but you can make a c++ or c# DLL and export functions needed without any problem and within a short amount of time.

Gd

1 Like

Dear Jarek - as far as i know for Rhino 5 (and i think it has not changed much), the “script compiler” is more or less the rhinoscript-files, that are encrypted and added as a resource to c# / .cs file / project.
The script compiler writes those (not sure if all ?) files to something like:
C:\Users###you###\AppData\Local\Temp\c5141e92-d4f1-cccc-85d3-a9bb5a4e7777
then the entire magic of the compiled script is, to decrypt the resource and use a RhinoApp.Runscipt inside a Rhinocommon-c#-plugin-command.
If you want to use an existing c# / .net licence system, then above Temp files will be your starting point. hope that helps - best regards -tom.

Hi @Tom_
thanks for the hint, that sounds like it may be a good start. I don’t really know much more than scripting so that would be a deep end to look into but may be worth a try.
Not having an efficient and easy to use protection and licensing system in Rhino environment (like Rhino App Store) prevents me from publishing a lot of small tools that could be made available for a small nominal fee, but investing into protection and licensing system is too big of an investments for a single user to make.
I would love to see McNeel creating an environment where it is possible for scripts, plugins and GH files, take a % cut from the sales and just make it simple for everyone. Unfortunately it sounds like this is not something they are interested in, probably for the same reasons (too much work/hassle vs. benefit).

–jarek

It’s not a matter of lack of desire. We don’t know of a decent way to solve this.

Steve,

I am sure it’s not an easy task and I am not in a position to offer any solutions from the technical standpoint, just looking at it from user / small tools developer view.
I know these are not the best comparisons of McNeel team vs. Apple Store or Microsoft Apps Store, but something like that for a Rhino universe would make a huge difference.

@carlosperez elaborated on it a while ago in this post (listing all the aspects that are problematic), but I though maybe you should not strive for perfection - it could help to at least prototype something that can be pefrected or tested in real life?

My suggestions for a “Lite” version and solving the above dilemmas:

  • perpetual vs susbcription licensing
    Start with perpetual only, unless you could hook it up to the same system that makes Rhino eval or Betas expire

  • quality of the product, service releases, upgrade policy, support, tutorials
    let the Invisible Hand of the Market decide

  • volume discount
    don’t offer this option for starters

  • fix vs floating licenses
    can it be tied to the Rhino license? Just like the phone app is sold to and tied to the user that bought it and their phone(s), somehow?

  • compatibility with Win, Mac, GH
    let delevopers decide freely what platform they want to support

  • refunds
    *no idea about this one, it really depends on how you would handle the transactions T&C in the Rhino AppStore

  • educational licenses (and what are the terms here, as some companies limit the use of these)
    [/quote]
    start with not offering these

Sorry about hijacking this topic, it’s somewhat relevant but probably should be a part of a separate discussion. But I think the initial question of the OP and the motivation is the same.

–jarek

4 Likes

It seems to me that you are overestimating licensing and protection and underestimating the sales part of it. As soon as a commercial software gets famous it will be cracked. The average Joe, doesn’t know how to activate something even without obfuscation, not to speak if you apply a very basic protection. Many people don’t even try that. At least those who have money.
Apart from that it would also be nice to provide an installer, code validation and a basic support pipeline. As soon as people start to spend money on something (as little as it might be), you really need to ensure that you care about your customers.

Besides this, I would definitely trying to use/develop solutions independent from McNeel. That makes much more sense on a longer run.

There are companies like Digital River or FastSpring that already offer the services you are looking for (including international sales and invoicing):


Then you could add your exact shop link to your food4Rhino page.

Regards,

1 Like

I think that in 2021 the user experience should be, to have a Rhino resource search engine integrated in Rhino* (linked to the Food4Rhino database and with more resource (as plugins) metadata to be easier to find and discover), to be able to pay if it’s paid or directly download if it’s free from Rhino too**, and to install the resource after that. Search, pay, install. I understand that it sounds complicated and would take time, but from my ignorance, I don’t think it’s unrealistic if you outsource everything possible.

*It’s a matter of visibility. If you put the search engine in the application, this will be the first tool the user will use and you guarantee to find the resource if it exists. It is useless to have a shop if nobody visits it. From my point of view, the reason why F4R has so few resources like tutorials or GH definitions, is that it is disconnected from the ecosystem and the only bridge is to know this site, or search in google, youtube, this forum or a facebook group to be relinked there. I feel that F4R is being underused, especially with GH definitions. There are hundreds of definitions missing from this forum or the old GH forum, instead of making it easy to share these resources in your F4R repository. If it were integrated in Rhino, there could be a button to upload content and receive a url to share it, where other people click it to go through the payment method or donate if it is free, before downloading the resource. So you encourage that if someone helps on this forum by doing the work for others, they can be rewarded, and that takes work away from you. But there is no such connection of your system to the needs of the community in this sense. People seem to prefer asking on the forum rather than looking at your repository, I think you should reverse that.

** Have you contacted any of these companies to see if it is possible to integrate the rhino account with theirs and develop a widget to make payment from Rhino? So they take care of the credit cards but avoid the user having to re-enter the card details to give a euro to the one who has helped you with a definition?

1 Like