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

目前还没有读者喜欢这个。
Open and closed source

Opensource.com

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

使用开源

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

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

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

开源背后的诉讼较少

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

闭源承包商

最后,这些闭源平台是政府承包商所熟悉的,因为这是计算机科学课程中教授的内容,也是他们一直被要求提供的。如果一家经验丰富的开发公司拥有一批 ColdFusion 开发人员,当他们竞标合同时,他们会建议用 ColdFusion 构建项目。更不用说,政府的 RFP (征求建议书) 可能被限定为有利于他们已经了解的遗留技术。所有这些都意味着,在第一行代码编写之前,项目就注定无法走出机构的防火墙。

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

贡献开源

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

闭源工作流程

在实际的软件开发机制方面,合同可能要求采用抛掷围墙的工作流程,即机构甚至在代码投入生产之前都看不到代码,更不用说开源了。即使被要求,承包商可能也没有使用更现代的开源工作流程的经验,或者参与开源社区的经验,这会给所有相关人员带来糟糕的体验,并进一步扼杀政府部门的开源努力。

将重复发明轮子作为商业模式

我还怀疑联邦承包商不愿意开源他们的工作,考虑到不同机构的技术要求可能差别不大。无论是在 FAA (美国联邦航空管理局) 还是 FDA (美国食品药品监督管理局) 的信笺抬头纸上,FOIA (信息自由法案) 请求都是 FOIA 请求,新闻稿都是新闻稿。第一次开源这些解决方案可能会减少第二次以纳税人开支编写相同代码的需求。

“否”的文化

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

文化冲突

即使机构设法开源了代码,开源社区遵循的规范也与政府严格的等级制度截然不同。政府机构并不总是知道如何最好地与开源社区互动,或者如何将开源工作流程整合到他们自己的指挥控制文化中。支持开源社区需要时间,而政府雇员传统上都很缺时间。当机构不遵循开源社区不成文的规范时,反对者的最坏恐惧就会成为自我实现的预言。

透明度作为一种责任

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

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

需要改变什么

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

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

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

  • 最后,开源社区需要加强自身建设,包括它所提供的服务——摆脱开源是由业余爱好者编写的这种看法——以及政府代码所受到的待遇。在供应方面,成为互联网上最受欢迎的任何开源项目背后的“西装革履”都蕴藏着巨大的商业模式——Automattic、GitHub 和 Red Hat 就是几个例子——对抗 FUD 并提供“企业”支持。在需求方面,社区需要让发布代码成为一种责任(“你在隐藏什么?”),并通过打破“我们与他们”的心态,以及支持而不是批评政府学习开源的努力,来明确机构的投资回报。

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

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

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

标签
User profile image.
被评为政府和科技界最具影响力人物之一,并被美国首席技术官描述为“最坏的坏蛋创新者”之一,被白宫数字战略主管描述为“瓶子里的闪电”,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] 都是很好的例子。即使是欧盟政府也在推广开放标准,尽管他们自己选择了专有系统。也许正是对独立的追求推动了对开源的选择。对于其余的自由软件运动,应该继续询问政府,为什么他们做出他们所做的选择。

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

政府的指挥控制文化是一种奇怪的现象。许多海军和军队采用了开源来控制舰艇等。值得注意的是,指挥和控制是他们的专长,他们基础设施的机密性至关重要。但是,他们做出切换的主要原因是拥有坚如磐石的可靠系统,国际空间站 (ISS) “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 的开源 CFML 引擎 http://www.getrailo.org/,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.