The user experience for your licensing scheme includes the keys we generate to unlock our software for paying customers. You have to think about it carefully before you just create a bunch of random characters.
Jeff Atwood explains perfectly the shortcomings of license keys that some ISVs generate in his Software Registration Keys post:
Here are some things that I've seen vendors get wrong with their registration key process:
- Using commonly mistaken characters in the key
Quick! Is that an 'O' or an '0'? A '6' or a 'G'? An 'I' or an 'l'? A 'B' or an '8'? At least have the courtesy to scour your registration key character set of those characters that are commonly mistaken for other characters. And please print the key in a font that minimizes the chances of confusion.
- Excessively long keys
The most rudimentary grasp of mathematics tells us that a conservative 10 character alphanumeric registration key is good for 197 trillion unique users. Even factoring in the pigeonhole principle, we can estimate about 14 million random registration key combinations before we have a 50 percent risk of a collision. So why, then, do software developers insist on 20+ character registration keys? It's ridiculous. Are they planning to sell licenses to every grain of sand on every beach?
- Not separating the key into blocks
Rather than smashing your key into one long string, make it a group of small 4 to 5 characters, separated by a delimiter. It's the same reason phone numbers are listed as 404-555-1212 and not 4045551212: People have an easier time handling and remembering small chunks of information.
- Making it difficult to enter the key
Short of providing every customer a handy USB barcode scanner, at least make the registration key entry form as user friendly as possible:
- Let the user enter the key in any format. With dashes, without dashes, using spaces, whatever. Be flexible. Accept a variety of formats.
- Do not provide five input boxes that require us to tab through each one to enter the key. It's death by a thousand tiny textboxes.
- Tell me as soon as I've entered a bad value in the key. Why should I have to go back and pore over my entry to figure out which letter or number I've screwed up? You're the computer, remember? This is what you're good at.
- Accept pasting from the clipboard. Once we've installed the software, we'll probably install it again, and nobody likes keying these annoying registration keys in more than once. I've seen some clever software that proactively checks the clipboard and enters the key automatically if it finds it there. (Kudos to you, Beyond Compare.)
- Don't passively-aggressively inform me that "the key you entered appears to be valid." Is it? Or isn't it? What's the point of unique registration keys if you can't be sure? I guess paying customers can't be trusted.
- Where's the %*@# key?
The key is important. Without it we can't install or use the software. So why is it buried in the back of the manual, or on an easy-to-overlook interior edge of the package? Make it easy to find-- and difficult to lose. Provide multiple copies of the key in different locations, maybe even as a peelable sticker we can place somewhere useful. And if the software was delivered digitally, please keep track of our key for us. We're forgetful.
I know these days that most license keys get sent via email and that keys on packaging are not so common, but that does not mean that every user knows how to copy and paste the key from their email to the unlocking dialog window of your software product. Because a user does not know how to use copy and paste, does not mean you should give that kind of user a bad user experience.
If you are using or planning on using license keys to unlock your software product, you must keep in mind on making it as simple as possible for the paying customer even if it makes your software more vulnerable to piracy.
“What you heard from me, keep as the pattern of sound teaching, with faith and love in Christ Jesus. Guard the good deposit that was entrusted to you—guard it with the help of the Holy Spirit who lives in us.” – 2 Timothy 1:13-14