当前有许多新兴技术凭借着开源方式进行推广。开源软件的发展由来已久,目前已有数以万计的开源社区和模型。由于开源软件存在局限性,近来学术界开始对开源软件和社区的发展进行反思,认为:开源软件的使用比开发更重要;要重视发展开源软件工程技术;在大数据和云平台的环境下,应该建新的软件工程,包括软件的需求、设计、测试、整合、部署和监测。一个流行的开源软件拥有一群高效率的开发者和数量庞大的用户群,在通常情况下,用户无需支付费用。这些“免费”的开源软件往往由拿着高薪的工程师完成。为什么这些工程师愿意无偿从事开发?以Linux为例,以前很多人虽然反感微软的Windows系统,但由于没有其他操作系统,只能选择Windows。当Linux系统开源项目一出现,许多软件开发组织自愿加入进来。再如,OpenStack的开发也是如此,许多公司愿意付薪水给员工,并将其组成团队进行开发,期望OpenStack能取代市场的主导产品。如果市场上出现了能够主宰市场的产品,而其他公司却没有足够的资源能在短时间内开发出自己的产品与其竞争,这些公司就会结成联盟使用开源软件开发来改变竞争态势。安卓系统也存在同样的情形。该系统一直在利用开源软件系统与其竞争对手苹果iOS系统对抗。由于每个参与开发的组织都有自己的管理方式、企业文化及软件开发流程,因此他们只能以开源的方式合作,通过社区交换代码进行交流。这是开源软件和开源社区的驱动力。比尔·盖茨说过:“市场占有率是最重要的”。一旦占领市场,以后开发出来的软件就不得不依靠 之前拥有市场主导地位的软件,所以软件公司以占领市场为首要任务。由于人们可以免费或低价获取开源软件,所以开源成为占领市场的利器。1. 虽然大多数开源项目没有成功,但是成功的开源软件占据了绝大多数市场份额,例如Hadoop、Linux、Spark和OpenStack。2. 成功的开源软件大多是被“赞助”的(意指多个公司结成联盟进行软件开发),而“独立”的开源项目则大多失败。3. 成功的开源项目也可能走向失败,其原因有:出现了新一代产品,开源软件领导核心离开以及企业改变了经营策略等。4. 许多新的软件技术也经常使用开源软件来进行推广。例如作为当前金融学领域炙手可热的区块链技术 。“开源社区”的核心是“开源”,社区是“果”,而不是“因”。“赞助”往往是“因”,有了大量的赞助,才有了大量的开发人员。此外,社区这个“果”并不意味着其相应的软件已经成为“产品”。软件产品和项目是不同的,一个软件成为产品要花费大量的工程与测试。所以如果有人认为软件放在开源社区开发,就会有工程师免费参与,那是不切实际的。如果没有赞助,相信大多数工程师都没有兴趣来开发,愿意无偿开发的工程师毕竟是少数。斯蒂芬·瓦利斯(Stephen Wallis)在其著作中提到了开源社区和顾客的不同:社区是一群开发者,对软件有兴趣,有大量的时间却缺乏资金;顾客正好相反,没有时间但有钱。在一个社区里,开发者也可能是顾客,但不是每一个开发者都是顾客,也不是每一个顾客都是开发者。社区活动的要素包括:社区辨识与认同 (identify community)、社区的使命(mission)、平台工具、参与机制(architecture of participation)、行为准则、知识产权和治理结构等。开源社区需要顾客发现软件和使用软件,培训顾客使其了解软件并产生购买欲望。成功的开源社区形成的模式通常经历以下过程:(1)项目开始于一些开发者对问题的讨论;(2)开发者讨论要发展的项目;(3)把软件放在开源社区,让其他的开发者共同参与;(4)建立说明文档及FAQ,让众人参与讨论;(5)建立一个非盈利的基金会。基金组织确认知识产权管理的制度,使投资人从上述生态系统中获益。
开源软件的开发和应用:开源软件技术分为软件“开发”及“应用和采购 (adoption and acquisition)”两部分。人们往往谈论软件开发多一些,但是,通过了解美国国防部对开源软件的方针就会发现,他们更重视“采购”和“使用”。早期美国卡内基梅隆大学软件工程研究所(SEI)曾提出软件能力成熟度模型(Capability Maturity Model,CMM)理论,其重点是“软件的开发遵循着一定的流程”,流程在一定程度上保障了软件的开发质量。这在过去是正确的,但后来美国国防部的软件开发项目几乎全部采用了外包策略,这才有了软件采购技术的研究。采购技术是一种关于设计软件需求以及验证外包商开发的软件是否能够 被采纳的新兴技术。“采购”与“开发”技术有所关联。“开发”是源于“生产者”的观点,目的是用最高效的方法研发软件;“采购”是源于“消费者”的观点,目的是用最低的费用来快速地得到和使用有质量的软件。例如,生产者(工程师)关注设计和制造软件,消费者(用户)则更关注软件的质量、维护以及使用。采购技术是为了收集、批准和使用软件。对于那些有开发进度数据的软件系统,采购者需要检验开发进度中的数据,以判定开发者或者项目管理者是否存在欺骗。如果已经偏离了规定的进度,或者明显落后于计划,管理者就可以采取措施来改正或取消项目。如果没有可利用的进度数据,则采购者需要检验产品来判断软件质量。因此,采购者关注的是测 试和评价数据,根据需要获取足够的此类数据,来确保系统符合质量标准、安全性和可靠性标准。这项工作通常包含端对端测试和集成监测。采购者还需要确保所需的项目能够集成到现有系统中。因此,采购技术包括计划、承包、进度管理(包括规范、控制、跟踪和审计)、测试和评价以及最终政策和指向。在开源软件时代,采购的一个重要目标是创造可信赖的软件库,库中只存有通过严格测试和用户验证的软件。虽然国内外的开源社区非常多,也提供了大量的开源软件,但只有极少数的开源软件能通过严格的测试而放在可信赖的软件库中。美国国防部开发Forge.mil社区就采取了这个策略。Forge.mil与软件开发社区有许多不同,主要有以下几个特点:(1)需要用户提前、持续地参与系统开发;(2)软件开发者必须经常发布不同版本的软件;(3)所提交的软件必须可以持续升级;(4)开发者必须使用一种可模块化、开放的流程。社区包括软件库、协作开发/测试的环境、软件过程管理与方法、软件工具与资源这四个部分。其软件开发的方法是敏捷开发方式加上开源软件。要实现这个方法不仅需要社区有许多的开源软件,还需要对这些开源软件的使用提供大量的支持,包括传统的软件开发工具、社交网络以及大数据。可以利用大数据方法搜集每个开源软件的元数据,并利用云计算上面的快速运算来帮助搜寻开源软件。开源软件元数据是SEI所做的工作,正是得益于他们的软件支持以及云计算平台的联合,才有了持续集成(continuous integration)、持续测试(continuous testing)以及持续部署(continuous deployment)等技术。其他具有代表性的开源软件社区有Black Duck(黑鸭软件)、Stackoverflow以及CSDN(中国程序员大本营)。Black Duck是开源代码审计和管理领域的领导者,软件包含Protex、Codecenter和Export三个工具。Protex用于代码扫描,可以帮助用户发现自己的源代码中是否含有开源软件代码,如果有,则帮助用户判断其是否有触犯开源软件知识产权法律的风险。Codecenter是帮助用户在软件开发生命周期中管理和有效使用开源代码的工具。Export能够帮助用户发现源代码中是否含有加密算法等。Stackoverflow是一个与程序相关的技术问答网站。用户可以在网站免费提交问题,浏览问题,检索相关内容。CSDN创立于1999年,目前是中国最大的信息技术社区和服务平台,为信息技术从业者提供服务。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
明年1月1日起, 所有新房禁止接煤气! 烧饭只能用电, 华人受严重影响!
MIT华人博士生将ChatGPT搬进Jupyter,自然语言编程一站式搞定
泪目!Vicuna数字孪生再现10年前的自己,跨越10年对话感动无数人
荣耀×AMD携手亮相CJ MagicBook X Pro系列锐龙版8月8日发布