导读:作为美国国防部数字工程战略的一部分,软件至少20%需要满足开源要求。根据评估,开源软件计划降低了美军系统建设成本,实现了抵消战略(Offset Strategy)优势。工业4.0研究院翻译全文,供行业人士参考。

联邦政府每年在软件上花费数十亿美元。政府使用的很大一部分软件是由既有的联邦政府解决方案或者商业解决方案组成的。这些解决方案也包括开源软件。开源软件是由源代码开发的软件,源代码可以根据许可协议进行修改、共享和重用。当联邦机构无法确定现有的解决方案(包括商业软件)能否满足其特定需求时,他们可以选择自行开发制定软件解决方案或付费外包开发工作。但是,当机构采购定制开发源代码的时候,他们不一定会将其新代码作为开源软件,广泛提供政府范围的重用。

根据管理和预算办公室(OMB)说法,即使这些机构能够在整个政府范围内提供其源代码,他们也不会以一致的方式将这些代码提供给其它机构。这个现状带来的挑战是,联邦政府各个部门可能重复购买一些基本相似的代码,并导致纳税人资金使用效率低下。

2016年8月8日,OMB发布了M-16-212备忘录,对于联邦机构通过使用开源软件代码来改善其采购、构建和交付软件解决方案的方式,提出了规定和要求。该备忘录要求各机构实施开源软件试点计划,并制定其它相关要求以配合实施。

2017年12月12日颁布的《2018财政年度国防授权法》规定,国防部长应该在180天内(即2018年6月10日之前)启动OMB备忘录制定的开源软件试点计划。此外,该法案还要求国防部在60天内(即到2018年2月10日)向国会报告其计划细节。该计划报告的内容应包括:确定候选的软件程序及其选择标准、定义知识产权和许可协议问题,以及由国防部长确定的任何其他事项。

该法案还包括一项条款——美国政府问责办公室将在2019年6月1日之前向美国国会报告国防部实施开源软件试点计划的情况。

我们的目标是:

(1)评估国防部已在多大程度上实施了开源软件试点计划,以及OMB备忘录确立的其它相关要求;

(2)描述国防部负责官员对使用开源软件的看法。

为实现第一个目标,我们从0MB备忘录“联邦的源代码政策”中选择了六项要求:通过可重用及开源的软件实现效率、透明度和创新(M-16-21,2019年8月8日),因此我们肯定需要建立开源软件试点计划。

建立试点项目有两个基本要求:

(1)每年至少公布20%的新定制开发代码,作为应计划要求的开源软件;

(2)制定相关评估标准,以衡量试点计划的实施效果。

其它四个支持试点计划实施的要求分别是:

(1)发布开源软件相关政策文件;

(2)进行开源软件分析;

(3)保护数据权限和盘点定制代码;

(4)促进开源软件社区建设。

为此,我们与国防部CIO及国防数字服务局的官员会面,讨论了国防部实施开源软件试点计划的情况。为确定试点计划的实施程度,我们评估了国防部为实施六项试点计划要求所做的工作。

为实现第二个目标,我们与国防部各部门负责开源软件开发和管理的官员进行了结构化访谈。这些官员包括:国防部采办与维护部副部长办公室、国防部CIO办公室、海军与海军陆战队CIO办公室、陆军通信电子司令部、国防信息系统局、DARPA、空军采购、技术和后勤部助理部长办公室。

我们了解到他们关于开源软件普遍使用的好处有什么观点,以及对此问题的关切。我们还获得了他们对OMB备忘录中有关实施开源软件试点计划具体要求的看法。

我们根据公认的政府审核标准,从2018年8月至2019年9月进行了此项绩效审核。这些标准要求我们对审核作出计划和执行,获取充足且恰当的证据,以便为基于审核目标的观察和结论提供合理的基础。我们认为,所获得的证据已为我们基于审核目标的观察和结论提供了合理的基础。

一、背景

开源软件是根据许可协议分发的软件,该许可协议提供使用、修改和重新分发初始源代码的广泛权利。开源许可对形式这些权利的用户施加了某些义务。其具体义务在多种不同的开源许可协议中会有所不同。常见的义务有:提供源代码、发布版权声明,或向该程序的任何接收者提供许可证副本。某些限制性开源代码许可证允许用户复制、修改和分发软件,前提是修改后的版本(即衍生版本)必须遵守与初始源代码形同的许可条款和使用条件。这样做是为了防止其衍生软件被做成可单独销售的封闭源代码软件产品。

开源软件的重用被认为是降低开发成本的同时提高软件质量的一个有前景的手段。根据软件专家的说法:软件重用具有以下潜力:

  • ž提高可靠性。因为这样做意味着可以使用经过彻底测试和验证的组件来开发系统。

  • ž通过减少开发软件所需的时间和工作量来提高工作效率;

  • ž通过共享开发和维护软件所需的知识和做法来降低成本;

  • ž促进通用组件和程序的使用,建立更规范和意志的软件开发和维护方法。

二、OMB关于联邦源代码政策的备忘录

2016年8月,OMB向各部门和机构负责人发布了一份备忘录,以确保新的定制源代码可供联邦政府重复使用。该备忘录旨在改善联邦机构采购、构建和交付信息技术和软件的方式,并要求所有机构建立一个试点计划。根据该计划,需要把至少20%的新定制代码作为开源代码发布3年。OMB还要求各机构指定一套标准来计算作为开源软件发布的代码的百分比,以便评估试点计划的实施情况。

OMB的备忘录还确定了实施开源软件试点计划的四个支持要求:

  • 发布开源软件政策,确保代码可供政府范围内重用。

  • 采用开源软件解决方案的三步分析法:(1)战略分析和替代方案分析;(2)考虑现有的商业解决方案;(3)考虑定制开发。此外,在分析的三个步骤中,各机构还必须考虑一些必要因素,例如云计算和开放标准。

  • 确保政府范围内的数据重用和新的定制清单代码的数据权利,与code.gov网站提供的指南一致。

  • 通过开发和发布代码的方式,促进开源软件社区的发展。可采取以下方式:(1)促进社区应对共同挑战;(2)提高开源软件社区对源代码提供反馈和贡献的能力;(3)鼓励联邦政府雇员和承包商通过为现有项目增添价值,为更广泛的开源软件社区作出贡献。在执行过程中,各机构应遵守以下原则:(1)利用现有社区;(2)参与开放开发;(3)定期发布时间表;(4)考虑作代码贡献;(5)把源代码文档化以方便使用和采用。

三、国防部对OMB开源软件要求的实施

国防部CIO对实施OMB开源软件试点项目要求负责。CIO直接向国防部长汇报,并负责全部门的信息技术(包括国家安全系统和国防业务系统)、信息资源管理和运行效率。CIO还负责制定关于国防部所有信息技术和信息系统运作和保护的战略和政策。其它职责还包括:维护关于关键任务及关键任务信息系统的综合清单、评估和监控绩效测量,以及与整个部门信息环境相关的管理职能。

此外,国防数字服务局负责协助CIO实施开源软件试点项目等举措。国防数字服务局是由具有商业经验的软件开发人员、软件设计师、产品经理,以及国防部内部的项目专员组成。该组织致力于支持国防部的特定项目或计划,以实际方式实质性地改进整个部门的数字服务。国防数字服务局还配合CIO监控已清点的程序、促进推进开放源代码的过程,并填充Code.mil代码库上的源代码清单。

四、国防部促进开源软件使用的相关工作

2018年6月,国防部CIO根据《2018财政年度国防授权法》第875(b)条(Public Law 115-91)向国会发布了一份报告。报告向国会提供了该部实施OMB备忘录中确定的开源软件试点项目的计划。在报告中,CIO承诺以四种方式尽可能广泛地共享其非机密的定制源代码:(1)审查并选择国防数字服务局已自行识别为准备开放其源代码的软件程序;(2)查询合同数据库,确定包含适当数据权利语言的合同;(3)确定现有源代码存储库中的源代码是否可以开源;(4)发布全部门范围的数据调用令,以识别和选择正在开发的新定制程序代码。

CIO的报告中还阐述,该部门将确定和评估已清点的软件程序,并与各部门合作制定项目进展情况的汇报机制。报告包括确定候选软件程序的选择标准:(1)具有合同保障政府数据权的程序;(2)具有合同保障的,可以实现、支持和执行国防部和整个政府范围内共享和重用的定制开发代码;(3)具有适当管理以确保政府权利得到维护的程序;(4)利用最佳实践确保以可重用的方式交付定制开发的代码、文档和其它相关材料的程序。

CIO还报称,国防数字服务局将协助项目开展。具体来说,国防数字服务局的主要职责是制定指南、流程,以及回复与开源软件相关的频繁问询。

2018年10月,国防部CIO向CMO(首席管理官)、军事部门的秘书、参谋长联系会议主席、国防部副部长、军事局局长、法律总顾问、成本评估和项目评价(CAPE)总监、运营测试和评估总监,以及主管立法事务的助理国防部长等发布了备忘录,通知他们根据OMB2016年备忘录的要求实施开源软件试点项目。CIO要求以上组织在该备忘录发布起30天内采取四项行动:

  • 清点在2016年8月之后由部里创建或购买的所有非机密定制开发源代码(无论其数据权限和开源状态如何),并给CIO提供在code.gov网站的指南上所要求的信息;

  • 鉴定并提供可以参与开源工作的联络点;

  • 直接授权官员,让他们在通过适当的安全性、代码属性和政策审查后,快速评审和批准用于公开和发布开源的非机密代码;

  • 直接订约官员根据美国国防部联邦采购法规条例,确保所有未来合同中对定制开发源代码的数据权利限制性最低。

五、国防部尚未完全实施开源软件试点计划和相关的OMB要求

根据相关法律法规授权,国防部启动OMB备忘录M-16-21制定的开源软件试点项目。

该计划要求:

(1)在试点计划期限内,每年至少发布20%的新定制代码;

(2)收集与新定制软件有关的其它数据,用于告知评估试点项目绩效的措施。

此外,OMB备忘录还要求国防部实施以下工作:

(1)发布开源软件相关政策;

(2)进行开源软件分析;

(3)保护数据权利和定制代码清单;

(4)促进开源软件社区建设。

截至2019年4月下旬,国防部尚未完全执行法律规定的开源软件试点计划。国防部已部分实施了“将至少20%的新定制开发代码作为开源软件发布”的要求。具体来说,截至2019年7月,Code.gov网站报告该部门发布了不到其定制开发代码的10%。该部门尚处于试点计划实施的早期阶段,尚未确定合适能够全面实施试点。据国防部CIO提交的报告称,由于国防部规模巨大,几乎不可能清点自2016年8月以来开发的所有源代码。要实现OMB在备忘录中提出的“发布至少20%的新定制开发程序源代码作为开源软件”的目标将非常困难。

此外,国防部没有实施OMB提出的“制定一致的指标以评估试点计划绩效”的要求。国防部之所以仍未制定此类指标,是因为国防部内部在应以哪些数据作为考核标准的问题上,难以达成共识。

根据CIO的说法,选用绩效标准比较难以取舍。如果该标准是“代码行”,那么对于哪些投入大量资金进行研究的项目来说很不公平,而研发投入小的项目就可以取巧了。如果以“项目工时”作为衡量标准,那么那些在源源不断产生创新火花所花费的时间就被抵消掉了。如果采取“项目数量”为标准,则会同时忽略上述提到的两个方面。CIO指出,由于预计各构成单位需要收集和汇报所需的数据,因此CIO办公室计划与他们联系,以促进数据需求达成共识,以及应该采用何种措施来计算和监控绩效。

关于支持实施该试点计划的四项OMB备忘录要求,该部门部分实施了三项,而未执行其余的意向。下表描述了国防部对OMB支持要求的实施程度,以及在每个要求上开展的工作。

国防部建立开源软件试点计划特定支持要求的实施情况

OMB 要求

国防部已实施的程度

发布开源软件(OSS)政策

未实施

进行OSS分析

部分实施

保护数据权以及开列新定制代码清单

部分实施

促进开源软件社区的建设

部分实施

说明:部分实施=国防部已提供初步计划或采取了初步行动。未实施=国防部未提供计划,也未有启动计划或行动的证据。

(一)发布开源软件政策

国防部尚未实施发布开源软件政策的要求。根据国防部CIO的说法,该部拥有适用于开源软件的现有采购政策,例如5000系列和2009年10月发布的一份阐明开源软件的备忘录。然而,根据国防部官员的说法,这些政策已经陈旧过时,并不符合OMB备忘录中的要求。例如,尽管部里的政策要求是,在开始任何技术采购或定制代码开发之前,该项目必须先进行备选方案分析、采购研究或商业案例分析,但并不要求项目考虑将定制代码作为开源软件发布的价值,也不要求协商制定出能够体现相关价值的数据权利。

国防部承认,他们没有制定出OMB备忘录要求发布的政策。根据CIO的说法,部里制定政策的速度比较慢,因为修订这类政策需要整个部门调动大量资源来作协调和支持,这将花费额外多的时间去处理和落实。

CIO还表示,该部门计划在2019年年末之前更新其现有的开源软件备忘录并将其作为政策发布。特别是,国防部打算与采购和计划管理人员协作起来,定义方法、流程和最佳实践,以扩大软件的可复用性。如果能够有效执行与OMB备忘录一致的预期步骤,则国防部应该能够完全满足其要求。

(二)进行开源软件分析

国防部已部分实施了进行分析以考虑替代软件解决方案的要求。根据国防部CIO的说法,在OMB进行三部分析所需的三个要素中,现有的5000系列政策可以解决其中一些要素。如前所述,该政策要求项目在启动任何技术采购或定制代码开发之前,必须进行备选方案分析、贸易研究或商业案例分析。但是,根据CIO的说法,国防部的政策并未要求项目考虑将定制代码作为开源软件发布的价值,也无需考虑就体现其价值的数据权利进行协商。另据CIO称,该部门计划在2019年年末之前更新其现有的开源软件备忘录并将其作为政策发布。特别是,国防部打算与采购和计划管理人员协作起来,定义方法、流程和最佳实践,以扩大软件的可复用性。如果能够有效执行与OMB备忘录一致的预期步骤,则国防部应该能够完全满足其要求。

(三)保护数据权以及开列新定制代码清单

国防部通过启动流程,保护数据权以在政府范围内复用,并清点其新定制代码,部分实施了这项要求,具体来说,2018年10月的备忘录要求国防部组织指导承包商在未来所有合同中为定制开发的源代码确保最少限制的数据权,并清点在2016年8月之后创建的所有源代码。然而,当我们在2018年12月——即发布备忘录的两个月后与国防部负责软件管理的IT和软件官员讨论此事时,11名官员当中有7名不知道这项根据OMB备忘录启动的法定任务试点计划。此外,国防部还没有就预计何时完成清单提供里程碑事项。

(四)促进开源软件社区建设

国防部已部分实施了建立开源软件社区的要求。根据2018年10月国防部CIO发出的定制开发源代码数据调用备忘录,国防部CIO正在与国防数字服务局制定开源代码的指南和流程。2017年2月,国防部宣布启动Code.mil,这是由国防数字服务局(Defense Digital Service)领导的一项开源计划,使全球软件开发人员可以就联邦雇员编写的非机密代码进行协作,以支持国防部项目。最终,国防信息系统局建立了一个网站Forge.mil,社区成员可以在此协作使用开源和国防部社区源软件。Forge.mil网站还通过软件版本控制、需求管理、论坛和文档存储库等服务来实现协作开发。

但是,国防部尚未完全投入开源代码的开发,没有为其软件代码制定一个定期发布的时间表,也未完全记录其源代码以方便部门范围内的使用和采用。据CIO称,该部门处于实施开源软件试点计划的初期阶段,尚未对现有开源软件政策备忘录进行修订和发布。他表示,CIO办公室计划要求国防部各组织就改进计划提供协作和投入,并确定特定流程和期望,以改进部里的定制开发软件。但是,国防部尚未就何时完全实施这些要求提供里程碑,并表示要实现100%合规是不现实的期望。

照此现状,直到国防部完全实施《2018财年国防授权法》所规定的开源软件试点计划,包括OMB备忘录M-16-21的要求,国防部可能会错过实现相关成本节约和效率提高的机会。此外,该部门将无法有效地确保对试点计划的管理监督和实施。

六、国防部官员对使用开源软件预期收益和风险的看法达成共识

国防部官员一致认为:使用开源软件可能会带来财务收益并提高效率。

国防部11个构成单位的官员代表报告称,开源软件可以潜在地产生财务收益并提高效率。这些官员们提供了以下经济效益示例:

  • 海军CIO、陆军通信电子司令部、负责采购和维护的国防部副部长、空军采购、技术和后勤助理部长办公室的官员指出,开源软件通常比商用现货(COTS)便宜,从而节省了成本。

  • 与我们交谈的一名空军关于表示,增加使用开源软件可能会节省成本。该官员还指出了空军用于识别可能适合使用开源软件的开发项目的一般标准。特别是,如果只是在内部进行维护,而且不会导致其它事项的成本上升或效率降低,则应该考虑开源软件。

  • DARPA的一位官员在与我们的交谈中表示,开源软件在通过减少重复工作来降低成本方面具有积极的作用。该官员还表示,开源软件允许任何规模和预算的机构参与共享投资,以更低的成本获得软件功能。

  • 国防信息系统局的一名计划经理报告说,该局已经确定了一种开源软件解决方案,比通过供应商提供的商业解决方案成本更低,而且提供了更多功能。项目经理解释说,当该机构实施新的开源软件解决方案是,与商业解决方案相比,每年可节省2000万美元。

官员们还分享了开源软件如何提高软件开发效率的示例。

美国海军CIO和美国海军陆战队CIO办公室的官员表示,开源软件解决方案可以通过快速解决用户需求和要求来提高效率。相反,由于获得解决方案的过程比较漫长,因此COTS(商用现货)解决方案不能适应于需要快速开发的工作。

同样,一名空军官员指出,更多地使用开源软件可以对用户需求作出快速响应,以提高效率。

国防信息系统局的一位项目经理报告说,选择开源软件解决方案而不是和供应商签订COTS解决方案合同可以提高效率。这位官员解释说,使用开源软件解决方案使该机构可以开发和维护其内部技能,如果他们选择与提供熟练技术人员的供应商签订合同,则无法获得能力提升。

七、国防部官员对开源软件带来的网络安全风险表达了不同意见

11个构成单位官员对如何管理因使用开源软件带来的网络安全风险持不同意见。具体来说,来自三个构成单位的官员表达了安全问题和缺乏网络安全治理流程可能会导致开源软件被零散使用的观点。例如:

  • 海军CIO办公室的一位官员将内部威胁(例如心怀不满的员工嵌入恶意代码)视为可能严重限制开源软件使用和共享的因素。根据这位海军官员的说法,如果没有一套能够有效验证软件中是否含有恶意代码的流程,海军增加开源软件的使用量的话保证是一种冒险。这位官员表示,相比之下,采用COTS软件基本不需要担忧这个问题,因为供应商有进行相关测试和验证的流程,以确保软件不含恶意代码。

  • 海军陆战队CIO办公室的一位官员表示,开源软件在软件开发工作中被零散使用是处于安全考虑,因此海军陆战队内部的一些网络安全官员不鼓励使用开源软件。

  • 陆军通信电子司令部的一位官员指出,一旦发起实体将源代码作为开源软件发布,国防部就会出现缺乏治理程序的问题,因为发起实体不再保留对源代码重新分发版本的控制权。据该官员称,由于这种安全隐患的存在,陆军的项目经理可能不愿使用开源软件。

另一方面,国防部有8个构成单位的官员都表示,使用开源软件的潜在网络安全风险是可控的,不应该限制开源软件的使用。例如:

  • 国防部负责采办和维护事务的副部长办公室一位政策顾问指出,实际上存在一些用于分析和识别安全可靠开源代码的扫描工具,但部里并没有使用它们。选择使用这些可用的扫描工具,就可以清点出可用的开源代码。该政策顾问还表示,可以将安全措施纳入软件操作中,而不是单单依靠软件开发来保障,能够使用户知晓代码是否已被破坏并作出适当的反应。

  • 负责采办和维护的国防部副部长办公室的一名计划管理员建议,可以通过建立一个可信任代码的安全清单库来缓解安全隐患。

  • 空军采购、技术和后勤助理部长办公室的一位官员报告说,只要对开源软件进行了适当的审查以确保其安全性,而且不受恶意代码的侵害,就可以为国防部提供机会节省成本和提高效率。

八、结论

对开源软件的使用进行试点测试是确定和改进国防部采购、构建和交付信息技术和软件解决方案的一种重要方法。但是,该部门尚处于实施试点计划的初级阶段,尚未确定何时可以完全实施试点。具体来说,国防部尚未将其20%的新代码提供复用,也没有确定评估该试点计划绩效的措施。此外,国防部尚未建立保护数据权和列出清单或促进社区发展的里程碑事项。在国防部完全实施该试点计划并确定完成OMB要求的里程碑之前,该部门将无法体现出显著的成本节省和效率优势。

九、执行行动建议

在此,我们向国防部提出以下四个建议:

  • 建议1:国防部长应该通过将至少20%的新定制代码作为开源软件发布,以确保国防部实施试点计划。

  • 建议2:国防部长应确保国防部确定一种措施,以计算已发布代码的百分比,并据此评估实施试点计划的进度。

  • 建议3:国防部长应确保国防部建立里程碑事项,以完成OMB备忘录M-16-21中关于确保数据权和清点代码的要求。

  • 建议4:国防部长应确保国防部建立一个里程碑,以完成OMB备忘录中为促进开源软件社区建设提供便利的要求。

https://www.gao.gov/assets/710/701285.pdf

声明:本文来自数字孪生体研究中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。