On piracy

Obviously every developer, product, and market is different, but…

As a general guideline, if a developer asks "How much effort should I be investing in fighting piracy?", then the answer should almost always be "None".

If you observe any community of developers trying to make a living from their products you’ll see two main factions:

  • Those who are worried about piracy and want to implement technical measures to minimize its impact.
  • Those who think that piracy is an inevitable and natural part of the ecosystem, there’s not much point in fighting it, and your development efforts are best invested in developing features, enhancements and bug fixes for paying customers.

That’s a gross simplification, of course, but those are the general tendencies.

The majority of customers, I suspect, would hope that the developers who work on the products they buy would adopt a healthy balance: that is, spending most of their time on features and enhancements (at least 90% and hopefully more than 95%), and a bare minimum on anti-piracy stuff to prevent themselves from going out of business. They want the programs they buy to be as good as possible, but they understand that the developer does actually need to make a living from it or those products will stop improving.

As a developer, I’ve mostly tried to maintain that kind of balance. You could say that I didn’t really belong fully to either of the "factions" I mentioned above, but that I thought that if I could spend less than 5% of my time combatting piracy and in turn improve sales by more than 5% then it was obviously the right thing to do. In other words, use a small amount of time, but use it cleverly.

Is 5% too much?

Lately (by which I mean, over recent years) I’ve found the demands on my time to be increasingly hard to cope with. Spending 5% on piracy started seeming like too much. Nowadays I think 1% is probably more appropriate.

In 1% of your development time you can easily implement a serial number system. That’s really all you need: make your software easy to buy and don’t penalise honest users with complicated protection systems. In this way, most of the people who would pay for your software if they couldn’t get it for free will pay for it.

I don’t have hard number on this, but let’s just make an estimate that 75% of the market is basically "honest" and is prepared to pay for software if there isn’t a free alternative. The remaining 25% are the "hardcore" believers that software should be free: here we’re talking about people who think that open source is the only acceptable choice (these people usually have strong convictions about this based on quite elaborate philosophical and technical grounds), and also about people who simply aren’t prepared to pay (these people usually have much simpler belief systems about personal entitlement, or the contrary, belief in the non-entitlement of the developer to compensation).

Your target market is the large, 75% pool. Forget about the 25%. With a simple serial number system you’ve basically already maximised the number of people you’re going to reach from the big pool. These are people who might use pirate serial numbers to try software out for extended periods, but if they can’t get a serial number and they like the product they will pay for it. Your job is to make it easy for those people to buy your software.

Your job is not to make it hard for the "hardcore" 25% to use your product without paying. You could spend hours, days, weeks, fighting those people and you won’t be able to wring a single cent out of them. You may as well take your precious time, douse it with gasoline, and set fire to it.

I honestly think that 1% is enough time for you to reach the 75%. If you spend more time, like 5% say, you won’t have much, if any, effect on sales. Sure, you might have some fun — it might be intellectually stimulating to work on solutions — but it is not going to help your bottom line much.

There is a certain feeling of liberation that comes from taking the decision that you are simply not going to worry about piracy any more. You have your serial number system, but you’re not going to cruise the Internet looking for rogue serial numbers to blacklist. Your blood pressure is going to remain healthy. You’re going to sleep at night. You’re not going to fret over lost sales.

I don’t really have any regrets about spending time on anti-piracy technology over the years — I learnt some great lessons — but I am certainly glad that right here and right now I am free of the yolk of worrying about it. I know that piracy has hurt me financially in the past, but worrying about it would only make it hurt my emotional well-being as well.

How to stop worrying

If you’re worried about piracy, perhaps you should pick one of your projects and say to yourself:

Ok, on this project I am going to get this thing out of my system. I’m going to use some spare time, some hobby time — a couple of hours on nights or weekends — tinkering with anti-piracy tech, but I am not going to let it intrude on my 'work time'. I’ll learn some valuable lessons, but in the end I’ll let it go. You can’t control everything, and trying to just doesn’t make sense.

Before writing this article I was thinking about writing up some tips on this kind of tech — in my work of late I’ve been seeing old anti-piracy code and deleting it on sight, so it’s on my mind — but I realized that I simply don’t care about it. Posting it, even if only to say "this is a technique that I ripped out" would be giving it an importance that I don’t think it really deserves.

Stick to the 1% rule, forget about the pirates, and make the best software you possibly can. You’ll be much happier for it.