Result of understanding myth number 1 – The biggest challenge you have is not writing the software. The biggest challenge is Selling the software.
Sales, Distribution and Marketing should cost nothing. This is a result of believing in myth number 2. The value is not in the program itself. And the value is not in the salesman. But the programmer needs the salesman to see the program, and the salesman needs the programmer to write programs. It's a symbiotic relationship. 50/50. Not 90/10. Remember if the salesman can make a living selling just your program, then with a 50/50 split you're doing fine. If he can't make a living selling just your program, then he will by necessity have to do other things as well. Which means less time on your program. Which presumably means fewer sales.
Result of understanding myth 3 either devote your afternoons to selling activities, or link up with other people or companies who can sell for you. Be prepared to pay good commissions for good results.
So why do these myths mean that your
original question is flawed. Because fundamentally the goal of
writing the software in the first place was so that it could be
copied. In fact the primary goal is that you get paid! The
right question is;
"How can I get Users of my software to pay for it?"
Once you understand this, then the copying issue becomes less important. Indeed if you can convince "pirate" users to pay, then the reverse is true. You want people to copy your software.
Consider: You can have either:
a) 100 pirate users, and 10 end up paying.
b) 5 legit users, and perfect copy protection.
c) 10 legit users and perfect copy protection.
d) 100 pirate users, where none end up paying.
Which one would you pick? Most
developers would go for c). But I'd go for a). From a money point of
view a) and c) pay the same. But a) offers the chance of additional
revenue. Plus there are 90 unpaid sales staff working for me.
I'll assume for the moment that you don't have a zillion dollar budget for up-front marketing. What then is the best way to reach new customers? Well nothing works quite as well as a satisfied existing customer. (And nothing does as much harm as an unsatisfied customer.) It's worth remembering that even a pirate user can also be a satisfied user. And even if he Never pays, he might recommend it to someone who does.
Don't get me wrong. I'm not suggesting you encourage pirating. What I'm suggesting though is that if you accept that pirating will happen, then spend less time fighting it, and more time converting pirate users to legit users. How can you do that?
The strategy you adopt will depend to some extent on the nature, and price, of the software involved. If you have a $50 000 package then chances are no amount of subtlety will result in a sale. For software this expensive, frankly you should use a dongle. Ok, they're ugly. Users hate them. Programmers hate them. But for 50K not much else is going to work.
At the other end of the scale, the biggest problem with a $10 product is convincing the person to get up out their chair and write the check. (Allowing payment via the internet is a good solution here no walking required!)
I'm going to assume your software is somewhere between the 2 extremes. Probably in the sub $1000 range. Here are some ideas.
Probably the most effective, and it works on any system with reports that go to other people. Simply put the name of the registered user on all reports. It's hard to issue an invoice to a customer where the "company" name is incorrect. But don't just limit it to reports. Use the name blatantly on the wallpaper for the main screen.
You can either do this overtly or covertly. It's pretty hard for the pirate user to do anything but pay when the program shuts down 2 weeks before the financial year end... Of course many programs ship with very clear "30 day trial" periods and so on. The idea here is that on the day the program shuts down, the user must be convinced that this is the best solution for him and worth paying money for.
Simultaneous Network usage
Instead of restricting the number of copies that can be installed at a company, rather restrict the number of copies that can be running at any one time. This encourages other people to try the software out. Sooner or later the company is returning to get more licenses.
If you have a dongle, then consider limiting the number of records that the software will support without the dongle. This still allows the software to be copied. Again it can be done covertly. Get the user hooked, then pull in the line.
Updates and Support are two that spring to mind, but be creative. Add long term value to the client. If you have a tip-of-the-week newsletter (advertised on your website) then you can identify potential pirate users that sign up for the newsletter.
The internet is more than the web. And tools for using the internet directly from your program are widely available, and easy to use. Again be creative. If your program is in contact with you, then identifying pirate users is easier. Be careful though. Making covert connections can be detected by fire-walls, and won't make your legit customers very happy.
Binding Software to Hardware
I have to say, I'm not a fan of this approach. For the most part it's not very reliable, and can cause the program to fail on legitimate machines. Typically it binds the software to a hardware related number, like the Hard Driver serial number. But this guarantees the software will fail if the customer does a hardware upgrade. If you plan on 1000 sales, that's 3 failures every day of the year. Every year. (Assuming an average upgrade of once every year.) If you plan on 10 000 sales, then it gets a bit impractical.
Whatever method, or combination of methods you choose, remember that the existing legitimate customers are important. If the system interferes with them then it's not a good system. And of course you must be able to re-activate systems that have shutdown by entering a code. This code should be available via phone, fax, email or whatever. And under no circumstances is it a good idea to delete data when the program shuts down. (In some countries deleting the data may be illegal.)