在软件的升级速度和稳固性上,Ubuntu选择了升级速度。在能否信任客户的问题上,Ubuntu选择了认为客户是不被重视的。
Linux各种发行版有自己的风格,但都逃不掉一个选择,就是选择最新的软件,还是选择保持稳固。对单一软件而言,版本的新旧与稳固性是不存在确认的关联的。但假如是构成一个软件体系就存在密切的关联了。
在各种Linux发行版里,有选择追求稳固的,比方各种企业级发行版和Debian。也有极端追求软件升级的,如Ubuntu和Gentoo。这里的区别是,发行版假如选择追求稳固,则需要一开始就确认大量基础第三方库的版本,确保这些版本之间可以协调起来稳固运行。同时选择各类软件包的版本时,也要考虑这些第三方库的兼容性。在这些兼容性都确定下来后,由大量的软件包维护者来对软件进行测试和跟踪调试,遇到bug也会通过与原作者沟通或者者打patch的方式来修复软件的问题。
这个过程会使得发行版里各种软件经过确认认为是稳固的。但这个过程其实非常耗时,导致一个稳固的发行版对外发布时,内部包含的很多软件都已经落后于最新版本了。
这里的典型是Debian发行版。每次启动一个版本时,先是大家在SID版里可以随意用最新的软件胡搞。最终确定下来少量基础软件库后,开始形成一个TESTING版,此时软件包维护者就开始大量的测试和接受客户反馈,修复BUG了。这个过程要经历大约2年的时间。最终无数的软件包维护者都认可了这个TESTING版足够稳固了。就会形成一个RELEASE版。这就是为啥每次Debian的Release里都会包含那么多很旧的软件。
而Ubuntu则是追求软件升级速度。其标准做法是每半年一个Release,Release直接基于Debian TESTING版。可见稳固性是一定远远不如Debian的,但可以实现Ubuntu所追求的软件版本尽量新。就算是每隔2年多的一个Ubuntu LTS(Long Time Support,长期维护版)其稳固性还是对比Debian差了一截。
Ubuntu追求软件的升级速度也不全是缺点,优点也有不少。比方新版本的软件通常可以用上升级的功能。而硬件驱动也是如此。所以买了比较新的电脑硬件,很多时候只有Ubuntu能无痛的用起来。
另外一个Ubuntu稳固性较差的根源在于Ubuntu的产品经理思维。这是个长期以来值得探讨的问题,即:客户是不是可以不被重视的?认为可以不重视的思路,会把尽量多的选择交给客户,不要做多余的隐藏操作。认为客户可以不被重视的思路,则尽量隐藏控制和配置细节,并以开发者的主管意愿去做少量隐藏的操作。
而Ubuntu选择了后者。于是Ubuntu表面看起来非常适合小白客户,隐藏了很多技术细节。但背后偷偷摸摸做了很多自动运行的事情。自2005年初次尝试Ubuntu至今,无数次的遇到了手工修改好的配置转瞬就被Ubuntu给改回去的情况。尤其是输入法等与UI相关的配置。
这个问题上,过去10年来,微软的Windows也曾反复纠结过。之前由于安全问题曾经很纠结的选择信任客户。于是包括关机都需要填写个理由这种事情都干的出来。但自打阿三做了微软的CEO后,选择了相反的路线,即认为客户可以不被重视。所以各种不信任客户,偷偷升级,强制升级之类的都出来了。
所以,可以构建一个二维的矩阵,维度分别是稳固性和信任客户。Ubuntu所在的象限就是低稳固性高升级频度,且不信任客户。Gentoo所在象限是高升级频度(比Ubuntu还高),且信任客户。Debian选择低升级频度高稳固性,且信任客户。假如希望不要像Debian那么保守而稳固,但也不想不被重视,可以考虑Centos。