An Introduction to Offline Licensing with the C++ LicenseSpring SDK.
Software License Managers: The Complete Guide
You're a Software Vendor that clocked in many thousands of man-hours in the development of your web app, SaaS, Platform, or other Software Application and you are now looking was sharing your work with the world! If, like many, you are confused what a License Manager is and does, you're not alone! Marketing material in the Software industry tends to be unfortunately riddled in jargon, as it's sometimes difficult to understand what is being said. My goal in this post is to help demystify what a Software License Manager is and can be, and how it fits in your process of distributing your Software to it's intended audience.
What is a License Manager, anyway?
It's not so straightforward to get an answer to this, since, people refer to two separate systems when talking about Software License Managers. To avoid confusion, we thought it would be helpful to provide the two definitions of what people commonly refer to as a license manager:
SAM - The Software License Manager that is used for internal Audit & Compliance
When you look up Software License Manager on Google or on Software Review Sites, most ads, and top search results point to services offered by large enterprise companies (usually with deep pockets and oversized marketing budgets), and there are tons of companies to choose from!
SAM stands for a Software Asset Manager. It's usually a console that large companies use to keep track of Software Licenses they acquired and where they are being used. This is helpful in knowing which licenses are used, and optimize software licensing costs. SAMs also make License Usage auditing easier: Software Vendors who sell and deploy their software to Enterprise customers sometimes have clauses in their agreements allowing them to see how their software is being used, and a SAM will make this audit process automated (I'm looking at YOU, Oracle!).
(Disclosure: LicenseSpring is not a SAM, and apart from a mild fascination with Larry Ellison, I have no affiliation to Oracle, the company.)
SLMS - The License Manager for Vendors who issue licenses to others
SLMS stands for "Software License Management Software". This is a term that refers to a suite of tools that software vendors use to configure the state of the software they distribute according to their license agreements. This will typically include:
- Some sort of License Server in charge of issuing licenses, and keeping track of which licenses were issued to whom, for which product, with which entitlements (validity periods, modules to switch on, how many devices can share a license etc.) I'm intentionally vague on the nature of this license server, since that also falls in the category of a Cloud Provider (a LaaS!), or a self-hosted solution.
- A Software Licensing API, a Licensing SDK, or some other way to interact between the vendor's app (your app that you distribute). This API is what you use to activate / validate a license, perform license checks, and generally configure the state of your application according to your license agreement for that given end-user.
LicenseSpring is a SLMS. We're also a LaaS (Licensing-as-a-Service).
(Disclosure: Ok you got me, I've never heard of an `SLMS` before, I made up my own acronym for that one. That said, I defend my initiative to distinguish between a SAM, and a Vendor License Manager and VLM just doesn't sound right. I told you the industry is riddled in jargon!)
Who needs a Software License Manager?
TL;DR Not everyone!
In terms of pretty much any metric, usage / compute cycles used etc. Open Source Software is the most commonly-used licensing mechanism for software that is intended to be used externally. There usually isn't much need for any sort of account / monitoring / enforcement tool given the permissive nature of Licensing for Open-Sourced Software, and the Community tends to be quite good at abiding by the terms. If you are distributing Open Source Software that you authored, then you usually just need to include the License agreement with your code. Here's an exhaustive list of them.
If you're developing and publishing Commercial software, however, you will most likely need a way to issue licenses for your end users. For example, if you're packaging your software with different editions, looking to issue trial licenses, turn on/off modules, revoke licenses for customers that didn't pay, or help prevent unauthorized usage of your creations.
What Features should your Software License Manager Offer?
Pretty much everything on this list should be offered by your Software License Manager one way or another:
- All the License Models you see yourself implementing, including support for the right authorization method for your app (Key-based, user-based, SAML/IDPs etc.)
- A Vendor platform for you to log in to and manage all of those licenses
- An API or SDKs to add to the software you distribute
- Integrations with your other systems (like your E-commerce stores or billing system, CRMs, ERPs etc.)
- Optional: Self-serve portals to make it easy for end users to manage their own licenses, or Distributors and resellers to distribute your applications, and others
Which is Better, a Cloud-Based License Manager, or a Self-Hosted one?
I actually wrote a whole post on the merits of operating your own License Server vs using a Cloud Provider. TL;DR: if you have extreme reliability, or security requirements, and love to run your own infrastructure, then Self-Hosted is for you. For all other mortals, a L-a-a-S is probably an easier to implement, cheaper, and overall better solution (maybe us???)