Repository navigation
8.2 Licensing
Relevant source files
The following files were used as context for generating this wiki page:
This wiki page details the legal framework, SPDX identifier conventions, and downstream integration implications governing the corpus-ipc codebase. The library is distributed under a dual MIT/Apache-2.0 license LICENSE-MIT:1-21, LICENSE-APACHE-2.0:1-128, enabling permissive integration into proprietary and open-source compute engines, transport daemons, and client services without copyleft restrictions.
Sources: LICENSE-MIT:1-21, LICENSE-APACHE-2.0:1-128
corpus-ipc is distributed under the terms of both the MIT License and the Apache License (Version 2.0). Downstream users may choose either license to govern their use, distribution, and modification of the software.
The MIT license provides permissive terms for unrestricted use, modification, and distribution LICENSE-MIT:5-9.
- Condition: The copyright notice and permission notice must accompany all copies or substantial portions of the software LICENSE-MIT:12-13.
- Disclaimer: The software is provided without warranty of any kind LICENSE-MIT:15-21.
The Apache 2.0 license grants similar permissions while adding explicit definitions for patent and contribution grants.
- Grant of Copyright License: Contributors grant a perpetual, worldwide, non-exclusive, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, and distribute the work LICENSE-APACHE-2.0:66-71.
- Grant of Patent License: Contributors grant an explicit patent license for claims necessarily infringed by their contributions LICENSE-APACHE-2.0:73-81.
- Redistribution: Recipients must receive a copy of the license, retain attribution notices, and mark modified files LICENSE-APACHE-2.0:89-105.
Sources: LICENSE-MIT:1-21, LICENSE-APACHE-2.0:1-128
Under the Apache 2.0 and MIT frameworks, code submitted to the repository constitutes a "Contribution" intended for incorporation into the shared "Work" LICENSE-APACHE-2.0:48-64.
This diagram maps natural language contribution concepts to code repository structures and artifact distribution forms.
graph TD
subgraph "NaturalLanguageSpace"
Developer["Contributor"] --> Submission["ContributionSubmission"]
end
subgraph "CodeEntitySpace"
Submission --> Work["Work (corpus-ipc Repository)"]
Work --> SourceForm["Source Form (src/*.rs)"]
Work --> ObjectForm["Object Form (Compiled Target Artifacts)"]
SourceForm --> MitLicense["LICENSE-MIT"]
SourceForm --> ApacheLicense["LICENSE-APACHE-2.0"]
end
Sources: LICENSE-APACHE-2.0:48-64, LICENSE-MIT:5-9
The dual MIT/Apache-2.0 license model impacts how downstream components (such as thalamic-relay, brainstem-daemon, and external compute engines) integrate with corpus-ipc.
Downstream applications linking against corpus-ipc are not subject to copyleft infection:
-
Proprietary Linking: Proprietary applications can statically or dynamically link against
corpus-ipcand implement traits likeIpcBackendwithout releasing proprietary source code. -
Custom Protocols: Extensions of
IpcMessageor custom backend implementations remain under the user's chosen licensing terms.
| Obligation / Feature | MIT License | Apache-2.0 License |
|---|---|---|
| Copyleft Restriction | None | None |
| Source Disclosure | Not Required | Not Required |
| Patent Grant | Implicit | Explicit |
| Attribution Notice | Required | Required |
Sources: LICENSE-MIT:5-13, LICENSE-APACHE-2.0:89-121
The codebase declares its licensing terms using standardized SPDX License Identifiers within source file headers and package metadata.
Source files and documentation artifacts include machine-readable headers:
// SPDX-License-Identifier: MIT OR Apache-2.0 or <!-- SPDX-License-Identifier: MIT OR Apache-2.0 -->.
This diagram illustrates the architectural boundary between corpus-ipc core types (IpcBackend, ZmqIpcBackend, IpcMessage) and downstream proprietary modules.
graph LR
subgraph "CodeEntitySpace_corpus-ipc"
Trait["src/trait_def.rs:IpcBackend"]
ZmqImpl["src/zmq_backend.rs:ZmqIpcBackend"]
Msg["src/models/envelope.rs:IpcMessage"]
end
subgraph "External_Compute_Engine"
PropApp["ProprietaryApplication"]
Plugin["ThirdPartyPlugin"]
end
PropApp -- "Implements" --> Trait
Plugin -- "Serializes" --> Msg
Trait -.->|"NoCopyleftInfection"| PropApp
Msg -.->|"NoCopyleftInfection"| Plugin
Sources: LICENSE-MIT:5-10, LICENSE-APACHE-2.0:40-46
- Home
- 1. Overview
- 1.1. Getting Started
- 1.2. Architecture Overview
- 1.3. Crate Exports and Module Map
- 2. Core Abstractions
- 2.1. IpcBackend Trait
- 2.2. HybridFlowBackend Trait
- 2.3. BackendFactory and BackendType
- 2.4. Error Handling
- 3. Backend Implementations
- 3.1. RustBackend
- 3.2. ZmqIpcBackend
- 3.3. ZMQ Readout Parsing and Golden Frames
- 3.4. Structured ZeroMQ IpcMessage Transport
- 4. IPC Protocol and Data Models
- 4.1. IpcMessage Protocol
- 4.2. Batch Data Types
- 4.3. NeuromodulatorSnapshot and Neuromodulator Packet
- 4.4. StimulusBatch and Runtime Ingress
- 4.5. Deserialization Hooks and Model Compat Aliases
- 5. Validation and Wire Compatibility
- 5.1. Validation Framework and ProtocolLimits
- 5.2. ValidationError and ValidationKind
- 5.3. WireCompatibility and Envelope Decoding
- 5.4. Canonical Wire-v1 Encoding
- 6. corpus_ipc_server HTTP Server
- 6.1. REST API Endpoints
- 6.2. Server Configuration and Deployment
- 7. Build, Dependencies, and Quality Gates
- 7.1. Cargo Features and Dependency Isolation
- 7.2. Testing Strategy
- 7.2.1. Wire-v1 Golden Test Vectors
- 7.2.2. Property-Based Wire Tests
- 7.3. CI, Coverage, and Release Qualification
- 8. Project History and Licensing
- 8.1. Naming History and Completed Renames
- 8.2. Licensing
- 9. Glossary