开放文档:《借助开源项目,学习软件开发》。
Open document: learn software development with the help of open-source project
诚邀您的参与!
We sincerely invite you to join us!
LICENSE
- 本作品选择采用:署名-非商业性使用-相同方式共享 的CC协议。
The content in this repo is licensed CC-NC-BY-SA.- 您可以:复制、发行、展览、表演、放映、广播或通过信息网络传播本作品。以及创作演绎作品。
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - 惟须遵守下列条件:
- 署名 — 您必须按照作者或者许可人指定的方式对作品进行署名
Attribution - you must give the credit the author or licensor have made- 署名方式为:在转载或新作品开头的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与本作品在Github上的原发地址建立链接
If supplied, you must provide the name of the creator and attribution parties, a copyright notice, a license notice, a disclaimer notice, and a link to the material.
- 署名方式为:在转载或新作品开头的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与本作品在Github上的原发地址建立链接
- 非商业性使用 — 您不得将本作品用于商业目的。
NonCommercial - You may not use this work for commercial purposes. - 相同方式共享 — 如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。
If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
- 署名 — 您必须按照作者或者许可人指定的方式对作品进行署名
- 您可以:复制、发行、展览、表演、放映、广播或通过信息网络传播本作品。以及创作演绎作品。
Contents
- 开始之前
Before Start - 这份文档的目标读者
Target Audience - 基本条件
Basic Requirements - 你需要明确的一些事情
Something Need to know First - 开始
Start - 学习软件开发的几条主要途径
Several Main Methods of Learning Software Development - 为什么借助开源学习是最有效的
Why Open-source is Helpful - 选择一门语言
Choosing a Language - 必须初步掌握的基本功
Basic Skills You Should Have - 关于开发工具
On Development Tools 1. 关于开发工具的分类(by 李路)
Classification of Development Tools 1. 各种参考资料
References - 选择一个开源项目
Select an Open-source Project - 到哪里去寻找开源项目
Where to Find Open-source Projects - 什么样的开源项目适合初学者
What Kind of Open-source Projects are Suitable for Beginners - 值得推荐给大家的开源项目
Highly Recommended Open-source Projects - Hello World
- 下载源代码的N种办法
Methods of Downloading SC 1. 关于源代码管理与版本控制
On Source Control and Version Control 1. 寻找早期开源项目的源代码
Find SC of Early Open-source Projects 1. SVN、Git、Mercurial快速介绍
Whirlwind Introduction to SVN, Git and Mercurial 1. 基于包管理的方式获取源代码
Way to get SC Based on Package Management - 让代码运行起来
Make It to Run 1. Ruby版
For Ruby users 1. PHP版
For PHP users 1. Java版
For Java users 1. Python版
For Python users 1. JavaScript版
For JavaScript users 1. C/C++版
For C/C++ users - 如何克服可能遇到的困难
Overcome the Problems You May Encounter - 理解源代码
Understanding the Source Code - 静态理解
Static Understanding 1. 目录结构
Directory Structure 1. 包名与文件名
Package Name and File Name 1. 类名、函数名与变量名
Class Name, Method Name and Variable Name 1. 注释与Readme
Comments and README file 1. UML图
UML Diagram 1. 外部文档
External Documents - 动态理解
Dynamic Understanding 1. 输出日志
Output Logs 1. 设置断点与单步跟踪
Setting Breakpoint and Stepping Through 1. 抛出异常
Throwing Exception 1. 修改代码,破坏性尝试
Try to Change - 主线与支线
Main Line and Branch Line 1. 寻找入口
Where to Begin 1. 跟踪关键流程
Tracking Critical Process 1. 寻找挂接点
Find the Mount Point - 外围代码
Surrounding code (?) 1. 必须存在的外围功能
Sub-functions Must Existed 1. demo/example 1. 单元测试
Unit Testing - 知其所以然
Knowing How - 修改开源项目
Modify the Open Source Project - 从需求出发,修改代码
Changing from Requirements - 顺藤摸瓜,寻找可以参考的代码
Finding Codes for Reference by following clues - 动一个大手术 -- 结构性调整
Making bigger changes -- Structural Adjustment - 寻求认可的艰难历程
Hardships of seeking Approval - 提bug与建议
Finding Bugs and Making Proposals - 帮助完善文档
Helping to Improve Documentation - 提交代码(功能代码与测试代码)
Pushing Your Codes (Function Code and Test Code) - 周边代码(demo/扩展/子项目)
Surrounding Code (Demo/Extension/Subproject) - 外部宣传
Promotion - 其他各种杂务
Other Odd Jobs - 成为组织的一员
Join the group - 交流圈
Partners - 组织结构
Organization Structure - 开源项目的组织方式*
Organization of Open-source Project - 基本礼仪
Basic Etiquette - 自己发起一个开源项目
Create an Open Source Project - 更多
Read-more - 贡献者
Contributor - 常问问题
FAQ