Live data from Hacker News

Ask HN: Developers who sell desktop software, what do you use for licensing?

news.ycombinator.com

1–10 of 27 posts

Ask HN: Developers who sell desktop software, what do you use for licensing?

#1
Is there a quality service that you use or is it all developed in-house? I know licensing systems can range from super simple [0] to intrinsically complex — that's why I'm curious.

    - What do you like/dislike about your current system?
    - What features are lacking that you wish it had?
[0]: http://www.mikeperham.com/2016/05/17/commercial-gems/

Re: Ask HN: Developers who sell desktop software, what do you use for licensing?

#2
A lot of the licensing systems I've encountered cause problems if you're selling to big corporations because they don't work well in locked down environments. Whatever you use needs to have an alternative way.

The other question is the ease of integration and the cost of the software - if you spend weeks integrating and troubleshooting it, I'd be tempted to forego it for anything but a high-value product.

Keep in mind that troubleshooting it will be an ongoing process when some paranoid BOFH has locked down the user's machine to the extent that they can't do anything, including their job.

Re: Ask HN: Developers who sell desktop software, what do you use for licensing?

#3
The risk you run by using a third party licensing solution is that they are more attractive targets to crackers. Generally, once a system has been compromised, all of the software using that system become vulnerable. Rolling your own solution takes time and effort and there's no guarantee that it won't be broken but you can also change and update it as needed. In the end you're really only affecting honest customers so keep the system as unobtrusive as possible and put more focus on selling more software and that quality of what you're putting out there - that will more than make up for any shortfalls due to piracy.

Re: Ask HN: Developers who sell desktop software, what do you use for licensing?

#4
For my application[0] I'm using fastspring.com. From there users can buy a license and when they do so I receive an email. I then run a small program to generate a license file which is then automatically emailed to them. The license is just a plain text file (that contains the user's personal details), which I sign with a private key. The application then verify that the license is correct based on an embedded public key.

To be honest I think I've tried to do something too complicated. If I was doing it again I'd go for something much simpler since, anyway, no matter how complex the protection is, the application can eventually be cracked.

So I'd suggest a very simple system where the user inputs a serial number (that fastspring.com can generate directly), then the app verifies if it is valid. If it is, save it to the Windows registry (or similar place) and check it again every time the application starts. That way, you don't need to bother with any manual process like I do and it won't add much complexity to your app.

[0] http://easyhanzi.com/

Re: Ask HN: Developers who sell desktop software, what do you use for licensing?

#5
At one of my jobs we used a 3rd party library for .NET to do our licensing but then we decided to roll our own. By rolling our own we got the benefit of doing things that wouldn't be available in commercial solutions. For instance, we sold our software in modules and you bought each module separately but they each fit into the product. With our homemade system we could disable or enable modules at will from our system and have the user refresh. They had to connect once a year but if they bought a new module they could just go to the help menu and refresh their license and the module would unlock immediately. Not sure if you can do that with other commercial products or not.

Re: Ask HN: Developers who sell desktop software, what do you use for licensing?

#6
I'd recommend to work out what field you're selling to, and consider if you can follow what the major vendors are using in that field.

Your customers' sysadmins are probably already dealing with a bunch of commercial software, more dominant than yours. Go with the flow and lower the workload for everyone.

Seems simple to implement your own; you also get security through some degree of being less mainstream. But don't underestimate the variety out in the field or the amount of hardening that existing solutions have had.

In our case, I've never experienced a vendor's 'home brew' solution actually work properly when faced with the load of a renderfarm or HPC cluster (normal for customers like us) without several revisions. Hardly unsolvable problems, but then a dialogue back and forth is needed to fix such issues; wasted time for both parties, unless you are in the business of developing licensing servers.

Obviously there's a balance here with how much it costs to bring in a tried and tested solution (flexlm and rlm are the ones I know of) vs cost of the other options.

Re: Ask HN: Developers who sell desktop software, what do you use for licensing?

#7
I sell two Mac Apps. For the Mac app store versions I have no copy protection at all.

For the version I sell on Fastspring, I use a library called Aquatic Prime, which uses public key cryptography to validate license files. It's integrated with Fastspring, so that's convenient.

I've had a couple of customers where Aquatic Prime failed for hard to debug reasons -- I think the issue was that they had names with special characters that caused sorting issues. If I'd do it again, I'd probably do something simpler, since bugs in license validation code are really bad.

I wouldn't worry about piracy or cracked versions. Someone did crack my apps, but it doesn't seem to affect sales. The only people who care about cracked versions of my app are shady companies promising to get rid of cracked versions by sending takedown requests on my behalf. I wonder if those guys cracked my app in the first place...

EDIT: You asked about missing features. It would be nice if business customers had a way to see how many licenses they are using, and they should be able to easily buy additional licenses. However, building such a system would probably be very complicated and not worth the effort.

Re: Ask HN: Developers who sell desktop software, what do you use for licensing?

#8

I sell two Mac Apps. For the Mac app store versions I have no copy protection at all. For the version I sell on Fastspring, I use a library called Aquatic Prime, which uses public key cryptography to validate license files. It's integrated with Fastspring, so that's convenient. I've had a couple of customers where Aquatic Prime failed for hard to debug reasons -- I think the issue was that they had names with special…

So you want a way for your customers to easily see and manage their licenses, and to be able to easily purchase additional licenses? Do you machine-lock licenses for your app, or are they allowed to float between machines?

Re: Ask HN: Developers who sell desktop software, what do you use for licensing?

#9
post #5

At one of my jobs we used a 3rd party library for .NET to do our licensing but then we decided to roll our own. By rolling our own we got the benefit of doing things that wouldn't be available in commercial solutions. For instance, we sold our software in modules and you bought each module separately but they each fit into the product. With our homemade system we could disable or enable modules at will from our syste…

You're one of the first developers I've talked to that actually implemented feature-licenses (modules, add-ons, etc.). That's something I'd love to know more about. How do you handle toggling features within the codebase? I'd imagine that you'd handle it kind of like you would with feature flags?

Re: Ask HN: Developers who sell desktop software, what do you use for licensing?

#10

For my application[0] I'm using fastspring.com. From there users can buy a license and when they do so I receive an email. I then run a small program to generate a license file which is then automatically emailed to them. The license is just a plain text file (that contains the user's personal details), which I sign with a private key. The application then verify that the license is correct based on an embedded publi…

Is there any specific reason that you went with public/private keys as opposed to user accounts w/ associated license keys? Then again, maybe your app is primarily used while offline so you may need to do it that way.
Post reply on HN