GitHub喜提npm:最大的包管理工具,JS版的「pip」

剛剛,全球最大的代(tong)碼(xing)託(jiao)管(you)平臺 GitHub 發佈公告稱,該公司已經簽署了一份收購 npm 的協議,後者是深受開發者歡迎的 JavaScript 包管理服務平臺。收購完成後,npm 公共註冊表用戶可以繼續免費使用,付費用戶可以在不久之後將私有 npm 包遷移到 GitHub Package。


GitHub喜提npm:最大的包管理工具,JS版的「pip」


npm 的全稱是 Node Package Manager,是一個基於 Node.js 的包管理器,創建初衷是讓 JavaScript 開發人員能夠更容易地分享和重用代碼。


憑著 npm 團隊在過去 10 年的工作,以及成千上萬的開源開發人員和維護人員的貢獻,該平臺現在擁有 130 萬個軟件包,每月下載量達 750 億次。他們的努力使得 JavaScript 成為世界上最大的開發者生態系統。


GitHub 在博文中表示,「GitHub 很榮幸參與書寫 npm 故事的下一篇章。我們將幫助 npm 繼續擴展以滿足快速增長的 JavaScript 社區的需求。」對於每天使用 npm 公共包管理器的數百萬開發人員而言,開源包將一直可用且始終免費。


為什麼 npm 如此重要?


對於眾多開發者而言,npm 並不陌生。即使我們常用 Python 或 C++等其它語言,但在執行某些 JS 開源項目時,也會遇到 npm。如果我們熟悉 JavaScript,那麼 npm 幾乎是不可或缺的軟件包管理工具。可以說,npm 就類似於 Python 中的 pip。


維護與創建這一包管理器的公司,就是 npm 了。因為 npm 託管的超大代碼庫與軟件註冊表,JS 開發者可以借鑑開源軟件包,而不需要從頭構建應用程序。


GitHub喜提npm:最大的包管理工具,JS版的「pip」


如果我們想創建一個開源軟件包,那麼通常的做法是:將代碼上傳到 GitHub,並實時維護它。同時,將穩定版的代碼也上傳到 npm 上,從而方便開發者安裝與管理。兩者實現了不同的功能,GitHub 負責追蹤代碼修正與版本的迭代,而 NPM 負責管理整個安裝包。


JS 是最大的開發者社區之一,而 npm 是世界上最大的軟件註冊表,在「下載包、安裝包、上傳包」這一流程中,npm 是開發生態不可或缺的一環。開發者不需要頭疼軟件包的各種依賴項與版本信息,都交給它就行了。


一般來說,npm 由註冊表、命令行工具等幾個獨立的模塊組成。註冊表是一個巨大的數據庫,保存了每個軟件包的信息;命令行工具則允許開發者通過終端與 npm 進行交互。有了這幾個模塊,管理開源包、分享代碼、管理私有軟件包、管理依賴信息等等都不成問題。


GitHub喜提npm:最大的包管理工具,JS版的「pip」


npm 與 pip 其實非常像,只不過一個用於 JS,一個用於 Python。兩者安裝方式稍微有一點不同,npm 會把軟件包安裝在當前目錄的 node_modules 下,pip 會把軟件包安裝在當前 Python 開發環境的 site-packages 中。換而言之,npm 不會對環境進行修改,似乎它更加「無汙染」?


npm 這個工具確實非常好用,NPM 公司在 2015 年也獲得 800 萬風投資金,它與 GitHub 一樣對開源包免費,而對託管的私有代碼包收費。其優勢在於,企業用戶可以通過相同的工具管理開源包與私有包。


現在,GitHub 收購了 npm,那麼它們之間會不會有一定的整合呢?畢竟去年 GitHub 還特意推出了免費軟件包管理服務 GitHub Package Registry。


收購之後走向何方?


對於用戶來說,大家最關心的當然是收購對自己的影響。對此,GitHub CEO Nat Friedman 在官方博客中表示,對於每天使用公共 npm 註冊表(registry)的數百萬開發者,npm 將一直可用,而且始終免費。收購完成之後的工作重點將放在以下幾個方面:


  • 投資託管服務器基礎設置和平臺。JavaScript 生態非常龐大,而且還在迅速擴張,因此需要一個堅實的註冊系統。GitHub 將進行必要的投資,確保 npm 快速、可靠、可擴展。
  • 提升核心體驗。GitHub 將致力於提升開發者和維護者的日常體驗,同時繼續支持 npm v7 CLI 上已經開展的重要項目,而且這些仍將是免費、開源的。激動人心的新特性包括 Workspaces 以及在包發佈流程、多因素身份驗證體驗上的進一步改進。
  • 參與社區活動。他們將積極地與 JavaScript 社區合作,從中獲得優秀的改進方案,以此來打造更好的 npm。


GitHub 表示,他們將和 npm 一起努力,提升開源軟件供應鏈的安全性。此外,GitHub 還打算將其打賞功能(GitHub Sponsors)擴展到 npm 的生態中。


對於付費使用 npm Pro、Teams、Enterprise 的私人註冊表用戶,GitHub 和 npm 也將繼續支持。此外,GitHub 正大力投資 GitHub Package,這是一個完全集成了 GitHub 的多語言包管理器。今年晚些時候,GitHub 將允許 npm 的付費用戶將他們的私有 npm 包遷移到 GitHub Package,使得 npm 專注成為一個開放、免費的 JavaScript 軟件包管理工具。


為了聽取大家的意見,GitHub 還表示將於近幾日在 reddit 上舉辦一場 AMA(Ask Me Anything)。


網友評論


針對此次收購,網友們的看法褒貶不一,但單從評論來看,支持此次收購的還是佔大多數。


有網友表示,現階段的 npm 處在較為尷尬的階段。從公司經營的角度來說,npm 的表現並不是特別值得稱讚。但相比於被 Amazon、Google 或是 Facebook 收購,被 Github 收購還算上策,至少可以保留些獨立性。


GitHub喜提npm:最大的包管理工具,JS版的「pip」


而 npm 作為軟件供應鏈中的重要支柱環節,其核心作用無須贅述,但背後公司的經營狀況值得深究。有網友表示,該公司的大部分資金來源於風投,其商業模式的壁壘遠沒想象的那麼高。


GitHub喜提npm:最大的包管理工具,JS版的「pip」


有人甚至針對 NPM 的經營狀況進行了簡單的思想模擬,以表明為何看好此次收購。公司運營需要資金,以現在 npm 公司的模式,想要維持運營只能吸納越來越多的投資者,而投資者的逐利性會反向影響公司之後的發展路線,資金的不確定性會導致各個利益相關方之間的衝突。如此看來,這樣的發展進程可能對整個社區都不是好事,更別說保有獨立性。


GitHub喜提npm:最大的包管理工具,JS版的「pip」


不看好的也有,比如單純的認為 Github 的東家微軟是一傢俱有較強封閉性的公司,收購之後難以保持原有中立且高效的發展速度。


當然,對於此次收購褒貶不一,是好是壞勢必要交給時間去驗證。


分享到:


相關文章: