Skip to content

spike: evaluate migrating from Electron to Tauri #249

Description

@BernardJen

Split out of #239, preserved from TODO.md before its deletion (#208).

Recorded, not recommended. This is a spike to reach a decision, not an agreement to migrate.

The original case

From TODO.md: ~10MB bundle against Electron's ~150MB, system WebView instead of bundled
Chromium, Rust backend, nokhwa for capture, keeping the frontend and rewriting IPC.

Grounded against the release just cut: the shipped artefacts are a 211MB macOS DMG and a
95MB Windows installer, so the size argument is real and larger than the note claimed.

What the original note did not weigh

The screensavers are the problem, not the IPC. There are 30 WebGL2 shaders tuned against
Chromium's ANGLE. A system WebView means a different GL implementation per platform — WebKit on
macOS, WebView2 on Windows — with no guarantee they compile the same shaders or perform
comparably. #225 measured savers between 15 and 120 fps at 6000×1200 on ANGLE/Metal; none of
those numbers transfers.

Also rebuilt from scratch: the auto-update pipeline including the artifactName handling that
#86 exists because of, and code signing on both platforms (#56).

What the spike should produce

  • One representative shader — the raymarched Mandelbulb, the most demanding at 31.7 fps —
    running in a Tauri shell on macOS and Windows, with frame cost measured at 6000×1200 and
    compared against the ANGLE figures in Mandelbrot runs below 30 fps at 6000×1200, and the set has never been measured on the wall's own host #225
  • Whether nokhwa enumerates and captures from the actual capture cards in use
  • What the auto-update and signing story looks like, concretely
  • A recommendation with numbers, and an explicit "not worth it" if that is the answer

Answering the first bullet is most of the decision. If the shaders do not survive the move, the
bundle size is irrelevant.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions