Journal

· evidence

Half the download was never the app

Our Linux package shipped 1.3 GB of Chromium debug symbols. Stripping, better compression, and fewer languages cut each download by at least a third.

An open shipping crate holds one compact verdigris module while a tall stack of loose sheets sits outside it, joined by a dashed line, above a gauge whose needle rests low.

Muniment Desktop bundles its own Chromium so the agent can drive a real browser. We chose that cost on purpose. Then we measured the download and found that most of the cost was not Chromium at all.

Our v0.0.2 Linux package was a 415 MB download that unpacked to 1.6 GB. One file held 1.3 GB of it: libcef.so, the Chromium Embedded Framework library, shipped exactly as the framework build provides it, with full debug symbols.

One strip removed 1.03 GB

A symbol strip cut libcef.so from 1.3 GB to 268 MB. The browser code is identical. Only the symbol tables a debugger reads are gone.

Rebuilt from the v0.0.2 package with that one change, plus a duplicate 24 MB speech library removed, the Debian package fell from 415 MB to 198 MB. Its installed size fell to 467 MB.

Debian packages accept several compressors for their data member, and dpkg has read xz since version 1.15.6. Our package used gzip. Recompressed with xz, the same files came to 150 MB.

Two defaults chose the bigger file

Our macOS disk image used zlib compression. LZMA, which macOS disk images also support, packed the same app into 151 MB instead of 212 MB.

Our download page made the other default. It chose the Apple silicon image only when the browser reported the chip, through a header that Safari and Firefox do not support. Every Safari visitor got the Universal image: 367 MB, with two copies of Chromium, one for each chip.

The page now offers the Apple silicon image when the browser says nothing, with Intel and Universal beside it.

Languages moved to a pinned download

Chromium ships its interface strings in 55 languages, each with gendered variants: 220 folders and 50 MB on every platform. Our installer now keeps 15. The other 40 go into one 9.6 MB archive that each release publishes.

On Windows and Linux, Chromium reads its language packs from a folder the app chooses. On macOS, CEF ignores that setting and reads packs from inside the signed app bundle, which the app cannot change after installation. So the desktop answers Chromium’s string requests itself, from the pack the user downloaded, on all three platforms.

A download is accepted only when its size and SHA-256 match the manifest inside the signed installer. A tampered archive fails before any pack is installed.

Package Before After Change
Linux Debian package 415 MB 150 MB Strip, one speech library copy, xz
Linux installed 1.6 GB 467 MB Strip, one speech library copy
macOS Apple silicon disk image 212 MB 135 MB LZMA, 15 bundled languages
macOS installed 447 MiB 371 MiB 15 bundled languages

What these numbers do not cover

We measured Linux by rebuilding the published v0.0.2 package, and macOS from a local build of the same app. A Windows installer change switched its cabinet to LZX compression, and we have not measured that result yet. Debian, Can I use, and the Chromium Embedded Framework project are neither Muniment customers nor endorsers.

Nothing here makes Chromium smaller. A bundled browser engine still costs about 300 MB installed, and we keep paying it for a browser the agent can fully control.

The lesson is narrower and more useful. A third-party binary arrives with its maker’s defaults, and those defaults serve the maker’s debugger. Check what you ship byte by byte before you blame the engine. Our install guide lists every package.

Sources

  1. Debian manual: deb(5) binary package format manpages.debian.org
  2. Can I use: Navigator.userAgentData caniuse.com
  3. Chromium Embedded Framework: settings header github.com

Continue reading

All publications

Join the waitlist

Get desktop release updates.

We will email you about desktop releases and new features. muniment is a desktop workspace for your models, tools, and files.