snyk.io/advisor/pythonsnyk.io/advisor/python

無論是工作或個人的開發,在為專案實作新的功能時,一個需求可能會有複數個套件選項可供選擇。這時候如何取捨,需要考慮的因素很多,而套件的「健康度」無疑是重要指標之一。

在 Python 中,這些套件幾乎都是開源的,而 Snyk Open Source Advisor 就是一個幫助你查詢、確認開源專案健康度的服務!

採用一個缺乏維護者與使用者的開源套件,可能會讓後續的開發付出代價,如果存在涉及資安的 bug,那麼最壞的情況恐怕不止是砍掉重練而已。(這段話聽起來好像廣告業配的台詞 🤣)

所以,在研究新功能的實踐而必須採用新的套件時,只要不是公認的主流選項,或是我不熟悉的領域,我一定會去這個網站查一下套件的健康度。依照網站的計算公式,專案更新愈頻繁、社群活躍度愈高、愈多人採用,健康度就愈高。

我會以它給出的健康度分數,來決定是否採用一個新套件。

舉例而言,比如當 Django 專案想要存取 MongoDB 資料時,就需要能有支援 MongoDB 的套件(package)。依照 MongoDB 官方的文件說明,最常見的三種選擇如下:

  1. PyMongo
  2. MongoEngine
  3. Djongo

其中 PyMongo 是後二者的底層依賴套件,一定會安裝,可以忽略不計。而且畢竟是 Web 開發,我們實際需要的是類似 Django ORM 的 Object-Document Mapper 框架,後兩者都符合這個要求,所以要從選項 2、3 中選擇其一。

選擇的時候,需要考慮專案的具體需求、整合成本、通用性等重要方向,包括套件本身的健康度

如果套件專案健康度不到 80 分,除非只是個人開發且別無選擇,否則我基本不考慮!

所以用它查了一下,MongoEngine 得分為優秀的 94 分,而 Djongo 僅得到 71 分,單憑這個指標,我顯然就不會選擇 Djongo 了。

除了 Python,Snyk Open Source Advisor 還支援 Node.jsGo 以及 Docker(可查詢 image 健康度)。

總之,推薦 Snyk Open Source Advisor 作為開發時的套件選擇參考。