Implement 30 days free trial

Today, try-before-you-buy has become the norm. Every publisher seems to do it, and users seem to expect it.

The main competitor to my Mac app Fonts Manager, Suitcase Fusion 6, offers a 30 days fully functional free trial.

I must offer the same.

I just read this thread from the old forum : Implementing free trial !!

Basically the main idea here is to create a hidden file somewhere that keeps track of the days.

I can do that, but this looks rather fragile, as an experienced user can get a hold of the hidden file, and simply replace it. Besides, there are only so many places where to put such a hidden file. Of course I could use several files in different places, but yet, a persistent hacker will find them.

I was thinking about another approach : read the hard drive number or other available unique number for that machine (I believe MBS has ways to obtain that), and call a web service that on first call initiates the countdown. Then on each subsequent launch the app calls the web service and verifies the period is not expired.

Has anybody implement one or the other method, and would care to share experience ?

Thank you.

One more detail…
If your app have file in the local system to track the time/date , is easy for users to bypass this.
Simple by turn the date back a few days before trial end.
Preferred choose will by online service…

[quote=251917:@Loannis Kolliageorgas]One more detail…
If your app have file in the local system to track the time/date , is easy for users to bypass this.
Simple by turn the date back a few days before trial end.
Preferred choose will by online service…[/quote]

Indeed.

This topic has been a constant on the RB/RS/Xojo forums for the 16 years I have been reading them. The basic premise always boils down to this. Implement the most secure method you can while providing the least interference to your paying customers. Unless you’re offering a $500 app, then the likely hood of a persistent hacker breaking your app is small. And for every persistent hacker you try to foil, you may be pissing off 5-10 users who might have purchased your app legitimately. IMHO, your connection to the web idea has several areas of potential difficulty for legitimate users. I would go with the hidden file which is what I do in my apps.

I wouldn’t write a bunch of files all over, that’s poor behavior. It could be determined as malicious, but it’s also quite rude to clutter your user’s hard drive. I also wouldn’t send a UUID to a server without permission, rude and very sketchy.

Remember: Pirates will always find a way. The harder you try, the more they feel challenged to beat you. And they always will. Balance your app’s popularity, piracy, and protection. Don’t treat your customers (or potential ones) as pirates for the sake of beating the pirates.

I would work on your publicity first, because I wasn’t able to find your app by searching “Fonts Manager Mac” on Google.

Sorry to kind of stray from the point. Maybe encrypt the trial start date and store it with an important sounding name in settings?

One simple trick…
1: Database encrypted file (write the installation date)
2: Every day check with (shell command ) >Date,and update the database file

[quote]The date utility displays the date and time read from the kernel clock. When used to set the date and
time, both the kernel clock and the hardware clock are updated[/quote]
Together with online service check…

I use such way of tracking trials and registered versions. Works fine and it is not difficult to add. IMO it is absolute not ‘rude and sketchy’ as Tim wrote. I have a lot of registered users and in the 10 years of selling software I have nil users complaining about the way I ‘protect’ my apps.
Of course pirates can/will crack your software if its good, but no protection isn’t good either.

The app has just been released in the MAS. I am precisely waiting to have a trial version to push information.

[quote=251923:@Christoph De Vocht]I use such way of tracking trials and registered versions. Works fine and it is not difficult to add. IMO it is absolute not ‘rude and sketchy’ as Tim wrote. I have a lot of registered users and in the 10 years of selling software I have nil users complaining about the way I ‘protect’ my apps.
Of course pirates can/will crack your software if its good, but no protection isn’t good either.[/quote]

So, basically you write one or several files and use them as counter, right ?

[quote=251923:@Christoph De Vocht]I use such way of tracking trials and registered versions. Works fine and it is not difficult to add. IMO it is absolute not ‘rude and sketchy’ as Tim wrote. I have a lot of registered users and in the 10 years of selling software I have nil users complaining about the way I ‘protect’ my apps.
Of course pirates can/will crack your software if its good, but no protection isn’t good either.[/quote]
I will up the ante. Sending identifiers (UUID) to a server without asking permission is totally unacceptable.
It’s tracking users without their consent, that is spying. And they haven’t even bought your software yet.
Remember that time the EU made that law about web-cookies for that very reason?

Hurray for Little Snitch.

Doesn’t ModificationDate property of a folder item give you the installation date? Isn’t this fixed once installed i.e. your app could check if the date was ModificationDate + 30 days AND not licenced. I may be wrong.

[quote=251917:@Loannis Kolliageorgas]If your app have file in the local system to track the time/date , is easy for users to bypass this.
Simple by turn the date back a few days before trial end. [/quote]

Actually, I believe it is possible to prevent that to some extent. If I have a file that contains the previous date and somehow the current date is before then, I know the clock has been manipulated.

[quote=251930:@Tim Parnell]I will up the ante. Sending identifiers (UUID) to a server without asking permission is totally unacceptable.
It’s tracking users without their consent, that is spying. And they haven’t even bought your software yet.
Remember that time the EU made that law about web-cookies for that very reason?

Hurray for Little Snitch.[/quote]

Tim, you forgot to take your pills :wink:

UUID can be encrypted. Actually, a hash is a minimum. Prominent publishers call home : Adobe for instance. And even our beloved Xojo. I don’t mind telling the user the app will contact my server to verify the validity. The EU does have strong privacy laws, but we are not talking private information here.

As far as I understood, through, Christophe meant he was using files.

I don’t think it so ‘rude and sketchy’ to have for instance a hidden file in Application Data, and a key in CFPreferences that the application checks both to make sure everything is fine.

I prefer limiting the feature set so trial ware has no expiration but not fully usable until purchased. Then instead of having to keep track of when things were installed you could simply write a file once licensed. Now the absence of a specific file means its unregistered.

Another alternative: Make the user register for a trial and provide them with a key that expires.

[quote=251937:@Phillip Zedalis]I prefer limiting the feature set so trial ware has no expiration but not fully usable until purchased. Then instead of having to keep track of when things were installed you could simply write a file once licensed. Now the absence of a specific file means its unregistered.

Another alternative: Make the user register for a trial and provide them with a key that expires.[/quote]

Until now, I provided crippled trials. But here, I feel I would lose a significant amount of business, as my main competitor provides a fully functional version 30 days trial.

Actually, what he does is what you describe : the user registers and gets a 30 days license.

the touch command would then circumvent this

So, here’s the dilemma, as I see it:
Use an online method and this means that the user must be connected to the internet when they launch the product. Personally, unless the application specifically tells me it is going to use the internet, I block it from doing so.

Use an offline method and a hacker COULD bypass any method you put in place.

Both of the above methods runs the risk of alienating potential buyers that would purchase your product, but now will choose not to due to what they see as either an invasion on their privacy or an attack on their computer.

Now, I am going to come out with a crazy idea and say you don’t really need a 30 day trial for your app. Now you are going to say, well why not and the simple answer is price. Your closest competitor charges about $120 for their software, while if I found the right product, you are charging $14.99 and is only available via the App Store, where 30 day trials are not expected. That being said, $9.99 seems to be the magic price on the App Store that people are willing to risk.

So at $120, a user will want at least 30 days to evaluate if the software will work for them, but at $10-$15, most users are willing to take a chance as long as the software looks like it will do a good job.

After looking at your website, my suggestion is to put in a bit of effort to improve it, making sure it features all of your products with links to them on the App Store and that it looks as good as it possibly can. Perhaps even add a support forum, chat, etc.

This will do more to drive the sales of your product than a 30 day trial will at the price point you have set.

If you have your heart set on a free trial, then the best method is that they need to register for the free trial and your provide them with a serial key. Encode the end date within the serial number in a way that the user won’t realize that is what it is and then the user will not need to be online to use the 30 day trial, no data needs to get sent to a server and there are no files that can get bypassed.

I have to disagree. I was using Dash as a demo or unregistered nagware version for about 4 months before I purchased it. I was fed up of the nagging but I also thought it was so useful that it was well worth the few quid I paid for it.

I think 30 days is fair play. In my experience as a consumer, nagware is fairly effective in making me purchase but also simply stripping out a basic feature such as saving or printing or whatever feature doesn’t hinder me evaluating the software to its full extent but does stop me using it productively.

I trialled some home finance software, everything was fully enabled, you could import unlimited transactions etc but you couldn’t save your account file. Brilliant, I got full unfettered access to the software for evaluation, no expiration but you simply had to register unless you left the app open forever and never shut your pc down, unlikely.

I used Dash for about 4 hours before I purchased it. It was so super awesome it deserved my money :stuck_out_tongue:

here is the method that I use… its not “perfect” but seems to work so far.

  • in a config file (plist, whatever) you create an encrypted string
  • when app first begins, it checks for this string, if it is NOT there it creates it, with a blank key encrypted into it
  • if the app detects the blank key, it works in “demo” mode (there is a date and other things in this string)
  • when the user registers, they are given a public key, that verifies itself against the private key encrypted into the above string
  • if that passes, then its not in demo mode

If the user mucks with the encrypted string, it reverts to demo mode (wiping out any provided public key)
If the user deletes the string from the plist, it creates a new one, starting the demo over again, and changing the private key

The only shortcoming is, assuming the user even knows to look for the string, the best they can do is restart the demo period, they can never get it into “full feature” mode.
the private key is a UUID, that is tied to the specific computer, so transfering the key doesn’t work either.

Is this perfect? heck no… but so far it has worked fine for me.

Note : there are tons of technical details that I purposely left out of this high level description for obvious reasons :slight_smile:

[quote=251953:@Christopher Wade]After looking at your website, my suggestion is to put in a bit of effort to improve it, making sure it features all of your products with links to them on the App Store and that it looks as good as it possibly can. Perhaps even add a support forum, chat, etc.
[/quote]

The Fonts-Manager.com site is coming, but I have a fundamental handicap : Suitcase has been around since the eighties (!) and has a tremendous image. My product simply does not exist yet, imagewise. I do not have the resources to advertise, so my best bet is to use trialware on sites such as MacUpdate, CNet , Softonic and others to get some free exposure.

Indeed I have no chance now to charge $120 but hope not to stay at $14.99 forever. I pretend to be able to have better and more features. In particular, the next version should support transparently older Classic era suitcase fonts formats, as well as PC Type 1 (PFA/PFB), which Suitcase Fusion does not. And, one can dream, a few professional review could really boost it.

As I see it, I do not get to choose the kind of trial I can offer. Since I am going after a very established, very well know name, I must do the same thing they do. Customers are usually clever enough to compare, and won’t accept less from me.

Their trial when first run offers to enter the license number, or to start the 30 days period. When the 30 days are over, only the license number can be entered, and if not, it quits.

I appreciate the comments and advice I got so far. It will help me devise my own system. Thank you all.