今天這篇文章也是因為最近不少人給我留言說「張哥,現(xiàn)在我接觸到了開源社區(qū),發(fā)現(xiàn)不少開源項目,但是卻不知道如何選擇應(yīng)用到自己的項目上?」
這個問題比較好,相信不少人都有這樣的疑問,且聽我細(xì)細(xì)給大家說來。
什么是開源?
「開源」是從英文「Open Source」翻譯精簡而來,其實是開放源碼的意思,我們知道所有的軟件都是由代碼編寫,經(jīng)編譯生成的系統(tǒng)或者應(yīng)用。而一旦你把它開源,意味著任何人、任何組織都可以使用你的代碼或者軟件,當(dāng)然也可以給你免費貢獻(xiàn)代碼,優(yōu)化你的應(yīng)用,開放源碼意味著自由選擇的權(quán)力,而自由選擇意味著激發(fā)更多創(chuàng)新的能量。Linux 就是最著名的開源操作系統(tǒng),而 Java 與 Android 同樣也是開源的。
開源社區(qū)
開源社區(qū)在這兩年發(fā)展的非?;鸨?,一些巨頭爭相加入開源社區(qū),一些??腿鏕oogle、Facebook、Square為開源社區(qū)貢獻(xiàn)了不少優(yōu)質(zhì)項目,驚喜的是連蘋果、微軟等一些比較封閉的公司也競相加入開源社區(qū),不得不說這是一種好現(xiàn)象,開源也許是軟件的未來。
說到開源社區(qū),毫無疑問 GitHub 是目前最大最火爆的開源社區(qū),全球最優(yōu)秀的程序員與最開放的優(yōu)秀科技公司都在 GitHub ,你還有什么理由不加入進來呢?本篇所涉及的所有開源項目都指 GitHub 上的開源項目。
為什么要用開源項目?
軟件開發(fā)領(lǐng)域一直有個原則:DRY,Don’t repeat yourself,翻譯過來就是「不要重復(fù)造輪子」。而開源項目主要目的是共享,其實就是為了讓大家不要重復(fù)造輪子,尤其是在互聯(lián)網(wǎng)這樣一個快速發(fā)展的領(lǐng)域,速度就是生命,引入開源項目,可以節(jié)省大量的人力和時間,大大加快業(yè)務(wù)的發(fā)展速度,何樂而不為呢?
開源項目的風(fēng)險
開源項目為我們節(jié)省了大量的人力和時間,但是開源項目并不是完美的,相信使用過開源項目的人都大大小小踩過一些坑,如代碼不規(guī)范啊,項目有bug啊等等,出了問題都會為我們的項目以及公司帶來不小的影響,這個時候如何選擇開源項目就變得很重要。
如何選擇開源項目?
下面以一個例子來更詳細(xì)具體的說明。假設(shè)我們現(xiàn)在急需一個http網(wǎng)絡(luò)請求庫在項目中使用,是我的話,那我肯定在 GitHub 上搜索「android + http」作為關(guān)鍵字。
1. Stars
一般來說我都會優(yōu)先按照 Stars 來排序,Stars數(shù)高不代表一定是最好的,但是起碼說明蠻火的,不然不會那么多人都 Star 的,要知道在 GitHub 上得一個 Star 遠(yuǎn)比在微信上獲得一次「贊賞」難的多。于是首屏的搜索結(jié)果是這樣:

首屏按照Stars排序大概出現(xiàn)了如上的4個網(wǎng)絡(luò)庫,大家應(yīng)該都很熟悉,但是這4個網(wǎng)絡(luò)庫該怎么選呢?
2. 作者影響力
Stars 數(shù)都還蠻多的,那我肯定會優(yōu)先看下作者影響力了,有影響力的人不一定是最好的選擇,但起碼說明不會不靠譜,如果作者是你熟悉的那就更好辦了。這4位里面前兩位是 Square 公司出品,后兩位是個人作品,如果熟知 Square 公司的話那到這里基本就能做出選擇了,Square 公司真是開源界的良心公司啊,為開源界做出了巨大貢獻(xiàn),甚至比Google、Facebook貢獻(xiàn)的開源項目多的多,而且質(zhì)量非常高,著名的 Android 界的傳說 Jake Wharton 就是 Square 公司的員工。一般來說公司項目是優(yōu)先于個人項目的,何況還是 Square 公司,但是我們也來看下其他兩位作者的 GitHub 主頁。

作者 loopj 的followers有2k多,而且自己的好幾個開源項目Star都蠻多的,這一年的GitHub提交不算特別活躍,但是還行,總體來說是影響力蠻大的一位開源作者。

作者 wyouflf 的followers有1k,有影響力的開源項目也就數(shù) xUtils 了,而且 xUtils 貌似有了最新版 xUtils3,最近一年在GitHub沒什么提交,說明不是特別活躍。