docs: add the .NET/C# porting plan
Proposal for replacing the C++ core, C++ server, and Swift macOS/iOS clients with a single .NET 10 / C# codebase. Covers the dependency map (8 vcpkg deps + 1 vendored -> 3 native libs), the real-time-audio design, per-client strategy, a test-porting plan for all 29 ctest cases, doc-sync work, an 11-phase migration, and a risk register. Two findings drive the shape of the plan: - SslStream has no RFC 5705 keying-material exporter, which the media AEAD key derivation depends on (docs/security.md 2). The API is an unapproved proposal and SChannel structurally cannot export secrets. Recommends BouncyCastle's managed TLS 1.3 stack, which does implement the exporter and keeps the wire format byte-compatible with the C++ implementation -- so the existing tree stays usable as a conformance oracle throughout the port. Protocol-v3 in-band media keys documented as the fallback. - The iOS ReplayKit broadcast upload extension stays in Swift: 50 MB jetsam cap plus an unsupported extension type in .NET for iOS, and it already doesn't link the core. Leaves one Swift file plus the shared App Group ring. Indexed in docs/README.md. Nothing here is implemented yet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -34,6 +34,7 @@ that implementation can start from a shared, agreed plan.
|
||||
5. [tech-stack.md](tech-stack.md) — Concrete libraries with versions and rationale, the permissive-license rule, build tooling, per-platform notes.
|
||||
6. [deployment.md](deployment.md) — The "set it up in a few minutes" story: Docker, single binary, source build, zero-config defaults.
|
||||
7. [roadmap.md](roadmap.md) — Milestones, what ships when, and the list of open questions still to resolve.
|
||||
8. [porting-to-dotnet.md](porting-to-dotnet.md) — **Proposal.** Step-by-step plan to replace the C++ core, C++ server, and Swift clients with a single .NET 10 / C# codebase. Dependency map, the TLS-exporter blocker, real-time-audio design, phased migration.
|
||||
|
||||
## Design principles
|
||||
|
||||
|
||||
Reference in New Issue
Block a user