Licensing a commercial product

time to read 3 min | 556 words

This is another forum question, this time from Brendan Rice:

A lot of developers are unsure of how best to go about making money from a product, how do you go about implementing licensing, what pay system do you use, how do you accept payment, are there any legal issues...

Well, talk about an open ended question. There are several aspects for the answer, legal, licensing and payment processing. There are somewhat related, though.

From the legal side, you need to understand basic concepts in the legal side of software engineering. You need to understand copyright, the idea of licensing software, what rights you care about and what you shouldn’t. I got a lot of my knowledge from simply researching the topic.

You might want to have a lawyer draft your EULA, but there are two major things that you want to remember about the EULA. Some people actually read the bloody things. If you put things there that are too nefarious people will get pissed at you. There is such a thing as bad publicity. You want to avoid that.

The second important thing about EULA is that if you take someone to court over it, you have already lost. I like to think about EULA as just setting the grounds for what is expected from either side. By all means, get that through your lawyer, but be sure that you know what is in there. And be sure that it is an agreement that you would be willing to sign.

From the licensing perspective, I had a disastrous experience using one licensing component, after which I decided that I might as well write my own. It is a pretty simple system, based on signed XML files, I have the secret private key and the application ship with the public key. It allows to pass data around in a very simple form while protecting the license files from tampering. The code is available, and it is pretty simple, so I won’t get deeper into it.

The last part, payment processing, is probably the most interesting bit. I use a payment provider, because trying to manage something like that yourself is a nightmare. My payment provider handles all sort of payment options, including things that require someone to answer the phone or manually clear mailed checks, etc.

They also provide nice admin site, where I can do things like generate coupons, like this one: NHP-45K2D46S27 (yes, it is a valid one, at least until someone will use it), refund people, taxation, view interesting reports and in general administer all aspects of the accepting payments.

They take a commission that isn’t significantly larger than most credit cards and in general they solve so much headache that I am happy to pay them.

The result of a successful order in the payment provider is an email generated that is sent to a mailbox monitored by a service. That email is read, parsed, and the corresponding license file is then sent to the user.

Nothing really earth shattering in all the process, yes, I know. But it is probably important to outline that clearly for people who haven’t done it yet. It isn’t complex or hard by any measure.