Skip to content

Distribution: what bundled and compact mean, and which one the plain name gets #568

Description

@A13xB0

Five issues describe how MeshBench reaches a user: two build variants (#509), a
page to choose from (#510), an apt repository (#511), a Homebrew tap (#512), and
whether the smaller variant can even finish installing itself off Linux (#514).

Read together they did not agree. This is the parent, and on naming and
defaults it is the authority
; where a child says something different, the
child is out of date.

What the two variants are

Both always carry the fixtures, the fonts, the licences, and the chip model.
The chip is about a hundred kilobytes now that it is
virtual-sx1262 loaded by whichever
emulator runs a board, so leaving it out is not a size judgement any more, it is
a floor: without it neither variant can start any board at all.

The decision

meshbench is the application. meshbench-bundled adds the emulators.

One rule, every channel, no exceptions:

channel plain name with emulators
apt (#511) meshbench meshbench-bundled
Homebrew (#512) meshbench meshbench-bundled

The suffix names an addition, which is how package naming has always worked:
texlive and texlive-full, git and git-all. meshbench-compact would
name a subtraction, and a package whose name says what it lacks is a strange
thing to ask somebody to type. It also means the word "compact" need not appear
in any package name at all: the plain name is the compact one.

This overrules #512, which had the plain cask as bundled. Its reason does
not survive reading: it says a cask "re-fetches the whole disk image on every
upgrade either way, so the argument that flips the default for apt does not
apply". But the apt argument is that a package manager re-downloads on every
release, and re-fetching the whole image is that same property. The upgrade is
26 MB or 110 MB depending on the variant, every release, forever. That argues
for the flip rather than against it.

Which leaves the case for a lean default standing on both channels: a package
manager is not a one-off, and emulation is the specialist backend here. Native
is what anything being compared runs on, because an emulated node is explicitly
not reproducible. Somebody who installs MeshBench to answer a coverage or a
link-budget question may never point it at an emulated board.

A downloadable file always says which variant it is

Package managers are asked a question and can answer it. A file in a Downloads
folder cannot, so it carries its own label and there is no unsuffixed release
asset:

meshbench-linux-x86_64-bundled.tar.gz     meshbench-linux-x86_64-compact.tar.gz
meshbench-x86_64-bundled.AppImage         meshbench-x86_64-compact.AppImage
MeshBench-arm64-bundled.dmg               MeshBench-arm64-compact.dmg
meshbench-windows-x86_64-bundled.msi      meshbench-windows-x86_64-compact.msi
meshbench-windows-x86_64-bundled.zip      meshbench-windows-x86_64-compact.zip

meshbench-source.tar.gz                   source is source; it has no variant
SHA256SUMS                                covers all of them

This is the one place the "unsuffixed means compact" rule is not applied, and it
is deliberate. Applying it would silently turn today's
meshbench-linux-x86_64.tar.gz - the only stable asset name we have - from a
build that boots a board into one that cannot. Labelling both makes that link
404 instead, which is the failure worth having. Every other current name has
a version in it and is being renamed by #509 anyway.

The debs are the meeting point of the two rules and follow both: the package
name carries the variant (meshbench, meshbench-bundled) and Debian
convention puts the version in the filename.

The download page recommends bundled, and says why

Naming and recommending are different jobs. No filename claims to be the
default; the page (#510) picks one, and for a one-off download that is bundled,
because it works on first run. It should carry one line saying apt and Homebrew
give you the application alone, so nobody meets that difference for the first
time at a Setup prompt.

compact is only offered where it can complete itself

That is #514. Where Setup cannot fetch the emulators, the compact download stays
available but leads with what the user must build by hand: the fork URLs, the
branches, and the fact that a distribution's own QEMU has no SX1262 in it and a
stock Renode sleeps for ever on a wake condition that is already true.

Order

  1. Release two variants of every asset: bundled with the emulators, compact without #509 builds the two variants and settles the filenames. Everything else
    consumes what it names.
  2. The compact build cannot complete itself off Linux: the fetcher serves no emulator for macOS or Windows #514 in parallel: mostly a catalogue and a PE header case, and it decides
    which compact options may be offered without a caveat.
  3. A download page on meshbench.github.io #510 once the names are stable, because its whole design rests on
    releases/latest/download/<name> resolving server-side.
  4. An apt repository, with meshbench and meshbench-bundled #511 and A Homebrew tap: meshbench and meshbench-bundled casks #512 last, independent of each other, and now identical in
    shape.

What has changed under these issues since they were written

  • radioserver no longer exists. Both emulators load the chip themselves.
    Anywhere these issues say "radioserver", read libvirtualsx1262.{so,dylib,dll}
    from MeshBench/virtual-sx1262, pinned by release like the emulators.
  • A bundle needs Renode's support files, which nothing shipped until now: the
    .repl platform descriptions and our C# peripherals, in renode-support/
    beside the binary. Without them a bundle carrying both emulators can start an
    ESP32 board and not an nRF52 one. packaging/verify-bundle.sh checks for them.
  • The compact build cannot complete itself off Linux: the fetcher serves no emulator for macOS or Windows #514's macOS inventory is out of date, in our favour. The chip model
    publishes macos-arm64 and windows-amd64, so what is missing off Linux is
    the two emulators rather than three things.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions