近日 InfoWorld 公佈了 2019 年最佳開源軟件榜單。InfoWorld 是致力於引領 IT 決策者走在科技前沿的國際科技媒體品牌,每一年 InfoWorld 都會根據軟件對開源界的貢獻,以及在業界的影響力評選出當年的「最佳開源軟件」(2019 InfoWorld Bossie Awards,Best of Open Source Software awards),該獎項評選已經延續了十多年。html
今年 InfoWorld 仍是將目光集中在用於軟件開發、雲計算、數據分析和機器學習的優秀開源項目。下邊一塊兒看看哪些項目入選了。算法
BPF Compiler Collection 是一個 Linux 動態跟蹤工具。無第三方模塊依賴,該工具繼承 BPF 這個強大的內核中虛擬機的功能,可對程序進行高效並且安全的跟蹤。編程
LSP(Language Server Protocol)是語言服務器協議,由紅帽、微軟和 Codenvy 聯合推出,可讓不一樣的程序編輯器與集成開發環境(IDE)方便地嵌入各類編程語言,容許開發人員在最喜好的工具中使用各類語言來編寫程序。它經過用於開發工具和語言服務器間通訊的 JSON-RPC 標準,可以讓編程工具提供實時反饋的詳細信息並以此實現多種強大功能,好比符號搜尋、語法分析、代碼自動補全、移至定義、描繪輪廓與重構等。後端
Serverless 架構開發框架 Serverless Framework 使用 AWS Lambda、Azure Functions 與 Google CloudFunctions 等技術,能夠構建 Serverless 架構的 Web、移動和 IoT 應用。它不只容許用戶自由選擇不一樣的部署目標,並且能幫助更快更輕鬆地對事件驅動型函數即服務(FaaS)應用進行測試、部署與管理。在建立函數、定義端點並指定目標雲環境以後,Serverless Framework 便可對代碼、安全性要求、資源要素以及雲部署 YAML 進行打包,從而順利完成項目部署。緩存
Istio 是一款強大的工具,旨在提供一種統一化的微服務鏈接、安全保障、管理與監控方式。Istio 項目可以爲微服務架構提供流量管理機制,同時亦爲其它增值功能(包括安全性、監控、路由、鏈接管理與策略等)創造了基礎。該項目利用久經考驗的 Lyft Envoy 代理進行構建,可在無需對應用程序代碼做出任何發動的前提下實現可視性與控制能力。安全
Envoy 是開源的邊緣和服務代理,用於雲原生應用,其最初是在 Lyft 構建的,它是爲單一服務和應用程序設計的高性能 C++ 分佈式代理,以及爲大型微服務 Service Mesh 架構設計的通訊總線和通用數據平面。服務器
做爲 Kubernetes 的標準服務代理,Envoy 一直在快速發展。在成爲首個 CNCF 項目以後(Envoy 也是第三個 CNCF 畢業項目),Envoy 快速進入 Istio 與 AWS App Mesh 等 Service Mesh 的核心,併成爲大部分 Kubernetes 設置中不可或缺的組成部分。網絡
Kong 是一個可擴展、快速的微服務 API 網關,用於管理、保護與鏈接混合及雲原生架構。Kong 運行於所有服務以前,默認提供斷路器、運行狀態檢查、OAuth、轉換、緩存與地理位置複製等功能,並能夠經過插件實現各類擴展,例如身份驗證、流量控制與可觀察性等。Kong 在 1.0 GA 的時候帶來了 Service Mesh 能力,用戶不只能夠將 Kong 部署爲 API 網關,還能夠將其部署爲獨立的 Service Mesh 代理。Kong 插件能爲 Service Mesh 提供開箱即用的關鍵功能,並能與其它雲原生技術集成,包括 Prometheus、Zipkin、健康檢查、canary 測試與藍綠測試等。架構
Pulumi 是一個架構即代碼項目,可在任何雲上使用開發者喜歡的語言建立、部署和管理基礎架構。不使用 YAML 而是經過使用常規編程語言功能(如循環、函數、類和包管理。)就能夠自動配置和管理 AWS、Azure、Google Cloud Platform 與 Kubernetes 資源。併發
Sysdig 是一個超級系統工具,比 strace、tcpdump、lsof 加起來還強大。它可用來捕獲系統狀態信息,保存數據並進行過濾和分析。使用 Lua 開發,提供命令行接口以及強大的交互界面。Sysdig 提供了一組工具,不只能夠用於瞭解基於容器的應用的實際性能,並且能夠及時發現各種異常情況與安全威脅。
Kraken 是一個點對點(P2P)Docker 容器倉庫,其旨在爲大規模系統提供 Docker 鏡像服務,解決跨區域支持、性能瓶頸和混合雲環境所面臨的挑戰。Kraken 大體基於 BitTorrent 協議,與 Docker registry API 兼容,並提供可配置的存儲後端,諸如 S3 和 HDFS 等。
Anaconda 是一個 Python/R 發行版,用於科學計算和信號處理等領域,支持 Linux、Mac 與 Windows,包含了衆多流行科學計算與數據分析等 Python/R 包。Anaconda 與其它發行版之間最大的區別在於 Anaconda Navigator(用於啓動應用程序與管理軟件包的圖形化桌面環境)與 Anaconda 的本地軟件包管理器 Conda。
Kotlin 是基於 JVM 的新一代 Android 開發語言,它與 Java 100% 互通,並具有諸多 Java 不支持的特性,相比 Java 更安全與簡潔。
Julia 是一個新的高性能動態高級編程語言,語法與其它編程語言相似,易於其餘語言用戶學習。Julia 擁有豐富的函數庫,提供了數字精度、精緻的增幅器(sophisticated amplifier)和分佈式並行運行方式。核心函數庫等大多數庫是由 Julia 編寫,但也用成熟的 C 和 FORTRAN 庫來處理線性代數、隨機數產生和字符串處理等問題。Julia 語言可定義函數而且根據用戶自定義的參數類型組合再進行重載。
Hazelcast Jet 是一個分佈式計算平臺,專爲高性能流處理和快速批處理而構建。它在內存數據網格(IMDG)中嵌入Hazelcast,以提供輕量級的處理器包和可擴展的內存存儲。
Apache Airflow 是一個數據管道監控工具,任何工做流均可以在這個使用 Python 編寫的平臺上運行。Airflow 容許工做流開發人員輕鬆建立、維護和週期性地調度運行工做流(即有向無環圖或成爲 DAGs)的工具,包括數據存儲、增加分析、Email 發送與 A/B 測試等跨越多部門用例。Airflow 能夠與 Hive、Presto、MySQL、HDFS、Postgres 和 S3 交互,而且提供了鉤子使得系統擁有很好地擴展性。此外它還提供了一個基於 Web 的用戶界面,能夠可視化地查看管道的依賴關係、監控進度與觸發任務等。
GridGain 是一個網格計算框架,專一於提供平行計算能力,可以與 JBoss 和 Spring 相集成,它提供可伸縮集羣、本機複製與良好的備份和恢復選項,很是適合立足分佈式數據中心爲數據密集型應用提供服務。此外,GridGain 還支持本地、雲與混合部署方式。
Apache Druid 是一個專爲事件數據的 OLAP 查詢設計的數據存儲系統,是一個用於大數據實時查詢和分析的高容錯、高性能分佈式系統,旨在快速處理大規模的數據,並可以實現快速查詢和分析。Druid 具備出色的可伸縮性與快速的即時查詢響應速度,它將流式攝取與 OLAP 風格的批量攝取以及搜索技術結合在一塊兒,可以輕鬆對實時及歷史數據進行切片、切塊與轉換。
TensorFlow 是當前最強的機器學習與深度學習框架,它內建深度學習的擴展支持,任何可以用計算流圖形來表達的計算,均可以使用 TensorFlow,任何基於梯度的機器學習算法都可以受益於 TensorFlow 的自動分化(auto-differentiation)。TensorFlow 2.0 中還帶來了 Eager Execution 模式,這是一種命令式接口,類比 PyTorch,開發者在調用其進行計算時能夠直接直觀地獲得結果,這使得基於 TensorFlow 的開發更加簡單明瞭。
TensorWatch 是一個調試和可視化工具,專爲 Microsoft Research 的數據科學、深度學習和強化學習而設計。它適用於Jupyter Notebook,可顯示機器學習培訓的實時可視化,併爲模型和數據執行其它關鍵分析任務,此外,它還提供強大的訓練前與訓練後功能,包括模型圖可視化、降維數據探索、模型統計以及用於卷積網絡的多種預測解釋器。TensorWatch 旨在靈活且可擴展,所以還能夠構建本身的自定義可視化 UI 和儀表板。除了傳統的「所見即所得」方法外,它還具備針對實時 ML 訓練流程執行任意查詢的獨特功能。
PyTorch 是一個 Python 深度學習框架,提供強大的 GPU 加速 Tensor 計算(相似 numpy)和構建基於 tape 的自動升級系統上的深度神經網絡。開發者能夠重用喜歡的 Python 包,如 numpy、scipy 和 Cython,在須要時擴展 PyTorch。
Transformers(以往稱爲 pytorch-transformers 和 pytorch-pretrained-bert)是用於 TensorFlow 2.0 和 PyTorch 的天然語言處理框架。它提供了用於天然語言理解(NLU,Natural Language Understanding)和天然語言生成(NLG,Natural Language Generation)的最早進的通用架構,包括 BERT、GPT-二、RoBERTa、XLM、DistilBert 與 XLNet 等,具備超過 100 種語言的 32 種以上通過預訓練的模型,以及 TensorFlow 2.0 和 PyTorch 之間的深度互操做性。
Ludwig 是基於 TensorFlow 的深度學習工具箱,它容許用戶在無需編寫代碼的狀況下便可訓練並測試深度學習模型。Ludwig 的獨特之處在於它可以幫助非專家更容易地理解深度學習,併爲經驗豐富的機器學習開發者和研究人員提供更快的模型改進迭代週期。經過使用 Ludwig,專家和研究人員能夠簡化原型設計過程及數據處理,能夠專一於開發深度學習架構。
RAPIDS 是一套數據科學框架,可以在不放棄已有經驗與技能的前提下實現機器學習加速。RAPIDS 可以利用內存內處理方式在 GPU 上直接訓練機器學習模型,而且相比其它 GPU 訓練方法,它的速度高几個數量級。RAPIDS 所使用的數據分析工具與 Python 相關實現方案如 Pandas DataFrames 徹底等效,同時又有所不一樣,在某些狀況下只須要變動腳本中的 import 語句便可完成兼容。
MLflow 是一個機器學習平臺,它爲機器學習項目中的各個主要組成部分及階段都準備了對應的工具。MLflow Tracking(跟蹤組件)提供了一組 API 和用戶界面,用於在運行機器學習代碼時記錄和查詢參數、代碼版本、指標和輸出文件,以便之後可視化它們。MLflow Projects(項目組件)提供了打包可重用數據科學代碼的標準格式。MLflow Models(模型組件)提供了一種用多種格式打包機器學習模型的規範。
Kubeflow 是一個機器學習工具庫,Kubeflow 項目旨在使 Kubernetes 上的機器學習變的輕鬆、便捷與可擴展,其目標不是重建其它服務,而是提供一種簡便的方式找到最好的 OSS 解決方案。Kubeflow 解決了長期以來困擾各種組織的兩個現實問題:如何將機器學習研究從開發環境轉移到生產環境;如何將遙測技術從生產環境轉移回開發環境,以實現深度研究。
Delta Lake 是一個存儲層,爲 Apache Spark 和大數據 workloads 提供 ACID 事務能力,其經過寫和快照隔離之間的樂觀併發控制(optimistic concurrency control),在寫入數據期間提供一致性的讀取,從而爲構建在 HDFS 和雲存儲上的數據湖(data lakes)帶來可靠性。
Wasmer
Wasmer 是一個 Go 庫,用來執行 WebAssembly 二進制程序,它在 WebAssembly 服務器運行時領域居於領先地位,其主要優點體如今接近原生水平的執行速度。
以上就是本次 InfoWorld Bossie Awards 項目,關於每一個項目具體的入選評語等詳細信息,能夠查看網站原文: