主条目:开源软件开发模型
开发模型
编辑
在他1997年的文章大教堂与集市中,[6]开源倡导者Eric S. Raymond提出了一种被称为"集市"模型的开发OSS的模型。Raymond 将传统方法开发软件与建造大教堂相类比,"由个别巫师或小团队的法师精心制作"。[6]他建议所有软件都应该使用集市风格开发,他将其描述为"各种不同议程和方法的大杂烩集市"。[6]
然而,在传统的开发模型中,他称之为"大教堂"模型,开发是以中心化的方式进行的。角色是明确定义的,角色包括负责设计的人(建筑师)、负责项目管理的人以及负责实施的人。传统的软件工程遵循大教堂模型。
然而,集市模型是不同的。在这个模型中,角色并没有明确定义。Gregorio Robles[7]提出,使用集市模型开发的软件应该表现出以下模式:
用户应被视为共同开发者
编辑
用户被视为共同开发者,因此他们应该可以访问软件的源代码。此外,鼓励用户提交对软件的添加、代码修复、漏洞报告、文档等。拥有更多的共同开发者增加了软件演化的速度。林纳斯之法则说:"只要眼睛足够多,所有的错误都是浅显的。"这意味着如果有很多用户查看源代码,他们最终会找到所有的错误并提出如何修复它们的建议。请注意,一些用户具有高级的编程技能,此外,每个用户的计算机提供了额外的测试环境。这个新的测试环境提供了查找和修复新错误的能力。
早期发布
编辑
软件的第一个版本应该尽早发布,以增加尽早找到共同开发者的机会。
频繁集成
编辑
代码更改应尽可能经常地集成(合并到共享的代码库中),以避免在项目生命周期末期修复大量错误的开销。一些开源项目有每晚构建,自动进行集成。
多个版本
编辑
应该有至少两个版本的软件。应该有一个具有更多功能但更不稳定的版本和一个具有更少功能但更稳定的版本。有问题的版本(也称为开发版本)是为希望立即使用最新功能并愿意接受尚未经过充分测试的代码风险的用户准备的。用户然后可以充当共同开发者,报告错误并提供错误修复。
高度模块化
编辑
软件的一般结构应该是模块化的,允许独立组件的并行开发。
动态决策结构
编辑
需要一个决策结构,无论是正式的还是非正式的,根据不断变化的用户需求和其他因素进行战略决策。与极限编程进行比较。
然而,数据表明,OSS 并不像集市模型所暗示的那么民主。对 31,999 位开发者编写的五十亿字节的自由/开源代码进行的分析显示,74% 的代码是由最活跃的 10% 的作者编写的。一个项目中参与的作者平均有 5.1 人,中位数为 2 人。
优势
编辑
开源软件通常比专有软件更容易获取,这通常会增加其使用率。此外,标准的开源实现的可用性可以增加对该标准的采用。[8]它还有助于建立开发者的忠诚度,因为开发者感到有权力并对最终产品有一种所有权感。[9]
此外,OSS 需要更低的市场营销和后勤服务成本。这是一种宣传公司形象,包括其商业产品的好工具。[10]OSS 开发方法有助于快速、廉价地生产可靠的高质量软件。[11]
开源开发提供了加速创新和创新和社会价值创造的潜力。例如,在法国,一项政策鼓励政府支持自由开源软件,导致每年近 60 万次 OSS 贡献,通过增加开源软件的数量和质量来生成社会价值。这一政策还导致了科技初创公司的增加约 18%,以及IT部门就业人数的增加约 14%。[12]
据说它更可靠,因为通常有数千名独立程序员测试和修复软件的错误。开源不依赖于最初创建它的公司或作者,即使公司失败,代码仍然存在并由其用户开发。此外,它使用对每个人都可访问的开放标准;因此,它不会出现在专有软件中可能存在的不兼容格式的问题。
它是灵活的,因为模块化系统允许程序员构建自定义界面或添加新的功能,并且它是创新的,因为开源程序是许多不同程序员合作的产物。不同的观点、公司目标和个人目标的混合加速了创新。
此外,自由软件可以根据纯技术要求进行开发。它不需要考虑商业压力,这往往会降低软件的质量。商业压力使传统软件开发人员更加关注客户的需求,而不是安全需求,因为这些特性对客户而言有些看不见。[13]
开发工具
编辑
在 OSS 开发中,工具用于支持产品和开发过程的开发。[14]
像Concurrent Versions System(CVS)和后来的Subversion(SVN)和Git这样的版本控制系统是工具的示例,通常本身也是开源的,有助于管理软件项目的源代码文件和对这些文件的更改。[15][16]这些项目通常存储在像Launchpad、GitHub、GitLab和SourceForge这样的仓库中,这些仓库是托管并发布在源代码托管设施上的。[17]
开源项目通常组织松散,"很少有形式化的流程建模或支持",但通常使用问题跟踪器等工具来组织开源软件开发。[14]常用的bugtracker包括Bugzilla和Redmine。
像mailing lists和IRC这样的工具提供了协调开发人员之间的手段。[14]集中式代码托管站点还具有允许开发人员进行沟通的社交功能。[17]
组织
编辑
一些参与开源软件开发的“知名组织”包括Apache Software Foundation,他们是Apache网络服务器的创建者;Linux Foundation,这是一个非营利组织,截止到2012年,由Linux操作系统的创造者Linus Torvalds雇佣,该操作系统的核心是Linux kernel;Eclipse Foundation,这是Eclipse软件开发平台的所在地;Debian Project,他们是著名的Debian GNU/Linux发行版的创建者;Mozilla Foundation,这是Firefox网络浏览器的所在地;以及OW2,这是一个欧洲社区,致力于开源中间件的开发。新组织往往拥有更复杂的治理模型,其成员通常由法律实体成员组成。[18]
開放原始碼軟體研究所(英语:Open Source Software Institute)是一个成员制的非营利组织(501(c)(6)),成立于2001年,旨在促进在美国联邦、州和地方政府机构内开源软件解决方案的开发和实施。OSSI的努力重点是在联邦政府、国防部和国土安全部社区内推广开源软件程序和政策的采用。[19]
美國開源組織(英语:Open Source for America)是一个旨在提高美国联邦政府对开源软件的好处的认识的团体。他们的目标是鼓励政府使用开源软件,参与开源软件项目,并采用开源社区动态,以增加政府的透明度。[20]
軍事開源軟體工作小組(英语:Mil-OSS)是一个致力于在军事领域推动开源软件的使用和创建的团体。[21]
资金
编辑
主条目:开源软件的商业模式
以开源软件开发为中心的公司采用各种商业模式来解决提供根据定义免费授权的软件如何赚钱的挑战。这些商业策略的基础都是,开源技术的用户愿意购买在专有许可下的附加软件功能,或者购买其他服务或价值元素,以补充核心业务中的开源软件。这种附加价值可以包括但不限于,符合企业级要求的功能和正常运行时间保证(通常通过服务级别协议提供)以满足业务或合规要求,通过尚未在开源版本中提供的功能获得性能和效率提升,法律保护(例如,免受版权或专利侵权的赔偿),或者与专有软件应用程序典型的专业支持/培训/咨询等专业支持。