The software assets your company has developed represent a significant investment, and it is essential to make sure that users adhere to your licensing restrictions. At the same time, software licensing and entitlement can be one of the largest sources of friction for your users, so the process must be easy to follow and transparent.
Software license management can get complex; you might license software per feature, per user, or per machine. Licenses might be time-limited, software users might be able to share a license across machines, or two users might share the same single license. Whatever software licensing mechanism you choose, PubNub can help ensure users do not exceed their allowance.
PubNub can form the communications backbone for your licensing solution, as shown in the following diagram:
While the ultimate goal of software licensing is to protect your intellectual property, the user experience must be at the forefront of your licensing mechanism’s design. Most large software suites provide a range of flexible licensing types to suit any organization's size.
Software publishers use license keys for license enforcement and software protection.
Some typical ways of assigning licenses are
To a specific user
To a specific machine
To a group of concurrent users or group of machines
Shared between a group of users.
Grouping users is a powerful feature that allows organizations to manage their license pool better and incorporate it into their business practices. With license flexibility, however, comes complexity for the software developer - and this is where PubNub can help.
PubNub is based on the publish-subscribe model and uses channels to group users. Channels are a deceptively powerful mechanism that allows you to form groups of users in 1:1 relationships, 1:many relationships, or even 1:all (broadcast) relationships. Assigning users to a channel is analogous to putting them into a group. With a little plumbing to define channel subscriptions, you get a flexible grouping mechanism baked into any licensing system that uses PubNub for its communication.
Large software suites most likely run on multiple platforms. Desktop suites will frequently support both Windows and macOS. Mobile apps likely support Android and iOS; often, a single software product with combined pricing will run on desktop, mobile, and the web, at least in some form.
Developing a large, cross-platform application can be complicated, but the last thing you want to do is retain that complexity in your licensing system. PubNub supports many SDKs, including the most popular languages for all likely target platforms. PubNub presents a common API surface to your application, regardless of where it runs, meaning your licensing logic can be common across all your supported platforms. An Android client using the Kotlin SDK can talk with an iOS client using the Swift SDK and a MacOS client written in Flutter - all controlled by the licensing server making REST API calls. Given PubNub’s cross-platform support, there is no technical reason to tie a license to a particular platform, though, of course, you have the flexibility to do that if you choose.
It is a widespread practice to run an integrity check on a software’s host platform when it launches to ensure that the platform is “trusted.” What “trusted” means can vary from platform to platform, and APIs are available to determine the trustworthiness of the host: from Windows’ TPM to Android’s SafetyNet API to iOS’s DeviceCheck.
To determine whether you trust a platform, you should never perform this check locally. The reason is logical: if you are running on an untrusted platform, then there would be nothing to stop that platform from ‘lying’ to you and telling you that it is trusted. Running on an untrusted platform can leave your software application vulnerable to exploitation by any number of attacks, for example, by 3rd party apps taking advantage of unpatched security issues on the host. Examples of untrusted devices would be ‘rooted’ Android devices or ‘jailbroken’ iOS devices.
The startup time for your app is one of the most important metrics, but PubNub’s high availability, local points of presence, and low round trip time can ensure your app’s startup time is unaffected. PubNub also supports encryption on top of standard TLS, meaning data in transit is secured.
One licensing mechanism is the ‘floating license’ whereby an organization can purchase a specified number of licenses for your software. The number of employees actively using your software at any one time cannot exceed the number of floating licenses the organization has purchased. Say an organization has purchased five floating licenses; when the 6th user attempts to start the software, they are shown an error and told to retry when a floating license has become available.
Traditionally the floating license approach is unfriendly to users; the 6th user in our scenario, who was unable to obtain a license, would have to resort to asking around their coworkers to relinquish a license or wait an indeterminate amount of time until one became available. In extreme cases, employees would launch licensed software at the start of the day and leave it running in the background, hoarding a license but leaving them able to work when needed.
PubNub allows you to take a much more user-friendly approach to “floating” licenses while preventing overuse. PubNub’s presence mechanism allows your central licensing server to actively monitor who is using your software in real time. When a user shows as offline, their license can be relinquished and given to a new user. Presence also provides insight into software usage and, depending on how the software is licensed, how popular certain features are.
Using PubNub’s publish feature, you can also have the licensing system send a message to any dormant users. The message might ask them if they are still using the software and request they close down the application if there are no “floating licenses” available for new users.
Many large software suites comprise multiple features. You might choose to license your software on a per-feature basis meaning the more features an organization wants to use, the higher tier of license they would purchase. You could also extend this idea so an organization could purchase different numbers of licenses at different tiers.
While more complicated, this gives the organization the freedom to only pay for what they use and allows the software developer to tailor their product to each customer better.
Managing which parts of the software are being used by who and how many licensed features are being used gets confusing but PubNub can help eliminate that confusion. PubNub’s real-time connectivity gives you an immediate view of how many features are being used by many users at any time. This connectivity allows you to maintain an accurate count of active licenses and assurance that customers can use all their purchased licenses without exceeding their allowance. PubNub also scales, so regardless of how many organizations are loading your software at any one time, you always have an accurate view across your entire customer base.
Rather than an all-or-nothing approach, this real-time capability gives you flexibility when feature licenses are not available. A customer launching your application could be notified that no licenses are currently available, or the software could launch in a ‘limited’ mode with fewer available features. As other users relinquish licenses, features could be dynamically enabled in real time.
There is a (probably apocryphal) story of a piece of graphics software whose license was tied to the MAC address of the machine’s network card. As the team’s size exceeded the count of available licenses, the team found it expedient to trick the software by using a USB network card, launching the software, removing the network card, and then sharing it amongst the team.
This story is an excellent example of how the software could have detected hardware changes on the running machine to determine that it was no longer licensed. Using PubNub’s real-time connectivity, the license server can be notified of any client hardware changes immediately and securely. The software can then take appropriate action based on the licensing server’s response, ranging from continuing to run, degrading functionality, or refusing to continue until the machine hardware is restored. You could implement the hardware change checks locally, but incorporating a license server gives you additional flexibility and allows you to consider the ‘wider picture.’ To extend the previous story, it would be evident that two machines were sharing the same network MAC address.
Most software licenses expire, so you must run time and date checks on the server to ensure your clients aren’t running expired software. While any basic system could track when licenses expire and notify a system admin, with PubNub, you have a complete view of the customer’s licenses so that you can take a more nuanced approach. Imagine a licensing system that detects heavy usage on certain days of the week or can detect features that are not being used; with insights such as these, you can create a more powerful licensing mechanism based on PubNub’s real-time connectivity.
No two licensing systems are the same, especially for large software suites. Often licensing mechanisms can become complex, leading to subscription overuse or frustrated users who are paying for features they are not using.
Having dedicated license management tools was once reserved for very large software companies like Microsoft with complex software license agreements which required dedicated budgeting. Unlicensed software will lead to revenue loss but worse, pirated software can lead to malware and even negative headlines so transparent license terms for your software programs are essential. To prevent software piracy, software vendors and SAAS providers cannot rely on the EULA (end-user license agreement) for license compliance.
PubNub’s real-time connectivity allows you to add communication and insight into your licensing solution.
Want help building apps with PubNub? Reach out to our team of experts.
There are common underlying technologies for a dating app, and in this post, we’ll talk about the major technologies and designs...