license switch agpl -> busl1, sprints work, new product advisories
This commit is contained in:
@@ -1,25 +1,26 @@
|
||||
# License Compatibility Analysis
|
||||
|
||||
**Document Version:** 1.0.0
|
||||
**Last Updated:** 2025-12-26
|
||||
**StellaOps License:** AGPL-3.0-or-later
|
||||
**Document Version:** 1.1.0
|
||||
**Last Updated:** 2026-01-20
|
||||
**StellaOps License:** BUSL-1.1
|
||||
|
||||
This document analyzes the compatibility of third-party licenses with StellaOps' AGPL-3.0-or-later license.
|
||||
This document analyzes the compatibility of third-party licenses with StellaOps' BUSL-1.1 license and Additional Use Grant.
|
||||
|
||||
---
|
||||
|
||||
## 1. AGPL-3.0-or-later Overview
|
||||
## 1. BUSL-1.1 Overview
|
||||
|
||||
The GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later) is a strong copyleft license that:
|
||||
The Business Source License 1.1 (BUSL-1.1) is a source-available license that:
|
||||
|
||||
1. **Requires** source code disclosure for modifications
|
||||
2. **Requires** network use disclosure (Section 13) - users interacting over a network must be able to receive the source code
|
||||
3. **Allows** linking with permissively-licensed code (MIT, Apache-2.0, BSD)
|
||||
4. **Prohibits** linking with incompatibly-licensed code (GPL-2.0-only, proprietary)
|
||||
1. **Allows** non-production use, modification, and redistribution of the Licensed Work
|
||||
2. **Allows** limited production use only as granted in the Additional Use Grant
|
||||
3. **Requires** preservation of the license text and attribution notices
|
||||
4. **Provides** a Change License (Apache-2.0) that becomes effective on the Change Date
|
||||
5. **Restricts** SaaS/hosted service use beyond the Additional Use Grant
|
||||
|
||||
### Key Compatibility Principle
|
||||
|
||||
> Code licensed under permissive licenses (MIT, Apache-2.0, BSD, ISC) can be incorporated into AGPL projects. The combined work is distributed under AGPL terms.
|
||||
> Permissive-licensed code (MIT, BSD, Apache) can be incorporated into BUSL-1.1 projects without changing the overall license. Strong copyleft or service-restriction licenses (GPL/AGPL/SSPL) impose obligations that conflict with BUSL-1.1 distribution terms or Additional Use Grant restrictions.
|
||||
|
||||
---
|
||||
|
||||
@@ -27,12 +28,12 @@ The GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later) is a str
|
||||
|
||||
### 2.1 Fully Compatible (Inbound)
|
||||
|
||||
These licenses are fully compatible with AGPL-3.0-or-later. Code under these licenses can be incorporated into StellaOps.
|
||||
These licenses are fully compatible with BUSL-1.1. Code under these licenses can be incorporated into StellaOps.
|
||||
|
||||
| License | SPDX | Compatibility | Rationale |
|
||||
|---------|------|---------------|-----------|
|
||||
| MIT | MIT | **Yes** | Permissive, no copyleft restrictions |
|
||||
| Apache-2.0 | Apache-2.0 | **Yes** | Permissive, patent grant included |
|
||||
| Apache-2.0 | Apache-2.0 | **Yes** | Same license, patent grant included |
|
||||
| BSD-2-Clause | BSD-2-Clause | **Yes** | Permissive, minimal restrictions |
|
||||
| BSD-3-Clause | BSD-3-Clause | **Yes** | Permissive, no-endorsement clause only |
|
||||
| ISC | ISC | **Yes** | Functionally equivalent to MIT |
|
||||
@@ -41,95 +42,89 @@ These licenses are fully compatible with AGPL-3.0-or-later. Code under these lic
|
||||
| Unlicense | Unlicense | **Yes** | Public domain dedication |
|
||||
| PostgreSQL | PostgreSQL | **Yes** | Permissive, similar to MIT/BSD |
|
||||
| Zlib | Zlib | **Yes** | Permissive |
|
||||
| WTFPL | WTFPL | **Yes** | Do what you want |
|
||||
| BlueOak-1.0.0 | BlueOak-1.0.0 | **Yes** | Permissive |
|
||||
| Python-2.0 | Python-2.0 | **Yes** | Permissive |
|
||||
|
||||
### 2.2 Compatible with Conditions
|
||||
|
||||
| License | SPDX | Compatibility | Conditions |
|
||||
|---------|------|---------------|------------|
|
||||
| LGPL-2.1-or-later | LGPL-2.1-or-later | **Yes** | Must allow relinking |
|
||||
| LGPL-3.0-or-later | LGPL-3.0-or-later | **Yes** | Must allow relinking |
|
||||
| MPL-2.0 | MPL-2.0 | **Yes** | File-level copyleft; MPL code must remain in separate files |
|
||||
| GPL-3.0-or-later | GPL-3.0-or-later | **Yes** | Combined work is AGPL-3.0+ |
|
||||
| AGPL-3.0-or-later | AGPL-3.0-or-later | **Yes** | Same license |
|
||||
| LGPL-2.1-or-later | LGPL-2.1-or-later | **Yes** | Must allow relinking; library boundary required |
|
||||
| LGPL-3.0-or-later | LGPL-3.0-or-later | **Yes** | Must allow relinking; library boundary required |
|
||||
| MPL-2.0 | MPL-2.0 | **Yes** | File-level copyleft; MPL files remain isolated |
|
||||
|
||||
### 2.3 Incompatible
|
||||
|
||||
These licenses are **NOT** compatible with AGPL-3.0-or-later:
|
||||
These licenses are **NOT** compatible with keeping StellaOps under BUSL-1.1:
|
||||
|
||||
| License | SPDX | Issue |
|
||||
|---------|------|-------|
|
||||
| GPL-2.0-only | GPL-2.0-only | Version lock conflicts with AGPL-3.0 |
|
||||
| SSPL-1.0 | SSPL-1.0 | Additional restrictions |
|
||||
| GPL-2.0-only | GPL-2.0-only | Requires GPL relicensing; incompatible with BUSL distribution |
|
||||
| GPL-2.0-or-later | GPL-2.0-or-later | Requires GPL relicensing; incompatible with BUSL distribution |
|
||||
| GPL-3.0-only | GPL-3.0-only | Requires GPL distribution for combined work |
|
||||
| GPL-3.0-or-later | GPL-3.0-or-later | Requires GPL distribution for combined work |
|
||||
| AGPL-3.0-only | AGPL-3.0-only | Network copyleft conflicts with BUSL restrictions |
|
||||
| AGPL-3.0-or-later | AGPL-3.0-or-later | Network copyleft conflicts with BUSL restrictions |
|
||||
| SSPL-1.0 | SSPL-1.0 | Service source disclosure conflicts with BUSL restrictions |
|
||||
| Commons Clause | LicenseRef-Commons-Clause | Commercial use restrictions conflict with BUSL grant |
|
||||
| Proprietary | LicenseRef-Proprietary | No redistribution rights |
|
||||
| Commons Clause | LicenseRef-Commons-Clause | Commercial use restrictions |
|
||||
| BUSL-1.1 | BUSL-1.1 | Production use restrictions |
|
||||
|
||||
---
|
||||
|
||||
## 3. Distribution Models
|
||||
|
||||
### 3.1 Source Distribution (AGPL Compliant)
|
||||
### 3.1 Source Distribution (BUSL-1.1 Compliant)
|
||||
|
||||
When distributing StellaOps source code:
|
||||
|
||||
```
|
||||
StellaOps (AGPL-3.0-or-later)
|
||||
├── StellaOps code (AGPL-3.0-or-later)
|
||||
├── MIT-licensed deps (retain copyright notices)
|
||||
├── Apache-2.0 deps (retain NOTICE files)
|
||||
└── BSD deps (retain copyright notices)
|
||||
StellaOps (BUSL-1.1)
|
||||
+-- StellaOps code (BUSL-1.1)
|
||||
+-- MIT/BSD deps (retain notices)
|
||||
+-- Apache-2.0 deps (retain NOTICE files)
|
||||
+-- MPL/LGPL deps (retain file/library boundaries)
|
||||
```
|
||||
|
||||
**Requirements:**
|
||||
- Include full AGPL-3.0-or-later license text
|
||||
- Preserve all third-party copyright notices
|
||||
- Preserve all NOTICE files from Apache-2.0 dependencies
|
||||
- Provide complete corresponding source
|
||||
- Include full BUSL-1.1 license text with Additional Use Grant
|
||||
- Preserve all third-party copyright and attribution notices
|
||||
- Preserve NOTICE files from Apache-2.0 dependencies
|
||||
- Mark modified files with prominent change notices
|
||||
|
||||
### 3.2 Binary Distribution (AGPL Compliant)
|
||||
### 3.2 Binary Distribution (BUSL-1.1 Compliant)
|
||||
|
||||
When distributing StellaOps binaries (containers, packages):
|
||||
|
||||
```
|
||||
StellaOps Binary
|
||||
├── LICENSE (AGPL-3.0-or-later)
|
||||
├── NOTICE.md (all attributions)
|
||||
├── third-party-licenses/ (full license texts)
|
||||
└── Source availability: git.stella-ops.org
|
||||
+-- LICENSE (BUSL-1.1)
|
||||
+-- NOTICE.md (all attributions)
|
||||
+-- third-party-licenses/ (full license texts)
|
||||
+-- Source link (optional, transparency only)
|
||||
```
|
||||
|
||||
**Requirements:**
|
||||
- Include AGPL-3.0-or-later license
|
||||
- Include BUSL-1.1 license with Additional Use Grant
|
||||
- Include NOTICE file with all attributions
|
||||
- Provide mechanism to obtain source code
|
||||
- For network services: provide source access per Section 13
|
||||
- Include license texts for vendored code
|
||||
|
||||
### 3.3 Network Service (Section 13)
|
||||
### 3.3 Network Service (No Copyleft Clause)
|
||||
|
||||
StellaOps is primarily deployed as network services. AGPL Section 13 requires:
|
||||
|
||||
> If you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network [...] an opportunity to receive the Corresponding Source of your version.
|
||||
|
||||
**StellaOps Compliance:**
|
||||
- Source code is available at `https://git.stella-ops.org`
|
||||
- Web UI includes "Source" link in footer/about page
|
||||
- API responses include `X-Source-URL` header option
|
||||
- Documentation includes source availability notice
|
||||
BUSL-1.1 restricts SaaS/hosted service use beyond the Additional Use Grant. Operating StellaOps as a service is permitted only within the grant limits or under a commercial license; see `LICENSE` for details.
|
||||
|
||||
### 3.4 Aggregation (Not Derivation)
|
||||
|
||||
The following are considered **aggregation**, not derivation:
|
||||
|
||||
| Scenario | Classification | AGPL Impact |
|
||||
|----------|---------------|-------------|
|
||||
| Scenario | Classification | BUSL-1.1 Impact |
|
||||
|----------|---------------|-------------------|
|
||||
| PostgreSQL database | Aggregation | PostgreSQL stays PostgreSQL-licensed |
|
||||
| RabbitMQ message broker | Aggregation | RabbitMQ stays MPL-2.0 |
|
||||
| Docker containers | Aggregation | Base image licenses unaffected |
|
||||
| Kubernetes orchestration | Aggregation | K8s stays Apache-2.0 |
|
||||
| Hardware (HSM) | Interface only | HSM license unaffected |
|
||||
|
||||
**Rationale:** These components communicate via network protocols, APIs, or standard interfaces. They are not linked into StellaOps binaries.
|
||||
**Rationale:** These components communicate via network protocols, APIs, or standard interfaces and are not linked into StellaOps binaries.
|
||||
|
||||
---
|
||||
|
||||
@@ -180,18 +175,18 @@ The following are considered **aggregation**, not derivation:
|
||||
| Usage | PKCS#11 interface only |
|
||||
| Requirement | Customer obtains own license |
|
||||
|
||||
**Analysis:** StellaOps provides only the integration code (AGPL-3.0-or-later). CryptoPro CSP binaries are never distributed by StellaOps. This is a clean separation:
|
||||
**Analysis:** StellaOps provides only the integration code (BUSL-1.1). CryptoPro CSP binaries are never distributed by StellaOps.
|
||||
|
||||
```
|
||||
StellaOps Ships:
|
||||
├── PKCS#11 interface code (AGPL-3.0-or-later)
|
||||
├── Configuration documentation
|
||||
└── Integration tests (mock only)
|
||||
+-- PKCS#11 interface code (BUSL-1.1)
|
||||
+-- Configuration documentation
|
||||
+-- Integration tests (mock only)
|
||||
|
||||
Customer Provides:
|
||||
├── CryptoPro CSP license
|
||||
├── CryptoPro CSP binaries
|
||||
└── Hardware tokens (optional)
|
||||
+-- CryptoPro CSP license
|
||||
+-- CryptoPro CSP binaries
|
||||
+-- Hardware tokens (optional)
|
||||
```
|
||||
|
||||
### 4.6 AlexMAS.GostCryptography (MIT)
|
||||
@@ -203,7 +198,7 @@ Customer Provides:
|
||||
| Usage | Source vendored |
|
||||
| Requirement | Include copyright notice; license file preserved |
|
||||
|
||||
**Analysis:** The fork is MIT-licensed and compatible with AGPL-3.0-or-later. The combined work (StellaOps + fork) is distributed under AGPL-3.0-or-later terms.
|
||||
**Analysis:** The fork is MIT-licensed and compatible with BUSL-1.1. The combined work remains BUSL-1.1 with MIT attribution preserved.
|
||||
|
||||
### 4.7 axe-core/Playwright (@axe-core/playwright - MPL-2.0)
|
||||
|
||||
@@ -212,7 +207,7 @@ Customer Provides:
|
||||
| License | MPL-2.0 |
|
||||
| Compatibility | Yes (with conditions) |
|
||||
| Usage | Dev dependency only |
|
||||
| Requirement | MPL files stay in separate files |
|
||||
| Requirement | MPL files remain in separate files |
|
||||
|
||||
**Analysis:** MPL-2.0 is file-level copyleft. Since this is a dev dependency used only for accessibility testing (not distributed in production), there are no special requirements for end-user distribution.
|
||||
|
||||
@@ -222,25 +217,25 @@ Customer Provides:
|
||||
|
||||
### 5.1 StellaOps Core
|
||||
|
||||
All StellaOps-authored code is licensed under AGPL-3.0-or-later:
|
||||
All StellaOps-authored code is licensed under BUSL-1.1:
|
||||
|
||||
```
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
Copyright (C) 2025 stella-ops.org
|
||||
SPDX-License-Identifier: BUSL-1.1
|
||||
Copyright (C) 2026 stella-ops.org
|
||||
```
|
||||
|
||||
### 5.2 Documentation
|
||||
|
||||
Documentation is licensed under:
|
||||
- Code examples: AGPL-3.0-or-later (same as source)
|
||||
- Code examples: BUSL-1.1 (same as source)
|
||||
- Prose content: CC-BY-4.0 (where specified)
|
||||
- API specifications: AGPL-3.0-or-later
|
||||
- API specifications: BUSL-1.1
|
||||
|
||||
### 5.3 Configuration Samples
|
||||
|
||||
Sample configuration files (`etc/*.yaml.sample`) are:
|
||||
- Licensed under: AGPL-3.0-or-later
|
||||
- Derived configurations by users: User's choice (no copyleft propagation for configuration)
|
||||
- Licensed under: BUSL-1.1
|
||||
- Derived configurations by users: User's choice (no copyleft propagation)
|
||||
|
||||
---
|
||||
|
||||
@@ -251,19 +246,18 @@ Sample configuration files (`etc/*.yaml.sample`) are:
|
||||
- [ ] All new dependencies checked against allowlist
|
||||
- [ ] NOTICE.md updated for new MIT/Apache-2.0/BSD dependencies
|
||||
- [ ] third-party-licenses/ includes texts for vendored code
|
||||
- [ ] No GPL-2.0-only or incompatible licenses introduced
|
||||
- [ ] Source remains available at documented URL
|
||||
- [ ] No GPL/AGPL or incompatible licenses introduced
|
||||
- [ ] LICENSE and NOTICE shipped with source and binary distributions
|
||||
|
||||
### 6.2 For StellaOps Operators (Self-Hosted)
|
||||
|
||||
- [ ] Source code available to network users (link in UI/docs)
|
||||
- [ ] Modifications (if any) made available under AGPL-3.0-or-later
|
||||
- [ ] LICENSE and NOTICE preserved in deployment
|
||||
- [ ] Commercial components (CryptoPro, HSM) separately licensed
|
||||
- [ ] NOTICE file preserved in deployment
|
||||
- [ ] Attribution notices accessible to end users (docs or packaged file)
|
||||
|
||||
### 6.3 For Contributors
|
||||
|
||||
- [ ] New code contributed under AGPL-3.0-or-later
|
||||
- [ ] New code contributed under BUSL-1.1
|
||||
- [ ] No proprietary code introduced
|
||||
- [ ] Third-party code properly attributed
|
||||
- [ ] License headers in new files
|
||||
@@ -273,13 +267,13 @@ Sample configuration files (`etc/*.yaml.sample`) are:
|
||||
## 7. FAQ
|
||||
|
||||
### Q: Can I use StellaOps commercially?
|
||||
**A:** Yes. AGPL-3.0-or-later permits commercial use. You must provide source code access to users interacting with your deployment over a network.
|
||||
**A:** Yes, within the Additional Use Grant limits or under a commercial license. SaaS/hosted third-party use requires a commercial license.
|
||||
|
||||
### Q: Can I modify StellaOps for internal use?
|
||||
**A:** Yes. If modifications are internal only (not exposed to network users), no disclosure required.
|
||||
**A:** Yes. Non-production use is permitted, and production use is allowed within the Additional Use Grant or with a commercial license.
|
||||
|
||||
### Q: Does using StellaOps make my data AGPL-licensed?
|
||||
**A:** No. AGPL applies to software, not data processed by the software. Your SBOMs, vulnerability data, and configurations remain yours.
|
||||
### Q: Does using StellaOps make my data BUSL-licensed?
|
||||
**A:** No. BUSL-1.1 applies to software, not data processed by the software. Your SBOMs, vulnerability data, and configurations remain yours.
|
||||
|
||||
### Q: Can I integrate StellaOps with proprietary systems?
|
||||
**A:** Yes, via API/network interfaces. This is aggregation, not derivation. Your proprietary systems retain their licenses.
|
||||
@@ -291,13 +285,12 @@ Sample configuration files (`etc/*.yaml.sample`) are:
|
||||
|
||||
## 8. References
|
||||
|
||||
- [GNU AGPL-3.0 FAQ](https://www.gnu.org/licenses/gpl-faq.html)
|
||||
- [FSF License Compatibility](https://www.gnu.org/licenses/license-list.html)
|
||||
- [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0)
|
||||
- [Apache 2.0 FAQ](https://www.apache.org/foundation/license-faq.html)
|
||||
- [SPDX License List](https://spdx.org/licenses/)
|
||||
- [Apache-2.0/GPL Compatibility](https://www.apache.org/licenses/GPL-compatibility.html)
|
||||
- [REUSE Best Practices](https://reuse.software/tutorial/)
|
||||
|
||||
---
|
||||
|
||||
*Document maintained by: Legal + Security Guild*
|
||||
*Last review: 2025-12-26*
|
||||
*Last review: 2026-01-20*
|
||||
|
||||
Reference in New Issue
Block a user