# Chapter 7. 打包、发布和日常开发
本章关于自由软件项目如何打包和发布软件,以及如何让整个开发模式的组织围绕这个目标。
开源项目和私有项目的主要区别是缺乏对开发团队的中央管理。当准备新版本时,这个区别尤其明显:一个公司可以让整个开发团队集中精力在即将发生的版本上,而将新特性开发和不重要的bug修正放在一边。志愿团队不会如此整齐划一。人们因为各种各样的原因为项目工作,总有些人会对发布版本不感兴趣,会希望在发布时继续常规的开发工作。因为开发不会结束,开源的发布流程很容易变长,但不会如商业发布流程那样分裂。这就像修理高速路。有两种修理方法:你可以将其完全关闭,这样船员们可以全力投入,直到问题被解决,或者你可以在多个小道上同时工作,而让其他人可以自由通行。第一种方法*对修理船员非常有效率*,但对于其他人来说—完成任务前道路被完全关闭。第二种方法,修理船员(现在他们需要与较少)会需要更长的时间,但至少道路保持可用,尽管不能完全畅通。
开源项目通常会使用第二种方法。实际上,对于同时拥有多条版本线的成熟软件,项目一直处于修理小路的状态。总会有些小道会被关闭;一直存在的但是较低级别的不便能够被整个开发团队容忍,所以才能够有规律的计划发布版本。
这个模型不仅仅能用于版本发布。其原理是并行任务并不是互相依赖的—这并不是只存在于开源项目的原理,但开源项目使用了自己的方法实现了它。他们不能承受对修路工队员或常规交通的过度打扰,同样也不能承受让人们只是站在黄线以外,等待交通疏导。因而,他们会向平缓的、稳定管理负担的过程发展,而不会是充满更多的山谷和高峰。志愿者通常会希望工作中只有一些虽然持续但不太严重的不便;提供些许他们可预测性会让他们可以自由的安排自己的日程,无需担心在项目中发生冲突。但是,如果项目主日程中有些活动会排除其他活动,就会导致很多开发者停止很长时间—不仅非常没有效率,也非常无聊,因而会很危险,因为无聊的开发者会很快变成前开发者。
版本发布工作实际上是并行开发中最容易被注意到的非开发任务,所以下面章节中描述的方法主要针对如何允许发布。然而,也有其他的并行任务,例如翻译和国际化、在整个代码的基础上逐渐扩大API变更等。
- 前言
- 为什么写这本书?
- 谁应该读本书?
- 资料来源
- 致谢
- 免责声明
- 1. 介绍
- 历史
- 现状
- 2. 起步
- 从你拥有的开始
- 选择许可证并应用
- 设置风格
- 通告
- 3. 技术基础设施
- 一个项目需要什么
- 邮件列表
- 版本控制
- Bug跟踪
- IRC / 实时聊天系统
- RSS供稿
- Wikis
- 网站
- 4. 社会和政治的基础架构
- 慈善独裁者
- 共识为基础的民主(Consensus-based Democracy)
- 写下所有的内容
- 5. 金钱
- 参与的类型
- 长期雇佣
- 作为一些个体出现,而不是一个整体
- 公开你的动机
- 钱不能让你可爱
- 契约
- 资助非编程活动
- 市场营销
- 6. 交流
- 人如其文
- 避免常见的陷阱
- 刺儿头
- 处理成长
- Bug跟踪系统中无对话
- 公开性
- 7. 打包、发布和日常开发
- 版本号
- 发布分支
- 稳定发布版本
- 打包
- 测试和发布
- 维护多发布线
- 发布和日常开发
- 8. 管理志愿者
- 从志愿者中获取最多
- 像分担技术任务一样分担管理任务
- 转化
- 提交者
- 荣誉
- 分叉
- 9. 许可证,版权和专利
- 术语
- 许可证的方面
- GPL和许可证兼容性
- 选择一个许可证
- 版权分配和所有权
- 双许可证模式
- 专利
- 深入资源
- A. 自由版本控制系统
- B. 自由Bug跟踪系统
- C. 为什么我要关注车棚的颜色?
- D. 报告bug的样例指导
- E. 版权