Enhanced binary distribution with 0Install

Today problems

Now, binaries are distributed on the Github page, or you need to compile it with Homebrew, or from source code.

  • With Github, on each new release, users need to download the last binaries, unpack it where they want. I they need to go back, they have to do the same thing.

  • With Homebrew, they need to compile it, again and again. Users also need to install some dependencies (such as system Glibc).

Proposed solution

To fix these issue, a solution would be to use a system to deliver binaries.

0Install may be good idea, since it’s mature and has both graphical and command-line interface. It can be used to deliver source-code too, but this is less usefull since there is Homebrew.

Benefits over current Github/Brew mix would be:

  • Easy installation,
  • Update are automatic by default (checked each month), applied in background while Hugo is running. User can set the preferred level of stability too, to get preversion or remain with a stable one. This is a system to setup-and-forget,
  • It’s easy to pick up both newer or older version, without waiting for compilation or deal manualy with binary installation,
  • 0install is multi-platform, where brew is targeted for OS X,
  • Binary could be signed by a maintainer.

And last but not least, all the material is almost ready! You would just host an xml file (listing Github binaries) somewhere, and the user would start using Hugo in one command (or with the GUI)

$ 0install run <xml-uri>

Resources

Of course, different level of automation for the distributuin can be set up, see the tools (http://0install.net/tools.html):

How cross-platform is this?

@bep It’s basically OCaml or Python, so it runs almost everywhere.
According to the website, the program runs under Windows, MAC OS X and several Linux and Unix flavor. I personally used it with Windows, Debian, Fedora, Arch Linux and Ubuntu.

Furthermore, it’s possible to set for each binary (and source) an architecture and OS, in these lists:

0install can then run only right binary on the right platform.