第1篇 了解开源软件 2
第1章 开源软件概述 2
1.1 开源软件的理解 2
1.2 开源软件的定义 3
1.3 开源软件定义的意义 5
1.4 开源软件和其他类型软件的比较 6
第2章 开源软件的历史与未来 9
2.1 开源软件的历史 9
2.2 开源运动背后的理想与现实 12
2.2.1 理想主义的兴起 12
2.2.2 技术精英的推动 13
2.2.3 现实业界的需求 14
2.3 开源社区的壮大 15
2.4 开源软件的领袖 16
2.5 开源软件的未来 17
第3章 开源软件的好处 19
3.1 高质量 19
3.2 零许可证费 21
3.3 开放和自由 22
3.4 灵活可定制 22
3.5 公开透明 23
3.6 良好的学习平台 23
第4章 开源软件的成本 25
4.1 部署和迁移成本 25
4.2 人员和培训成本 26
4.3 管理维护和技术支持成本 27
4.4 风险控制成本 28
第2篇 使用开源软件 32
第5章 正确使用开源软件 32
5.1 管理体制 32
5.2 法律风险 33
5.2.1 法律因素之著作权 34
5.2.2 法律因素之许可证 35
5.2.3 法律因素之专利 36
5.2.4 问题解析 37
5.2.5 验证著作权,正本清源 38
5.2.6 调查专利,借力打力 40
5.2.7 解读许可证,明察秋毫 41
5.3 成熟度 56
5.3.1 优秀的领导者 57
5.3.2 差异化的开发者社区 57
5.3.3 庞大的优质用户群 58
5.3.4 健康的项目“脉动” 58
5.3.5 健全的安全补丁体制 59
5.3.6 较完善的文档 60
5.4 服务 60
5.5 寻找合适的开源软件 61
第6章 开源软件之语言和平台 63
6.1 Harmony 63
6.2 Android 66
6.3 Python 69
6.4 Ruby 72
6.5 PHP 74
6.6 Groovy 76
6.7 Perl 78
6.8 Flex 80
6.9 OpenLaszlo 82
第7章 开源软件之框架和库 84
7.1 Spring 84
7.2 Struts 87
7.3 JBoss Seam 89
7.4 Equinox 91
7.5 Hibernate 93
7.6 iBATIS 95
7.7 Lucene 97
7.8 Webkit 99
第8章 开源软件之服务器软件 101
8.1 Apache HTTP服务器 101
8.2 Tomcat 103
8.3 Jetty 104
8.4 Geronimo 105
8.5 JBoss 108
8.6 GlassFish 109
8.7 MySQL 111
8.8 PostgreSQL 114
8.9 Derby 116
8.10 FileZilla Server 118
第9章 开源软件之开发工具 120
9.1 Eclipse 120
9.2 NetBeans 122
9.3 Apache Ant 124
9.4 Apache Maven 126
9.5 CVS 128
9.6 Subversion 130
9.7 GIT 131
9.8 Bugzilla 133
9.9 JUnit 135
9.10 TestNG 137
第10章 开源软件之桌面应用 139
10.1 GNOME 139
10.2 OpenOffice.org 142
10.3 Emacs 145
10.4 Firefox 147
10.5 Thunderbird 150
10.6 GIMP 151
10.7 FreeMind 152
10.8 7-Zip 154
第3篇 参与开源项目 158
第11章 开源社区的基础设施 158
11.1 基础设施 158
11.1.1 主页(Home Page) 158
11.1.2 代码库(Code Repository) 158
11.1.3 邮件列表(Mailing List) 159
11.1.4 缺陷追踪系统(Bug Tracking System) 160
11.1.5 Wiki 161
11.1.6 其他 161
11.2 开源项目托管网站 162
第12章 开源组织和社区 165
12.1 Apache软件基金会 165
12.1.1 Apache的历史 165
12.1.2 Apache组织结构 166
12.1.3 Apache开发模式 169
12.1.4 Apache法律问题处理 172
12.1.5 Apache项目简介 174
12.1.6 Apache运营模式 176
12.2 自由软件基金会 177
12.2.1 FSF的历史 177
12.2.2 FSF的目标 178
12.2.3 FSF组织结构 179
12.2.4 GNU工程 180
12.3 Linux Kernel社区 181
12.3.1 Linux Kernel的历史 181
12.3.2 Linux Kernel社区文化和价值观 185
12.3.3 Linux Kernel开发模式 186
12.3.4 Linux Kernel运营模式 188
12.4 Eclipse社区 189
12.4.1 Eclipse的历史 189
12.4.2 Eclipse的发展 190
12.4.3 Eclipse组织结构 192
12.4.4 Eclipse项目简介 193
12.4.5 Eclipse运营模式 196
12.4.6 Eclipse Con大会 196
12.5 Mozilla社区 197
12.5.1 Mozilla的历史 197
12.5.2 Mozilla组织结构 198
12.5.3 Mozilla开发模式 198
12.6 Linux相关社区 200
12.6.1 Archlinux社区 200
第13章 商业模式与实例 203
13.1 许可证的决定性 203
13.2 商业模式实例 205
13.2.1 增值产品 205
13.2.2 技术支持 207
13.2.3 咨询 211
13.2.4 广告模式 212
13.2.5 软硬件结合 213
13.2.6 双重授权 215
13.2.7 社区模式 216
13.2.8 Ubuntu“模式” 216
第14章 参与开源社区 219
14.1 开始加入 219
14.2 社区讨论与工作 220
14.2.1 参与社区讨论 220
14.2.2 参与社区工作 221
14.3 提升自己 225
14.4 礼仪规范 227
14.4.1 撰写邮件的礼仪和规范 227
14.4.2 邮件列表的礼仪和规范 228
14.4.3 发言的礼仪 231
14.5 开源开发的最佳实践 235
14.6 企业参与开源 238
14.6.1 需求 238
14.6.2 风险 238
14.6.3 企业参与开源的策略 239
第15章 开创事业 242
15.1 项目启动与计划 242
15.2 选择正确的许可证 247
15.3 基础设施构建 249
15.3.1 SourceForge托管开源项目基础设施构建 249
15.3.2 Google Code托管开源项目基础设施构建 259
15.4 宣传与坚持 263