Technology is a wonderful thing. As a gadget geek myself, I love the latest tech toys. But some of the latest and greatest inventions have had a less-than-positive impact on software licensing. As you might have guessed, multi-processors and/or multi-core processors have tossed a wrench into traditional CPU-based licensing.
Software vendors decide how to license their products based on the estimated value the product will have to the licensee. For mainframe products specifically, and a few others as well, CPU-based licensing has been an easy way to calculate that value. The speed/type of the processor determines the quantity of processing power, thus the amount of processing cycles that can be utilized by the licensed software. So software vendors licensed the product based on the number of CPUs the licensee would want to use to power the software.
This was actually quite an easy metric to choose, both for the vendor and the customer. Easy to track/count by both groups, CPU-based licensing is not affected by fluctuations in users, helping the customer. On the flip-side, vendors could very easily manage a relatively small number of CPUs (usually monitored by CPU serial number), too.
The problem with CPU-based licensing, however, is that until recently, neither vendors NOR customers anticipated multiple processors or cores on a single chip. So once introduced, vendors predictably argued that each processor/core counted as an individual CPU, and customer obviously argued that a single CHIP was an individual CPU. This fundamental difference is a clear example of how contract definitions can prevent problems, as virtually no software license contained an adequate definition to resolve the definitional dispute.
To compound issues, consider the fact that many of these licenses are perpetual with annual maintenance contracts. If there is a lack of clarity with respects to the definition of a CPU, not only do the parties not have a way to know how many copies of the product are authorized to be used, but it also makes the computation of maintenance dollars unclear, too.
It is now imperative that CPU-based software licenses contain a clear and obvious definition with respects to what constitutes a CPU. Oh, and did I mention virtualization? 🙂 What do your licenses say?