Search code examples
rubygemspackagepackagingeasy-installsoftware-distribution

System-level vs application-level package distribution


If I create a FOSS command-line utility (i.e. an application rather than a library) and I want to distribute it as a package for convenient installation, is it better practice to do this via:

NB. If you believe there is no generally correct practice but rather that there are particular circumstances under which one or the other approach is clearly best, then what are these circumstances?


Solution

  • It seems to me that the procedure followed in the case of applications whose users are happy with the way they're distributed, is roughly as follows:

    enter image description here

    Take, for example:

    • Bundler: written in Ruby and useful to Ruby developers; distributed via application-level package.
    • fwknop: written in Perl (originally, at least) and useful to end-users; distributed via systems-level packages/installers.
    • Pandoc: written in Haskell and may be useful to Haskell developers in the course of developing Haskell applications, but also useful to others; distributed both via application-level and via systems-level packages.

    There are probably better examples than these. Also, my conclusions so far are just observational ones: I haven't found a reference laying out this decision flow explicitly. As such, I'd welcome a more comprehensive answer.

    NB. The code for the flowchart is online, in case you'd like to adapt it for your answer. To be able to use it, you'll need a working LaTeX installation.