Repository navigation
8 Project History and Licensing
Relevant source files
The following files were used as context for generating this wiki page:
This parent page provides a high-level overview of the release history, terminology migrations, and licensing model for corpus-ipc. For comprehensive details, migration guides, and license texts, please refer to the child pages:
To serve as a core infrastructure layer bridging Rust services like thalamic-relay and brainstem-daemon to external compute engines, the codebase underwent a generalized IPC terminology migration CHANGELOG.md:30-31, CHANGELOG.md:78-86. This transition standardized public backend traits, message envelopes, snapshots, and environment variables across the API surface.
For complete details on completed renames (such as RuntimeBackend becoming IpcBackend, RuntimeMessage becoming IpcMessage, and environment variable updates like CORPUS_IPC_BACKEND_TYPE), see Naming History and Completed Renames.
Diagram: Evolution of Terminology to Code Entities
graph TD
subgraph "NaturalLanguageSpace"
LN1["Runtime Backend"]
LN2["Runtime Message"]
LN3["ZMQ Runtime Backend"]
end
subgraph "CodeEntitySpace"
CE1["IpcBackend"]
CE2["IpcMessage"]
CE3["ZmqIpcBackend"]
end
LN1 --> CE1
LN2 --> CE2
LN3 --> CE3
Sources: CHANGELOG.md:43-48, CHANGELOG.md:78-88
To support broader adoptability as foundational IPC infrastructure, the project transitioned its licensing model from GPL-3.0-or-later to a permissive dual-license structure CHANGELOG.md:77. Source files incorporate SPDX identifiers (SPDX-License-Identifier: MIT OR Apache-2.0) CHANGELOG.md:1, allowing downstream users to choose between the MIT license LICENSE-MIT:1-21 and the Apache License 2.0 LICENSE-APACHE-2.0:1-125.
For detailed licensing terms, SPDX header requirements, and downstream usage implications, see Licensing.
Diagram: Dual Licensing Structure
graph TD
subgraph "NaturalLanguageSpace"
L1["MIT License Choice"]
L2["Apache 2.0 License Choice"]
end
subgraph "CodeEntitySpace"
CS1["LICENSE-MIT"]
CS2["LICENSE-APACHE-2.0"]
CS3["IpcBackend"]
end
L1 --> CS1
L2 --> CS2
CS1 -.-> CS3
CS2 -.-> CS3
Sources: CHANGELOG.md:1, CHANGELOG.md:77, LICENSE-MIT:1-21, LICENSE-APACHE-2.0:1-125
- 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