1. 开源发展
首先看两张图
第一张是 2007-2013 年全球智能手机增长曲线,第二张是 2008-2013 年 GitHub 上开源项目总数的增长曲线,大家注意看下 Android 设备增长曲线和 GitHub 增长曲线,我不确定两者是不是有一定联系,但我经常告诉 Andorid 开发的小伙伴们他们比 iOS 开发幸福,因为 Android 开源,因为 Java 开源。
2. 怎么用开源项目
关于这个问题年中我吐槽过,如下
所以针对 Android 我们拉了个协作的开源项目,先从原理分析开始
不出意外元旦后这个项目就有第一期的产出,感谢几十位辛苦优秀的小伙伴们,你们是最棒的。
那么说下我对开源库选择的考虑
(1) 开源协议
谨慎使用 GPL 协议,GPL 协议规定使用了该开源库的代码也必须遵循 GPL 协议,即开源和免费。更多请大家自己 Google “gpl bsd apache mit license”。
(2) 原理
必须能驾驭该库,这就要求必须了解该库的实现原理,关于这点请任何人不要跟我争辩。
(3) 功能、文档、稳定性、扩展性
功能是否能满足业务需求,是否足够稳定(稳定性测试)、文档是否齐全、扩展性是否足够。
性能要求较高库需要性能对比测试。
(4) 源码修改
a. 个性化业务带来的修改
请尽量使用 Wrap 方式,而不要直接改源码。实在绕不开,请在 Git 上打上 Tag,并注明详细原因。
b. 通用需求的修改
请按源项目要求修改代码,并提交 PR,反馈回开源社区,请求合并进主分支。
源代码修改原则只有一个不要让你 clone 的副本脱离开源广袤的大陆,变成孤岛。
(5) 其他
GitHub 现在四五百 star 的开源项目很水的多的是,对于一个项目大家可以更多关注 contributors、commits、Pull Requests、Issues、Fork 个数。
3. 一个开源项目应该包含哪些内容
(1) 合适的文件和代码
合适的文件指的是要有自己的 gitignore,合适的代码是指代码要符合代码规范(如很简单的四空格缩进很多 Java 开源项目都做不到)。
(2) README.md
README.md 是一个项目必不可少的,其中要求示例、文档、引用方式、开源的 Licence 齐全。对 Android 来说示例可能包括 Demo APK、截图。引用方式可以是 Maven 和 Gradle 引用方式。
(3) 联系方式
总有很急的 Bug 需要 GitHub Issue 外的即时沟通。
(4) 开源协议和精神
声明开源协议。同时请大家遵守开源精神,遵守其他人的劳动成果,如果有借鉴或是部分拷贝其他开源库,请在明显地方声明感谢!
欢迎大家讨论吐槽,一起把开源做的更好。