開源軟件那么多,我們該如何抉擇

大家叫我杰哥 文

當我們說起開源軟件的時候,想必大家都有豐富的使用經歷,小到Node.js的一個組件庫,大到一套辦公軟件如LibreOffice,再如Linux操作系統,可以說無奇不有,浩如煙海。就拿我們常用的github來說,官方的數據是已經超過有三千八百萬個項目托管在上面。
在我們日常的項目中,開源軟件或者框架也廣泛地被應用,從前端到后臺,從WEB服務器到數據庫,每一種類型都有很多可以使用的開源軟件。

假設現在需要開始一個項目或者準備引入一樣新的技術,面臨這么多的選擇,就算是老司機,可能會覺得難以取舍。

流行的就是最好的嗎?還是該嘗試一下最新的技術?技術的最新趨勢是什么?

舉一個實際的列子,有一個遺留的在線電商系統,前端使用了jQuery和JSP以及一些老舊的模板技術,每當改動一個小的功能,往往需要非常的小心和充分的測試。前端代碼已經非常難以維護和擴展,沒有模塊化管理,沒有層次結構。同時業務的的快速發展,業務方也希望對頁面進行不定期改版和試點,能夠適應快速的市場變化,要求統一界面風格,開發成本低。

IT團隊領導考慮引入一項新的技術,希望實現模塊化代碼管理,前后端分離,提升開發效率,未來更好的向微服務轉換。你作為團隊TechLeader,來負責實施,該如何評估和選擇呢?

首先要考慮的是實際的需求和應用場景,弄清楚解決的問題是什么,再來看每種軟件的優缺點是什么,是否能夠幫助解決實際的問題。我的一個原則就是KISS(保持簡單),能夠用一個包庫解決的不要用一個框架,能夠用一個框架解決的不要用一個應用,誰能滿足需求而且更加簡單,就用誰。

業務的快速變化,轉化成技術的語言可能就是快速迭代,如果有模塊化管理,實現業務的耦合,顯然有助于交付速度;試點和改版可能就是更多的偏向前端,顯然實現前后端分離,可以更好的滿足這一點。再來看看現在比較流行的技術,現代的前端框架幾乎都能夠滿足這兩點需求,比如AngularJs、ReactJs、VueJs等。

究竟該如何選擇?

沒有比較就沒有差異。你最先想到的可能是,軟件的特性,這個文檔中一般會有描述,也會找到文章的總結,比如VueJs的這篇文章。結合實際的情況,我認為可以從以下幾個方面來入手。這時我們不妨做一個表格,從多個維度來進行考察,并給每一項進行評分。

首先是看軟件特性是否滿足需求,下面這些維度都是可以參考的。

  • 版權協議:這個主要是看能否修改源代碼,能否閉源使用,請看參考資料
  • 兼容性:和現有技術棧的兼容性,比如JDK的版本要求,Node的版本,以及是否可以重用已有的代碼和功能
  • 擴展性:是否有設計擴展點,容易進行二次開發;隨著規模的增加,是否會帶來復雜度,代碼難以駕馭
  • 替代性:是否有同類型的其他功能相似的軟件,可能會同時進行試點進行比較

對于統一界面風格,提升開發效率,我們則可以選擇定制化一套StyleGuide,來進行重復利用。可以參考一位同事的這篇文章“風格指南驅動開發”。

其次,我們要看目前團隊的技術能力,列如:

  • 學習成本:學習曲線是否陡峭,能否在短時間內掌握并運用,影響的是項目的進度
  • 現有資源:團隊開發是否愿意學習新技術,或者有團隊成員已經掌握了該項技術;公司范圍內能否協調到專家資源支持
  • 網絡資源:博客、專業網站、公眾號等上的分享和總結也比較具有參考價值

舉個例子,假設現在有5個開發,如果大家對三個框架都不熟悉,可以選擇VueJs。如果有兩個人對AngularJs有一些使用經驗,可以優先考慮AngularJs。這個時候,我們的評估表看起來可能是這樣的。


選型評估表

第三,從社區支持來看。列如:

  • 活躍度:是否有豐富的相關技術問題討論和分享,碰到坑時可以尋求幫助,比如郵件列表、論壇、stackoverflow
  • 更新:版本更新是否頻繁,是否有嚴重的安全問題或缺陷
  • 應用廣泛性:有哪些公司在使用該技術,是否有案例分享
  • 生態圈:選擇一個軟件或者技術的時候,往往有它自己的生態圈,相關的工具也是需要考慮的。比如Hadoop,相關的軟件或工具就非常多。

第四,文檔和培訓

  • 官方文檔:除了使用文檔,源代碼也是比較重要的,源代碼是否組織的比較好,易于理解,作用在后續解決技術問題的時候會比較明顯
  • 商業支持:如培訓、付費支持,如果開發團隊技術能力還不錯,則顯得不是那么重要
  • 成熟的案例:別的公司或者團隊是怎么應用的,有哪些坑

Talk is cheap, show me the code.

結合應用再寫個小Demo,功能不用那么完善,給團隊秀一秀代碼,讓大家有個客觀的認識,對工作量的估算也會比較有幫助。

對于上面的案例,如果現在來選擇,Vue會是首選,相對簡單。

React makes it painless to create interactive UIs.

如果碰到評估完之后,兩種可選方案區別不太明顯,不相上下,那就丟硬幣了(不如讓團隊投票吧)。最后就是進行技術評審了,給專家團隊或者領導演示你的方案,展示Demo,讓他們更加有信心,并獲得支持。

最后推薦給大家的,是ThoughtWorks會定期發布技術雷達,了解最新技術的趨勢,不容錯過。最新的一期請見參考資料。

參考資料:

狗日的開源軟件許可證
Various Licenses and Comments about Them
你聽說過“風格指南驅動開發”嗎
2016年11月技術雷達

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,771評論 25 708
  • 當我們說起開源軟件的時候,想必大家都有豐富的使用經歷,小到Node.js的一個組件庫,大到一套辦公軟件如Libre...
    ThoughtWorks閱讀 1,025評論 0 1
  • 從前有一個人,她很愛生氣。她的朋友告訴她,你不要生氣,對身體不好。她不聽,后來,她就氣死了。她的朋友去參加葬禮,非...
    不許說話不許動閱讀 308評論 4 1
  • 今天我們聽了《彩虹色的花》,是早上我在做早餐的時候,孩子自己聽的,聽完故事后…… “寶,彩虹色的花身上發生了什...
    c6d12c023732閱讀 190評論 0 0
  • 沒想到當一名志愿者這么不容易。 我一直有一個夢想,就是做一名志愿者,奉獻社會,實現自身價值。所以從大學開始我就加入...
    小語神經智閱讀 1,280評論 0 0