返回资讯中心
外部精选
软件工程
#开发者实时流

研究追溯软件为何变得不透明:从OS/360到自由软件与Web的历史

来源标题:The road to opaque software is paved with good (engineering) intentions

一篇文章梳理了从OS/360到自由软件再到Web的历史,指出软件通过善意的工程决策逐渐变得不透明。作者认为,尽管开源已成为主流开发方法,用户仍难以理解和修改大部分所用软件。该文仍在撰写中,已投稿至计算历史与哲学领域的学术期刊。

Hacker News 最新mpweiher2026/11/2 · 今天30 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

我们今天使用的大多数软件都是黑箱,用户无法轻易修改。本文追溯了从 OS/360 到自由软件的信息隐藏历史,以及 Web 的历史,记录了软件如何通过善意的工程决策变得不透明。

本文是进行中的工作,目前正在投稿至一份关于计算历史与哲学的学术期刊。如有任何建议、评论或更正,请联系我! tomas@tomasp.net https://tomasp.net

1990 年代末,当我写第一批 JavaScript 脚本时,你可以通过找到一个实现了你想要功能的网页,点击“查看源代码”,然后复制你需要的 JavaScript 片段来学习。这当然要归因于当时 Web 的原始性质(以及我当时想做的事情),但那种让你能够探索、学习和修改软件的开放性,在今天(大多数专业编程环境中)已经基本消失了。

你可能会说我只是怀旧。毕竟,开源已经成为主导的开发方法论,所以用户实际上可以理解和修改他们使用的大量软件。但我不认为开源就是答案。软件自由在理论上可能存在,但在实践中,即使是专业程序员也很难修改我们今天依赖的复杂软件系统。

本文试图理解软件如何变得不透明以及为什么。结论——由两个历史案例研究支持——是不透明性源于良好的工程和管理意图。了解这一点可能有助于我们为未来想象一种更好、更开放的软件本质。

今天构建的大多数软件都是黑箱。软件用户能做什么由软件设计决定,而其设计者和程序员的决策则隐藏在程序源代码中。在大多数情况下,用户无法访问源代码。¹¹ 在线服务和应用的典型情况,包括例如社交网络和 AI 聊天机器人。即使源代码可用,²² 在开源软件的情况下,如 Linux 操作系统、Firefox 网络浏览器或 LibreOffice 办公套件。其复杂性和结构使得大多数用户实际上不可能回答关于软件内部运作的问题。

我们与软件的关系类似于社会与技术对象之间的麻烦关系,Gilbert Simondon 在 1950 年代对此进行了研究。⁶⁶ 他的论文《论技术对象的存在方式》于 1958 年以法语出版,但第一个官方英译本直到 2017 年才出现(Simondon, 2017)。Simondon 考察了异化的根源,认为“当代世界中最强大的异化原因在于这种对机器的误解……在于对其本质和实质的无知。”⁷⁷ Simondon (2017, p.16)

今天,当软件日益深入地融入我们生活的方方面面,而我们对“其本质和实质的无知”无处不在时,“当代世界中最强大的异化原因”很可能就是对软件的误解。在社会需要对软件做出重要决策的时候,软件的不透明性阻止我们建立一个有效的概念框架来理解软件如何运作。大多数软件被有意构建以隐藏其内部运作方式,这一事实是其中的关键部分。正如 Simondon 已经指出的,“产生最大异化的技术对象是那些为无知用户设计的东西。”⁸⁸ Simondon (2017, p.255)

软件的不透明本质并非必然。编程的历史提供了许多更开放软件的愿景。自由软件运动设想的软件赋予用户自由去“研究它如何工作并根据他们的需求进行调整”,⁹⁹ 这个特定措辞来自 1997 年发布在 GNU 网站上的“什么是自由软件?”页面(Free Software Foundation, 1997),但类似的想法已经出现在自由软件基金会的第一个公报中(Stallman, 1986)。而 1970 年代 Smalltalk 编程语言的创造者将他们的系统视为“一个通用的元媒介,任何人都可以根据自己的特定需求进行调整。”¹⁰¹⁰ 引用自 Kay and Goldberg (1977)。该语言本身已由 Goldberg and Robson (1983) 描述。另见 Kay (1993) 的历史反思。这样的软件可以赋能用户更紧密地参与软件,也可能有助于在更广泛的社会中形成对软件更好的理解。然而,尽管有这些吸引人的愿景——往往 backed by 扎实的工程进展——不透明的软件仍然是常态。

理解软件如何变得不透明是逆转软件封闭的必要前提。正如 Federica Frabetti 所论证的,如果我们想要解决软件的深层不透明性¹¹¹¹ Frabetti (2014) 采用了 Stiegler (1998) 使用的术语,后者坚持认为“我们并不立即理解技术在做什么……尽管我们不断必须就技术做出决策,而其后果越来越感觉超出我们的控制。”我们需要“问题化软件技术层面与社会层面的交织”¹²¹² Frabetti (2014, p.xix) 并质疑“软件所依赖的概念体系。”¹³¹³ Frabetti (2014, p.xiii) Frabetti 通过批判性地审视“历史文化和技术叙事”来做到这一点,包括软件工程的起源以及对自由和开源软件的反思。我采用更历史的方法。从批判性软件研究的方法论中汲取灵感,¹⁴¹⁴ Fuller (2008) 编辑的书介绍了该领域;具体方法包括批判性代码研究(Marino, 2020)、对

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →