开放文档:《借助开源项目,学习软件开发》。
诚邀您的参与!
- 本作品选择采用:署名-非商业性使用-相同方式共享 的CC协议。
- 您可以:复制、发行、展览、表演、放映、广播或通过信息网络传播本作品。以及创作演绎作品。
- 惟须遵守下列条件:
- 署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。
- 署名方式为:在转载或新作品开头的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与本作品在Github上的原发地址建立链接
- 非商业性使用 — 您不得将本作品用于商业目的。
- 相同方式共享 — 如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。
- 署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。
- 开始之前
- 这份文档的目标读者
- 基本条件
- 你需要明确的一些事情
- 开始
- 学习软件开发的几条主要途径
- 为什么借助开源学习是最有效的
- 选择一门语言
- 必须初步掌握的基本功
- 关于开发工具 1. 关于开发工具的分类(by 李路) 1. 各种参考资料
- 选择一个开源项目
- 到哪里去寻找开源项目
- 什么样的开源项目适合初学者
- 值得推荐给大家的开源项目
- Hello World
- 下载源代码的N种办法 1. 关于源代码管理与版本控制 1. 寻找早期开源项目的源代码 1. SVN、Git、Mercurial快速介绍 1. 基于包管理的方式获取源代码
- 让代码运行起来 1. Ruby版 1. PHP版 1. Java版 1. Python版 1. JavaScript版 1. C/C++版
- 如何克服可能遇到的困难
- 理解源代码
- 静态理解 1. 目录结构 1. 包名与文件名 1. 类名、函数名与变量名 1. 注释与Readme 1. UML图 1. 外部文档
- 动态理解 1. 输出日志 1. 设置断点与单步跟踪 1. 抛出异常 1. 修改代码,破坏性尝试
- 主线与支线 1. 寻找入口 1. 跟踪关键流程 1. 寻找挂接点
- 外围代码 1. 必须存在的外围功能 1. demo/example 1. 单元测试
- 知其所以然
- 修改开源项目
- 从需求出发,修改代码
- 顺藤摸瓜,寻找可以参考的代码
- 动一个大手术——结构性的调整
- 寻求认可的艰难历程
- 为开源项目做贡献
- 提bug与建议
- 帮助完善文档
- 提交代码(功能代码与测试代码)
- 周边代码(demo/扩展/子项目)
- 外部宣传
- 其他各种杂务
- 成为组织的一员
- 交流圈
- 组织结构
- 开源项目的组织方式*
- 基本礼仪
- 自己发起一个开源项目
- 延伸阅读
- 贡献者
- 开源问答