|
1 | 1 | # 开源软件的价值(哈佛商学院研究报告-初稿)中文版
|
2 | 2 |
|
3 | 3 | 原文:The Value of Open Source Software (Working Paper 24-038) by Harvard Business School
|
| 4 | + |
4 | 5 | https://www.hbs.edu/faculty/Pages/item.aspx?num=65230
|
| 6 | + |
5 | 7 | https://www.hbs.edu/ris/Publication%20Files/24-038_51f8444f-502c-4139-8bf2-56eb4b65c58a.pdf
|
| 8 | + |
6 | 9 | 作者:Manuel Hoffmann, Frank Nagle and Yanuo Zhou
|
| 10 | + |
7 | 11 | 译者:刘天栋 Ted
|
| 12 | + |
8 | 13 | 审校:刘文涛 Leo
|
9 | 14 |
|
10 | 15 |
|
| 16 | + |
11 | 17 | 
|
12 | 18 |
|
13 | 19 | ## 摘要
|
@@ -81,13 +87,13 @@ Copyright © 2024 by Manuel Hoffmann, Frank Nagle, and Yanuo Zhou.
|
81 | 87 |
|
82 | 88 | ## 3. 研究方法论
|
83 | 89 |
|
84 |
| -我们首先采用 [劳动力市场方法](https://kaiyuanshe.feishu.cn/docx/KwdqdICiboWii9xLgQJcuUo9nZe#SmlrdmxMsozzvOxWqTac0WPYnph),通过考虑开源软件的供需双方来衡量开源软件的价值 [^14]。这个思想实验是,我们生活在一个开源软件不存在的世界里,每家使用特定开源软件的公司都必须重新创建开源软件。利用劳动力市场方法,我们计算出每个开源软件包的劳动力替代成本。为了估算每个软件包的价值,我们使用 [构造性成本模型](https://zh.wikipedia.org/wiki/%E6%9E%84%E9%80%A0%E6%80%A7%E6%88%90%E6%9C%AC%E6%A8%A1%E5%9E%8B) II(COCOMO II,Boehm,1984 年;Boehm 等人,2009 年)对单个软件包进行估算,然后将所有软件包的价值相加,得出供应方劳动力市场替代价值。然后,我们用企业使用每种软件包的次数来衡量供应方的价值,同时剔除每个企业内部的多次使用,从而得出需求方的价值。 |
| 90 | +我们首先采用以下 ***劳动力市场方法***,通过考虑开源软件的供需双方来衡量开源软件的价值 [^14]。这个思想实验是,我们生活在一个开源软件不存在的世界里,每家使用特定开源软件的公司都必须重新创建开源软件。利用劳动力市场方法,我们计算出每个开源软件包的劳动力替代成本。为了估算每个软件包的价值,我们使用 [构造性成本模型](https://zh.wikipedia.org/wiki/%E6%9E%84%E9%80%A0%E6%80%A7%E6%88%90%E6%9C%AC%E6%A8%A1%E5%9E%8B) II(COCOMO II,Boehm,1984 年;Boehm 等人,2009 年)对单个软件包进行估算,然后将所有软件包的价值相加,得出供应方劳动力市场替代价值。然后,我们用企业使用每种软件包的次数来衡量供应方的价值,同时剔除每个企业内部的多次使用,从而得出需求方的价值。 |
85 | 91 |
|
86 | 92 | 其次,除了总量之外,我们也检查了价值创造过程中的不平等现象。在开源软件中,与许多创造性工作一样,常见的情况是,一小撮人做出了大部分贡献,而其他许多人则做出很小的贡献(有时被称为 80/20 规则,意指 80% 的工作由 20% 的人完成)。研究表明,这些经常做出贡献的人往往由于他们的努力而在开源软件社区中获得有影响力的地位(Hanisch 等人,2018)。因此,为了更好地了解开发者价值创造的分散性,我们首先使用 [GHTorrent](https://github.com/ghtorrent) 数据,并通过两种方式识别开发者的个人贡献:a)开发者对开源软件直接的价值贡献;b)开发者贡献的代码库总数。然后,我们测试了这两种贡献衡量标准的集中程度,以更好地了解对我们衡量的总价值做出贡献的开发者是多是少。我们将在下文解释劳动力市场方法和估值不平等的具体细节。
|
87 | 93 |
|
88 | 94 | ### 3.1 劳动力市场方法
|
89 | 95 |
|
90 |
| -对于劳动力市场方法,我们通过计算软件包的替换价值来估算开源软件的价值。我们想了解如果雇用一名程序员并向其支付具有竞争力的市场工资,那么重制该软件包需要多少成本。为了估算这一 ***供应方价值*** |
| 96 | +对于劳动力市场方法,我们通过计算软件包的替换价值来估算开源软件的价值。我们想了解如果雇用一名程序员并向其支付具有竞争力的市场工资,那么重制该软件包需要多少成本。为了估算这一 ***供应方价值*** |
91 | 97 |
|
92 | 98 | <div style="margin-right: auto; width: 10%">
|
93 | 99 |
|
@@ -121,7 +127,7 @@ Copyright © 2024 by Manuel Hoffmann, Frank Nagle, and Yanuo Zhou.
|
121 | 127 |
|
122 | 128 | ***需求方劳动价值*** 则反映了使用这些开源软件包的每家公司支付开发人员重写这些软件包的成本(例如,开源软件本身不再存在)。
|
123 | 129 |
|
124 |
| - 对于供需模型,我们通过 "[建设性成本模型](https://zh.wikipedia.org/wiki/%E6%9E%84%E9%80%A0%E6%80%A7%E6%88%90%E6%9C%AC%E6%A8%A1%E5%9E%8B) II"(COCOMO II,Boehm,1984 年;Boehm 等,2009 年)获得每个软件包的美元价值(𝑃i)。该模型曾被美国国防部用于估算软件项目成本,也曾用于估算开源软件价值的前期研究(Blind 等,2021;Nagle,2019b;Robbins 等,2021)。这是一个高度灵活的模型,允许我们将代码行数与美元价值进行非线性转换。它使用以下建模方程: |
| 130 | + 对于供需模型,我们通过 "[构造性成本模型](https://zh.wikipedia.org/wiki/%E6%9E%84%E9%80%A0%E6%80%A7%E6%88%90%E6%9C%AC%E6%A8%A1%E5%9E%8B) II"(COCOMO II,Boehm,1984 年;Boehm 等,2009 年)获得每个软件包的美元价值(𝑃i)。该模型曾被美国国防部用于估算软件项目成本,也曾用于估算开源软件价值的前期研究(Blind 等,2021;Nagle,2019b;Robbins 等,2021)。这是一个高度灵活的模型,允许我们将代码行数与美元价值进行非线性转换。它使用以下建模方程: |
125 | 131 |
|
126 | 132 | 
|
127 | 133 |
|
@@ -191,9 +197,14 @@ Copyright © 2024 by Manuel Hoffmann, Frank Nagle, and Yanuo Zhou.
|
191 | 197 |
|
192 | 198 | 在使用 [COCOMO](https://zh.wikipedia.org/wiki/%E6%9E%84%E9%80%A0%E6%80%A7%E6%88%90%E6%9C%AC%E6%A8%A1%E5%9E%8B) II 的劳动力市场方法后,我们得到了关于开源软件价值的全球估计值。开源软件的价值。要计算总体价值,我们首先需要基础代码行数(以计算供应方价值),然后需要使用统计数据(以计算需求方价值)。由于不同编程语言的价值可能存在很大差异,我们还在下表中列出了调查期间使用率最高的编程语言。
|
193 | 199 |
|
194 |
| ---- [***表 1***](https://hackmd.io/7O2fpfsAQGiFfYFEPN4eNQ?view#%E8%A1%A8-1%EF%BC%9A%E4%BB%A3%E7%A0%81%E8%A1%8C%E6%95%B0%E5%92%8C%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5%E7%9A%84%E6%8F%8F%E8%BF%B0%E6%80%A7%E7%BB%9F%E8%AE%A1) --- |
| 200 | +<span id="表 1"> |
| 201 | +### 表 1</span>:代码行数和使用情况的描述性统计 |
| 202 | + |
| 203 | + |
| 204 | + |
| 205 | +注:统计数据基于不同代码库的代码行数。小组 A(B)描绘了***普查(BuiltWith)*** 数据的总和、平均值、标准差和观测值的数量,涉及代码行数和 ***区间 1*** 中所有软件包的使用情况(见 <a href='#表 A1'>表 A1</a>)。 |
195 | 206 |
|
196 |
| - ***[表 1](https://hackmd.io/7O2fpfsAQGiFfYFEPN4eNQ?view#%E8%A1%A8-1%EF%BC%9A%E4%BB%A3%E7%A0%81%E8%A1%8C%E6%95%B0%E5%92%8C%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5%E7%9A%84%E6%8F%8F%E8%BF%B0%E6%80%A7%E7%BB%9F%E8%AE%A1)*** 分别显示了两个数据集的描述性统计数据。内向***普查***(小组 A)包含略多于 2.617 亿行代码,其中 72% 属于顶级编程语言。软件包平均包含 14.2 万行代码,顶级语言子集的平均代码行数略低,为 11.3 万行。在考虑需求(使用)方面时,我们注意到 ***普查*** 软件包的使用次数超过 270 万次,其中 92% 来自顶级语言。软件包的平均使用次数为 1,472.4 次,其中顶级语言的使用率更高,约为 1,497.5 次。我们在面向外部的 ***BuiltWith*** 数据中发现了类似的模式,但程度不同。来自 ***BuiltWith*** 的软件包包含超过 8,200 万行代码,其中 71% 使用的是顶级编程语言。***BuiltWith*** 样本中的软件包平均有 11.1 万行代码,而顶级语言的平均代码行数较少,约为 8 万行。这是因为我们的 ***BuiltWith*** 数据主要由基于 JavaScript 的软件包组成,这些软件包通常比用其他语言编写的软件包要小。***BuiltWith*** 软件包的使用次数超过 14.2 万次,其中 99.97% 属于顶级语言。接下来,我们利用这些原始观测数据,通过 ***劳动力市场方法*** 计算出所有开源软件的价值,并估算出供需双方创造的价值。 |
| 207 | + ***表 1*** 分别显示了两个数据集的描述性统计数据。内向***普查***(小组 A)包含略多于 2.617 亿行代码,其中 72% 属于顶级编程语言。软件包平均包含 14.2 万行代码,顶级语言子集的平均代码行数略低,为 11.3 万行。在考虑需求(使用)方面时,我们注意到 ***普查*** 软件包的使用次数超过 270 万次,其中 92% 来自顶级语言。软件包的平均使用次数为 1,472.4 次,其中顶级语言的使用率更高,约为 1,497.5 次。我们在面向外部的 ***BuiltWith*** 数据中发现了类似的模式,但程度不同。来自 ***BuiltWith*** 的软件包包含超过 8,200 万行代码,其中 71% 使用的是顶级编程语言。***BuiltWith*** 样本中的软件包平均有 11.1 万行代码,而顶级语言的平均代码行数较少,约为 8 万行。这是因为我们的 ***BuiltWith*** 数据主要由基于 JavaScript 的软件包组成,这些软件包通常比用其他语言编写的软件包要小。***BuiltWith*** 软件包的使用次数超过 14.2 万次,其中 99.97% 属于顶级语言。接下来,我们利用这些原始观测数据,通过 ***劳动力市场方法*** 计算出所有开源软件的价值,并估算出供需双方创造的价值。 |
197 | 208 |
|
198 | 209 | --- ***[表 2](https://hackmd.io/7O2fpfsAQGiFfYFEPN4eNQ?view#%E8%A1%A8-2%EF%BC%9A%E5%BC%80%E6%BA%90%E7%9A%84%E5%8A%B3%E5%8A%A8%E5%8A%9B%E5%B8%82%E5%9C%BA%E4%BB%B7%E5%80%BC)*** ---
|
199 | 210 |
|
@@ -340,7 +351,7 @@ Copyright © 2024 by Manuel Hoffmann, Frank Nagle, and Yanuo Zhou.
|
340 | 351 |
|
341 | 352 | ## 在线附录
|
342 | 353 |
|
343 |
| -### 表 A1:各区间内的语言 |
| 354 | +### <span id="表 A1">表 A1</span>:各区间内的语言 |
344 | 355 |
|
345 | 356 | | 类型 | 语言 |
|
346 | 357 | | -------------| --------- |
|
|
0 commit comments