1.2 Linux的开发模式和运作机制
自 由软件的出现,改变了传统的以公司为主体的封闭的软件开发模式。采用了开放和协作的开发模式,无偿提供源代码,允许任何人取得、修改和重新发布自由软件的
源代码。这种开发模式激发了世界各地的软件开发人员的积极性和创造热情。大量软件开发人员投入到自由软件的开发中。软件开发人员的集体智慧得到充分发挥, 大大减少了不必要的重复劳动,并使自由软件的脆弱点能够及时发现和克服。任何一家公司都不可能投入如此强大的人力去开发和检验商品化软件。这种开发模式使
自由软件具有强大的生命力。
商业Unix开 发过程中,整个系统的开发要有严格的质量保证措施、完整的文挡、完善的源代码、全面的测试报告及相应的解决方案。开发者不能随意增加程序的特性和修改代码
的关键部分,如果要修改代码,他们得将其写入错误报告中才能使其有效,并随后接收源代码控制系统的检查,如果发现修改不合适,修改也可能作废。每个开发者 设计系统代码的一个或几个部分,开发者只有在程序检查过程中才能更改相应的代码。质量保证部门在内部对新的操作系统进行严格的回归测试,并报告发现的问
题,开发者则有责任解决所报告的问题。质量保证部门采用复杂的统计分析系统以确保在下次发行时有百分之几的程序错误已修改。
总之,商业Unix开发过程使得其代码非常复杂,因此,公司为了保证下次操作系统的修订质量,因此得收集和统计分析操作系统的性能。开发商业Uinx是一个很大的工程,常常大到有数以百计的编程者、测试员、文挡员以及系统管理员参与。
对于Linux,你可将整个组织开发的概念、源代码控制系统、结构化的错误报告、统计分析等通通扔到一边去。
Linux最初是由一群来自世界各地的自愿者通过Internet共同进行开发的。通过互连网和其它途径,任何人都有机会辅助开发和调试Linux的内核、链接新的软件、编写文挡或帮助新用户。实际上,并没有单独的组织负责开发此系统,Linux团体大部分通过邮递清单和USENET的消息组通信。许多协定已跳过开发过程,如果你想将自己的代码包括进“正式”内核,只需给Linus Torvalds发一个邮件,他就会进行测试并将其包括进内核(只要代码不使内核崩溃并且不与整个系统设计相悖,Linus都很乐意将其包括进去)。
Linux系统本身采用彻底开放、注重特性的方法进行设计。一般规律是大约隔几个月就发行一个Linux内核的新版本。当然发行周期还依赖于其它一些因素,如排除的程序故障数、用户测试预发行版的返回数以及Linux的工作量等。
可以说在两次发行间,并不是每个故障都已排除,每个问题都已得到了解决。只要系统不出现很挑剔或明显的故障,就认为比较稳定,可以推出新版本。Linux开发的动力不在于追求完美、无故障,而是要开发Unix的免费实现。
如果你想把新的特性或应用软件增加到系统上,你就得经过一个“初始”阶段。所谓“初始”阶段,就是一个由一些想对新代码挑出问题的用户不断进行测试的阶段。由于Linux团体大多在Internet上,“初始”软件通常安装在一个或多个LinuxFTP上,并且在LinuxUSENET消息组上张贴一张如何获取和测试其代码的消息,从而使得下载和测试“初始”软件的用户可以将结果、故障或问题等邮件告之作者。
初始代码中的问题解决后,代码就进入“第二”阶段:工作稳定但还不完全(即能够工作,但可能还不具备所有特性)。当然,它也可能进入“最后”阶段,即软件已完备并且可以使用。对于内核代码,一旦它完备,开发者就可让Linus将其包括进标准内核内,或者作为内核的可增加选项。
注意,这些仅只达成协定,并未形成规则。很多人对他们的软件不必发行“初始”或测试版充满信心,因此发行哪个版本是根据开发者的决定而定的。
你可能对一群自愿者居然能编写、调试出完整的Unix系统惊讶不已。整个Linux内核通过拼凑凑而成,没有采用专利的源代码,大量工作都由自愿者完成,他们将GNU下的免费软件移植到Linux系统下,同时开发出库、文件系统以及通用的设备硬件驱动程序等。
实际上,Linus率领的分布在世界各地的Linux内核开发队伍仍然在高速向前推进。当前推出的稳定的Linux内核的2.4.x版本充分显示了Linux开发队伍的非凡的创造能力以及协作开发模式的价值。