目录
第 一部分 准备开源
第 1章 什么是开源,为什么要开源 3
1.1 什么是开源 4
1.2 开源简史 7
1.2.1 将开源的根源追溯到大型机社群 7
1.2.2 自由软件的出现 8
1.2.3 开源作为一个术语被创造出来 10
1.2.4 为开源提供一个供应商中立的家园 11
1.3 运用开源 12
1.3.1 爱好者之间的信息分享 12
1.3.2 基础技术 13
1.3.3 构建技术生态系统 15
1.3.4 提供高质量的免费软件 16
1.4 开源项目及开源的原因 17
1.4.1 PHP 18
1.4.2 Blender 19
1.4.3 Zowe 19
1.4.4 PiSCSI 21
1.5 小结 22
第 2章 什么造就了好的开源项目 23
2.1 开源项目的核心特征 24
2.1.1 用户是开发过程的一部分 25
2.1.2 早发布,常发布 26
2.1.3 透明和动态的决策 28
2.2 发布开源代码与创建开源项目 29
2.2.1 智能代码转储 30
2.2.2 开放核心 32
2.2.3 以开源方式发布代码时的期望 33
2.3 成功的开源项目的模式和反模式 34
2.3.1 开放式沟通(和过度沟通) 34
2.3.2 仁慈独裁与委员会领导 35
2.3.3 分支 36
2.3.4 过度治理 38
2.3.5 欢迎竞争对手 39
2.3.6 把一切都写下来 40
2.3.7 拥抱你的社群 42
2.3.8 关注你的优势,利用工具和其他资源来弥补你的劣势 42
2.4 小结 43
第3章 开源许可证和知识产权管理 45
3.1 宽松许可证与非宽松许可证 46
3.1.1 宽松许可证 48
3.1.2 非宽松许可证或copyleft 49
3.1.3 哪种类型的许可证对项目有意义 50
3.2 版权和贡献签署 52
3.2.1 CLA 53
3.2.2 DCO 54
3.3 品牌和标志管理 57
3.3.1 确定项目的名称 58
3.3.2 品牌一致性 59
3.3.3 保护品牌 60
3.3.4 让其他人使用你的品牌 61
3.4 小结 62
第4章 向公司展示开源项目所带来的商业价值 64
4.1 为什么公司要将代码开源 65
4.1.1 降低开发成本 65
4.1.2 为客户添加新的特性或功能 66
4.1.3 更快推向市场 67
4.1.4 能够集中投资 68
4.2 在内部获得对代码开源的支持 69
4.2.1 回顾已经存在的项目 69
4.2.2 构建商业案例 71
4.2.3 获得盟友 73
4.2.4 设定预期 75
4.3 开源项目或代码仓库的检查清单 76
4.3.1 法律审查 76
4.3.2 技术审查 78
4.4 衡量组织在开源方面是否成功 79
4.4.1 设定(合理)目标 80
4.4.2 识别和展示组织所作的贡献 81
4.5 小结 82
第5章 治理和托管模式 83
5.1 什么是开源治理 84
5.1.1 行动至上 85
5.1.2 BDFL 85
5.1.3 技术委员会 86
5.1.4 选举 87
5.1.5 单一供应商 88
5.1.6 供应商中立的基金会 89
5.2 开源项目中的角色 90
5.2.1 用户 91
5.2.2 贡献者 91
5.2.3 维护者 92
5.2.4 领导者 93
5.3 记录开源项目的治理结构 93
5.3.1 可发现性 94
5.3.2 简单性 95
5.3.3 灵活性 96
5.4 开源项目的财务支持 97
5.4.1 小费 97
5.4.2 众筹 98
5.4.3 单一组织资助 99
5.4.4 基金会 100
5.5 小结 101
第二部分 运营开源项目
第6章 让你的项目备受欢迎 105
6.1 为新人设置项目 106
6.1.1 设置项目的基础设施 106
6.1.2 创建入门指南 109
6.1.3 欢迎新贡献者 111
6.1.4 当新人产生影响时,要认可他们 113
6.2 有效支持最终用户 114
6.2.1 管理问题 115
6.2.2 社群和开发者管理 116
6.2.3 商业支持 117
6.3 参与到对话中去 118
6.3.1 在线论坛和社交媒体 119
6.3.2 区域聚会和活动 120
6.4 小结 121
第7章 将贡献者发展为维护者 122
7.1 将贡献者发展为维护者的重要性 123
7.1.1 减轻当前维护者的压力 123
7.1.2 为项目带来新的想法和能量 125
7.1.3 使当前维护者退居幕后 126
7.2 寻找贡献者并成为导师 127
7.2.1 未来维护者的品质 128
7.2.2 利用导师制度引入新的贡献者 130
7.3 贡献者何时准备好成为维护者 131
7.3.1 导师指导进展顺利的迹象 132
7.3.2 如果贡献者从未准备好成为维护者怎么办 133
7.4 小结 135
第8章 处理冲突 136
8.1 理解人及其动机 137
8.1.1 人类的大脑 137
8.1.2 文化和生活经历 138
8.1.3 开源项目中的互动示例 139
8.2 包容性决策 143
8.2.1 开放的沟通和协作 144
8.2.2 决策的方法论 145
8.2.3 做出决策 146
8.3 纠正有害行为 150
8.4 小结 153
第9章 应对增长 154
9.1 衡量增长 155
9.1.1 增加项目的认知度 157
9.1.2 项目采用度 158
9.1.3 项目的多样性 159
9.2 评估和补救低增长的领域 161
9.2.1 提交记录/提交者 161
9.2.2 项目使用度 162
9.2.3 多样性 163
9.3 增强和扩展项目的领导力 164
9.3.1 从项目通才到项目专家 165
9.3.2 时间管理和预期管理 168
9.3.3 避免倦怠 170
9.4 小结 172
第三部分 构建和扩展开源生态系统
第 10章 开源的商业化 175
10.1 开源项目商用的重要性和价值 176
10.1.1 可以商用吗 176
10.1.2 可持续性循环 178
10.2 开源的商业化模式 180
10.2.1 作为更大商业软件包的依赖项或组件 180
10.2.2 服务和支持 181
10.2.3 开放核心 182
10.3 为商用设置项目 183
10.3.1 品牌和知识产权管理 183
10.3.2 认可和一致性计划 184
10.4 小结 187
第 11章 开源与人才生态 188
11.1 将开源作为你的作品集 189
11.1.1 我的职业故事 190
11.1.2 在开源中发展职业生涯 195
11.2 通过开源寻找人才 200
11.2.1 参与社群 200
11.2.2 赞助与项目相关的基础设施 201
11.2.3 赞助或主办导师培训、黑客马拉松或其他活动 203
11.3 留住和认可来自开源社群的人才 205
11.3.1 开源参与的衡量和管理 206
11.3.2 设定年度目标 207
11.3.3 创建内部奖励或激励计划 208
11.4 小结 209
第 12章 为开源营销—宣传和外展 211
12.1 什么是开源营销,为什么它对用户很重要 212
12.1.1 开源营销的案例研究—Mautic 213
12.1.2 Mautic的故事—开源营销的影响力和目的 218
12.2 开源项目的“营销跑道” 221
12.2.1 网站和博客 222
12.2.2 讨论渠道 224
12.2.3 社交媒体 226
12.3 高级外展和促进参与度 227
12.3.1 活动和聚会 227
12.3.2 媒体和分析师 229
12.3.3 案例研究和用户故事 230
12.4 小结 231
第 13章 领导者的过渡 233
13.1 为何要考虑领导者的过渡 234
13.1.1 职业变动 235
13.1.2 即将退休的项目领导者 236
13.1.3 项目停滞不前 237
13.2 制定继任计划 238
13.2.1 记录项目的运营 239
13.2.2 新领导者的时间安排和培养 241
13.3 从容地退居幕后 242
13.3.1 适当地做出后援 243
13.3.2 为新领导者背书 244
13.3.3 为新领导者建立广泛的支持网络 245
13.4 小结 246
第 14章 开源项目的落幕 247
14.1 如何判断一个项目正在放缓 249
14.1.1 项目—当代码速度和社群参与度下降 249
14.1.2 产品—处于正在衰落的技术领域 251
14.1.3 利润—资金和投资枯竭 252
14.2 结束项目的流程 253
14.2.1 在社群中就项目落幕达成一致 253
14.2.2 宣布项目落幕的意向 255
14.2.3 帮助最终用户过渡 256
14.3 项目结束后的步骤 258
14.3.1 将代码仓库和问题跟踪器标记为归档状态 258
14.3.2 为资产所有权找到归宿 260
14.3.3 项目能从落幕中回归吗 261
14.4 小结 261