一家联邦IT承包商对开放源代码的奥巴马医保提出反对意见 - 彭博社
Paul Ford
摄影:尼基塔·布伊达/阿拉米肯达尔·克拉克是 克拉克与帕西亚 的创始人兼首席执行官,这是一家拥有10名员工的软件产品和服务公司,专注于企业语义的开发和研发。他曾为多个联邦机构工作,包括NASA和国家癌症研究所。在我本周的*《彭博商业周刊》*中发表的文章“奥巴马医保网站不必失败。下次如何做得更好”发布后,克拉克(我曾在网站XML.com与他共事)联系我,告诉我他不同意我的论点——即开源将导致更少失败的软件项目。他并不反对开源一些政府代码,但他质疑开放代码与提高质量之间的关系。我问了他几个后续问题。
在我的文章中,我提出如果联邦政府在公开的情况下开发其代码,将会减少像healthcare.gov这样的失败启动。你不认同。为什么?
我认为我们首先要问的不是为什么healthcare.gov失败,而是为什么大多数大型(即复杂)软件项目失败,因为它们要么存在太多错误而无法使用,要么超出预算或时间表,或者在某些情况下,三者皆是。
软件项目失败的原因有很多:错误的人在构建它们;错误的人在做技术决策,这基本上是另一种条件的代理,即实质性的技术或设计选择是错误的;预算或时间表(或两者)根本不切实际;系统是否成功并不重要(这往往比我们想承认的要真实);系统过于复杂,应该是几个更简单的系统,等等。
为什么不直接开放政府默认生产的所有软件呢?这样至少我们可以看到人们所犯的错误,并尝试修复它们。
开源是一组软件许可条款的条件。但请注意,许可条款并不是我列出的复杂软件系统失败的原因之一。因此,最初我们应该对不同的许可条款是否会对 healthcare.gov 的成功或任何其他类似复杂系统的成功产生影响持非常怀疑的态度。
好吧,对 healthcare.gov 来说已经太晚了——这艘船已经启航。但在未来,你不认为开放整个过程,让政府代码在开发时自由可用,会增加透明度并导致更好的代码吗?
开放源代码的许可条款可能会间接解决一些软件系统失败的原因。例如,开源可能意味着不同的人参与该项目。这可能使项目更有可能成功。
我认为这不太可能是情况,但也可能是,这只是一个事实问题,我们没有太多数据,所以暂时先搁置这个问题。
好的。我确实想指出消费者金融保护局做了很多看起来质量非常好的开源工作,所以这是一个数据点。但我承认这确实只是一个数据点。
我可以提供其他数据点:国会图书馆做了很好的开源工作;NASA 做了很好的开源工作;国家癌症研究所做了很好的开源工作。我只是质疑这些好的工作是否是由于开源造成的。大多数软件项目失败的原因似乎与许可条款没有太大关系。例如,许可条款并不能使预算或时间表更现实。
有一个假设,我想我们都同意这往往是错误的,那就是开源条款仅仅意味着来自陌生人的免费劳动。这不仅是错误的;我认为政府不应该基于这个假设进行政策或政治决策。开源许可证条款往往并不赋予技术人员做出技术决策或做出正确决策的权力。我们都知道许多开源系统在技术上是相当愚蠢的。
好的,但Linux和Firefox呢?它们都是开源的,运行得非常好,以安全性著称——而且都是完全公开开发的。政府不能参与其中吗?
Firefox和Linux都是开源的,有很多人在为它们工作。此时,大多数这些人都是某个组织的付费员工,该组织雇佣这些人来为这些系统工作。系统是开源许可证意味着许多不同的组织可以以一种自由的方式雇佣人们来为这些系统工作,即,系统的法律所有权是如此分散(或者由一个非营利实体作为一种公共信托持有),以至于某些类型的利润动机和不分享代码的经济激励被消除。
Linux在早期通过“免费劳动”有机增长,但可能有一些特定于Linux的原因导致这种情况发生,这在政府软件中不太可能复制。无论如何,我持怀疑态度。我们还应该提到,或许具有讽刺意味的是,NSA确实资助了很多关于Linux操作系统的安全工作,据我所知,这些工作相当不错。你可以推测在最近的新闻报道的背景下,NSA是否会这样做。
我想我的梦想是政府能够找到一种方法,创造出一种围绕软件开发的文化,就像Firefox或Linux周围的文化一样。
美国联邦政府在许多方面都是独特的,完全不清楚它是否需要或想要以同样的方式分享软件。在某些情况下,出于法律、监管或政策原因,它可能不应该分享软件。例如,一些属于国防或情报收集的软件系统可能应该被严格保密(但并非所有)。政府还有研发和投资项目,其目的是帮助小企业获得资金;我认为,作为政策,你不希望通过要求这些公司仅使用开源许可证来规定它们的商业模式。
我认为联邦政府在创造文化方面并不是很好。它擅长创建遵循规则的系统,人们可以在这些系统上创造文化。可以说,这正是开源产生的原因,因为它深深依赖于联邦政府制定并现在执行的版权法的特征(尽管,毫无疑问,关于软件的专利制度完全崩溃了)。
但我仍然喜欢政府编写的代码默认是公开的,回馈公共资源的想法。更多的参与者,结果 hopefully 更好的代码。
我认为开源可能意味着更多的参与者(对于某些政府项目),但我很难理解这对政府来说为什么会是直接的好处或理想的结果。软件不像食物或水,定义上你希望最大化参与其中的人数,甚至最大化参与创建它的人数。
透明度的内在价值如何?
我能想到更直接的方式来实现透明度。我们可以回到阻止国会免受内幕交易法的豁免。我们可以进行信息自由法(FOIA)改革,使其更加健全。今天透明度的主要障碍可能是文件和政府信息的系统性过度分类。所有这些对透明度的影响都将大于开源许可。
我同意开源条款应该是政府软件的默认选择(或更容易选择),但有一些重要的例外——因为纳税人支付了软件费用,而开源条款通常不会造成伤害。但这与说它们倾向于有帮助或必然有帮助是不同的。