MWSE/todo.md

7.2 KiB
Raw Permalink Blame History

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.