延續昨天探討了開源軟體的各種刻板印象以及安全性議題討論,今天我們從數據與趨勢來探討應該如何看待開源軟體,並提供指南可做為評估開源軟體時的方向與參考。
觀察趨勢
我們參考了 2018 年由 Black Duck 與 SourceClear 所發佈的報告來看,整理出幾個趨勢。
在 Black Duck 所收到檢測的應用程式裡,有 96% 都會採用到開源套件。
在所有送交 Black Duck 檢測的應用程式裡,平均每一套應用程式都要引用 257 個開源套件。
在 2017 年的報告裡,應用程式裡所引用的開源程式碼佔去整個應用程式的 36%,而在 2018 年時則提升到了 57%,這等於說整個應用程式裡有超過一半的程式碼都是來自於開源套件。
SourceClear 的報告指出,照現在的發展趨勢走下去,在十年內將會有超過五億個開源的程式庫讓開發人員能夠選擇,這是一個極其驚人的數量。
這些數據都說明了一件事:正在改變。
也就是說,過去許多人所認為的開源軟體問題,在閉源軟體也可能出現,因為閉源軟體不可避免的會使用到開源程式碼、開源程式庫,或是引用了開源碼的元件。
除此之外,還有有一個極有代表性的指標,微軟。
在過去,一直被視為開源軟體對頭的微軟,其實也早已開始擁抱開源。2018 年在 GitHub 上開源貢獻榜最大的組織就是微軟,而且還有連著三年蟬聯第一的記錄。在軟體界,開源與閉源這條絕對的界線已經越來越模糊,更不要說微軟甚至把 GitHub 都給買了下來,足見開源的力量,不容小覷。
如何選擇
其實重點並不在於開源或是閉源,不管是前者或後,程式是都是人寫出來的,那都有發生問題的可能,而選用套件時的評估,也是關係到成果的安全與否。
遲早要面對開源套件何不早點面對?那麼在選擇開源套件上有沒有什麼技巧?
有的,我們可以從幾個面向做為選擇參考值,以目前最大的開源程式專案平台 GitHub 做為解說範例。
觀察專案的最近一次版本更新 (Release) 以及過去的頻率,可以看出這個專案是不是仍有在持續更新保持新版本,以及程式碼的提交 (Commit) 是否經常進行,這可以看出這個專案的仍然活躍,或是已經沉寂。
在 Insights 功能裡,提交趨勢圖 (Commits) 中越是活躍的專案,越是熱門;越是熱門就代表有許多開發者正在熱情貢獻,功能持續增加、軟體越趨穩定、修復漏洞的速度也會相當的快。
即便某些開源軟體能夠證明自己的功能及安全是極為優秀,但仍有許多使用者擔心採用沒有商業支援的套件會影響自己維護的技術能量。這個問題並不難解,其實有許多優秀的開源軟體背後都是由商業公司所推動的,例如 Red Hat 就是一個非常知名的開源軟體大廠。
以我喜歡的開源溝通平台 Mattermost 為例,它是一款 Slack 同類型的套件,您可以自行使用它的開源版本建構系統,亦可以選擇商業版本提供完整功能與支援,或是雲端平台託管。
又或者 Proxmox VE 開源伺服器虛擬化平台,它同樣也提供了付費的技術支援,您可以依據自己的需求加以選擇。
在採用開源軟體的時候,尤其是開發者,授權的議題特別需要關注,不同的開源軟體採用的授權協議不同,有一些協議比較寬鬆,例如 MIT、BSD,沒有限定商業使用或是修改等等,而有一些授權比較嚴格,若有使用到他的程式碼在自己產品裡,可能導致自己的產品受到感染而必需跟著開源,在開發者引用前需要多加留意。
到這裡,您可能心一驚:「那我要怎麼知道授權會不會有問題?那麼多條文我也看不懂,怎麼辦?」,沒關係,後面會為您介紹一款工具,可以幫您快速解決這個難題。
看到這裡,您可能或有疑問:為什麼會有這些佛心的開發者願意把自己的心血完全開放,把原始碼提供給大家使用呢?
就我個人來看,我將他歸納成這四點:「分享、公益、成就、信心」。
有許多的開源軟體開發者,喜歡分享好東西;又或有些人覺得這個軟體可以幫助到很多人,所以無私的開放。
也有人認為自己開發的專案相當不錯,達到自己心中的里程碑,也或是感受到自己成就了一套了不起的專案,想讓世人看見。
又或者是成功的專案讓自己感到信心,肯定自己,也有些開發者會把自己的 GitHub 專案當做履歷的一部份,除了彰顯專案,也能傳達自己的成績單。
而這些動力,同樣的也會驅使開發者不斷的強化專案與修復問題。
檢測工具
稍早前我們提到開源專案要經過挑選,以及授權適用性的問題,那我們要怎麼選擇,確定挑到的開源專案呢?
這裡介紹一套好工具,正是可以快速協助您解決這些難題。
Open Hub
Open Hub 是 Black Duck 公司所維護的平台,它提供了一個方便的網頁入口,主動的去掃描公開在網路上的許多專案並產生報告,您可以在這個平台上找到相關的專案,他會告訴您該專案的安全檢測結果。
漏洞報告指數
選定專案點進去後,他會呈現一個如上圖中的指示計。最簡單的觀看方法,就是這兩個指示計越是靠右,這套開源專案就越是安全。
關於漏洞報告的計算方法與細節,可以參考這裡的說明:
https://blog.openhub.net/about-pvr/
授權協議
在這個區段中,Open Hub 會自動幫您整理出授權的各種情境。最簡單的方式,只要看到左邊「綠色」項目就表示允許可以做的;中間「紅色」項目就表示禁止你做的行為;右邊的項目則表示您使用這個專案時需要注意的事項。
以上圖為例,這個專案可以用在商業情境、修改、散發等等,一目了然。透過 Open Hub 的整理,是不是比較容易理解了呢?
參考資料
- Open Hub, the open source network
https://www.openhub.net/
- Black Duck 2018 Open Source Security and Risk Analysis Report
https://www.blackducksoftware.com/open-source-security-risk-analysis-2018
- SourceClear The Busy Managers' Guide to Open-Source Security
https://www.sourceclear.com/resources/the-busy-managers-guide-to-open-source-security/chapter1/