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