Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1254671
  • 博文数量: 168
  • 博客积分: 3483
  • 博客等级: 中校
  • 技术积分: 1696
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-06 13:17
文章分类

全部博文(168)

文章存档

2015年(6)

2014年(9)

2013年(47)

2012年(11)

2011年(13)

2010年(18)

2009年(11)

2008年(42)

2007年(11)

分类: BSD

2007-02-08 11:40:09

1.4  FreeBSD的开发模式

 

#   执行一个开放源代码的项目同执行一个传统的软件开发项目不一样。在传统的开发模式下,要付给开发人员报酬,所以可以有多位项目经理和一位系统架构师来制定进度安排,并且指导程序员开展各项工作。而在开放源代码的模式下,开发人员都是志愿者。他们都是临时性的,往往在找到能自由支配时间的其他活动之前,在一两个项目上干干。他们无权指挥,因为他们只是愿意在自己感兴趣的地方工作。因为他们的工作、家庭和社会生活经常要比他们在项目上投入的工作更为重要,所以不可能安排统一的时间表。最后一点就是,不会因为他们承担了传统开发中的管理工作而付报酬给他们。因此,成功的开放源代码项目必须做到能自我进行组织,项目的建立能够处理好参与人员的流动性强这一点。


#   FreeBSD(以及NetBSDOpenBSD)采取的开发模式由CSRG所首创[Mckusick et al., 1989]CSRG一直都是一个规模不大的软件开发人员小组。这种人力资源条件上的限制要求精细的软件工程管理。不仅是CSRG成员要仔细协调,而且对系统开发有所贡献的整个社群的成员也都需要仔细协调。某些外部的开发人员有权直接修改系统系统源代码得主拷贝。有权访问源代码主拷贝的人事先需要进行仔细的考察,但不会严密监视。每个向系统源代码提交修改的人都会得到所有改动的通知,从而让每个人都能知道对系统所作的修改有哪些。每个人都需要让所有较大的改动经由至少一名以上的其他人员来审查,然后才能把改动提交给源代码树。这种模式允许在多条开发战线上并发开展工作,同时仍然可以保证项目的一致性。


#   FreeBSD项目的组织方式和CSRG一样。整个FreeBSD项目,包括所有的源代码、文档、缺陷报告、邮件列表存档乃至管理性数据都保存在一个公共可读的源代码控制系统中。任何人都可以查看源代码和现有的缺陷报告,跟踪修正缺陷的进展情况,也可以提供缺陷报告。任何人都可以加入和参与不计其数的FreeBSD邮件列表。直接在FreeBSD上开展工作的有3组人员:开发人员、提交人员和核心小组。


#   项目中有30004000名开发人员,其中每个人都再作系统的某个部分的工作,比如维护FreeBSD内核、持续开发1000FreeBSD核心工具程序、编写FreeBSD文档,以及升级FreeBSD移植软件库(ports collection)中别的开放源代码软件。开发人员可以访问源代码库,但是不允许他们改动源代码库。相反,他们必须和一位提交人员配合工作,或者以文件形式提交一份问题报告,才能让他们所作的改动加入系统当中。


#   目前FreeBSD项目中有300400名提交人员。和开发人员相同的事,他们中间的大多数人也是专门在系统的某个部分上做工作。和开发人员不同的是,允许他们改动授权他们负责的那部分源代码库。所有较大的改动在被检入(check into)到源代码树中之前,都应该由一位或者几位别的提交人员进行审查。大多数提交人员在完成自己工作的同时还要审查和提交几位开发人员的工作。

#   将开发人员提升为提交人员的任命由执行委员会做出。在大多数情况下,要提升的开发人员由和他一起工作的提交人员推荐,并且将推荐意见、对过去工作的介绍和评价以及新工作的起步领域一道发给核心小组,以征得核心小组的批准。


#   处于项目中心位置的是核心小组。核心小组由9位成员组成,他们每两年选举一次。核心小组的候选人从提交人员中遴选,并且由提交人员选出最后的核心小组成员。核心小组的作用是对源代码进行最后的把关。他们监督业已提交的内容,解决两位或者更多位提交人员不能就某一特殊问题达成一致意见时出现的矛盾。核心小组也负责批准开发人员晋升为提交人员,以及将某人临时(这种情况和罕见)或者永久性地从提交人员队伍中除名的事宜。除名的常见原因是消极工作(一年以上没有向系统提交改动)。


#   FreeBSD项目的开发体系直接源于我们在CSRG中建立起来的开发体系。CSRGFreeBSD都采用一个中心源代码控制库。FreeBSD核心小组就如同CSRG的成员。FreeBSD的提交人员更像伯克利给了他们在CSRG开发机器上的账号,允许他们向CSRG源代码提供改动的那些人。Free    BSD的开发人员就和为伯克利的软件作出贡献的那些人类似,但是他们没有CSRG开发机器上的账号。

#   FreeBSD项目已经做出了一些重大的改进。首先,他们认识到,哪怕是最专注的程序员最终也会失去耐性、丧失兴趣或者决定离开。必须有办法让这些人妥善地退出,而不是因为他们的疏忽而在项目的关键之处留下隐患。于是,FreeBSD形成了由选出的核心小组来面向提交人员工作的方式,而CSRG模式中的成员则完全自主,两者是不一样的。失去耐性的核心成员可以决定(或者被规劝)在其任期结束的时候不再连选。核心成员如果丧失面对提交人员开展工作的兴趣,也将不会获选。同等重要的是,积极而富有精力的人才有充分的机会得到不断提升。因为核心小组是选出来的,所以他们能到达到这个层次的原因是由于在项目上积极工作的同事认为他们应该获得这份工作。这种方法要比因为你和高层的某个人有私交而获得提升效果好得多。它还能确保核心小组是由善于和他人沟通的人所组成的,在那样的位置上,沟通是一项重要的技能。


#   FreeBSD项目的另一重要进步是能够自动完成许多任务,并且建立了源代码库、Web站点和缺陷报告的多处远程镜像。这些变革使得项目能够支持比CSRG模式下更多的参与者。FreeBSD项目还计划通过鼓励包括日本、澳大利亚、俄罗斯、南非、丹麦、法国、德国以及英国的积极人士在内的全世界开发人员参与,并且将其中几个国家称为FreeBSD开发积极国家,从而让项目变得不那么以美国为中心。


#   CSRG过去每两年发布一个系统的新版本。对这些发行版本所做的改动很少,一般只是很小和很关键的安全性或者稳定性方面的改动。CSRG会在发布版本之间提供测试版本,积累正在开发的新特性方面的经验。


#   FreeBSD项目极大地拓宽了CSRG的发布机制。FreeBSD始终都有两个版本。第一个称为“稳定(stable)”版本,专门供生产环境(production environment)使用。第二个称为“当前(current)”版本,它体现出了FreeBSD系统的当前状态,专门供开发人员和需要最新特性的用户使用。


#   稳定版本变化较慢,变动局限于修正缺陷、提高性能以及增加更多的硬件支持。虽然用户希望能更频繁地进行更新,这样可以随他们的需要频繁地下载和安装最新的稳定代码(比如,已经有针对某个重大安全漏洞的补丁之后),但是稳定的系统版本每年只发布3~4次。FreeBSD的稳定版本就如同CSRG发布的主板本,不同之处在于它们得到了更为积极的更新,而且用户也更容易获得更新。和稳定版本类似,当前版本的快照(snapshot)则每隔几个月做一次。不过,当前版本的大多数用户都会更为频繁地进行更新(每天更新也是司空见惯的事)。FreeBSD项目在全世界遍布了稳定发布版本和当前发布版本的镜像拷贝,从而让全世界的用户都能比CSRG发布版本更及时地进行更新。


#   当前版本大约每两年就分离出来创建一个新的稳定版本。一旦新的稳定版本经证实其稳定性足以满足生产环境的使用要求,那么在原来老的稳定版本上的工作大都会被停止,将其用于生产性环境的用户就会切换到新的稳定版本上来。开发工作的主线继续留在当前版本上。几乎所有的改动都首先用在当前版本上。只有当一项改动已经在当前版本上通过测试,证实能够在那样的环境下工作,才会把它从当前版本合并到稳定版本中去。


#   对比FreeBSD项目,CSRG长期以来一直具有的一项优势,即CSRG是加州大学伯克利分校的一部分。因为大学是一个非赢利性的机构,所以给CSRG的捐献会得到减税优惠。FreeBSD项目中有些人一直以来也觉得他们应该能找到办法让给项目的捐献也能得到减税优惠。几年之后,他们成立了FreeBSD基金会,经过3年的非赢利性工作之后,该基金会被美国税收部门批准为符合501c3条件。这项认证意味着向FreeBSD基金会的捐献可以和针对大学的捐献一样享受美国联邦以及州的减税优惠。能够减税的优势让freeBSD项目获得的资金捐献在数量上显著提高,这又让他们可以资助项目中那些实现起来枯燥,但又必须而且重要部分的开发工作。


#   经过过去十年的发展,FreeBSD项目一直以稳健的脚步在成长。尽管Linux吸引了大量的追随者,但是FreeBSD依然继续保持着它在高性能服务器领域内的地位。事实上,Linux在为开放源代码软件能应用于企业级市场而四处布道的同时,FreeBSD则隐藏在Linux的外衣之下。说服管理层从Linux切换到FreeBSD,要比说服他们从微软的Windows切换到FreeBSD容易得多。Linux也为FreeBSD带来了稳定的开发队伍。直到最近,Linux都没有核心的源代码库,为了提供个人的代码,要么不得不为某个Linux发行厂商工作,要么不得不说服一小撮可以将改动加入到系统的人里的某一位。FreeBSD项目中提交人员的年龄一般都在2530岁之间,并且具有在Linux或其他开放源代码项目上10年的编程经验。这些人经验丰富、表现成熟,能够很快为项目做出贡献。从开发人员向提交人员提升的过程本身又确保了某人有权直接向FreeBSD代码树提交代码的时候,他们能够理解代码风格和代码清晰合理等原则,这些原则对于保持FreeBSD的高质量、健壮性以及以维护来说都是至关重要的。


#   FreeBSD项目的目标是提供可以用于多种用途,又不用额外缝缝补补的软件。许多开发人员都在代码(和项目)上付出了巨大的投入,而且并不在意偶尔获得一点点经济上的补偿,但是他们肯定不会在这个项目上坚持下去。他们认为其首要任务是给所有的后来人提供用于任何用途的代码,从而让代码能够得到尽可能最广泛的使用,提供尽可能最大的效益[Hubbard, 2004]

阅读(1620) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~