Automatic License Enforcement - Close Call

I have never been fond of "hard" license enforcement rules for enterprise software. By definition, the software is mission critical, yet vendors continue to deploy it as a default way of thinking, despite possible bad results.

Here we find VMware with a bug that makes it think that the license has expired, despite valid licenses being installed. In that state, the virtual machine will fail to load. This might not sound like such a big deal, except the high end VMware product in question is often used for load balancing and migration of virtual machines on a cluster of hardware: this task is performed by spinning up and down virtual machines on demand with different images. The summary form of this impact is that people using it like this would find that they could spin down instances, but spinning them back up would fail.

Another thing that mitigates this issue is that you can lie about the date and the license manager will accept the backdated clock and boot instances again. It is a fortunate thing that they did not take the very common approach of storing date stamps in the license manager and denying any machine that was backdated from starting.

As an aside: I personally have been bitten by aggressive back-date enforcement. When playing with the calendar "tool" in Windows 95/98/ME that any changes you made happened in real time... so if you pulled it up to see when the 7th was next month, the scrolling to the next month *actually changed the month* on your computer. Scrolling back would put everything right, unless you had software that committed license suicide if it thought you were trying to backdate a computer to avoid the restrictions. In that case, the consequences were quite severe for checking a date by being "clever".

All of this points to the benefits of "soft" license enforcement, where an escalating sequence of actions occurs rather than a hard cutoff. I would like to see the following scheme be standard on mission critical software (I have seen bits and pieces, but never the entire system in place):

* As an expiration date approaches, notifications should be sent to the registered administrator, reminding them to load the new license data.
* As the date approaches closer, administrative screens should contain the warning, in the likely case that the administrator e-mail address was stale.
* As the date arrives, all accounts should see the notice that the software is in a grace period and that functionality will degrade if licenses are not applied.
* After the initial grace period expires, management features should be shut down, but an extended grace period should apply to any critical features.
* After the extended grace period expires, the software can resort to bare minimum functionality (allowing the admin to apply codes, for example).

The exact periods for the warning and grace periods would depend on the application type, but if such a scheme was applied in the VMware case, users would simply see notices that they were in a grace period, rather than being potentially locked out of software they properly licensed. (Of course, a bug could cause even a soft license cutoff scheme to fail catastrophically, but if engineered properly it should minimize the number of cases where people are turned off cold. I know I would prefer a "your license has expired, you have two weeks to apply a new code" message over "This product has expired".