Gabriele Contini
2020-05-10 d55193ac23370e076124553339d9f49624e53934
improve docs
7个文件已修改
1个文件已添加
72 ■■■■■ 已修改文件
README.md 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/development/Build-the-library-windows.rst 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/development/Build-the-library.md 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/index.rst 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/other/QA.md 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/usage/integration.rst 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/usage/issue-licenses.md 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/usage/multi-feature.rst 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md
@@ -15,7 +15,7 @@
machines, or prevent the usage in  virtualized environments. It is an Open License Manager that helps to keep your 
software closed :smirk: . Among other features if it runs on a "real hardware" it can generate a signature of that hardware and report if the signature doesn't match.
A comprehensive [list of features](http://open-license-manager.github.io/open-license-manager/analysis/features.html), and their status is available in the project wiki.
A comprehensive [list of features](http://open-license-manager.github.io/open-license-manager/analysis/features.html), and their status is available in the project site.
If you plan to use this library or part of it remember to show us your appreciation giving it a 
<a class="github-button" href="https://github.com/open-license-manager/open-license-manager" data-icon="octicon-star" aria-label="Star open-license-manager/open-license-manager on GitHub">star</a> here on GitHub.
@@ -28,7 +28,7 @@
The software is made by 3 main sub-components:
-   a C++ library with a nice C api, `licensecc` with minimal (or no) external dependencies (the part you have to integrate in your software) that is the project you're currently in.
-   a license debugger `lcc-inspector` to be sent to the final customer when there are licensing problems or for calculating the pc hash before issuing the license.
-   a license generator (github project [lcc-license-generator](https://github.com/open-license-manager/lcc-license-generator)) `lcc` for customizing the library and generate the licenses.
-   a license generator (github project [lcc-license-generator](https://github.com/open-license-manager/lcc-license-generator)) `lccgen` for customizing the library and generate the licenses.
 
## How to build
Below an overview of the basic build procedure, you can find detailed instructions for [Linux](http://open-license-manager.github.io/open-license-manager/development/Build-the-library.html) 
@@ -40,14 +40,13 @@
-   tools           : cmake(>3.6), git, make/ninja(linux)
-   libs            : If target is Linux Openssl is required. Windows depends only on system libraries. Boost is necessary to build license generator and to run the tests but it's NOT a dependency of the final `licensecc` library. 
For a complete list of dependencies and supported environments see [the wiki](http://open-license-manager.github.io/open-license-manager/development/Dependencies.html)
For a complete list of dependencies and supported environments see [the project website](http://open-license-manager.github.io/open-license-manager/development/Dependencies.html)
Clone the project. It has submodules, don't forget the `--recursive` option.
```console
git clone --recursive https://github.com/open-license-manager/open-license-manager.git
cd open-license-manager/
cd build
cd open-license-manager/build
```
### build on Linux
doc/development/Build-the-library-windows.rst
@@ -10,11 +10,11 @@
Supported Visual Studio versions are: 
* the latest Visual Studio 2019 (used in development) 
* Visual Studio 2017 used in `travis.ci <https://docs.travis-ci.com/user/reference/windows/>` for automated tests.
* Visual Studio 2017 used in `travis.ci <https://docs.travis-ci.com/user/reference/windows/>`_ for automated tests.
MSVC install prerequisites
============================= 
Git is of course a prerequisite, if you don't have it you can download it from `git-scm.com <https://git-scm.com/download/win>`.
Git is of course a prerequisite, if you don't have it you can download it from `git-scm.com <https://git-scm.com/download/win>`_.
Pre-compiled `versions of boost <https://sourceforge.net/projects/boost/files/boost-binaries/>`_ for windows are available 
at SourceForge. Choose the version that matches the desired architecture (eg. for Visual Studio 2019 64 bit you can download
@@ -22,7 +22,6 @@
if unsure download the full `boost_1_71_0-bin-msvc-all-32-64.7z <https://dl.bintray.com/boostorg/release/1.71.0/binaries/boost_1_71_0-bin-msvc-all-32-64.7z>`_ archive. 
With boost 1.71 it is recommended to download one of the `latest cmake <https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-win64-x64.msi>`_ (>3.16). The version with Visual Studio 2019 isn't the most up to date.
Checkout the code
==================
doc/development/Build-the-library.md
@@ -34,7 +34,7 @@
export CXX=/opt/rh/devtoolset-7/root/usr/bin/g++
```
Centos 7 ships with CMake 2.8.11 that's not supported anymore. You need to compile and install a newer (>3.6) version of CMake.
Centos 7 ships with CMake 2.8.11 that's not supported. You need to compile and install a newer (>3.6) version of CMake.
```console
wget https://cmake.org/files/v3.11/cmake-3.11.0.tar.gz 
@@ -46,7 +46,7 @@
cmake --version #(check it's 3.11.0) 
```
If you don't want to install all these prerequisites you can also build the library in a docker container. Check for the corresponding section in the `.travis.yml` file at the base of the project.
If you don't want to install all these prerequisites in your machine you can also build the library in a docker container. Check for the corresponding section in the `.travis.yml` file at the base of the project.
### CentOS 8
Install prerequisites:
@@ -72,11 +72,10 @@
Minimum prerequisites
*   gcc => 4.9, cmake => 3.6
*   zlib, openssl => 1.0.2 
*   Boost => 1.53 (If you want to compile your own boost version remember to use the flag `runtime-link=static`)
*   Boost => 1.57 (If you want to compile your own boost version remember to use the flag `runtime-link=static`)
Optional prerequisites:
*   Dbus (if you want to enable dbus generated identifiers)
*   Doxygen
*   Doxygen, Sphynx for documentation
## Download and compile
doc/index.rst
@@ -42,7 +42,7 @@
The software is made by 4 main sub-components:
* ``licensecc``    : the C++ library with a C api (the part you have to integrate in your software) with minimal (or no) external dependencies. This is the project you're currently looking at.
* ``lccinspector`` : a license debugger to be sent to the final customer to diagnose licensing problems or for calculating the pc hash before issuing the license.
* ``lccinspector`` : a license debugger to be sent to the final customer to diagnose licensing problems or for calculating the hardware id before issuing the license.
* ``lccgen``       : a license generator (github project `lcc-license-generator`_ ) to initialize the library and generate the licenses.
* ``examples``     : usage samples (github project `examples <https://github.com/open-license-manager/examples>`_ ).
doc/other/QA.md
@@ -9,19 +9,42 @@
generated and the public key is included into the compiled code, in a way that every project gets its own signature keys. 
See [Development and Usage](../analysis/Development-And-Usage-Workflow)
## Project status
### Help! it doesn't compile!
Every `licensecc` release is tested in the following environments:
* Centos 7-8
* Ubuntu 16.04-18.04 (boost 1.65~1.71, openssl 1.1)
* Windows server 1809 (MSVC 2017, boost 1.71)
* Windows 7-10 (MSVC 2019, boost 1.71)
Tests are carried out automatically every commit. You can see the current build status on [travis-ci](https://travis-ci.org/open-license-manager/open-license-manager).
If you can't get it compiling:
* be sure to follow the compilation instructions for [Windows](../development/Build-the-library-windows) or [Linux](../development/Build-the-library).
* post a question on the [user forum](https://groups.google.com/forum/#!forum/licensecc)
### Help! it used to compile but now it gives me error.
Updating `licensecc` may pose some issue, since it's still in alpha stage and we may take non-backward compatible changes.
We suggest after every update, if you're building from `develop` to clean the `build` folder and run the cmake configuration from beginning.
If this is not enough, move/backup the contents of your `projects` folder. Let `licensecc` to generate it new. Later
you need to merge the newly generated folder with the one you saved.
## Project statuss
### Project general context (is the project still maintained?)
This project started as a week-end project in 2014, donated and almost forgotten. This doesn't necessarily meant bad. It was "functional". Thanks to the effort of some people that are using it, and to the help of many of you it has been kept up to date (2019). Recently there has been a long waited enhancement regarding license management procedures.
This project started as a week-end project in 2014, donated and almost forgotten. This doesn't necessarily meant bad. It was "functional". Thanks to the effort of some people that are using it, and to the help of many of you it has been kept up to date (2020). Now it has got a _refresh_ due to some project having interest in it..
### Is it production ready?
Let's be honest. It's still in a very alhpa ![experimental](http://badges.github.io/stability-badges/dist/experimental.svg)
Let's be honest It is still in alhpa ![experimental](http://badges.github.io/stability-badges/dist/experimental.svg)
stage. This means it's usable with some effort. Some companies are actively using it in production to issue demo licenses and few production licenses. 
If you plan to use it in a scenario where you need to issue hundreds of licenses plan some maintaining effort.
If you plan to use it in a scenario where you need to issue hundreds of licenses plan some maintaining effort, or better use a more mature or commercial licensing software.
### Challenges ?
### Challenges.
The most challenging aspect is the number of environment/libraries we must work with. 
We've recently set up automated tests on Travis CI to help contributors to verify their code automatically in conditions they've not thought about.
We've set up automated tests on Travis CI in about 10 different configurations to help contributors to verify their code automatically in conditions they've not thought about.
If you plan to contribute you can quickly check your pull requests are compiling before notifying us by visiting the [travis-ci website](https://travis-ci.org/open-license-manager/open-license-manager).
 
### Open License Manager and "the community"
Open License Manager has a very strange relationship with "the community", its aim is to protect proprietary software 
doc/usage/integration.rst
@@ -34,6 +34,8 @@
                     | Alternatively it is possible to specify a component name in the component section of find_package.
==================== ====================
Call Licensecc from your code
*******************************
The file containing the public api is ``include/licensecc/licensecc.h``. Functions in there are considered stable.
doc/usage/issue-licenses.md
@@ -32,12 +32,12 @@
| Parameter        | Description                                                                                  |
|------------------|----------------------------------------------------------------------------------------------|
|base64,b          | the license is encoded for inclusion in environment variables                                |
|valid-from        | Specify the start of the validity for this license. Format YYYYMMDD. If not specified defaults to today. |
|valid-to          | The expire date for this license. Format YYYYMMDD. If not specified the license won't expire |
|valid-from        | Specify the start of the validity for this license. Format YYYY-MM-DD. If not specified defaults to today. |
|valid-to          | The expire date for this license. Format YYYY-MM-DD. If not specified the license won't expire |
|client-signature  | The signature of the pc that requires the license. It should be in the format XXXX-XXXX-XXXX-XXXX. If not specified the license won't be linked to a specific pc. |
|output-file-name  | License output file path.                                                                    |
|extra-data        | Application specific data. They'll be returned when calling the `acquire_license` method   |
|feature-names     | Comma separated list of features to license. See `multi-feature` discussion.               |
Note:
<sup>1</sup> a project is a container for the customizations of open-license-manager. In special way its keys and build parameters. The name should reflect the name of the software you want to add a license to. The project name appears in the license file.
doc/usage/multi-feature.rst
New file
@@ -0,0 +1,4 @@
#########################################
Multi-component software
#########################################