mirror of https://github.com/apache/druid.git
128 lines
5.7 KiB
Markdown
128 lines
5.7 KiB
Markdown
<!--
|
|
~ Licensed to the Apache Software Foundation (ASF) under one
|
|
~ or more contributor license agreements. See the NOTICE file
|
|
~ distributed with this work for additional information
|
|
~ regarding copyright ownership. The ASF licenses this file
|
|
~ to you under the Apache License, Version 2.0 (the
|
|
~ "License"); you may not use this file except in compliance
|
|
~ with the License. You may obtain a copy of the License at
|
|
~
|
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
~
|
|
~ Unless required by applicable law or agreed to in writing,
|
|
~ software distributed under the License is distributed on an
|
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
~ KIND, either express or implied. See the License for the
|
|
~ specific language governing permissions and limitations
|
|
~ under the License.
|
|
-->
|
|
|
|
## License management
|
|
|
|
[All Apache projects are required to provide the `LICENSE` and `NOTICE` files](https://infra.apache.org/licensing-howto.html).
|
|
This document explains how we manage the license of Druid and the libraries that Druid uses.
|
|
|
|
When we do a new release, we distribute 2 packages, i.e., source code package and binary package. Since the binary package
|
|
includes not only Druid itself but also all the dependencies of Druid, its `LICENSE` and `NOTICE` files should cover those dependencies as well.
|
|
As a result, the contents of those files are different and managed separately for source code and binary packages.
|
|
Please read the sections below to understand how we manage the licenses and what to update when you want to add new dependencies.
|
|
|
|
|
|
### Licenses for source code packages
|
|
|
|
The licenses for source code packages are maintained _manually_ in [the `LICENSE` file](https://github.com/apache/druid/blob/master/LICENSE).
|
|
The notices can be found in [the `NOTICE` file`](https://github.com/apache/druid/blob/master/NOTICE) similarly.
|
|
|
|
|
|
### Licenses for binary packages
|
|
|
|
The licenses for binary packages are maintained _automatically_.
|
|
All licenses (for both source code and binary releases) should be registered in [the `licenses.yaml` file](https://github.com/apache/druid/blob/master/licenses.yaml).
|
|
[`generate-binary-license.py`](https://github.com/apache/druid/blob/master/distribution/bin/generate-binary-license.py)
|
|
and [`generate-binary-notice.py`](https://github.com/apache/druid/blob/master/distribution/bin/generate-binary-notice.py)
|
|
will generate the `LICENSE` and `NOTICE` files automatically based on the registry.
|
|
|
|
|
|
### Adding licenses
|
|
|
|
#### When you adopt source codes from other projects into Druid
|
|
|
|
This requires you to update the license and notice for both source code and binary packages.
|
|
First, you should add a new entry in the [`LICENSE`]((https://github.com/apache/druid/blob/master/LICENSE)) for the dependency you are adding.
|
|
For example, [the `CalciteCnfHelper` class](https://github.com/apache/druid/blob/master/processing/src/main/java/org/apache/druid/segment/filter/cnf/CalciteCnfHelper.java)
|
|
is adopted from Apache Calcite. This requires adding the following entries in the `LICENSE` file.
|
|
|
|
```
|
|
SOURCE/JAVA-CORE
|
|
This product contains SQL query planning code adapted from Apache Calcite.
|
|
* processing/src/main/java/org/apache/druid/segment/filter/cnf/CalciteCnfHelper.java
|
|
```
|
|
|
|
If the project provides its own notice, the contents of the notice should be included in the `NOTICE` file of Druid.
|
|
|
|
> **NOTE:** Most projects don't provide notice. If you are not sure whether you need to add a notice, then you probably
|
|
> don't have to unless the dependency you are adding is an Apache project.
|
|
|
|
Going back to the example of Apache Calcite, since all Apache projects provide the `NOTICE` file, you should add the
|
|
following in the [`NOTICE`](https://github.com/apache/druid/blob/master/NOTICE) file.
|
|
|
|
```
|
|
############ SOURCE/JAVA-CORE ############
|
|
|
|
================= Apache Calcite 1.10.0 =================
|
|
Apache Calcite
|
|
Copyright 2012-2016 The Apache Software Foundation
|
|
|
|
This product is based on source code originally developed
|
|
by DynamoBI Corporation, LucidEra Inc., SQLstream Inc. and others
|
|
under the auspices of the Eigenbase Foundation
|
|
and released as the LucidDB project.
|
|
```
|
|
|
|
Second, you also need to add a new entry in [the `licenses.yaml` file](https://github.com/apache/druid/blob/master/licenses.yaml)
|
|
as below.
|
|
|
|
```yaml
|
|
name: SQL query planning code adapted from Apache Calcite
|
|
license_category: source
|
|
module: java-core
|
|
license_name: Apache License version 2.0
|
|
source_paths:
|
|
- processing/src/main/java/org/apache/druid/segment/filter/cnf/CalciteCnfHelper.java
|
|
```
|
|
|
|
|
|
#### When you add a new library dependency into Druid
|
|
|
|
This requires you to update the [the `licenses.yaml` file](https://github.com/apache/druid/blob/master/licenses.yaml).
|
|
For example, to add `aws-java-sdk-core` as a new depdency, you need to add the following entry.
|
|
|
|
```yaml
|
|
name: AWS SDK for Java
|
|
license_category: binary
|
|
module: java-core
|
|
license_name: Apache License version 2.0
|
|
version: 1.11.199
|
|
libraries:
|
|
- com.amazonaws: aws-java-sdk-core
|
|
notice: |
|
|
AWS SDK for Java
|
|
Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
|
|
This product includes software developed by
|
|
Amazon Technologies, Inc (http://www.amazon.com/).
|
|
|
|
**********************
|
|
THIRD PARTY COMPONENTS
|
|
**********************
|
|
This software includes third party software subject to the following copyrights:
|
|
- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty.
|
|
- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc.
|
|
|
|
The licenses for these third party components are included in LICENSE.txt
|
|
```
|
|
|
|
### Updating licenses
|
|
|
|
When you update the version of existing dependencies, you need to update the version not only in the `pom.xml` file but
|
|
also in the `licenses.yaml` file. |