Implementation:Apache Druid Licenses Registry
| Knowledge Sources | |
|---|---|
| Domains | Licensing, Compliance, Infrastructure |
| Last Updated | 2026-02-10 10:00 GMT |
Overview
licenses.yaml is a structured registry of all third-party dependency licenses bundled with or adapted into the Apache Druid project, required for Apache Software Foundation compliance.
Description
This YAML file contains multi-document entries (separated by ---) that declare every third-party library, source adaptation, and binary dependency used by Druid. Each entry records the dependency name, version, license category (source or binary), the Druid module it belongs to, the license name, optional copyright and notice text, and the specific library coordinates or source paths affected. The file spans over 6800 lines and covers hundreds of dependencies across categories including Apache-licensed libraries, MIT-licensed components, BSD-licensed code, and Eclipse-licensed JARs.
Usage
Reference this file when adding a new third-party dependency to Druid, when auditing license compliance, or when generating the NOTICE and LICENSE files for a Druid release distribution. The Apache release process requires all bundled dependencies to be declared here.
Code Reference
Source Location
- Repository: Apache Druid
- File: licenses.yaml
- Lines: 1-6820
Signature
# Each YAML document follows this structure:
---
name: <dependency or adapted code name>
license_category: source | binary
module: <druid module path>
license_name: <SPDX or descriptive license name>
version: <version string> # optional
copyright: <copyright holder> # optional
license_file_path: <path to license file> # optional
libraries: # for binary dependencies
- <groupId>: <artifactId>
source_paths: # for source adaptations
- <path within repo>
notice: | # optional NOTICE text
<notice content>
Import
# Parse the license registry (example with Python)
python -c "
import yaml
with open('licenses.yaml') as f:
for doc in yaml.safe_load_all(f):
if doc:
print(doc.get('name'), '-', doc.get('license_name'))
"
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Human-readable name of the dependency or adapted source code |
| license_category | string | Yes | Either "source" (code adapted into Druid) or "binary" (JAR/library bundled at runtime) |
| module | string | Yes | The Druid module or extension that uses this dependency |
| license_name | string | Yes | Name of the license (e.g., "Apache License version 2.0", "MIT License") |
| version | string | No | Version of the third-party dependency |
| libraries | list | No | Maven coordinates (groupId: artifactId) for binary dependencies |
| source_paths | list | No | Repository paths for adapted source code |
| notice | string | No | NOTICE text required by the dependency license |
Outputs
| Name | Type | Description |
|---|---|---|
| LICENSE file | text | Generated LICENSE file content for Druid distributions |
| NOTICE file | text | Generated NOTICE file content aggregating all notice texts |
Usage Examples
Adding a New Binary Dependency
---
name: Example Library
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.2.3
libraries:
- com.example: example-lib
Declaring Adapted Source Code
---
name: algorithm adapted from Example Project
license_category: source
module: processing
license_name: MIT License
copyright: Example Author (https://github.com/example/project)
license_file_path: licenses/src/example.MIT
source_paths:
- processing/src/main/java/org/apache/druid/example/AdaptedAlgorithm.java