Agree, but there are very few distros that are strictly free of proprietary code. Kernels also have assembler which requires a separate port for each architecture.
See the current debate on python. The Linux/GNU mix is evolving in a way that makes package management and version control difficult
I actually prefer BSD. It does not totally avoid the above issues, but it is more tightly managed and that helps. BSD is not just a kernel like Linux, it is a full system kernel + apps all managed by the one unit.