In my case, customers might need to self-host the software for security or privacy reasons. I am wondering how to enforce license and contract. I am considering to add a routine in my program to "call home" with only the necessary informations, at which point the server will respond with the necessary information that will allow the program to run.
How do you sell software?
My personal opinion is if I’m buying software designed to run on my own hardware with a one off install, I only want to pay once for it once. I don’t want a subscription. But I also don’t expect updates or infinite support.
If there is a subscription, I expect updates (bug fixes, new features, support for OS updates, etc). If the maintenance side has value to me, I’ll pay for that subscription.
One example is Solidworks. I pay a few thousand dollars for the “base product”. It’s mine to use forever. But I also pay a yearly service fee. That subscription gives me: software updates (new features and bug fixes), tech support, etc. I get value out of those things so I (gladly) pay for them.
Yes people could carry on running the SW on an old version and hack it somehow, but don't worry about those people. You won't answer their support calls!
That means means users won't be able to use your app offline (in an airplane, during an outage, in an area with spotty connection). You can attempt to play it safe by checking in the background and terminating the app when/if you can make a connection but that is easy to work around.
https://docs.sourcegraph.com/admin/subscriptions#how-user-ac...