如何选择开源项目?

  今天这篇文章也是因为最近不少人给我留言说「张哥,现在我接触到了开源社区,发现不少开源项目,但是却不知道如何选择应用到自己的项目上?」

  这个问题比较好,相信不少人都有这样的疑问,且听我细细给大家说来。

  什么是开源?

  「开源」是从英文「Open Source」翻译精简而来,其实是开放源码的意思,我们知道所有的软件都是由代码编写,经编译生成的系统或者应用。而一旦你把它开源,意味着任何人、任何组织都可以使用你的代码或者软件,当然也可以给你免费贡献代码,优化你的应用,开放源码意味着自由选择的权力,而自由选择意味着激发更多创新的能量。Linux 就是最著名的开源操作系统,而 Java 与 Android 同样也是开源的。

  开源社区

  开源社区在这两年发展的非常火爆,一些巨头争相加入开源社区,一些常客如Google、Facebook、Square为开源社区贡献了不少优质项目,惊喜的是连苹果、微软等一些比较封闭的公司也竞相加入开源社区,不得不说这是一种好现象,开源也许是软件的未来。

  说到开源社区,毫无疑问 GitHub 是目前最大最火爆的开源社区,全球最优秀的程序员与最开放的优秀科技公司都在 GitHub ,你还有什么理由不加入进来呢?本篇所涉及的所有开源项目都指 GitHub 上的开源项目。

  为什么要用开源项目?

  软件开发领域一直有个原则:DRY,Don’t repeat yourself,翻译过来就是「不要重复造轮子」。而开源项目主要目的是共享,其实就是为了让大家不要重复造轮子,尤其是在互联网这样一个快速发展的领域,速度就是生命,引入开源项目,可以节省大量的人力和时间,大大加快业务的发展速度,何乐而不为呢?

  开源项目的风险

  开源项目为我们节省了大量的人力和时间,但是开源项目并不是完美的,相信使用过开源项目的人都大大小小踩过一些坑,如代码不规范啊,项目有bug啊等等,出了问题都会为我们的项目以及公司带来不小的影响,这个时候如何选择开源项目就变得很重要。

  如何选择开源项目?

  下面以一个例子来更详细具体的说明。假设我们现在急需一个http网络请求库在项目中使用,是我的话,那我肯定在 GitHub 上搜索「android + http」作为关键字。

  1. Stars

  一般来说我都会优先按照 Stars 来排序,Stars数高不代表一定是最好的,但是起码说明蛮火的,不然不会那么多人都 Star 的,要知道在 GitHub 上得一个 Star 远比在微信上获得一次「赞赏」难的多。于是首屏的搜索结果是这样:

  

图片描述

 

  首屏按照Stars排序大概出现了如上的4个网络库,大家应该都很熟悉,但是这4个网络库该怎么选呢?

  2. 作者影响力

  Stars 数都还蛮多的,那我肯定会优先看下作者影响力了,有影响力的人不一定是最好的选择,但起码说明不会不靠谱,如果作者是你熟悉的那就更好办了。这4位里面前两位是 Square 公司出品,后两位是个人作品,如果熟知 Square 公司的话那到这里基本就能做出选择了,Square 公司真是开源界的良心公司啊,为开源界做出了巨大贡献,甚至比Google、Facebook贡献的开源项目多的多,而且质量非常高,著名的 Android 界的传说 Jake Wharton 就是 Square 公司的员工。一般来说公司项目是优先于个人项目的,何况还是 Square 公司,但是我们也来看下其他两位作者的 GitHub 主页。

  

图片描述

 

  作者 loopj 的followers有2k多,而且自己的好几个开源项目Star都蛮多的,这一年的GitHub提交不算特别活跃,但是还行,总体来说是影响力蛮大的一位开源作者。

  

图片描述

 

  作者 wyouflf 的followers有1k,有影响力的开源项目也就数 xUtils 了,而且 xUtils 貌似有了最新版 xUtils3,最近一年在GitHub没什么提交,说明不是特别活跃。