
Portable, Reusable Code from Gnulib – The Module List - smartmic
https://www.gnu.org/software/gnulib/MODULES.html
======
mdaniel
I'm not sure if this has been fixed recently, but almost every contact I've
had with gnulib as a _consumer_ has been an incredibly frustrating experience,
due to what appears to be a copy-paste distribution model. It's so hard to
tell what version of gnulib was copied into a project, and possibly modified
thereafter, so the upgrade path to fix a failing build is horrible.

I fully appreciate that such an outcome may not be gnulib's fault, but I have
seen that antipattern across enough projects which use gnulib to lead me to
believe they are taking guidance from some quickstart or something

~~~
naniwaduni
It's intentional:

> Gnulib takes a different approach. Its components are intended to be shared
> at the source level, rather than being a library that gets built, installed,
> and linked against. Thus, there is no distribution tarball; the idea is to
> copy files from Gnulib into your own source tree.

[https://www.gnu.org/software/gnulib/](https://www.gnu.org/software/gnulib/)

The musl FAQ has some, ah, choice words: [https://wiki.musl-
libc.org/faq.html#Q:-I'm-getting-a-gnulib-...](https://wiki.musl-
libc.org/faq.html#Q:-I'm-getting-a-gnulib-error)

gnulib is like the hellspawn retroactive offspring of autoconf and a vendored
copy of jquery. The "portability" issues it solves are immediately invalidated
when your code probably won't compile under a pre-C99 compiler unless you pay
special attention anyway, and the kind of people who run those systems either
know what they're getting into or aren't likely intending to be installing new
software. Then it goes creating problems in otherwise perfectly fine
environments.

Don't use it.

~~~
rurban
Or don't use broken musl. This fight came up because musl refuses to identify
itself with __MUSL__ unlike all other libc's, and watching after multiple
broken implementations became too cumbersome.

Most GNU projects nowadays just just bootstrap or autogen.sh to run a git
submodule init --update on gnulib. musl is not in the weird architecture
category as windows or PA-RISC, ..., but it's still has problems which need to
be fixed.

~~~
naniwaduni
musl at least has useful uses.

gnulib doesn't.

I'm more willing to overlook some quirkiness out of a useful thing than
something that doesn't even manage to really solve a dead horse problem.

