Licensing rhinocommon plugin


#1

I’ve been developing a plugin with rhinocommon and I’m starting to give some thought to how I will distribute it. This is done with Zoo, right? Is there a guide somewhere on how to go about this?

Thanks,
Sam


(Dale Fugier) #2

A few things to consider:

1.) How do you plan on getting the word out about your plug-in? (hint: we can help)
2.) Do you have a web site were we can drive customers to learn more about your plug-in?
3.) Do you have a place were customers can go to download it or an evaluation version?
4.) Do you have a way to collect money (if the plug-in is not free)?
5.) Do you have a mechanism in place to support it?
6.) More…

Note, the Zoo offers none of these. The Zoo is a network, or floating, license manager.


#3

Hi Dale,

  1. I will definitely be getting your help distributing!
  2. I don’t have a website yet
  3. I figure the client will download it from the website, the RHP file that is, right?
  4. I will probably bill yearly, any tips are appreciated
  5. I will be supporting it myself initially, but this may be farmed out to a company I’m thinking might be a distributor

I’m thinking of launching near the end of the year. So most of the details I don’t have to figure out for a while, but I do want to send out early test versions to some businesses for free to get them testing. There is still a long way to go…

So my understanding is that after a client pays, I let them download an RHP file, and then I can use Zoo to validate their license in their copy of Rhino. Is this right?

Thanks,
Sam


(Dale Fugier) #4

We can get the word out about your product. But it is up-to-you to distribute it.

Most users have no clue what a .RHP file is. So you will want an installer. For starters, you might want to use the [Rhino Installer Engine][1].

[1]: http://wiki.mcneel.com/developer/rhinoinstallerengine/overview[quote=“samlochner, post:3, topic:6852”]
I do want to send out early test versions to some businesses for free to get them testing
[/quote]

This is critical - especially if you are interested in meeting the requirements of customers.

No. The Zoo won’t do anything your product unless you write a plug-in for the Zoo. If you have interest in the Zoo, you might review the following:

http://wiki.mcneel.com/zoo/home


#5

Whoops, I meant spread the word…

I think only single seat licences will be sold initially, so I see now that I don’t need the Zoo, lots of animals, get it now, ha :smile: a little slow here

So if I use the rhino installer engine to make an installer and a client downloads the installer and runs it and now they have the plugin, but can I give them a key of some sort to unlock it that is only valid for a period of time, or how is this typically done? I’m also wondering about how secure this method is for distributing a plugin.

Thanks,
Sam


(Dale Fugier) #6

There are really no hard and fast rule here. We’ve seen developers provide a special evaluation version and when you purchase the product you are sent a link to download the commercial version. We’ve also seen developers provide a single build that can be converted to a commercial version by entering a valid license code. Personally I prefer the later method as it keeps me from having to uninstall and reinstall.

In either case, this will be something you develop or add to your product, based on your comfort level. We don’t provide any special “evaluation mode” handling or “license key validation” handling with any of our SDKs.


#7

I’m liking the second option too. Could it work like this?:

Upon purchasing, an encrypted license file is emailed to them which has both the code for their build and the expiry date. When the plugin initializes, it checks to see if the code in the license file matches the code for that build and that the expiry date hasn’t been reached.

As far as checking the expiry date, the computer clock would be no good cause they could change it, maybe Rhino grabs time from the internet and the plugin could access this?

Thanks,
Sam


(Dale Fugier) #8

Like I indicated, I’ve seen about every possible security scenario. They all seem to work - you will have to decide what you are comfortable with.

Note, Rhino does not grab the time from some Internet clock. If you need this, you will need to provide your own functionality.


#9

OK, I will try to come up with something. It seems there are a lot of companies who provide solutions for this, so I could always go that route too…

I’m also concerned about protecting the algorithms in my plugin. I’ve heard that RHP files can be hacked fairly easily. Is this true? Is the installer method of providing the plugin more secure?
I suppose I could run some of the important algorithms from a server, but that would be a pain…

Thanks,
Sam


(Dale Fugier) #10

Managed code, unlike native (C++) code, has been known to be easily decompiled to its source code, easing its reverse engineering, thus giving the need to what is called obfuscation.

Basically, obfuscation change the managed code after compiling it in a way that makes decompilers obsolete and makes decompiling it useless, as the decompilation will generate garbage code that can’t be understood or compiled again after modifying it.

Will your plug-in become so widely used and provide such a unique service that it will be danger of being hacked? You will need to access the security risk yourself.

For more information on obfuscation, Google it and “Dotfuscator”.


#11

I’m getting a quote for Dotfuscator. I like the idea. I certainly hope my plugin will be so widely used to justify it, but then probably every developer feels that way :smile:

That’s all the questions for now. I’ve learned a lot in this thread, thanks!