7.2 KiB
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.
ekoetkibitti+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 SDKfrontend/. 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.RWMutexveya 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 -raceile 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.