为什么不是所有的政府软件都是开源的?

目前还没有人喜欢这篇文章。
Open and closed source

Opensource.com

联邦政府是世界上最大的代码采购方。那么,为什么这些由纳税人资助,并且对我们民主制度的日常运作至关重要的代码,却常常被隐藏在公众视野之外? 要回答这个问题,需要从两个方面入手:为什么政府如此频繁地在封闭平台上构建软件?以及一旦构建完成,为什么代码不向公众发布?

使用开源

当你在一个开放平台上构建软件时,贡献开源会容易得多。虽然可以将 VBScript(Visual Basic for Applications)开源,但你可能会从像 Ruby 或 Python 这样拥有更活跃在线社区的平台获得更大的动力和更热烈的反响。然而,在政府部门,更常见的情况是从一开始就倾向于“企业级”专有平台,这使得政府走上了闭源的道路。

对“企业级”解决方案的需求

在政府 CIO 部门中,普遍存在对开源的 FUD(恐惧、不确定和怀疑),认为开源安全性较低、漏洞多或成本更高,并且如果你不投资真正的“企业级解决方案”,就会陷入无尽的痛苦。一方面,如果机构向软件供应商开支票,他们知道自己会得到什么。合同中明确规定了功能、升级计划,并在出现问题时分配责任。更重要的是,供应商提供了一个电话号码,机构在需要帮助时可以拨打。“在支持论坛发帖,会有人回复”对于 CIO(首席信息官)来说可能是一个可怕的想法。

开源背后缺乏商业推手

甚至在交易发生之前,闭源平台可能已经拥有炫目的营销页面和一批联邦销售人员,他们会打电话给机构并在会议上设展台,这些都是开源平台传统上不做的事情,除了 Red Hat 和少数其他公司。当 CIO 办公室要求“企业级”功能,如审计跟踪或满足某些合规性要求时,你可以肯定闭源解决方案会确保这些功能被纳入下一个发布周期。

闭源承包商

最后,这些闭源平台是政府承包商所熟悉的,因为这是计算机科学课程中教授的内容,也是他们一直被要求提供的。如果一家经验丰富的开发公司拥有一批 ColdFusion 开发人员,当他们投标合同时,他们会建议使用 ColdFusion 构建项目。更不用说,政府的 RFP(需求建议书)可能范围界定得偏向他们已经知道的遗留技术。所有这些都意味着,在编写第一行代码之前,项目就几乎不可能看到机构防火墙之外的世界。

但是,即使机构正在使用闭源平台,也没有理由他们的自定义代码不能仍然是开源的

贡献开源

除了 18F(数字服务)、消费者金融保护局 (CFPB) 和少数其他机构外,政府实际上并不编写代码。事实上,即使想编写,它也很少有相关的人力知识。相反,机构传统上扮演着非技术项目经理的角色,为功能需求提供规范,并选择承包商来交付最终功能。机构中负责监督合同的联络点很少与开源社区互动,更不用说对开源充满热情了。因此,开源传统上甚至不是对话的一部分。为什么会是呢?

闭源工作流程

在实际的软件开发机制方面,合同可能要求采用抛掷围栏的工作流程,即机构甚至在代码投入生产后才看到代码,或者根本看不到代码——这与开源相去甚远。即使被问及,承包商也可能没有更现代的开源工作流程的经验,或者参与开源社区的经验,这给所有相关方都带来了糟糕的体验,并进一步打击了政府部门的开源努力。

将重复造轮子作为一种商业模式

我还怀疑联邦承包商不愿意开源他们的工作,考虑到各个机构的技术要求可能差异不大。一份 FOIA(信息自由法案)请求就是一份 FOIA 请求,一份新闻稿就是一份新闻稿,无论它是否使用 FAA 或 FDA 信头。第一次开源这些解决方案可能会减少对以纳税人费用第二次编写相同代码的需求。

“拒绝”的文化

一旦构建完成,就需要人为地使代码达到必要的逃逸速度,以克服机构的谨慎惰性。安全部门可能会说不。法律部门可能会说不。你必须获得代码托管平台的批准。你必须采购一份持续的维护合同来审查拉取请求。你必须制定一个开发者参与政策,说明如何接受他们。在各种优先事项竞争的世界中,政府雇员可能会选择继续进行下一个面向公民的项目,而不是花费可能数月的时间来对抗官僚机构对变革的免疫系统。

文化冲突

即使机构设法开源代码,开源社区遵循的一套规范也与政府僵化的等级制度大相径庭。政府机构并不总是知道如何最好地与开源社区互动,或者如何在他们自己的指挥和控制文化中整合开源工作流程。支持开源社区需要时间,而这正是政府雇员传统上所缺乏的。当机构不遵守开源社区的潜规则时,反对者的最坏担忧就会成为自我实现的预言。

透明度成为负担

开源代码使机构有可能受到数百万技术精湛、眼光锐利的评论家的批评,而从机构的角度来看,几乎没有感知到什么好处。非技术机构团队可能没有能力在内部评估代码的质量,而且通常最好是把事情掩盖起来,而不是可能将他们的丑事暴露给一些互联网上最熟练的网络喷子。更不用说,倡导者所宣扬的开源的好处往往没有实现,因此如果代码是专门构建的,以至于在政府部门之外无法使用,从而没有吸引外部贡献者,或者如果项目管理不善,以至于吓跑了这些贡献者,那么这些好处就无法起到制衡作用。

与此同时,在今天的政治气候下,未发布的源代码绝对不会带来任何责任。你会选择哪一个?

需要改变什么

要扭转这种默认状态,需要改变三件事

  • 首先,需要让政府雇员更好地理解和欣赏开源的优点。那些已经开源代码的机构这样做是因为有个人拥护者带头冲锋。成功的项目从一开始就以开源为目标进行规划,并有助于重塑市场需求。像 18F 和 PIF 计划这样的举措可以旨在激励和教育政府内部下一代开源倡导者。

  • 其次,即使机构没有明确要求,作为主题 matter 专家,政府承包商也有责任探索开源替代方案,并向市场宣传现代行业标准开发实践。任何随意的观察者都可以看到市场的发展方向,聪明的公司有机会走在市场的前面。围绕当今最热门的技术建立内部能力,并增加政府需求。使政府做正确的事情,而不是一直做的事情,变得更加实际。

  • 最后,开源社区需要加强自身建设,无论是在其提供的服务方面(超越开源是由业余爱好者编写的这种看法),还是在政府代码所获得的接受度方面。在供应方面,成为互联网上最受欢迎的开源项目(Automattic、GitHub 和 Red Hat 就是几个例子)背后的商业推手,消除 FUD 并提供“企业级”支持,存在巨大的商业模式。在需求方面,社区需要使发布代码成为一种责任(“你在隐藏什么?”),并通过打破“我们 vs. 他们”的心态,以及支持而不是批评政府学习开源的努力,使机构的投资回报清晰可见。

为什么不是所有的政府软件都是开源的?因为你有一个完整的价值链,旨在生产闭源软件,一个处于平衡状态的系统,几乎没有动力去反思自身。近年来,技术使开放协作变得更加容易,因此,开源生态系统蓬勃发展。然而,像所有技术一样,政府仍然落后于主流采用者几年。

希望在你的帮助下,这种情况能够改变。

最初发布于 Ben.Balter.com。根据 Creative Commons 重新发布。

标签
User profile image.
被评为政府和技术领域最具影响力的 25 人之一,并被美国首席技术官描述为“最坏的坏蛋创新者”之一,被白宫数字战略主管描述为“瓶子里的闪电”,Ben Balter 是 GitHub(世界上最大的软件开发网络)的政府布道师,他在那里领导着鼓励的努力

15 条评论

请在首次使用时定义首字母缩略词。“VBA”和“CIO”未定义。 尽管 18F 和 CFPB 有链接,但如果这篇文章要打印在纸上,例如在议会会议之前提供的“资料包”中,这并没有帮助。 我想把这篇文章转发给我们的市长和其他市议会议员和城市管理者,因为他们是不精通软件的人,但他们有权制定政策。

你不希望你的文章被最广泛的人群阅读吗?这是一个重要的问题。

谢谢 John,我同意,并且已经在文章中解决了你的担忧,你可以转发了。我们力求分解首字母缩略词,使内容易于理解,但有时还是会遗漏一些。我们今后会记住这一点。另外,感谢你与你的同行分享这篇优秀的文章。

为什么 GitHub 不是开源的?

很棒的文章,发人深省。我参与(并领导)一些政府资助的项目,开发开源代码,这些代码在许多其他领域都有好处。这很棒,但我们仍然经常遇到障碍,例如开源是否具有可持续的商业模式,开源对政府有什么好处等等。我们都需要做更多的工作来推广围绕开源的可持续模式,并培养围绕开放模式发展的生态系统,这些模式仍然提供专业的企业级支持。

大多数 Linux 用户现在已经转向 OS X(随便什么时候在 github 办公室走走就知道了)这一事实清楚地证明,闭源通常比开源好得多。见鬼,github 本身就是一个闭源平台,它的成功不是尽管是闭源,而是因为它是闭源。

“……我们民主制度日常运作不可或缺的一部分……”

“大学研究发现,美国是寡头政治,而不是民主或共和国” http://www.washingtontimes.com/news/2014/apr/21/americas-oligarchy-not-democracy-or-republic-unive/

为寡头/1% 赚更多钱?

> 为什么 GitHub 不是开源的?…… github 本身就是一个闭源平台,它的成功不是尽管是闭源,而是因为它是闭源。

你很难提出 GitHub 不完全支持开源社区的论点。 GitHub 理念的一个重要组成部分是对专有软件(你从中获利的软件)征税,以支持开源(致力于社区的软件)。 GitHub 几乎所有东西,除了“秘方”之外,都是开源的,例外情况是出于必要。 提供一项从专有软件中提取租金的服务,使我们能够支持开源,如果任何人都可以免费提供这项服务,我们就无法做到这一点。 有关更多背景信息,请参阅 http://tom.preston-werner.com/2011/11/22/open-source-everything.html。

你刚刚同意了我的观点。 Github 的成功是因为闭源,而不是尽管它是闭源。 Github 依赖闭源软件来运营业务,并且交易闭源软件只是为了维持运营。 IBM、微软、苹果、谷歌甚至联邦政府都可以提出和你一样的论点。 直到现在,只有政府才会称之为“税收”。

回复 作者:Ben Balter(未验证)

嗯,这篇文章有一点道理。但仅此而已…… 有很多缺失的部分。政府部门发布了大量开源项目。还有大量政府程序在开源上运行。许多新项目都依赖于开源……

这里有两个大型项目
BRL-CAD
https://en.wikipedia.org/wiki/BRL-CAD
http://brlcad.org/

ADA
https://en.wikipedia.org/wiki/Ada_%28programming_language%29
http://www.adaic.org/

而且这篇文章严重缺乏参考文献来实际支持这些说法。但是,这里有一个好的起点,可以消除文章作者对已发布主题的虚无研究……

http://www.govcode.org/

政府的普遍问题是运行的闭源桌面和办公程序……而不是政府部门和程序不编写、使用和发布开源代码。

我不明白一个表面上由人民拥有的政府怎么能在开源上工作。政府生产的任何东西都是为了人民,所以它也应该为其基础设施生产代码。

我同意政府可以在开源方面做得更多。但是,在文化和供应链被专有软件主导的地方,似乎很难改变。矛盾的是,政府的透明度至关重要,而只与一家供应商签订合同则不然。矛盾的还在于,使用人民的钱来经营他们的业务,政府应该始终将支出保持在合理的水平。

不过,在荷兰这里,有一些值得注意的例外。一个地方政府机构将所有 IT 预算都花在了软件开发上,结果完全失败,他们几乎没什么钱可花了。然后有人建议转向开源——他们就这样做了。现在,他们成为了一个例子,表明转向开源是可能的,并且由于不必支付巨额许可费,还带来了降低成本的额外优势。不幸的是,目前还没有大规模转向开源。

其他欧洲国家也有很好的例子,例如法国国家宪兵队 [1] 和大多数西班牙地区 [2] 都是很好的例子。即使欧盟政府也在推广开放标准,尽管他们为自己选择了专有系统。也许正是对独立的追求推动了对开源的选择。对于其余部分,自由软件运动应该继续询问政府,他们为什么做出他们所做的选择。

政府官员经常表示,切换到另一个操作系统会使员工感到困惑,并且量身定制的软件会过时。但是,为什么很多人私下从 Microsoft 切换到 Mac,从诺基亚手机切换到 iOS 而没有抱怨呢?此外,大多数企业软件都是基于 Web 运行的,因此操作系统不再是瓶颈。正如法国宪兵队指挥官曾经说过的那样:人们只需要习惯不同的图标和游戏(或类似的东西)。幸运的是,扫雷游戏也存在于 Linux 中。

政府的指挥和控制文化是一种奇怪的现象。许多海军和军队采用开源来控制舰船等。值得注意的是,指挥和控制是他们的专长,并且其基础设施的保密性至关重要。但是,他们进行切换主要是为了拥有坚如磐石的可靠系统,这也是国际空间站“Linux 化”的相同原因。

削减预算可以成为政府更广泛采用开源的杠杆。不断要求更多开源的公务员也可能会有所帮助。也许 Linux 销售人员有时穿西装会有所帮助 ;-)

[1] https://joinup.ec.europa.eu/community/osor/news/french-gendarmerie-open…
[2] https://joinup.ec.europa.eu/community/osor/news/spains-extremadura-star…

好文章。为共同利益而共同努力的人们创造最好的软件和最好的政府。围绕为政府提供服务和产品而建立的工业综合体是强大的实体。没有政治家希望因选择开源解决方案而不是将资金投入到有权势的选民口袋中的东西而被指责破坏就业。

政府和承包商内部和外部都使用了相当多的开源软件。前沿技术是开源在政府部门似乎表现出色的领域,而商品是闭源似乎表现出色的领域。但并不总是这样。

使用 ColdFusion 不再一定意味着代码必须是专有的。欧洲有一个名为 Railo http://www.getrailo.org/ 的开源 CFML 引擎,GitHub 上也有大量的 CF 代码。

回复:一方面,如果机构向软件供应商开支票,他们知道自己会得到什么。
====================
最近 ACA [奥巴马医改] 的推出经验应该可以克服这一点。

用于探索的调度和规划界面 (SPIFe) 现在在 GitHub 上以开源形式提供,网址为 https://github.com/nasa/OpenSPIFe 。 SPIFe 是一种集成的计划和调度工具包,它基于数百小时的专家观察、使用和改进,采用了最先进的计划和调度技术,用于 NASA 内的多个应用程序。它的设计从一开始就考虑到了操作用户的需求,并且针对其他商业和本土系统中常见的许多问题提出了独特的解决方案。 SPIFe 已在火星探测漫游者 (MER) 任务、凤凰号火星着陆器任务和火星科学实验室 (MSL) 任务中使用。它还被改编为飞行前计划和实时分析控制台工具,支持国际空间站 (ISS) 以及其他几个飞行项目和类似 LADEE 和 NEEMO 的所有计划阶段。开源 SPIFe 的核心目标是促进协作,并与外部参与和创新共享该软件。

Creative Commons License本作品根据 Creative Commons Attribution 3.0 Unported License 获得许可。
© . All rights reserved.