|
| 出处: 时间: 2007-11-16 |
|
| 【eNet硅谷动力专稿】自由/开源软件的先驱Richard Stallman说:“一般讲,我不认为GPL规则是Linux取得成就的主要原因,相反,我认为那是由于在1991年那个时期,Linus Torvalds第一个找到了分布式开发软件的正确的社会组织形式”。Linux操作系统创始人Linus Torvalds也曾说:“Linux成功的奥秘并不在于源代码本身,而是在于其开发方式,即允许所有程序员参与开发的开放源代码哲学,与他人共享自己的开发成果,于是开源社区不断扩大,创新浪潮高涨”。 开源社区的开发机制是一种全新、优秀的开发机制,是推动开源运动发展的重要因素。 很多中外人士,包括一些资深的软件专业人士,对开源社区开发机制,不但在认识上存在一些分歧,甚至还有一些认识不清的地方。 下面我们归纳人们在认识上的一些问题进行讨论: ? 开放的开源社区开发机制较之封闭的传统企业开发机制,其主要优势在哪里? ? 社区开发是否只是开源软件开发全过程中的一个开发阶段? ? 有人说,开源软件在社区开发阶段开发的是创新技术,在企业开发阶段开发的是成熟技术,你是否同意这种说法? ? 开源软件的全部源程序代码将公开,是否表示其全部技术将公开?开源软件是否还可能拥有技术秘密? ? 社区开发机制体现了“集体开发、合作创新”,是否还存在“自主开发创新”的空间? ? 开源文化或其哲学理念是否与开源软件的商业模式相抵触,对它们之间如何作出平衡? ? 开源软件的“社区发布版”是否体现了真正的自由软件?而开源软件的“产品发布版”是否可发展为具有商业模式的开源软件? 开源社区的主要特征 开源社区是一种分布式开发软件的社会组织形式,由分布在全球的志愿者(Volunteer, 他们之中很多来自一些IT企业的研发中心/小组,也有来自学校的学生或教师,还有来自社会各界的业余爱好者,甚至“黑客”)集结在社区,本着自由、开放、共享、协同的理念,利用互联网作为工具,不计报酬,进行“集体开发、合作创新和对等评估”。通常由开发、修改开源软件源代码(其成果将在网上公布)的人士组成社区的核心层;为了克服志愿者“自由散漫”的工作倾向,近年来在核心层中还由一批领取工资或补贴的“固定人员”组成了骨干核心层(他们一般由基金会来支付工资或补贴)。开源社区是一个非盈利组织,没有商业模式,其社区发布版通常可供人们从网上下载,并无偿地、自由地使用、修改、复制和分发。 开源社区开发机制的主要特征是: ? 开源社区一般由志愿者参与开发,不需成本(如上所述,目前在社区核心层中出现了一批由领取工资的固定人员所组成的骨干核心层,这时当然要增加一些成本,但总的来说社区还是低成本开发)。 ? 由志愿者组成的开发人员来自全球各地,其中不乏高水平者。 ? 社区开发人员具有自由、开放、共享、协同的理念,不以追求商业利益为其目的。 ? 开源社区开发的开源软件,实现了其全部性能的创新工作,在此基础上推出社区版(或β测试版,或参考平台)。发布社区版时,其全部源代码将在网上公布。 ? 社区开发是采用“集体开发、合作创新”的方式,在这里不存在所谓“自主开发创新”的空间。 ? 在社区开发阶段,在开发成果(推出的社区版)中,一般也不存在技术秘密和商业秘密。 ? 社区开发人员没有明确的研发路线图(Roadmap,因为社区开发人员并不了解用户的需求,很难制定出完整的研发计划)。 ? 社区开发人员不必对版本的挑错纠错(Bug Fix)、打补丁(Patch)、解决问题和质量认证等工作负责,社区只负责对投递给社区的有关缺陷(Bug)、补丁(Patch),进行有选择的验证工作。 ? 社区开发人员不需对市场策划、产品销售、技术支持以及产品服务负责;不需对后续开发、产品发布、商业模式负责。 ? 社区开发只完成了开源软件产品开发全过程中极端重要且必不可少的先导开发阶段(开发“创新技术”,开发全部产品性能),还需要非社区开发阶段(开发“成熟技术”,优化产品性能)与之卸接,即要求后续的企业开发阶段相应跟进。 后续的企业(非社区)开发的主要特征 ? 社区先导开发提供了完全创新的社区版,把产品的样品阶段的全部性能都开发出来了。后续开发的产品化技术(即成熟技术)通常不是由社区来开发,而是由开源软件发行商(Distro,Distributor)或开源企业接着来开发,随后推出产品版(或商业版)。 ? 对于这个后续技术,它主要关注于:改善操作稳定性,优化计算效率,增强灵活扩展性,提高产品质量,催化产品成熟度,我们也称之为工程化实现技术。 ? 如何开发工程化实现技术(以Linux为例): 1) 进行X-window工程化 众所周知,Linux操作系统工作时, 其基本应用程序,需要通过在中间层(Utility)中的图形系统和库函数,对内核中的各功能软件模块进行通信和调用来实现。在这里,作为底层窗口环境或图形显示系统的X-window(在Linux中称之为X Free 86)的工程化问题,对实现功能软件模块的优化组合或合理配置,提高调用效率,最终实现产品化的技术目标,起到关键作用。 对采用相同的Linux内核版本,进行不同程度的X-Window工程化的不同的产品发布版来说,它们之间在产品化的性能、效率等方面表现出相当大的差异,从而说明工程化实现技术的重要性。 2) 对Linux内核工程化 开源软件发行商采用“官方(Official)”的内核源代码(在网上公布),进行工程化处理,使自己使用的源代码与“官方”源代码具有不大于3-5%的偏差(发行商自己具有偏差的源代码不再另行公布),对该源代码作二进制处理成机器码(公布)。 对内核工程化处理,也有利于更好实现产品化的技术目标。 3) 进行挑错纠错,质量认证,改版升级 不断对产品发布版进行挑错、纠错、打补丁、升级,进行质量认证和与配套厂商(硬件、软件厂商)的兼容性测试,这也是实现产品化的技术目标的重要措施。 ? 工程化技术是一种实现技术、优化技术、隐性技术,主要表现为技术诀窍(Know-How)或熟练技巧(Skill)、工程经验、系统底层技术和顶层设计的的把握能力等隐性知识方面。 ? 从事工程化实现技术的开发工作将由开源软件发行商以“企业开发”的模式来进行。工程化实现技术是属于自主开发创新的范畴,因此后续的“企业开发”将可能拥有技术秘密和商业秘密,将可以建立商业模式。开源软件发行商建立的开源软件商业模式也有别于传统的私有软件厂商的商业模式。 |
| 【关闭】 【打印】 |
|
|
|
|