開源軟件的使用需要您擦亮眼睛做出最明智的評估
原創(chuàng)作者簡介
Onur Alp Soner(歐能),Countly聯(lián)合創(chuàng)始人和CEO。2012年創(chuàng)辦Countly之前,歐能在華為有大約4年的工作經(jīng)驗(yàn)。他是華為(土耳其)首批員工之一,參與建立華為NGIN (Next Generation Intelligent Networks) 未來智能網(wǎng)絡(luò)平臺的工作?! ?/p>
回首過去,盡管微軟聲稱研發(fā)開源軟件模型存在一定的風(fēng)險,但那已是十多年前的事情,現(xiàn)在已經(jīng)有了很大的變化。如今的微軟,一家以專有平臺而聞名的公司已創(chuàng)建了其自有的開源倉庫,以便其他開發(fā)人員參與,還宣布與曾經(jīng)的基于 Linux 的競爭對手紅帽公司結(jié)盟,并要求與政府部門建立公開性和互操作性,即便微軟歷來在其封閉的 Microsoft Office 平臺上具有壟斷地位。同時,如 IBM 供應(yīng)商之類的其他企業(yè)供應(yīng)商也致力于將開源作為其企業(yè)戰(zhàn)略中不可或缺的一部分。
隨著側(cè)重于企業(yè)需求的優(yōu)質(zhì)開源軟件出現(xiàn),歷來與開源相關(guān)聯(lián)的恐懼、不確定和懷疑已經(jīng)消失。我們也在關(guān)注諸如 jQuery 和響應(yīng)式 HTML5 庫之類的 UI 框架的可用性和用戶體驗(yàn)。它們在輕松使用移動、Web 和桌面應(yīng)用方面開辟了一條道路,這對當(dāng)今未充分、愉快體驗(yàn)應(yīng)用就快速棄用的用戶來說至關(guān)重要。
開源不僅僅可以降低成本
現(xiàn)如今,當(dāng)企業(yè)談及開源時,“低成本”不再是其首要目標(biāo)。相反,他們正在提高“業(yè)務(wù)敏捷性”,在瞬息萬變的市場中質(zhì)量才是愈發(fā)重要的。“業(yè)務(wù)敏捷性”包括許多特質(zhì),如靈活性、透明度和減少對單一供應(yīng)商的依賴??v觀企業(yè)狀況,開源軟件的使用非常普遍,譬如超過 9000 萬用戶使用 Linux 操作系統(tǒng),1.2 億用戶下載 LibreOffice 辦公套件以及 1000 萬用戶下載 MongoDB(一款可以運(yùn)行 Facebook、eBay 和谷歌之類公司業(yè)務(wù)的 NoSQL 數(shù)據(jù)庫)。
著名案例研究顯示,F(xiàn)acebook 已經(jīng)開發(fā)開源軟件并應(yīng)用在搭建社交網(wǎng)絡(luò)的基礎(chǔ)設(shè)施上,并將之添加到該公司的自有軟件中,產(chǎn)生收費(fèi)性服務(wù)。
阻礙開源發(fā)展的難題已解決
另一個誤解是關(guān)于文檔??v觀歷史,都是以純文本或 HTML 格式編寫開源文檔,且主要是靜態(tài)文檔,因?yàn)橹挥泻诵拈_發(fā)人員才能夠編寫。開發(fā)人員開始明白一個道理,沒有好的文檔,那么用戶就不會使用他們的項(xiàng)目,或者不喜歡使用。滿意的用戶會向他人推薦您做的這個項(xiàng)目,但前提是他們已了解項(xiàng)目的工作原理以及可以從軟件文檔中學(xué)到東西。值得慶幸的是,隨著出色的文檔生成器和關(guān)于如何寫好文檔的教程出現(xiàn),開發(fā)人員現(xiàn)在有能力編寫清晰明了的應(yīng)用程序指南,包括屏幕截圖、切合實(shí)際的代碼示例、充足的鏈接和參考,更重要的是接受用戶的意見。
如何使用開源資源并成為開源社區(qū)的一部分
Countly開源了自己的 SDK 和整個后端,包括服務(wù)器端組件和控制面板。為了進(jìn)行案例研究,我將回顧一下本團(tuán)隊(duì)在采用 Linux,MongoDB 和 Nodejs 作為解決方案的一部分之前進(jìn)行的評估流程。對于任何技術(shù)項(xiàng)目,我們都會從以下三個不同的角度整體進(jìn)行評估:技術(shù)、流程和項(xiàng)目參與者。
1.技術(shù)
當(dāng)?shù)谝淮卧O(shè)計 Countly 時,我們只有一個夢想:要讓它成為最常用、最受歡迎的移動分析平臺。讓我們產(chǎn)生這種想法的原因在于缺少實(shí)時、開源、易用的移動分析服務(wù)。Mixpanel 沒有成功、Google Analytics 對于移動項(xiàng)目來說并非真的方便易用,而 Flurry 又不是實(shí)時的。我們知道必須為自己的項(xiàng)目建立一個強(qiáng)大的社區(qū),因而開始尋找最佳技術(shù)來滿足自身需求。我們試過 PHP,Java,Javascript,甚至 C 和 C++ 等等這樣的編譯語言。還閱讀了很多數(shù)據(jù)庫資料,其中包括 MySQL,PostgreSQL,MongoDB 和 Cassandra。我們確信不管建立什么,都需要最底部使用 Linux。
最終,我們選擇了 NoSQL 數(shù)據(jù)庫 (MongoDB)。選擇它的主要原因是其擁有巨大的社區(qū),具備高性能、實(shí)時、易于使用和維護(hù)等特征。我們都未接觸過NoSQL,但這并不會成為對方拒絕交易的條件。我們在 Stackoverflow 和 Quora 上了解之后,在兩周內(nèi)做出了決定。雖然對于 NoSQL 數(shù)據(jù)庫,特別是 MongoDB 有很多負(fù)面評論,但成熟的平臺和開放的公司發(fā)展方向使我們堅(jiān)信可以繼續(xù)前進(jìn)。
接下來選擇的是應(yīng)用程序開發(fā)層。毫無異議地確定了Javascript,因?yàn)閼?yīng)用程序堆棧以及與 MongoDB 連接的連接器都以該語言運(yùn)行。Javascript 也是一種選擇性設(shè)計,因?yàn)槲覀兿MM可能地簡化整個平臺。
由于具備一些安全相關(guān)的框架和庫,越來越多的開發(fā)人員們編寫開源應(yīng)用程序,且認(rèn)為是安全的。雖然無法保證盯著開源軟件的“許多雙眼睛”有資格查找安全漏洞,但它通常被視為是黑客們難以闖入的單一系統(tǒng)。事實(shí)上,最近發(fā)生的一些事件表明,這是一個復(fù)雜的、相互連接的不安全自定義編程系統(tǒng),無論在哪使用開源組件,都最易受到黑客的攻擊。
2.流程
我們使用 Jira 進(jìn)行內(nèi)部溝通,使用 Github 進(jìn)行外部錯誤報告。如果您之前用過開源軟件,那么一定很熟悉 GitHub。這個網(wǎng)站為開發(fā)人員提供存儲庫以存儲和共享他們的開源項(xiàng)目,也是一種途徑,使世界各地的人們可以協(xié)作完成單個項(xiàng)目。我們會注意Fork,標(biāo)記和查看我們資源庫的用戶,并盡力在 24 小時之內(nèi)回復(fù) Github 上的問題。與 Github 上的一些企業(yè)軟件相反,我們的存儲庫歡迎“拉取請求”,對于如何編寫 Countly 代碼也有明確的指導(dǎo),包括編寫文檔、開發(fā)軟件或添加新的翻譯語言。
雖然存在關(guān)于如何開發(fā)開源軟件的大量教程,但是各個開發(fā)人員的開發(fā)方法卻不盡相同??梢哉f我們選擇 Javascript 之后,有 60 多個不同的開發(fā)人員來開發(fā)我們的代碼庫,其中有一半人員已添加了母語支持。了解到 Javascript 是編寫 Countly 代碼的基本途徑之后,我們會繼續(xù)吸引才華橫溢的 Javascript 開發(fā)人員在這種靈活、開放的環(huán)境下工作。
3.項(xiàng)目參與者
如果您只是看代碼,那么會很乏味。代碼沒有意義、沒有幽默感、也不會跟您互動,問您這一天過得怎樣。它不會傾聽,但是您可以調(diào)整代碼的可讀性并編寫高質(zhì)量的文檔來為自己和代碼原作者創(chuàng)造快樂。這就是我們鐘愛開源社區(qū)的原因,這里的軟件變得更有趣,使我們能夠寓工作于娛樂??紤]到大多數(shù)開源提交者對于版本控制和修補(bǔ)程序都有基本的了解,因此引導(dǎo)和培養(yǎng)他們管理健康的生態(tài)系統(tǒng)并非難事。
另外,我們一直在努力解決大家的難題。一開始渴望解決問題,但事實(shí)證明其他人有時也會遇到這些問題,沒有可用的開源移動分析平臺。我們項(xiàng)目解決的難題變得越來越多,我們看到人們都在使用并從中受益。
那么,重要的是我們?yōu)檎l,具體是哪部分人群解決了難題?如果您的答案是“每個人”,那么就存在這樣的問題:您是否打算接受每個人的要求并將其添加到開發(fā)任務(wù)中,如果接受,會用到哪些資源?有時即使添加一個小功能對于開發(fā)人員來說也可能是巨大的障礙,一個簡單的外觀功能可能會導(dǎo)致重新設(shè)計整個后端或用戶界面。我們的解決辦法非常簡單:如果要添加到代碼庫,我們首先要顯示其原型。如果需要花一個多星期來設(shè)計與討論其原型,那么即將添加的內(nèi)容可能比所需內(nèi)容復(fù)雜得多?,F(xiàn)在我們需要往后退一步,重點(diǎn)探討這是否是我們真正需要的,只有其覆蓋用戶群至少達(dá)到 50% 時,我們才會采用。
結(jié)論
這里有很多很好的閱讀材料,包括介紹參與開源項(xiàng)目、啟動開源項(xiàng)目(包括如何選擇許可證),如何將 Github 用于開源項(xiàng)目或者開源商業(yè)模式和策略等基本知識的閱讀材料。技術(shù)、方法、治理、許可……有關(guān)開源的一切在過去 20 年間都已發(fā)生極大的變化,如 Linux,領(lǐng)先的開源項(xiàng)目已起飛。開展業(yè)務(wù)時,如果商業(yè)模式能掌握技術(shù)、流程和項(xiàng)目參與者,開源可能是最佳選擇。而這一切,都由您來決定!
Countly 為移動應(yīng)用程序提供高級分析和市場營銷服務(wù)。我們大量使用開源軟件并利用50 多個開源庫、SDK 和框架。Countly也是開源移動分析和營銷平臺,目前服務(wù)范圍覆蓋6億多設(shè)備以及3,000多個移動應(yīng)用程序,客戶包括Samsung、Ubisoft,Evernote 和 SK Telecom等。