This proposal has been approved and the Eclipse Passage project has been created.
Visit the project page for the latest information and development.

Eclipse Passage

Thursday, October 25, 2018 - 02:14 by Alexander Fedorov
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Project
Parent Project
Proposal State
Created
Background

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.

Scope

 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

 

Description

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

That's it!

 

Why Here?

The Eclipse Foundation is the natural choice for Eclipse-oriented projects.

Future Work

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
Project Scheduling

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

Project Leads
Committers
Sergei Kovalchuk
Mentors
Initial Contribution

Currently there is work in progress to transfer the sources to the GitHub

The initial contribution consist of the following:

  • Passage Binary Resources and Components: the 3rd party we need
  • Passage Licensing Integration Components: the base licensing services to be integrated to the target product
  • Passage Licensing Operator Components: the simplistic E4 RCP to manage licensing data

 

Source Repository Type