本书是一本系统化构建开源知识与技能体系的软件工程实践教材,内容涵盖开源发展史、许可证合规、Git协作、DevOps工具链、软件供应链安全等核心模块,并深度融合大语言模型与开源开发实践,通过LangChain应用开发等案例,展示人工智能与开源的创新融合。以OpenHarmony等国产开源社区为例,本书解析开源治理与社区运营,并引入以贡献为导向的开源人才评价机制,助力读者从理论到实践、从使用者到贡献者的完整成长。本书为计算机科学与技术/软件工程相关专业高年级本科生或研究生的教材。
王莹,女,东北大学软件学院副教授,获微软研究院铸星计划访问学者(2020,同年全国计算机领域9人入选)、中国计算机学会优秀博士论文提名奖(2020,同年唯一女性入选,全国软件工程专业仅2人入选)、辽宁省优秀博士论文奖(2021,同年辽宁省软件工程专业2人入选)、ICSE 2021及ESEC/FSE 2023 ACM SIGSOFT杰出论文奖(软件工程领域CCF A类顶会,东北大学历史首次获奖)、IEEE Transactions on Software Engineering期刊编委(软件工程领域CCF A类期刊)。主要研究方向为智能软件开发技术、AI大模型、开源软件大数据分析、开源具身智能等。在多种程序语言开源软件生态(包括Java/C#/Python/Go/JavaScript/Android/Rust等)治理方面发表系列学术成果,形成系列工具平台"英雄联盟”LOL自动化监控开源软件生态的依赖缺陷。多项技术产品化落地于华为、微软等企业平台。
第一部分 开源基础和入门
第1章 绪论 2
1.1 开源背景 3
1.1.1 开源软件的定义 3
1.1.2 开源革命和繁荣 6
1.1.3 开源发展史 8
1.1.4 开源代表人物 11
1.1.5 开源软件基金会 15
1.2 开源国内外发展现状 16
1.2.1 开源被纳入国家战略发展规划 17
1.2.2 国际开源盛世 18
1.2.3 国内开源现状 20
1.3 开源的挑战和机遇 27
1.4 本书内容组织 28
本章小结 30
第2章 开源许可证 32
2.1 开源许可证概述 33
2.1.1 开源许可证的定义 33
2.1.2 开源许可证的分类 35
2.2 开源许可证的兼容性 45
2.2.1 法律风险 45
2.2.2 相关影响 46
2.2.3 兼容性判定 48
2.2.4 开源许可证选择 51
2.3 开源软件成分分析和合规风险 54
2.4 实践作业 56
本章小结 57
第二部分 开发工具和协作模式
第3章 开源软件版本控制管理 62
3.1 Git概述 63
3.1.1 Git的发展历史 63
3.1.2 Git的设计目标 65
3.2 Git的工作原理 69
3.2.1 使用Git前的准备 69
3.2.2 Git的目录结构 70
3.2.3 Git的工作区 76
3.3 开放式协作 80
3.3.1 Git的基本操作 80
3.3.2 Git的工作流程 87
3.3.3 Clone操作 88
3.3.4 Fork操作 89
3.3.5 Commit、Pull、Push操作 90
3.4 实践作业 90
本章小结 91
第三部分 构建、测试和质量保障
第4章 开源软件构建方法 96
4.1 DevOps的概念和价值 97
4.1.1 DevOps简介 97
4.1.2 DevOps的重要组件 100
4.1.3 DevOps的关键技术 102
4.2 构建工具 106
4.2.1 主流构建工具 106
4.2.2 Maven 107
4.2.3 依赖常见问题和管理策略 111
4.3 实践作业 116
本章小结 120
第5章 开源代码管理与持续集成 122
5.1 开源代码管理 123
5.1.1 开源代码质量 123
5.1.2 开源代码管理策略 124
5.2 问题追踪系统 126
5.2.1 问题管理 126
5.2.2 问题跟踪系统的最佳实践 129
5.3 持续集成 131
5.3.1 GitHub Actions 131
5.3.2 Jenkins 152
5.4 实践作业 161
本章小结 163
第四部分 开源软件开发实践
第6章 开源任务参与实践 168
6.1 开源成长路径 169
6.1.1 开源贡献的核心能力 169
6.1.2 开源职业发展路线 170
6.2 参与开源任务 180
6.2.1 开源任务参与指南 181
6.2.2 新手开源任务指南 186
6.3 开发者的开源成长路径 191
6.3.1 OpenHarmony社区开源活动 191
6.3.2 OpenEuler社区开源活动 193
6.3.3 GitLink社区开源活动 193
6.3.4 开放原子基金会开源活动 194
6.3.5 红山开源社区开源活动 195
6.3.6 启智开源社区开源活动 196
6.3.7 openKylin社区开源活动 196
6.4 实践作业 197
本章小结 200
第7章 开源智能应用开发案例 202
7.1 开源大语言模型生态现状 203
7.2 开源大语言模型的调用范式 205
7.2.1 大语言模型在线调用范式 206
7.2.2 大语言模型离线调用范式 209
7.3 开源大语言模型应用开发案例 213
7.3.1 LangChain开源框架 214
7.3.2 文本总结 216
7.3.3 代码理解 218
7.3.4 检索增强生成 222
7.3.5 智能体构建 226
7.4 实践作业 232
本章小结 233
第五部分 开源社区治理
第8章 开源软件供应链安全治理 238
8.1 开源软件供应链概念 239
8.2 软件物料清单 241
8.2.1 NTIA行动与软件组件透明度计划 242
8.2.2 软件物料清单的概念 243
8.2.3 软件物料清单的生成工具 244
8.3 软件安全漏洞修复 247
8.3.1 安全漏洞的概念 247
8.3.2 安全漏洞的影响性 248
8.3.3 安全漏洞的报告 249
8.3.4 安全漏洞的数据库 251
8.3.5 安全漏洞的检测和修复 253
8.4 开源软件依赖维护和升级策略:Google的经验和实践 256
8.5 开源软件供应链风险治理 259
8.6 实践作业 260
本章小结 262
第9章 开源社区治理和运营 264
9.1 开源治理的定义 265
9.2 开源社区的治理框架 267
9.2.1 开源社区的定义 267
9.2.2 开源社区的关键角色 268
9.2.3 开源社区的治理框架 272
9.3 开源社区的运营 276
9.3.1 贡献者的成长路线规划 276
9.3.2 开源导师计划 277
9.3.3 开源社区的健康度量 278
9.3.4 开源社区的治理应用 279
9.4 OpenHarmony开源社区治理案例 280
9.4.1 OpenHarmony开源社区现状 280
9.4.2 开源项目管理委员会的组织结构 281
9.4.3 社区参与贡献 282
9.4.4 社区治理哲学 282
9.4.5 开源社区合规治理框架 286
9.5 实践作业 289
本章小结 290
第六部分 开源前沿趋势
第10章 开源发展趋势 294
10.1 开源人工智能的崛起 295
10.1.1 开源人工智能生态的发展和影响 295
10.2.2 合规和伦理驱动的开源治理 297
10.2 开源与新兴技术的融合创新 302
10.3 开源生态的可持续发展模式 304
10.3.1 开源新型融资和商业化探索 304
10.3.2 开源商业化的未来趋势 305
10.4 全球化协作下的开源创新范式 308
10.4.1 分布式开发的新常态 308
10.4.2 地缘政治下的开源应对 311
10.5 实践作业 311
本章小结 312
附录和参考文献
附录A 以贡献为导向的开源人才评价机制:政策、标准与实践指南 316
附录B 开源社区资源共享 322
参考文献 325