Add detailed outline and references for decentralized music streaming thesis
This commit is contained in:
32
outline.md
32
outline.md
@@ -20,9 +20,9 @@
|
||||
### 2.2 Peer-to-Peer Content Distribution
|
||||
- Overview of P2P network topologies
|
||||
- BitTorrent protocol
|
||||
- WebTorrent (BitTorrent over WebRTC)
|
||||
- IPFS and content-addressed storage
|
||||
- Comparison of approaches and rationale for chosen solution
|
||||
- iroh: QUIC-based content distribution with byte range requests
|
||||
- Comparison of approaches and rationale for choosing iroh
|
||||
|
||||
### 2.3 Decentralized Systems Architecture
|
||||
- Hexagonal architecture (Ports and Adapters)
|
||||
@@ -39,7 +39,7 @@
|
||||
- Extending ActivityStreams 2.0 with a custom JSON-LD namespace
|
||||
- Audio object design (metadata fields, duration, attribution)
|
||||
- Album as OrderedCollection
|
||||
- Embedding content addresses (magnet URI / CID) in AP objects
|
||||
- Embedding content addresses (BLAKE3 hash) in AP objects
|
||||
- Interoperability considerations with generic AP clients
|
||||
|
||||
### 3.3 Federation Model
|
||||
@@ -51,8 +51,10 @@
|
||||
### 3.4 Content Distribution Model
|
||||
- Replication policies: eager vs on-demand
|
||||
- Instance as a stable seeding node
|
||||
- HTTP streaming proxy for browser and mobile clients
|
||||
- Native desktop/TUI clients as full P2P peers
|
||||
- iroh-blobs for content-addressed audio transfer
|
||||
- Byte range requests for streaming and seeking
|
||||
- Native desktop clients as full P2P peers
|
||||
- NAT traversal via QUIC hole punching and relay fallback
|
||||
- Storage policy configuration
|
||||
|
||||
### 3.5 Architecture
|
||||
@@ -64,12 +66,11 @@
|
||||
|
||||
## 4. Implementation
|
||||
### 4.1 Technology Stack
|
||||
- Rust backend (Axum, SQLx, activitypub_federation crate)
|
||||
- Rust backend (Axum, SQLx, k-ap federation crate)
|
||||
- PostgreSQL
|
||||
- NATS for async event fan-out
|
||||
- Next.js web client
|
||||
- TUI client (ratatui + symphonia/rodio)
|
||||
- P2P library choice and rationale
|
||||
- iroh and iroh-blobs for P2P content distribution
|
||||
- Native desktop client (Rust GUI framework + symphonia/rodio for audio)
|
||||
|
||||
### 4.2 Backend
|
||||
- k-ap crate (reusable federation layer)
|
||||
@@ -77,14 +78,11 @@
|
||||
- P2P transport adapter
|
||||
- Federation worker
|
||||
|
||||
### 4.3 Web Client
|
||||
- Core user flows (upload, discover, follow, play)
|
||||
- HTTP streaming from instance proxy
|
||||
|
||||
### 4.4 TUI Client
|
||||
- ratatui interface
|
||||
- Audio playback pipeline
|
||||
- Direct P2P swarm participation
|
||||
### 4.3 Desktop Client
|
||||
- Rust GUI framework
|
||||
- Audio playback pipeline (symphonia/rodio)
|
||||
- Direct P2P participation via iroh
|
||||
- Byte range streaming and seeking
|
||||
|
||||
## 5. Evaluation
|
||||
### 5.1 Correctness
|
||||
|
||||
Reference in New Issue
Block a user