69 lines
7.2 KiB
Markdown
69 lines
7.2 KiB
Markdown
# 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`.
|