This is a good question. When we were initially designing TurboActivate & LimeLM we debated having both an Activation Grace Period and a Trial. They are different things, but only subtly. I'll explain.
Does the Grace period starts after the Trial period ends? or do they overlap?
They can overlap, it depends on how you use the code. Let me explain when a trial starts and when the grace period starts.
A grace period starts the first time you call "GracePeriodDaysRemaining()". A trial starts the first time you call "UseTrial()".
For example, if your code is something like this, then you probably won't need to use Trials:
if (TurboActivate.IsActivated()){ mnuActDeact.Text = "Deactivate";}else{ mnuActDeact.Text = "Activate...";
if (TurboActivate.GracePeriodDaysRemaining() == 0) { //TODO: disable the features of your app }}
Could you please mention a scenario where both Trial period and Grace period would be used?
Sure. Using the above code as a model, we'll modify it to separate the concept of the grace period and the trial. Where the trial starts at first run, and the grace period only starts once the user has entered a valid product key:
if (TurboActivate.IsActivated()){ mnuActDeact.Text = "Deactivate";}else{ mnuActDeact.Text = "Activate...";
if (TurboActivate.IsProductKeyValid()) { //the product key is valid, meaning the user has entered a key if (TurboActivate.GracePeriodDaysRemaining() == 0) { //TODO: disable the features of your app //TODO: show just an "Activate now" button or just launch TurboActivate.exe } } else { // initial the trial if it hasn't already been initialized TurboActivate.UseTrial();
if (TurboActivate.TrialDaysRemaining() == 0) { //TODO: disable the features of your app //TODO: Show an "Enter product key now" button and/or a textbox to enter their trial extension. } }}
The reason we have Trials is that very soon we'll be adding the ability to make trial extensions. That is, a user could tell you their trial expired and they haven't convinced upper management to make a purchase yet. Or perhaps they tried your application once, went on vacation, and have come back to discover the trial is expired.
Both of these (and several others) are perfect cases to create a trial extension in LimeLM and send them to the user.
Just a note: Trial extensions will be here by the end of July 2010.
Now to answer your final question:
For a scenario where the user will be using a product for 30 days before the application stops working and requires it be activated so it can work, should I be using the trial period or the grace period or both?
For now, grace periods will be fine. When we add trial extensions, then you might want to revisit the code and model it to something similar to the second code snippet.
Tell me if this helps.