What's the best way for handling offline time-limited licenses?Answered

Hello everyone. I recently started studying the LimeLM library to check if it will be a good solution for my product, and now I am running some tests with the free basic account and some python snippets. It's a great piece of software, love how user-friendly it is. I really hope this to become my commercial solution.

I spent some time looking on the help pages and on the forum, but still I don't know if I got the best way to use the library for implementing what I need.

My typical scenario is the following: my client buys a time-limited hardware locked license, they perform an online activation (connecting the machine to the network only once) and then they will always keep the machine offline. In some cases they will even use an offline activation.

The client would love to get their validity period counting from the activation day rather then from the key generation day (the reason is that sometimes budgeting imposes to buy everything at the beginning), and also to be able to deactivate licenses - maybe with the limit of a couple of times - from one machine and move them to another to use the rest of the validity period. 

Initially I was thinking of using the extra data function. I store the activation time when the client performs the activation and then I check the validity comparing it to the current time. Pretty neat! But what about moving to another machine? It looks like when you deactivate you lose the extra data…  so I wouldn't be able to keep track of the already passed days.

Also, leaving on a side for a moment the “moving to another machine” thing, I read solutions based on the DAYS_BETWEEN_CHECKS. But how am I supposed to use it? Should I wait for a client to activate and then instantly delete their product key? This way, after DAYS_BETWEEN_CHECKS, when the app will be force to connect to the limelm servers will fail to verify? It sounds a bit tricky, probably I am getting this wrong.

I have some other questions (sorry for how confused I am!) but I think it would be better to leave them for later and not make this message even longer.

Thank you so much!

Answer

Ok, you're trying to solve a bunch of problems. The short answer is that you need to use custom license fields. There are a number of examples in that article showing exactly what you want to do.

As far as starting a date (or adjusting an end-date based on when a user actually uses the software), yes, you can do something. But honestly, it's not worth the effort. The ones that nickles and dime you over a few hours will also be the same users that have 18 months of free trials.

But if you're determined to do it, use the web API.

Hi! Thank you for the reply. Yes, I know, I am tackling many issues at the same time (I started studying turbofloat as well) because I do have a very rough licensing system at the moment and I am basically checking if I can move to TurboActivate and TurboFloat keeping all the features I have.

Anyway, yes, now I have the feeling that it's not worth to keep that weird behaviour with the activations. I think I should stick to using the license fields as naturally suggested by the library and, if a client really waits for months before activating a purchased license key they can still get in touch with me. I will check the actual activation day, edit the license field manually and a new activation attempt from the client should download the new data (with the a new expiration date, for example). 

This sounds more reasonable.

Thank you again! I will perform some other tests on the floating licenses, but I am quite convinced this is the way to go and that I will buy the plan I need.