Autoconf(iscate)
A lot of opensource libraries are painful to compile and use. Let alone try to understand how they work. Especially on windows when one has to install all sorts of crap just to compile and install them like perl and autoconf.
I nickname autoconf autoconf(iscate). To me it’s like jQuery - it was a good solution for the times. Many opensource libraries use it like libiconv, openssl etc.
The idea is that autoconf can test the for the presence of various operating system API features and turn things off and on in the library that is using it. It solves a problem if:
You care about ancient legacy operating systems of the past which don’t support new operating system features well. This is all the proprietary unixes and operating systems which died.
You have a huge workforce of people who don’t value their time a lot to patch things up to maintain all these patches.
i.e. legacy legacy legacy.
The problem it creates though is that it becomes a lot harder to understand the code which uses it. Most opensource libraries aren’t that easy to understand in my opinion. They lack facilities like tracing which would make it a lot easier for new programmers to quickly understand the code. See code dump.
In 2021 when the need is to support 64 linux, Windows and OS X all autoconf comes with more negatives than positives.
For that reason I think it makes better sense to refactor these libraries into a flatter structure that is easy to build and remove all the support for legacy operating systems - it makes the code easier to understand then the library can be built in a very transparent manner which is easy to understand.