New hardware and software deployment options in the cloud are providing new opportunities to simplify and improve on traditional software licensing models
Three Editions of Reprise Software Licensing Toolkits – which RLM Edition is best for you?
Reprise Software now offers three licensing toolkit editions addressing the software licensing needs of cost-conscious ISVs. This article compares the three editions to help you decide which RLM edition is best for you.
Reprise Software offers “RLM”, “RLM-Embedded”, and “RLM-ez.” Each edition is a complete solution with tools for integrating license enforcement into your applications, and for generating licenses to enable them. They all are based on a common set of licensing apis. How do they compare?
Reprise Software’s flagship product is RLM. It contains all of the bells and whistles that users have come to expect from the best in enterprise class software license management. RLM was designed by the same team that brought you FLEXlm, so in a sense RLM is the next generation of software licensing solutions. RLM is used by hundreds of independent software vendors who deliver millions of licenses to users, worldwide.
RLM supports a wide array of software licensing models including floating or concurrent user, named user, and many others. RLM includes the RLM License Server that supports a full built-in admin interface. The RLM License Server produces reports logs that are easy to parse into usage and billing reports using 3rd party tools, or tools that you write using the well-documented, open report log format specification. Reprise Software’s Activation Pro product supports Internet activation for RLM licenses.
First introduced in May of 2006, RLM supports the widest selection of platforms.
Like RLM-ez, RLM-Embedded as a toolkit that supports node-locked licenses only, but with a rich api to support an unlimited number of products, and optional Internet activation via Activation Pro. RLM-Embedded uses the very same api as RLM, so if you upgrade to RLM, then you need to make no source code changes.
As you would expect, RLM-Embedded is offered at a much lower price point that the full RLM product. In addition to supporting Windows, Linux, and Mac, RLM-Embedded supports some Unix platforms as well.
RLM-Embedded was first released in September, 2009.
RLM-ez addresses simple node-locked licensing styles only. If you simply want to make sure your software can run only on authorized computers, then RLM-ez is a good choice. It uses industry standard digital signature technology so that you can deliver tamper-proof text-based licenses that are locked to your customer’s computer.
The RLM-ez API is very simple, with only a handful calls. A typical use case for RLM-ez is when you want your customers to freely download your application for a trial period without you having to get involved. This works well for low cost software where special hand-holding for licensing would be cost prohibitive. When your customer wants to buy, he sends you his hostid, you generate a license, and email it back. Done.
RLM-ez pricing is a small one-time fee, per product, per platform. RLM-ez is supported on all the major desktop platforms, including Windows, Linux, and Mac.
RLM-ez was first released in March, 2014.
Please contact the Reprise Software Sales Team for more information and detailed pricing.
Did your customer’s computer really crash? – using software activation to verify.
Here’s the picture: A software publisher’s support hot-line rings. The caller reports that his computer has crashed, and that he needs another software license for a new replacement computer right away. What to do?
Software publishers strive to ensure that their customers are not inconvenienced by software licensing issues. When a computer crashes, users scramble to find a new one. They re-install their applications and contact their vendors to obtain new licenses. Software publishers provide a new license as quickly as possible, but how do the publishers know that the old license will be permanently retired and not put back into service if the old machine is repaired someday. This is an especially important issue for software publishers who sell perpetual licenses.
Many software publishers handle this scenario by asking their customers to sign a form that certifies that the old license has been destroyed and that it will not be put back into service. This provides a modest hurdle to dissuade customers from taking advantage of the software vendor’s easy license replacement policy. Other publishers require a license transfer to be associated with an order, so that there is a paper trail that the company agrees that the old license is not to be used, verified by a purchase order coming from the company. But, today software vendors who use an Internet software activation service, such as Reprise’s Activation Pro, have better methods to handle this case and others like it.
With Activation Pro, software applications are “activated” over the Internet. Activation performs two important jobs: delivering licenses to users 24×7, and leaving behind a record of each fulfillment. Each fulfillment record contains:
- activation key that was used
- user’s computer hostid to which the license was issued
- user’s IP address
- date and time of the first and last fulfillment using that key
- other data that the application wishes to associate with the activation event, and
- a copy of the license that was delivered to the user
So, how do you use RLM and Activation Pro to handle a crashed or decommissioned computer? Using RLM and Activation Pro, applications can periodically request the status of the fulfillment from the Activation Pro database. If the fulfillment is valid, the application runs as normal. But, if the ISV deletes the fulfillment record from the Activation Pro database because the computer was reported to be crashed or decommissioned, the application can know to deny service.
When using this model, the license should include the activation key used to fulfill the license. This way the application can check out the license at runtime to determine if it is valid, retrieve the activation key and the hostid from the license, then check the status of the fulfillment. The application will find out whether the license is still valid, or whether the fulfillment has been deleted.
Implementation details of the method described here can be found in the RLM and Activation Pro Reference Manuals on the Reprise Website.
Software publishers are adopting subscription licensing models at an increasing rate. Subscriptions help to smooth license revenue from recurring fees while attracting customers with lower entry costs.
Using RLM Activation Pro, an ISV can sell subscription licenses that have expiration dates years into the future. When users are connected to the Internet, applications can periodically request the status of the subscription from the Activation Pro service. If the subscription is valid, the application runs as normal. But, if the user cancels his subscription or fails to renew, the ISV marks the activation key as “disabled” so that the application can know to shutdown. The activation record can be re-enabled if the customer reinstates his subscription later.
This method minimizes the ISV workload because action only needs to be taken when the user cancels the subscription, or fails to renew.
RLM licenses that support a subscription model should include the activation key in the license itself. This way the application checks out the license at runtime to determine if it is valid, retrieves the activation key and the hostid from the license, then checks the status of the subscription. The application will find out whether the license is still valid, or whether the activation key is disabled.
Implementation details of the method described here can be found in the RLM and Activation Pro Reference Manual.
The Reprise License Manager product is capable of supporting many license types. Some are appropriate for standalone, single-user licensing models and others are used to support more complex network licensing and pricing scenarios. Determining when a license server must be installed is not always clear.
So, let’s spend a few minutes talking about the various jobs a license server performs, and when it is needed to support various license types.
Uncounted v. Counted Licenses
The biggest factor that determines whether a license server is required is whether licenses are counted or uncounted. Counted licenses require a license server because it must “count” concurrent licenses. Counted licenses are used whenever the ISV wants to limit or record concurrent license usage. Counted licenses can be identified by a positive integer in the “count” field of the license.
Uncounted licenses, on the other hand, do not require a license server because there is no need to count usage. Uncounted licenses can be identified by the word “uncounted” or or the number “0” in the license count field of the license. Each uncounted license must be node-locked to a hostid. For ease of administration at larger sites, uncounted licenses for multiple computers may reside in a license file that is managed by a central license server, but this is not required.
The other license type that does not require a license server is the “single” license type. This is also a node-locked license, but it can be used by only one user at a time (concurrent count of “1”). The enforcement of “single” licenses is done via file locking, not by license servers.
The RLM License Server
The basic job of the RLM License Server is to service license requests from RLM-enabled client applications over the network. Based on the needs of the application, the license server redirects license requests to the ISV-specific license server which actually grants or denies the request based on what is specified in the license and on the current usage conditions.
License servers also manage “roaming,” named-user, and token-based licenses. They manage held and shared licenses, and offer an admin interface, diagnostic tools, and are responsible for writing debug and report logs.
Roaming Licenses with RLM
If you sell floating licenses for your software products, you can increase the value of your licenses by allowing them to be removed from the network when your users hit the road.
With RLM, you can give users a license that will allow them to remain in compliance even after they’ve disconnected their laptop from the corporate network. Whether for a few hours, a few days or a few weeks, “roaming” licenses can be valuable to your users, and set you apart from your competition.
Increasingly, users want to take their work “on the road.” RLM’s built-in license roaming capability allows users to check out a license from a server, physically disconnect from the server and continue to use the license for a specified number of days, after which the license is automatically returned to the server when it expires on the mobile computer.
As an ISV, you control whether licenses are allowed to roam, and how long they can be checked-out in the disconnected state. No API changes are required beyond providing a special rlm_roam license to your customer.
RLM license roaming was designed to allow ‘disconnected’ use for short durations up to a few weeks.
Using dongles with RLM
The Reprise License Manager (RLM) comes with built-in USB dongle support, meaning that using dongles with RLM could not be easier. Dongles purchased from Reprise can be used as a standard “hostid” to which licenses can be locked. The principal advantage of using dongles is to provide a convenient way for your customers to transfer licenses when machines are replaced or upgraded. Software applications, with a valid license, can be used on any machine as long as the dongle specified in the license is attached.
ISVs who prefer to support their own dongles with RLM can do so by way of an ISV-defined host ID. ISVs can choose a simple, low-cost dongle because RLM needs only the dongle’s serial number at runtime. ISVs then write a routine to retrieve the dongle’s ID and include that routine within the RLM libraries so whenever a license is tied to the dongle, RLM knows how to call the ISV’s routine to obtain the dongle serial number. Example code is provided with the standard RLM SDK to show how ISV-defined hostids can be integrated into RLM.
Using RLM refresh-type activation to support short-term renewable licenses
Consider these licensing system requirements:
- The system must be able to generate a time limited and trial licenses.
- The trial version will automatically become a “full version” when the customer purchases a license.
- Full licenses are also “time limited”, i.e. customers can purchase packages of 30, 60, or 90 days.
- Each time the application starts, it must validate that its license has not yet expired.
- The application must be able to operate “off line” for a specified period of time: if the license cannot be reactivated at the expiration of the allowed off-line period, then the license is suspended and the application cannot start.
- Upon first reconnection, if the user still has a valid license (has not been terminated), the license is reactivated, the off-line allowed time is restored and the application can be run again.
Supporting the Concepts
Using the optional RLM add-on product, RLM Activation Pro, a refreshable license is one that is intended to be reactivated frequently and receive a license with a new expiration date with each reactivation. Refreshable licenses are typically of short duration (days). The ISV is assured that the maximum period during which the end user can run the licensed application is the duration of the refreshable license, say 30 days.
For example, if the ISV specifies a 30-day refreshable license, then the license will be good for 30-days after each activation. If the refresh operation fails for any reason, such as the lack of Internet connectivity, then the license is still good until the end of the 30 day period – enough time to resolve any connectivity issues. This allows the customer to operate off-line until the license needs to be refreshed.
Refreshable licenses also give the ISV a way to revoke a license should that user fail to meet contractual obligations, for example. The ISV can simply disable the user’s license on the activation server, and refresh attempts of that license will fail from that point forward, or until it is re-enabled by the ISV.
The client side of refreshing can be automated, so it can be performed without an undue burden on the end-user. Reprise supplies a “Refresh API” for license refreshing, which the ISV can use from within the application itself, or within a separate standalone utility. Reprise supplies a generic refresh utility that can be supplied to the end-user by the ISV. The generic utility, “refresh_util”, is meant to be set up to run daily as a scheduled task.
Defining new Hostids within RLM
RLM comes with a comprehensive set of integrated hostids, but there are times when ISVs need to lock their software licenses to something else. The three most common reasons for ISV-defined hostids are:
- Supporting non-Reprise dongles
- Tying licenses to peripheral hardware devices
- Combining various identifying elements of the computer.
RLM provides the ability to extend the native set of hostids by using your own routines to obtain host identification which is unique to you.
In order to do this, you use the rlm_add_isv_hostid() call in your application. If you want to support multiple instances of your hostid type on a single computer, you would use the rlm_add_isv_hostid_multiple() call.
For more information on ISV-defined hostids, please consult the latest RLM Reference Manual or contact Reprise Software.
Recently we received a common question from one of our customers looking for some advice.
The answer depends on whether the components are always released on separate schedules or as a group. If the former, then use a separate LICENSE line for each one. This allows them to have different attributes, such as version and expiration.
If the components are always released as a group, then they can be licensed with a single LICENSE, with the specific set of components authorized expressed in the “OPTIONS=” attribute of the license (example below).
If you choose the OPTIONS field route, then the value of the OPTIONS attribute can be retrieved using the RLM api call rlm_license_options(). This call returns the contents of the OPTIONS string so that your application can parse it to determine which features should be enabled.
Example: OPTIONS=”pie bar scatter max_points=1000″