How I choose dependencies
Those are the question I always ask myself prior to picking a dependency:
- Are other people using it? (easy to check via distros like Alpine or Gentoo)
- Could I end up maintaining it? (either due to upstream passing me maintenance, or needing to fork/patch it)
The first question isn't very important but makes sense to check, could otherwise end up missing a better dependency without doing so, and sometimes turns out the dependency is used by no one because it's unusable.
The second question is probably the most important, could skip it for throwaway scripts but well… temporary sometimes spans for a very long time.
Note: I tend to consider not just libraries but also utilities, buildsystems, language implementations as part of the dependencies.
Could even consider deployment like packaging into distros in there as well but can't really call that a dependency of the software.
I could consider Operating Systems as a dependency, but effectively it's more of a portability question.
And having experienced how OpenSolaris got shut down and how fast it went unusable as a desktop Operating System (mostly due to third-party software),
I don't really want to have my software being too tied to an Operating System.