docs: the lineage audit — what is measurably Winlator's, what only carries the name, and what leaving it would take

This commit is contained in:
The412Banner committed 2026-09-22 23:54:07 -04:00
1 parent 384a67f8e1
commit c64f00eb8e
2 files changed
+76 -2

No files matched your search

+2 -2
View File
@@ -30,9 +30,9 @@ _From the repository's pull requests; rewritten when one is opened, merged or cl
| [@xXJSONDeruloXx](https://github.com/xXJSONDeruloXx) | [#3](https://github.com/The412Banner/SteamDeck/pull/3) Fix hardware back in Steam session | 2026-09-23 | merged 2026-09-23 |
| [@xXJSONDeruloXx](https://github.com/xXJSONDeruloXx) | [#4](https://github.com/The412Banner/SteamDeck/pull/4) Update app launcher icon | 2026-09-23 | merged 2026-09-23 |
| [@xXJSONDeruloXx](https://github.com/xXJSONDeruloXx) | [#5](https://github.com/The412Banner/SteamDeck/pull/5) Add reproducible local build and deploy helpers | 2026-09-23 | merged 2026-09-23 |
| [@xXJSONDeruloXx](https://github.com/xXJSONDeruloXx) | [#6](https://github.com/The412Banner/SteamDeck/pull/6) Add Steam and QAM touch controls | 2026-09-23 | open |
| [@xXJSONDeruloXx](https://github.com/xXJSONDeruloXx) | [#6](https://github.com/The412Banner/SteamDeck/pull/6) Add Steam and QAM touch controls | 2026-09-23 | merged 2026-09-23 |
- **@xXJSONDeruloXx**: 5 submitted, 3 merged
- **@xXJSONDeruloXx**: 5 submitted, 4 merged
<!-- contributions:end -->
## Requirements
+74
View File
@@ -0,0 +1,74 @@
# Lineage audit — what in this repo is Winlator's, and what it would take to leave the lineage
Audited 2026-09-23 against Winlator upstream (brunodev85's commits in the Bannerlator history) with
a text-similarity measure, not by trusting the comments. Everything below is verifiable with
`git grep -i winlator` (54 lines in 26 files) and a `difflib` ratio against Bruno's originals.
## 1. Code that is measurably Winlator's
| File | Bruno's original | Shared text | Lines | What it is |
|---|---|---|---|---|
| `core/Callback.java` | `core/Callback.java` | 55 % | 6 | a one-method callback interface |
| `core/EnvironmentComponent.java` | `xenvironment/EnvironmentComponent.java` | 51 % | 17 | start/stop base for the audio components |
| `input/GamepadState.java` | `inputcontrols/GamepadState.java` | 33 % | 58 | six axis floats, a d-pad array, a button mask |
| `core/EnvVars.java` | `core/EnvVars.java` | 21 % | 31 | KEY=VALUE list helper |
| `core/ProcessHelper.java` | `core/ProcessHelper.java` | 21 % | 116 | spawn a process, drain its output |
Five files, 228 lines, none above 55 %. Everything else with a Winlator name on it measures under
12 % against Bruno's text — i.e. the file name and a few field names survived, the code did not:
| File | Compared with | Shared text |
|---|---|---|
| `audio/PulseAudioComponent.java` | Bruno's PulseAudioComponent | 11 % |
| `core/FileUtils.java` | Bruno's FileUtils | 9 % |
| `core/TarZst.java` | Bruno's TarCompressorUtils | 8 % |
| `input/PadBridge.java` | Bruno's ExternalController | 7 % |
| `files/FileOps.kt` | Bruno's FileUtils | 4 % |
| `core/DeviceReport.kt` | Bruno's GPUInformation | 2 % |
| `input/EvdevKeys.java` | Bruno's XKeycode | 2 % |
| `gpu/TurnipDriver.java` | AdrenotoolsManager (pipetto-crypto's, not Bruno's) | 7 % |
## 2. Things named after Winlator that are not Winlator's code
- **`app/src/main/cpp/winlator/`** — the directory name only. Inside: `lsfg/` (WinNative's port of
lsfg-vk, credited to Eden / PancakeTAS), `winfg/` (Bannerlator's Win-FG, FSR3-derived, with its own
LICENSE and FidelityFX notice), `VulkanRendererContext.h` (a Vulkan dispatch table struct from
Bannerlator's renderer, first written by yaywoohoo in June 2026). Referenced by 6 lines in
`cpp/CMakeLists.txt` and 8 in `waylandcomp/CMakeLists.txt`, plus 9 comment lines in the compositor.
- **`scanout/ScanoutContext.h`** — Bannerlator's (The412Banner, June 2026). Log tag `Winlator_Scanout`.
- **`VulkanRendererContext.h`** log tags `Winlator_Renderer`, `Winlator_Scanout`.
- **`fakeinput_steam.cpp`** — Max's, from WinNative. Connects to an abstract socket named
`winlator_vibration` for rumble. **Nothing in this app serves that socket** (the server was
Winlator's WinHandler); the connect fails silently and rumble is dead code here.
- **`winlator-contents`** — the name of the public catalog repo, in two URLs (`linuxfs.json`,
`desktop.json`) and the README. A repo name, not code.
- **File manager comments** mention a `/storage/emulated/0/Winlator/…` path as an example.
- **`WAYLAND_RUNTIME.md`, `HDR_RECON.md`** — design notes carried from Bannerlator that describe
Bannerlator's X11 renderer (`libwinlator.so`), which this app does not have.
## 3. Credits and prose
- `README.md` — "Lineage and licence" paragraph and the credits list name Winlator.
- `ui/MainScreen.kt` — the credits dialog text (the rest of that file is dead code).
- `docs/releases/0.1.0.md` … `0.1.5.md` — a Winlator credit line each (published release notes;
history, leave as is).
- `PROGRESS_LOG.md` — five mentions, all of the `winlator-contents` repo.
## 4. What it would take
**To stop using Winlator code at all** — rewrite the five files in §1 (228 lines, an afternoon):
a callback interface, a start/stop base class, a pad state holder, an env list, a process spawner.
None of them does anything Winlator-specific; they are the shapes any such app has.
**To stop being named after it** — rename `cpp/winlator/` (to `framegen/`), fix the two CMake
files, the log tags, the abstract-socket name (and remove the dead rumble client while at it), and
the comments; drop the Bannerlator design notes that describe the X11 path this app never had.
**To take it out of the credits** — the README paragraph, the credits dialog, and the credit line
in future release notes. Past notes stay as published.
**What does not change** — the licence. Everything here is GPL-3.0 and stays so: the runtime and the
fake-evdev layer are Max's (WinNative, GPL-3.0), the compositor, frame generation, file manager
and the session are Bannerlator's (GPL-3.0), lsfg-vk and FidelityFX carry their own notices. Leaving
Winlator's lineage does not leave the GPL, and does not touch the runtime image, which is shared
with Bannerlator by design.