1. 关于 GNU/Linux 的冠名,算是个历史遗留问题。实际上也有 Linux 发行版完全在用户空间也完全不使用 glibc/gcc/make/bash/coreutils 等 GNU 工具的,比如常见的 Alpine 和 Android ,但它们都能被称作 Linux 发行版,Linux 对此没有异议,同时 GNU 也是不能一刀切要求所有 Linux 发行版都增加 GNU 冠名的。所以 GNU 的要求是 Linux 内核增加 GNU ,变成“GNU/Linux Kernel”,但大家都习惯把使用 Linux 内核的发行版称作 Linux 系统了,让大家把 Linux 系统称作 GNU/Linux 系统是个不现实的事情。
到了 2020 年前后 Linux 5.4 LTS 发布之后,就没有争论的必要了。因为从这个节点开始,Linux 已经可以由非 GNU 的 Clang/LLVM 工具链完成构建,而且是生产级别可用的。这个过渡大概用了近十年时间,最终还是靠 Google 大量投入才完成的。当然 Google 本身也不是为了给 Linux 正名,而是因为 Android 开发有相应的需求。
在此之前,GNU 确实有理由要求 Linux 内核增加 GNU 的冠名,因为理论上 Linux 内核本身也是要依赖 GNU 工具链才能完成编译从而实现其功能。之后 GNU 最多要求各大发行版在使用 Linux 的描述时增加 GNU 的冠名。但由于 GNU 开发的工具使用的 GPLv2 和 GPLv3 都没有在授权中明确要求这一点,所以这个冠名要求只能停留在道德层面而非法律层面。
2. 我个人是支持 GNU 精神的,所以我会优先使用 GPLv3+ 授权。但从务实的角度上说,我更支持 Linux 的做法,也就是商业上更宽松的 GPLv2 授权。所谓的 GNU 和 Linux 哲学之争,更多是商业化的意识形态之争,体现在纸面上就是 GPLv2 和 GPLv3+ 的区别。
以目前 Linux 的代码贡献来源来看,即便去除占比一半以上的厂家驱动部分,剩余代码中来自公司雇员的部分大概在 80% 到 85%,其余部分来自个人贡献者。如果没有商业化的参与,Linux 很难发展成今天的样子。而商业化的企业愿意参与到 Linux 开发中并贡献代码,能够接受的底线就是 GPLv2 了。
发行版本比 GNU/Linux 大的多吧,,发行版本可能有几千个软件,GNU 可能有几百个软件,,发行版本上肯定还是非 GNU 的软件更多。。比如常用的浏览器 Chrome 、Firefox 都不是 GNU 项目,,常用的办公软件 LibreOffice 、WPS 也不是 GNU 项目,连 Systemd 这种基础组件也不是 GNU 项目,,Python 、Perl 也不是 GNU 项目,,
虽然 GCC 、GDB 等 GNU 项目很重要,,但大多数软件肯定不是 GNU 项目,,毕竟 GNU 组织能有多少人,,能写出多少项目来