GODSIGH/COMPARISON.md

72 lines
4.4 KiB
Markdown
Raw Permalink 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.

# GODSIGH vs. the open-sourced God's Eye View
*2026-08-25 — Bilawal Sidhu open-sourced the real
[God's Eye View](https://github.com/bilawalsidhu/gods-eye-view) (vendored here
at `gods-eye-view-main/`, gitignored). GODSIGH was our guess at it, built from
the YouTube videos alone. This is the honest side-by-side, and the record of
what we ported in Wave 4.*
## Architecture — two different bets
| | GODSIGH (ours) | God's Eye View (theirs) |
|---|---|---|
| Size | ~2,400 lines, 12 modules | ~300 modules + per-module test files |
| Build | none — ES modules + 2 CDN globals | Vite, Node 24/26 enforced |
| Globe | CARTO dark / EOX Sentinel-2 raster (keyless) | **Google Photorealistic 3D Tiles** (metered 🔴 key required) |
| Entry fee | $0, zero keys | Google Maps key mandatory; OpenAI key for voice |
| Server | stdlib `serve.py` proxy + shared OpenSky cache | Vite dev server + key-brokering proxies, rate limits |
| Testing | none | huge `.test.mjs` suite + QA screenshot scripts |
| Focus | **one theater, one timeline** (Persian Gulf OSINT, scrubbable ±6h) | **the whole planet as a place** (photoreal, cinematic, voice-driven) |
The big divergence: we guessed "OSINT analysis console" (time scrubbing,
replay, choke points, dark vessels); the real one is an "experience" (cockpit
rides, voice agent, sensor skins, cinematic scenes). Their README even concedes
our corner: *"the moment you try to go back in time… the data gets expensive"*
— our timeline/replay/record.py stack is the thing they explicitly didn't build.
## Feature matrix
| Feature | Theirs | Ours before | Ours now (Wave 4) |
|---|---|---|---|
| Live aircraft (OpenSky + adsb.lol) | ✅ | ✅ | ✅ |
| Military ADS-B | ✅ | ✅ | ✅ |
| Satellites (SGP4) | ~840 + Starlink chip | ~97 curated recon/EO | unchanged (curated > bulk for our theater) |
| Earthquakes / fires / launches | ✅ | ✅ (+GDACS, NWS, RFS they lack) | ✅ |
| **Timeline scrub + aircraft replay** | ❌ | ✅ | ✅ — still our moat |
| Demo ship analytics (AIS-gap, toll route) | live AIS only | ✅ | ✅ |
| **Smooth motion between polls** | ✅ interpolation | ❌ planes teleported every 90 s | ✅ dead reckoning, aircraft + military |
| **Sensor styles (NVG/FLIR/CRT GLSL)** | ✅ 6 styles + uniforms | ❌ | ✅ 3 compact post-process styles, keys `14`, in share links |
| **Submarine cables** | ✅ bundled TeleGeography | ❌ | ✅ 712 cables + 1,917 landings |
| **Datacenters / dams** | ✅ bundled OSM | ❌ | ✅ 4,351 + 704 as registry layers |
| Voice agent (28 tools) | ✅ OpenAI Realtime 🔴 | ❌ | skipped — needs paid key, against our zero-key rule |
| Cockpit / contacts / 3D hangar | ✅ | ❌ | skipped — built on Google 3D tiles 🔴 |
| CCTV projected into 3D | ✅ | ❌ | skipped — same reason; flat raster has nothing to project onto |
| Traffic (TomTom), radio tuner, bikeshare | ✅ | ❌ | skipped/deferred — off-theater or key-gated |
| Detection overlay / military HUD | ✅ | ❌ | skipped — cosmetic without their photoreal globe |
## What Wave 4 ported (all keyless, no build step)
1. **Submarine cables** — their bundled TeleGeography GeoJSON, rendered by a
new [`js/layers/cables.js`](js/layers/cables.js). © TeleGeography,
CC BY-NC-SA 3.0 — non-commercial only, see [`assets/README.md`](assets/README.md).
2. **Datacenters + dams** — their OSM/Open Infrastructure Map snapshots,
collapsed to centroid points and dropped into the layer registry as two
data entries (ODbL, attributed). Off by default.
3. **Sensor styles** — NVG / FLIR-Ironbow / CRT as Cesium `PostProcessStage`
GLSL in [`js/styles.js`](js/styles.js), compacted from their style system.
Hotkeys `14`; serialized into share links as `s=`.
4. **Smooth motion** — their "render behind, interpolate" idea, done the lazy
way: `lib.deadReckon()` advances every billboard along its reported course
at 10 Hz between polls, live-only, capped at 5 min extrapolation.
## Worth stealing later
- **Trace-history backfill** — click a military contact, see its last ~24 h as
3D loops. Feasible keyless via OpenSky `/tracks` through `serve.py`.
- **First-run missions** — their staged "first five minutes" onboarding card.
- **Their test culture** — per-module `.test.mjs`; ours has none.
- **Radio layer** — Radio Browser API is keyless and geolocated; audio-in-
InfoBox needs a spike.
- Natural Earth named-region polygons (public domain) if we ever want
"outline the Strait of Hormuz"-style annotation.