Even though it seems as though operating system package managers are almost falling out of favor in exchange for a proliferation of language-specific package managers—what can software authors do to make it easier for people package their software?
Some aspects that I've been thinking about:
- What can be done to minimize friction with building and installation?
- Is a
curl | bashpattern okay enough for packagers or should it be expected that they will always try to build things the hard way from source? - Are there entire languages or ecosystems to avoid for software that desires to be packaged?
- What's the most recent dependencies and language version may be or should authors aim to use the latest versions of everything have the packagers sort it out?
- Are there projects that serve as positive or negative examples that could be referenced?
- What is some information that would be useful to have for the people who backport bugfixes and security vulnerability fixes to older, packaged versions of the software?
For C/C++ in particular:
- Is autotools still the way to go to provide a “uniform” build environment?
- Are plain Makefiles okay if they respond to
DESTDIRandPREFIX? - Is it reasonable to use other build systems that include build-time dependencies beyond make (e.g. scons, CMake)?