2011年3月12日星期六

开源但不开放

也许不为很多人所知,以封闭的生态系统著称的苹果公司,其操作系统的一大部分是开源的。开源的部分叫Darwin,基本包含了Mac OS X和iOS图形用户界面之外的部分。

我碰到所谓开源软件,都喜欢找找官方是否提供源代码下载。一开始我以为内核叫Darwin,在苹果开源页面的项目里面怎么也找不到Darwin字眼的软件,还以为没有完全提供呢。后来才发现内核叫XNU,也是以这个名字提供源码的。opensource.apple.com是按发行版本的方式提供源码浏览的,opensource.apple.com/source是按软件包的方式提供源码浏览的。

找到苹果公司源码下载的地方,花了我不少时间,不像正常的自由/开源软件必然有下载链接,点开后必然有源代码的打包下载。苹果源码的提供方式就是文件浏览,没有对软件包进行任何的打包,这会让想下载源码的人非常麻烦,所以GNU-Darwin这样的项目才对苹果提供的源码进行了打包发放(aspl和other目录)。我特意把苹果提供的软件包列表和GNU-Darwin提供的源码列表用Vimdiff进行了严格的比较,基本是一致的。

Darwin虽然是开源的,但是源码提供的方式却很简单。对自由/开源软件,一般想当然的获得源代码的方式就是通过其版本控制系统check out出源码来,苹果的Darwin显然不提供这个手段。实际上,1年99美元的苹果开发者项目也不提供开发者对系统VCS的访问。GNU-Darwin这样的开放项目是提供CVS访问的。尽管如此,苹果做的这些并没有违背其开源许可。实际上Apple Public Source License是经过Open Source Initiative和Free Software Foundation认证的协议。

所以,苹果的软件是开源的,但是开发模式是不开放的。我这里不是作为一个Linux饭来黑苹果。Redhat这个Linux的界的元老公司,其开源和开发模式和苹果的非常相似。前几天下载Redhat Enterprise Linux 6.0,找它的源代码下载就找了半天,和苹果一样,主页上根本没有源码的下载链接。我是通过Google才找到它的源码下载地址。红帽至少还提供了SRPM打包。这也让CentOS这样的派生版本方便生存。

不过前几天刚刚有新闻,红帽改变了他们发布内核源代码的方式。以前是把内核和补丁分别提供下载,以后是把内核打了补丁后再提供下载。据说这样做是故意的,为了让Orcale的Unbreakable Linux山寨起来更麻烦:
One of the key points behind the RPM and Debian package formats is that source is shipped in its upstream form, with patches shipped separately and applied at build time. Red Hat has always followed this convention; the failure to do so with the RHEL 6 kernel is a new and discouraging change of behavior. Distribution in this form should satisfy the GPL, but it makes life hard for anybody else wanting to see what has been done with this kernel. Hopefully it is simply a mistake which will be corrected soon.
除了上面说的Mac OS X和GNU-Darwin、RHEL和CentOS这样成对的不开放和开放的模式,还有SUSE Linux Enterprise和OpenSUSE(找了一个大概是SUSE的源代码下载地址)、Solaris和OpenSolaris等。如果是像RMS那样的自由软件忠诚拥护者,自然会选择更加开放的开源开发模式。

2 条评论:

Tormenting the Holy Trinity 说...

it's ironic to see a linux user using a vista 'aero' theme.

Pan Yongzhi 说...

刚换的,Blogger的新模板比较不折腾。