开源本质的理解

开源软件在字面上是开放源代码,那么公开源代码的目的是什么呢?最近和ubuntu的社区人员交流,又多增加了一点理解:很多人拿到或下载一个开源软件之后的第一件事就是立即开始动手编译,在他们看来开源软件编译生成二进制之后,无论是行为和质量都应该和原作者的一模一样。理论上确实应该如此,然而对于操作系统来说情况就有所不同了,以Ubuntu为例,尽管所有的软件包都是开发源代码的,但是即便爱好者能够将其全部编译出来并且能够打包成可制成启动光盘的ISO文件,其性能和稳定性却未必会和原版的Ubuntu相同。为什么会这样呢?秘密就在于Canonical公司(红帽也与是一样的)虽然开放了所有软件包的源代码,但是其编译出的二进制包(软件仓库)却是带“标记”(signature)的,其在gcc编译器上做了所谓的“动态优化”的工作,而这些是不公开的。
不仅在编译上,在从源码包到最终ISO生成这个漫长链条中,有许多严格的测试、bug跟踪和管理环节,这些都是软实力,是不对外公开的。所以要想真正做出一个高品质的操作系统,不能简单地拷贝和重复国外操作系统的工作,更应该重视版本制作过程中的幕后种种环节,优化与有效的自动化管理、测试是优秀品质的基础和保障,需要中国操作系统必须要认证学习的地方。
回到开放源代码的意义这个初始话题,开放源代码给公众的目的不是让大家去简单的复制已有的软件,而是为真正爱好者、创业者提供一个参与的渠道、平台和在此基础上继续创新的机会,彰显公平公正的普世价值。

也就是说ubuntu的编译环节是有优化的?核心竞争力不在代码上才会开源。。。

对于中国用户而言,能免费就行。

这么说技术上没错,但与我想表达的意思有出入:)
开源的目的不是鼓励简单重复的复制,而是创新。