Nandakumar Edamana
Share on:

Software Packaging and Distribution

A release basically constitutes of packaging the updated version of the software and publishing it. But what makes it challenging?

For starters, you have to make sure all the metadata including the version number and the release notes are up-to-date, and most importantly, the latest version passes all the tests. Once these are done, you can move on to packaging, which is not easy at all because your software could be installed and used by a really diverse set of users. Naturally, you’ll have to target multiple operating systems (GNU/Linux, Windows, etc.) and multiple CPU architectures (x86_64, arm64, etc.). Even for the same kind of operating system, you’ll have to target multiple packaging formats.

To give you an idea, Vara is distributed in the following packaging types/formats:

  • Source tarball (like a ZIP file containing the source code)
  • Binary release (contains executable files that the user can directly run without compiling)
  • .deb files for Debian, Ubuntu, etc.
  • Flatpak, published via Flathub
  • Snap, published via Snapcraft

Porting an application to a new operating system is usually a one-time process, but packaging for them can still require some platform-specific activities in each realease (like applying patches or replacing some variable names). To make things more complicated, the build process recommended by the packaging format can involve a chain of commands and some manual activities in-between.

Making Vara available in this many formats would be impossible if not for a bunch of shell scripts.