MWSE/todo.md

69 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MWSE — Yol Haritası & Oturum Bağlamı
> Bu dosya, MWSE'yi **temiz bir oturumda** devralmak için yazıldı. Üst kısım NEDEN/BAĞLAM (davranış kalıpları dahil), alt kısım NE/YOL HARİTASI. Issue'ların tamamı git.saqut.com/saqut/MWSE'de milestone'lara bölünmüş hâlde.
---
## 0. Bu oturum nasıl çalışmalı (çalışma anlaşması)
- Kullanıcı bir **0→1 core üreticisi**. Verilmiş kararların ÜSTÜNDE "şu mu bu mu" seçenek menüsü açma (bu onu felç eder); ALTINDA **uygulayıcı** ol.
- **Karar kesin: MWSE Go'ya taşınacak.** Bu kararı yeniden açma. Dil/teknoloji tartışması yok.
- Her şeyi tek-cümlelik "bitti" çizgilerine böl; o çizgiye kadar kapsam ekleme.
- Dağıtım/yazı/İngilizce/README işini (kullanıcının zayıf/sevmediği taraf) AI üstlensin; çekirdek/cila kullanıcıda.
## 1. Kullanıcı kim / davranış kalıpları (kritik)
- **0→1 core builder, elit** (bir günde ~20.000 satır yazabiliyor). Sıfırdan protokol/engine/derleyici yazar.
- **Asıl kalıp: "bitirememe" DEĞİL, "geri dönememe".** Dopamin ilk geçişte (0→1). Bitmiş projeye bile dönmüyor (örn. `ekoetki` bitti+yayında ama dönmüyor). Bakım/return = aversiyon alanı.
- **Kararsızlık:** çok bildiği için her seçenek savunulabilir görünüyor; geri-dönülebilir kararları kalıcı sanıyor. Kural: geri dönülebilir karar = 10 dk seç-kapat, açma.
- **Mükemmeliyetçilik:** "güzel olmayacak" deyince erken bırakıyor (güzellik yargısı baştadır; bu yüzden tam bitiş anında kaçar).
- **Dağıtım zayıf noktası:** HemexJS npm'de yayında ama sessiz (feedback yok). Artefakt üretmek kolay yarısı; dağıtım/legibility zor yarısı → AI'a devret.
- **Moat:** kimsenin yapmak istemediği from-scratch protokol/WebRTC/güvenlik işi. İşvereni de zor/novel işi içgüdüsel ona veriyor.
- **Para oyunu (yerel commodity: ABAP/ERP) ≠ anlam oyunu (derin iş).** Ayrı tut; public derin iş = uzun vadede commodity'den kaçış kapısı.
- **Görünür/demolanabilir iş = tanınma vehicle'ı.** MWSE bu yüzden seçildi (salt compiler görünmez/kendine; MWSE GIF'lenebilir).
## 2. Buraya nasıl geldik (kısa yolculuk)
Cascade UI framework fikri → kullanıcının "daldan dala atlama / bitirememe" itirafı → asıl teşhis: **return-aversion + specialist 0→1 builder** → "faydalı non-profit ne yapsam?" → moat + public artefakt fikri → HemexJS sessizliği (dağıtım problemi yüze çıktı) → WebRTC studio hayali (ÜRÜN olarak rekabet+org-risk yüzünden tıkalı; CORE/REFERANS olarak açık) → nebula.js incelemesi (2022, "acemiyken"; yetenek hep vardı, darboğaz hep dağıtım/cila) → **SONUÇ: MWSE = yıllardır istenen WebRTC studio'nun ~%70'i, zaten deploy, görünür, hendek içinde.** Karar: MWSE'yi Go'ya taşı, studio'ya büyüt, AI dağıtsın.
## 3. MWSE — teknik durum & karar
- **Mevcut (Node.js):** `Source/` → WebSocket.js, MessageRouter.js, Client.js, HTTPServer.js, EventEmitter.js, api.js, config.js + `Source/Services/`{Auth, DataTransfer, IPPressure, Room, Session, YourID}. WSTS protokolü (websocket üstü request/response/stream paket kimliklendirme). TS frontend SDK `frontend/`. Wiki dolu. **ws.saqut.com'da deploy + canlı basınç/trafik paneli.** Demolar: ~20 satır chat, ~100 sesli, ~500 görüntülü.
- **BÜYÜK PROBLEM (neden Go):** Node tek-thread; çoklu-thread denendi, peer state thread'ler arası dağıtıldı; ama **saf thread + paylaşımlı bellek olmadığı için Mutex kurulamadı.** Biri odadan ayrılırken başka thread o ayrılan client'e mesaj göndermeye çalışınca **race condition**. Çözülemedi, bırakıldı.
- **KARAR:** Aynı projeyi **I/O sözleşmesine (SDK giriş/çıkış) dokunmadan** Go ile yeniden yaz. Go = goroutine + channel + `sync.RWMutex` veya **per-room owner-goroutine (actor modeli)** → race'in temiz çözümü. Frontend AI ile hafif refactor; gerisi engine'i kullanmak.
- **İlk hedef: 0.1.0 (Go engine + concurrency testleri). BUGÜN BAŞLA.**
## 4. Yol haritası (milestone'lar — detaylı issue'lar repoda)
- **0.1.0 — Go Engine Core:** WS sunucusu + bağlantı yaşam döngüsü; concurrency modeli (actor/owner-goroutine veya RWMutex; Node'daki leave-while-send race'ini çöz); WSTS protokol Go portu (I/O sözleşmesi sabit); MessageRouter + Services portu; config/HTTP/graceful shutdown; **`go test -race` ile süreç/yarış testleri.**
- **1.0.0 — Feature Parity (Go+Frontend+WebRTC):** oda, peer pairing, sanal adresleme (IPPressure), veri tünelleme, WebRTC signaling — hepsi Go engine'de; frontend SDK değişmeden bağlanır; 20/100/500 demoları çalışır; bilinen bug'lar (#19 EventPool, #9 per-connection ayarları); README/wiki güncel.
- **2.0.0 — WebRTC Studio:** tam WebRTC API (çoklu track, mic→mp3 swap, 3 kamera, ekran paylaşımı), canvas compositing + bitrate/fps, SRS ile binlerce kişiye yayın, sanal IP çakışma yönetimi + alt-network, random IP atama tablosu.
- **2.5.0 — Binary Protocol:** JSON haberleşmeyi basit binary framing'e çevir (envanterde, opsiyonel hız).
- **3.0.0 — Platform:** Notify System (offline store-forward), Notify Suit (yanıtlı), Pasif+Aktif sync + Datastore + Collection (paylaşımlı veri katmanı), 3. parti sunucu köprüsü (https get/post, ws gerekmez).
## 5. v1-done (dağıtım) hatırlatması
MWSE WebRTC studio'nun public artefakt hâli = **npm SDK + tek "öldüren demo" sayfası + İngilizce README/landing.** Cila kullanıcıda, dağıtım (yazı/İngilizce/HN) AI'da. Bu, HemexJS'i öldüren "görünmezlik" sorununu çözen adım.
## 6. Studio UI Vizyonu (2.0.0)
Adobe programları / **Torrent uygulaması** hissi veren, **masaüstü-first** bir arayüz. Ekran dikine **5'e kadar kolona** bölünür; her kolon bir öncekinde seçileni açar (cascading / Miller-columns):
```
Network > Networküm > 12.07.88.220 > Telefonum > {Video, Ses, Görüntü} > Kalite
├─ Ses bağla (Play)
├─ Video oynat (Play)
└─ Dosya gönder (DataChannel) [▓▓▓░ %32]
```
- Sıra: **Sunucu → Gruplar → Kişiler → Cihazlar → Cihazın akışları (kamera/ses/ekran) → o akışın kalitesi.**
- **Gelen bağlantı:** biri seninle iletişim kurmak isteyince onaylarsın, sistem direkt o peer'in kolonunu açar: `Network > Kullanıcı A > Akışlar > Ses & Görüntü > Video {ses kıs/aç, bitrate ayarla, stream kapat} / Dosya gönder`.
- **Akış proxy/relay (özgün kısım):** bir peer'den gelen stream'i alıp **başka bir peerconnection'a proxy** etmek — `Arkadaşın görüntüsü > Ben > Arkadaşın`. Kimse bu kadar granüler yapmadı.
- Hedef cümle: **"WebRTC'nin ve tarayıcının yapabildiği her şeyi son user'a aç."** (Yeni issue'lar: Studio UI shell + Akış proxy/relay, 2.0.0.)
## 7. Teknik Kısıtlar (KATI — ajan ve insan için)
- **Engine:** Go (goroutine/channel/RWMutex veya per-room actor).
- **Frontend:** saf vanilla **ES module** JS, yüzlerce dosya native `import`. **React YOK, Parcel/Webpack/Vite YOK (bundler yok).** jQuery/moment serbest. TypeScript opsiyonel, ileride kaldırılabilir (proje sadeleşsin). Düz JS varsayılan.
- **SDK I/O sözleşmesi dondurulmuş.** Detay → `CLAUDE.md`.