12/13
2014

关于开源,关于 GitHub, 关于 Android

介绍下个人觉得如何用开源项目及一个开源项目的标准,欢迎吐槽。

1. 开源发展

首先看两张图
Word mobile growth
Android user growth
第一张是 2007-2013 年全球智能手机增长曲线,第二张是 2008-2013 年​ GitHub 上开源项目总数的增长曲线,大家注意看下 Android 设备增长曲线和 GitHub 增长曲线,我不确定两者是不是有一定联系,但我经常告诉 Andorid 开发的小伙伴们他们比 iOS 开发幸福,因为 Android 开源,因为 Java 开源。

 

2. 怎么用开源项目

关于这个问题年中我吐槽过,如下
open project use
所以针对 Android 我们拉了个协作的开源项目,先从原理分析开始
android open project analysis
不出意外元旦后这个项目就有第一期的产出,感谢几十位辛苦优秀的小伙伴们,你们是最棒的。

那么说下我对开源库选择的考虑

(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) 开源协议和精神

声明开源协议。同时请大家遵守开源精神,遵守其他人的劳动成果,如果有借鉴或是部分拷贝其他开源库,请在明显地方声明感谢!
欢迎大家讨论吐槽,一起把开源做的更好。

随手点点下面广告,支持我维护本站吧

平安陆金所(已经用了三年的理财产品)

  • 平安集团旗下,2300 万用户,收益 5.5%-8.8%。瞅瞅陆金所 (此链接注册就送 100 元)

Android 高薪内推(均年薪 50w+,另加股票期权)

  1. 楼主可否给一个可以加入的群号,上面的群已经无法加入,真诚想和你们交流共同进步,感谢~

  2. 也想搞开源,不过第一水平有限,第二,目前我不太清楚开源能带给我什么。博主能否为我解释一下。。

    • 我简单说下好处1. 开源前会逼着你把东西做好不然不好意思开源2. 开源后会有人逼着你把东西做好当你的东西被其他人采用后,会出现各种问题,包括 Bug、扩展性等,他们会给你反馈甚至帮你修正总之开源能帮你成长,至于说的暂时水平有限不重要,总有迈出第一步的时候,迟不如早

  3. 写的很好,非常赞同,很多点都是我准备和团队里分享的点。另现在github stat几百的,有的真的很水,纯粹是大家每天只看trending,然后就直接star了

  4. 能够使用的熟练,有时候也就需要了解内部的一些东西吧。只要你做出来的东西不是金玉其外,败絮其中就好。

  5. 我觉得大部分人可能和我一样还停留在为实现功能而挠头,而远没有达到有充分的时间来分析源码及内部实现原理,请问博主平常的一天下来都是怎么利用时间的?