Some time ago we were asked to recommend a licence checking solution for an Eclipse RCP. There are vendors who is providing that, but honestly we were never happy with any of them. It always requires a lot of resources to adopt the license checking engine to Eclipse runtime or even to Java runtime. Then you need to find a way to modify the existing product, as it needs to check the license at the right moment and react accordingly. And finally the vendor licensing model may not fit your product distribution needs.
So, we decided to create vendor-neutral OSGi-based Eclipse-friendy licensing engine with related libraries and infrastructure tools under Apache-2.0 or EPL-2.0.
Eclipse Passage provides a complete solution to control the usage of licensed functionality and to manage licensing-related data for OSGi-based and Eclipse-based products.
- Lightweight runtime interfaces to define actors and interactions for the licensing domain
- Licensing domain model to manage licensing-related data
- Equinox-based implementation that controls the usage of licensed functionality
- Licensing condition evaluators to support time-based, node-locked and other types of conditions
- Library of functionality restrictors to support different strategies from friendly reminding to brutal blocking.
- Licensing Operator client and backend to manage licensing data
- Licensing server to support floating licenses
The Eclipse Passage project aims to provide rich and easily adoptable capabilities to define and control licensing constraints.
The usage story starts in Licensing Operator client:
- Define a product you would like to ship
- Generate a pair of keys for defined product
- Send the public key and product description to your development team
- Discuss the features with your marketing and map the features to the product
- Send the descriptions of the features to your development team
Then development team needs to do the following:
- Embed the public key to your product
- Bind functionality to feature identifiers
- Include Licensing Runtime bundles to the product
Well, you are ready for the product shipment, at least from Passage point of view. After some time you hopefully will have fantastic download rate and a lot of requests to obtain a license, you need to use Licensing Operator client again:
- Register licensee: either user or company
- Formulate the license conditions: allow a set of features for particular node or for some period or whatever you would like
- Encrypt the license file and send it to the user: you will need a product private key for it - but we hope you still have it in some safe place
Finally, the Licensing Runtime is starting its work inside your product deployed to the customer environment using the simple algo:
- Collect the configuration requirements (feature identifiers to be controlled)
- Mine the license conditions using different approach, the default may be to inspect a subfolder @user.home
- Evaluate the mined conditions against current environment state (time now, running node id) to obtain feature permissions tickets
- Put both configuration requirements and feature permission tickets to the examiner to receive verdict (restrictions)
- Call restriction executors to have desired effect: show status bar reminder or block everything
The Eclipse Foundation is the natural choice for Eclipse-oriented projects.
We are using a number of OSS components with compatible licenses: MIT, Apache-2.0, EPL-1.0, please see the NOTICE for more details.
The plan is to switch to Eclipse Orbit bundles.
The initial contribution is expected in the early December, 2018
The first release version 0.x.0 is expected in the late December, 2018
Then the plan is to sync the release schedule with Eclipse SimRel
The future work is to provide the following:
- server backend to manage licensing data
- network condition miners to support floating licenses
- UI restriction executors for E4 Application Model Elements