There are advantages for both the software vendor and the user of the software to move from a perpetual non-expiring model to a subscription model. The IDC 2016 Software Licensing and Pricing Predictions report cites that software subscription revenue will continue its rapid growth trajectory to reach $130 billion in 2016, a 21% increase over 2015. We have seen tremendous growth in large companies offering subscription-based licenses. Companies like Adobe, Microsoft, AutoDesk, and Apple are offering software and even hardware under subscription. In fact, some software that was previously available under a perpetual license is now only available as a subscription.
When licensing software under a subscription, typically two to three components will work together:
- Licensing Client – the component running inside of the protected software application that identifies if the software is allowed to run, based upon the status of the subscription. In the case of the SoftwareKey System, this is one of the Protection PLUS tools.
- Licensing Server – the central licensing server that sits on the internet that tracks the status of the license and communicates this to the licensing client as needed. The SoftwareKey System licensing server is called SOLO Server.
- eCommerce Server – this system is responsible for charging the customer’s credit card when the subscription is up for renewal, whether it be monthly, quarterly, or annually. In some cases, a 3rd party eCommerce server is used, or it can be built into the licensing server. When two servers are used, the subscription status must be synchronized when a change takes place (successful subscription renewal, subscription cancellation, etc.). SoftwareKey’s SOLO Server can operate as both the Licensing Server and eCommerce server; or developers can use a 3rd party eCommerce Server such as FastSpring.com. Refer to Choosing an eCommerce System for selling your Licensed Applications for guidance on choosing an integrated or separate eCommerce Server.
There are two approaches to the way the Licensing Client and the Licensing Server communicate. Both approaches have the same end result of automatically expiring the subscription license if the customer ends or cancels their subscription payments.
Best Practice – Local Cached Copy of License
The subscription verification APIs offered by the Licensing Client and Licensing Server are great for basic validation of a subscription when both devices are able to communicate with each other. However, we must admit that even though internet service is readily available these days, it can’t be guaranteed at all times and at all places. With the explosion of software running on various new platforms and devices – such as mobile and embedded/IoT devices – securely caching your license/subscription status increases your application’s reliability and availability – via local validation that can take place during the subscription period.
Therefore, it is recommended to create the subscription license inside of the Licensing Server and create a cached local license file saved to the customer’s device once they activate. This allows license entitlements to be enforced without always requiring a connection to the Licensing Server, and only periodic validations are required to check for updates to the license.
Approach 1: Expiration Date
This approach updates the license expiration date in the License Server whenever a subscription payment is successfully processed. When the customer activates, the local license file will be set with the same expiration date as set in the Licensing Server. When the software checks the local license file and sees the license is near the subscription expiration, it can begin to poll the Licensing Server to see if the date was extended by another period, which occurs if a subscription payment is successfully processed. The validation process will update the local license file with the new expiration date and the software can continue to run without interrupting the user. If the customer can’t connect to the internet, they will not be able to get an updated expiration date and will be locked out of the software until they are able to validate with the Licensing Server. If the customer stops paying for their subscription, the license will eventually expire.
When to Use
If you are using an integrated Licensing Server and eCommerce Server, this approach should be simple and gives you more control over the warning messages that can be presented to users about needing to renew their subscription. Also, an integrated Licensing and eCommerce Server might have a “plan cancellation” feature that customers can use to stop future subscription billing while the software will continue to be licensed through the current local expiration date of the subscription.
Approach 2: License Status
This approach does not use a specific expiration date, but enforces software termination if the customer misses a subscription payment or otherwise cancels the subscription. In this case, you issue a license without an expiration date, and the Licensing Client implementation needs to be configured to require periodic validation with the Licensing Server to check the license status. If the subscription license status is voided due to a missed payment or cancellation, the software will be deactivated. It is important to make this validation with the Licensing Server mandatory so that the customer cannot simply block the connection to the Licensing Server. The software can warn the customer if it is unable to validate, and then will automatically deactivate after a pre-defined grace period.
When to Use
This can be the simplest implementation when the Licensing Server and eCommerce Server are two different systems as it minimizes the amount of integration between the two systems.
Summary
Both approaches offer the ability to license software on a subscription basis with certain advantages and levels of integration required by each approach.
When using the integrated configuration of the SoftwareKey System, either approach can be used. When integrating the SoftwareKey System for Licensing with another eCommerce solution (such as FastSpring), the License Status approach offers the easiest steps for integration.