Being responsible for our licensing, every time that a new, to be licensed feature was developed, I had to update the (master) license definition. In parallel, our engineers had to make sure that the software worked seamlessly with our licenses. While neither this process nor the subsequent generation of new licenses was a headache, existing licenses posed a real challenge:
- Should existing customers be able to use the new feature or not?
- Do they need a new license?
The second question is not really worth asking. ISVs cannot afford to issue new (substitute) licenses very frequently. Not only does it consume a lot of resources, but above all the end-users are not going to be particularly amused.
Similar questions arise when features are removed or bundled together. As a product manager I needed the flexibility to change things with minimal engineering effort (ideally without involving our engineers at all) and without existing end-users noticing. Otherwise, our future growth would be severely hindered by our past.