# 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`.