So here I am, the day before thanksgiving, fighting a battle with a reluctant license server that wants to compute a hash of internal bits on a machine, in order to use to unlock a license key, to let software run.
This is not for us, but for a customer. At their site.
This is the same model from the 1980s and early 90s. Create a hash from a collection of things (or a dongle you attach to a serial/parallel port).
Tie the license hard to a particular machine.
This works “great” until something, anything at all, changes on the machine. And when I say anything, I mean ANYTHING.
New network driver that enumerates PCI bus functions differently than the old one? Sorry, you need a new license key.
New kernel? Yup, new license key.
PCI bus enumeration in a different order? Yuppers. New key.
CPU indexing (serial numbers available per CPU in each one) in a different order on startup? Absolutely need a new key.
This is so 1980s/1990s. And its completely broken.
Large customer can’t do work, because software licensing is so completely borked that it gets in the way of them doing their work.
I am not arguing for GPL here. I am arguing for sane design of software licensing. If you really want to tie it to a machine, make damned sure you can accept changes like, I dunno, out of order enumeration, or new kernels, or new drivers, or … without causing the customer grief before a major holiday when they have a helluvalotta work queued up to run on this.
Lower friction computing almost always wins. Make licensing lower friction, less brittle, more friendly, more forgiving of system “changes” which naturally occur these days in the era of virtualization and containerization.