給程序員新年鉅獻:Google最熱門60款開源項目


1機器學習系統 TensorFlow

TensorFlow 是谷歌的第二代機器學習系統,據谷歌說,在某些基準測試中,TensorFlow 的表現比第一代的 DistBelief 快了 2 倍。TensorFlow 內建深度學習的擴展支持,任何能夠用計算流圖形來表達的計算,都可以使用 TensorFlow。任何基於梯度的機器學習算法都能夠受益於 TensorFlow 的自動分化(auto-differentiation)。通過靈活的 Python 接口,要在 TensorFlow 中表達想法也會很容易。

2material-design-icons

Google 開源了 Material Design 系統圖標包其中的 750 個字形。該系統圖標包含常用的圖標,如用於媒體播放、通訊、內容編輯、連接等等。在 Web 應用,安卓和 iOS 設計均適用。


3前端開發工具組 MDL

MDL (Material Design Lite) 是 Google 推出的網站前端開發工具組。Material Design Lite (MDL)可以讓你添加一個 Material Design 的外觀和感覺到你的靜態內容網站,不依賴於任何的 Java 框架和庫。MDL 可以優化跨設備的使用體驗,可以在舊版的瀏覽器進行平滑的切換,提供非常快速的訪問體驗。


4Web 前端框架 Angular

Angular 是一款十分流行且好用的 Web 前端框架,目前由 Google 維護。官方已將 Angular 2 和之前的版本 Angular.js 分開維護(兩者的 GitHub 地址和項目主頁皆不相同)。漸進式 Web 應用,藉助現代化 Web 平臺的力量,交付 app 式體驗。高性能、離線化、零安裝。


5容器集羣管理系統 Kubernetes

Kubernetes 是來自 Google 雲平臺的開源容器集羣管理系統。基於 Docker 構建一個容器的調度服務。該系統可以自動在一個容器集羣中選擇一個工作容器供使用。其核心概念是 Container Pod。


6數據描述語言 protobuf

Protocol Buffers (ProtocolBuffer/ protobuf )是 Google 公司開發的一種數據描述語言,類似於 XML 能夠將結構化數據序列化,可用於數據存儲、通信協議等方面。現階段支持C++、JAVA、Python 等三種編程語言。同 XML 相比,Protocol buffers 在序列化結構化數據方面有許多優點。


7Java 常用庫 Guava

該項目是 Google 的一個開源項目,包含許多 Google 核心的 Java 常用庫。


8Spark

Spark 是谷歌公司推出的一款基於 Chrome 瀏覽器的開發環境。提供一組可重用的 UI 組件。採用 Dart 開發。


9RPC 框架 GRPC

GRPC 是一個高性能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計。目前提供 C、Java 和 Go 語言版本,分別是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持 .GRPC 基於 HTTP/2 標準設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連接上的多複用請求等特。這些特性使得其在移動設備上表現更好,更省電和節省空間佔用。


10高質量壓縮圖片算法工具 Guetzli

Guetzli,是一個針對數碼圖像和網頁圖像的 JPEG 編碼器,能夠通過產生更小的 JPEG 文件來達到更快的在線體驗,並且同時保持與當前瀏覽器,圖像處理應用和 JPEG 標準的兼容性。Google 稱 Guetzli 創建高質量的 JPEG 圖像文件的大小比當前的壓縮方法要再小 35%。上圖爲 16x16 像素樣本,是掛在藍天下的一根電話線,傳統 JPEG 算法經常會遇到的失真狀況。左邊是未壓縮的原圖,中間爲較小尺寸的 libjpeg,右邊是失真更少的 Guetzli 。


11k/v數據庫 Leveldb

Leveldb 是一個 google 實現的非常高效的 kv 數據庫,目前的版本 1.2 能夠支持 billion 級別的數據量了。 在這個數量級別下還有着非常高的性能,主要歸功於它的良好的設計。特別是 LSM 算法。


12自動化網絡審查工具 Lighthouse

Lighthouse 是一個開源的自動化工具,用於改進網絡應用的質量。 可以將其作爲一個 Chrome 擴展程序運行,或從命令行運行。 當爲 Lighthouse 提供一個要審查的網址,它將針對此頁面運行一連串的測試,然後生成一個有關頁面性能的報告。可以參考失敗的測試,看看可以採取哪些措施來改進應用。


13Gson

Gson 是 Google 提供的用來在 Java 對象和 JSON 數據之間進行映射的 Java 類庫。可以將一個 JSON 字符串轉成一個 Java 對象,或者反過來。


14最小系統加載工具 systemjs

systemjs 是一個最小系統加載工具,用來創建插件來處理可替代的場景加載過程,包括加載 CSS 場景和圖片,主要運行在瀏覽器和 NodeJS 中。它是 ES6 瀏覽器加載程序的的擴展,將應用在本地瀏覽器中。通常創建的插件名稱是模塊本身,要是沒有特意指定用途,則默認插件名是模塊的擴展名稱。


15序列化庫 FlatBuffers

FlatBuffers 是一個 Java 的序列化庫,用於遊戲和其他內存受限的應用。FlatBuffers 可以讓你直接訪問序列化後的數據,無需解壓並進行解析的過程。同時提供很強的向前和向後兼容性。FlatBuffers 支持 C++ 和 Java 語言,無需依賴第三方庫支持。


16Xi 文本編輯器 Xi Editor

Xi Editor 是 Google 開源的一款用 Rust 語言編寫的文本編輯器,最初是爲 Mac OS X 構建的,使用 Cocoa 作爲用戶界面,已有計劃適配其它平臺。所有編輯操作都可以在 16ms 之內提交併處理。文本繪製使用最好的技術(如 Mac 上的 Core Text,Windows 上的 DirectWrite 等),並完全支持 Unicode。


17Grumpy

Grumpy 是一個 Python to Go 源代碼翻譯編譯器和運行時,旨在替代 CPython 2.7。 關鍵的區別是它將 Python 源代碼編譯爲 Go 源代碼,然後將其編譯爲本機代碼,而不是字節碼。這意味着 Grumpy 沒有 VM。編譯的 Go 源代碼是對 Grumpy 運行時的一系列調用,Go 庫服務與 Python C API 類似的目的(儘管不直接支持 C API)。


18Java 編譯器 Traceur

Traceur 是一個來自 Google 的 Java 編譯器,通過它可以體驗一些很新並且有趣的 Java 語言特性,這些多數是還沒有被當前瀏覽器實現的 ECMA 標準或草案,比如:數組比較、類、模塊、迭代器、方法參數默認值、Promise 等。


19媒體播放器 ExoPlayer

ExoPlayer 是 Android 上一個應用級的媒體播放器。它爲 Android MediaPlayer 的 API 在播放本地或在線的視頻與音頻上提供了一個候選。ExoPlayer 支持一些 Android MediaPlayer API 無法提供的特性,包括 DASH 和 SmoothStreaming 自適應回放,持久的高速緩存和自定義渲染器。不像 MediaPlayer API,EXOPlayer 很容易定製和擴展,而且它可以通過 Play Store 更新升級。


20代碼構建工具 Bazel

Bazel 是 Google 的一款可再生的代碼構建工具。它主要是用於構建 Google 的軟件,處理出現在谷歌的開發環境的構建問題,比如說:大規模數據構建問題,共享代碼庫問題,從源代碼構建的軟件的相關問題。支持多種語言並且跨平臺,還支持自動化測試和部署、具有再現性(Reproducibility)和規模化等特徵。


21創作藝術和譜寫曲子的機器智能 magenta

Google Brain 團隊的一組研究人員發佈了一個項目 Project Magenta,其主要目標是利用機器學習創作藝術和譜寫曲子。Project Magenta 使用了 TensorFlow 系統,研究人員在 GitHub 上開源了他們的模型和工具。


22自動生成命令行界面的內容庫 Python Fire

Python Fire 是 Google 開源的一個可從任何 Python 代碼自動生成命令行接口(CLI)的庫。Python Fire 是一種在 Python 中創建 CLI 的簡單方法;是開發和調試 Python 代碼的有用工具;能夠使 Bash 和 Python 之間的轉換更爲容易;並且通過使用你需要導入和創建的模塊和變量來設置 REPL,使得使用 Python REPL 更容易。


23軟硬件框架 AnyPixel.js

AnyPixel.js 是 Google 開源的一個軟件和硬件框架,可以用來構建各種由“像素”構成的展示,每個像素可以是任何一種可交互的實體對象,如 LED 燈、氣球等。


24物聯網工具 Physical Web

Physical Web 是由 Chrome 團隊主導的一個項目, 意在用 URL 連接世界, 方便用戶接受數據。在 Web 世界中,各種 URL 可以說是鏈接的基礎,也是去中心化的,所以“The Physical Web”要做的就是讓每個智能設備用 URL 來標識自己,然後用戶按照自己的需要通過 URL 和設備進行交互。這樣一來,你使用智能設備的體驗就和在網站上使用各種超鏈接差不多了。


25Docker 容器性能分析工具 cAdvisorc

Advisor 是谷歌公司用來分析運行中的 Docker 容器的資源佔用以及性能特性的工具。cAdvisor 是一個運行中的守護進程用來收集、聚合、處理和導出運行容器相關的信息,每個容器保持獨立的參數、歷史資源使用情況和完整的資源使用數據。當前支持 lmctfy 容器和 Docker 容器。


26C++單元測試工具

Google 的開源 C++ 單元測試框架 Google Test,簡稱 gtest 是一個非常的不錯單元測試框架。支持跨平臺以及包括 Windows CE 和 Symbian 在內的一些手機操作系統。


27IndexedDB 關係查詢引擎 lovefield

lovefield 是建立在 IndexedDB 上的關係查詢引擎。它提供了類似 SQL 的語法,並且可以跨瀏覽器工作(目前支持 Chrome 37 及以上版本,Firefox 31 及以上版本,IE 10 及以上版本)。


28Java 生成器源代碼集合 Auto

Auto 是 Java 生成器源代碼集合,Java 有許多機械、重複、未經測試的代碼,而且有時會出現一些微妙的 Bug 。Auto 項目是自動執行這些類型的任務的代碼生成器的集合,他們可以無 Bug 創建你要編寫的代碼。


29Python 代碼格式化的工具

YAPF 是 Google 開發的一個用來格式化 Python 代碼的工具。


30基於 TensorFlow 的神經網絡庫 Sonnet

Sonnet 庫使用面向對象的方法,允許創建定義一些前向傳導計算的模塊。模塊用一些輸入 Tensor 調用,添加操作到圖裏並返回輸出 Tensor。其中一種設計選擇是通過在隨後調用相同的模塊時自動重用變量來確保變量分享被透明化處理。 該庫兼容 Linux/Mac OS X 和 Python 2.7。TensorFlow 的版本必須至少爲 1.0.1。Sonnet 支持 TensorFlow 的 virtualenv 安裝模式,以及 nativ pip 安裝。


31無損壓縮算法 Brotli 

Brotli 是一個通用目的的無損壓縮算法,它通過用變種的 LZ77 算法,Huffman 編碼和二階文本建模進行數據壓縮,是一種壓縮比很高的壓縮方法。在壓縮速度上跟 Deflate 差不多,但是提供了更密集的壓縮。


32負載均衡系統 Seesaw

Seesaw 是 Google 開源的一個基於 Linux 的負載均衡系統。Seesaw 包含基本的負載均衡特性,同時支持一些高級的功能,諸如:anycast, Direct Server Return (DSR), 支持多個 VLANs 和集中式配置。同時其設計的宗旨是易於維護。


33Gumbo

Gumbo 是 Google 的一款用C語言實現的 HTML5 解析庫,無需任何外部依賴。


34GXUI

GXUI 是 Google 出品的一個跨平臺 GO 語言的 UI 框架。


35iOS UI 測試自動化框架 EarlGrey

遵從開源 Apache 授權的 EarlGrey,由 Objective-C 編寫而成。Google 也確實用的它來測試自家的 iOS app。EarlGrey 可支持和模擬回溯至 iOS 8 的設備,有關該工具的詳細文檔請戳這裏。除了 EarlGrey,其它 iOS UI 測試自動化框架還包括 Calabash 和 Sauce Labs 的 Appium。


36Blockly

Blockly 是一個基於 Web 的可視化編程工具,只需要拖動幾個圖形就可以編程, 完全不需要打字. 根據項目 FAQ 介紹, 這個新語言的主要目的是爲 web 應用提供宏(或腳本編程)的支持. 可以把生成的腳本輸出成 java, python 等.已經有幾個利用 Blockly 的 demo。


37go-github

go-github 是 Google 對 Github 的開放 API 進行 Go 語言封裝的一個項目。


38抓取 bug 工具 error-prone

error-prone 用來抓取 Java 編譯時的錯誤。通常使用編譯器只能做靜態類型的檢查。但使用此工具,能夠進行編譯器的類型分析,能夠檢測並抓取到編譯過程中的 Bug,能夠大大的節約開發者的時間。


39ROS 系統支持的 SLAM 庫 Cartographer

Cartographer,是 Google 開源的一個 ROS 系統支持的 2D 和 3D SLAM(simultaneous localization and mapping)庫。SLAM 算法結合來自多個傳感器(比如,LIDAR、IMU 和攝像頭)的數據,同步計算傳感器的位置並繪製傳感器周圍的環境。在產業界和學術界常見的傳感器配置上,Cartographer 能實時建立全局一致的地圖。


40安卓電量分析工具 Battery Historian

Battery Historian 是一個通過分析安卓 "bugreport" 進程文件來統計電量消費情況。它允許應用程序開發人員在時間線上可視化系統和應用程序級事件,具有平移和縮放功能,在設備上完全充電後可以輕鬆查看各種彙總統計信息,並能選擇應用程序,檢查影響應用程序特定電池的指標。 它還允許兩個錯誤報告的 A / B 比較,突出顯示關鍵電池相關指標的差異。


41通用編碼器&解碼器框架 seq2seq

seq2seq 是 Google 開源的一款用於 TensorFlow 的通用編碼器&解碼器框架(encoder-decoder framework),可用於機器翻譯、文本摘要、會話建模、圖像描述等。


42Web 應用 Tracing Framework

Tracing Framework 是一套庫、工具,用於跟蹤和調查複雜的 Web 應用。它就可以幫你發現代碼的性能問題,並且幫你打造十分流暢的 60 FPS Web 應用。它目前只能用於特定的應用場合,並不是爲應用於所有場景而設計,如果你在使用過程中遇到了問題,請呈遞你的 Bug。


43深度概率編程語言 Edward

Edward 是一個用於概率建模、推理和評估的 Python 庫。它是一個用於快速實驗和研究概率模型的測試平臺,其涵蓋的模型範圍從在小數據集上的經典層次模型到在大數據集上的複雜深度概率模型。Edward 融合了以下三個領域:貝葉斯統計學和機器學習、深度學習、概率編程。


44Java 庫 Closure Library

Closure Library 是一個強大的 Java 庫,用於複雜的大規模的 Web 應用。它被許多 Google Web 應用使用,比如 Gmail 和 Google Docs。


45大型微服務系統管理工具 Istio

Istio 是一個由谷歌、IBM 與 Lyft 共同開發的開源項目,旨在提供一種統一化的微服務連接、安全保障、管理與監控方式。Istio 項目能夠爲微服務架構提供流量管理機制,同時亦爲其它增值功能(包括安全性、監控、路由、連接管理與策略等)創造了基礎。這款軟件利用久經考驗的 Lyft Envoy 代理進行構建,可在無需對應用程序代碼作出任何發動的前提下實現可視性與控制能力。


46遠程現場取證系統 GRR

GRR 是 Google 開發的遠程現場事件取證系統。GRR 由一個代理(客戶端)和服務器端組成,客戶端可以部署在一個任務系統中,服務器可以管理客戶端,跟客戶端進行交互。


47Android 的懸浮操作欄 Hover

Hover 是一個用於 Android 的懸浮操作欄。該菜單欄可以作爲一個 service 啓動,從而跨進程使用,懸浮在桌面或者其他應用程序的前面,當然,這裏需要申請權限。 Hover 仍處在開發階段,還有很多代碼清理工作需要做,也就是說,Hover 現在僅僅處於可用狀態。


48模塊化深度學習系統 Tensor2Tensor 

Tensor2Tensor 是一個模塊化和可擴展的庫和二進制文件, 能夠幫助人們爲各種機器學習程序創建最先進的模型,可應用於多個領域,如翻譯、語法分析、圖像信息描述等,大大提高了研究和開發的速度。


49Google 模糊測試服務 OSS-Fuzz

OSS-Fuzz 能夠針對開源軟件進行持續的模糊測試,它的目的是利用更新的模糊測試技術與可拓展的分佈式執行相結合,提高一般軟件基礎架構的安全性與穩定性。OSS-Fuzz 結合了多種模糊測試技術/漏洞捕捉技術(即原來的 libfuzzer)與清洗技術(即原來的 AddressSanitizer),並且通過 ClusterFuzz 爲大規模可分佈式執行提供了測試環境。


50優化搜索工具 or-tools

or-tools 是 Google 的優化搜索工具。Google 優化工具包括:約束編程解決方案;爲線性規劃和混合整數規劃解決方案提供簡單統一的接口,包括 CBC, CLP, GLOP, GLPK, Gurobi, SCIP, 和 Sulum;揹包算法;圖算法 (最短路徑,線性和分配,最小費用流,最大流)。


51加密庫安全測試套件 Wycheproof

Wycheproof 是谷歌開源的加密庫測試項目,它包含一系列安全測試,用來檢測加密庫(cryptographic libraries)軟件是否存在已知的攻擊漏洞。


52Common Lisp Koans 

Common Lisp Koans(lisp-koans)是一個語言學習練習程序,類似 ruby koans,python koans 等等。Common Lisp Koans 主要是幫助學習一些 lisp 規範特性和改進,可以學習到大量的 Common Lisp 語言特性。


533D 圖形開源壓縮庫 Draco

Draco 是一種庫,用於壓縮和解壓縮 3D 幾何網格(geometric mesh)和點雲(point cloud)。換句話說,它顯著縮小了 3D 圖形文件的大小,同時對 3D 圖形的觀看者來說又根本不嚴重影響視覺效果。它還旨在改善 3D 圖形的壓縮和傳輸。Draco 是作爲 C++ 源代碼發佈的,可以用來壓縮 3D 圖形,另外還發布了處理編碼數據的 C++ 和 Java 解碼器。


54Java 庫 Shaka Player

Shaka Player 它實現了 DASH 客戶端的功能。它的播放功能基於 HTML5 video、MediaSource Extensions,和 Encrypted Media Extensions 。一般的 DASH 客戶端功能很難實現。


55TensorFlow 深度學習庫 Fold

TensorFlow Fold 是用於創建使用結構化數據的 TensorFlow 模型庫,其中計算圖的結構取決於輸入數據的結構。 TensorFlow Fold 使得處理不同數據尺寸和結構的深度學習模型更容易實現。


56Google 地球企業版 Earth Enterprise

Earth Enterprise 是 Google Earth Enterprise 的開源版本,是一個提供構建和託管自定義 3D 地球模型和 2D 地圖的地理空間應用,旨在讓社區繼續改進和推進該項目。


57圖像差異比較庫 Butteraugli

Butteraugli 是用來評判兩個圖像之間的相似度。通過識別圖像之間一些最受關注的差異點並給出相似度分值。這個項目的一個主要動機是對差異受體的不同顏色的位置和密度的統計,特別是藍色的低密度錐窩。另一個動機來自於更準確的神經節細胞建模,特別是抑制頻率空間。目前該項目只提供了 C++ 接口。


58Go 語言實現的網絡協協議棧 Netstack

Netstack,使用 Go 語言編寫的網絡協議棧。通過安裝 tun_tcp_echo demo 嘗試在 Linux 上使用 。


59鋼琴二重奏 AI aiexperiments-ai-duet

“鋼琴二重奏”的 A.I. Duet。該項目會在你彈出了幾個音符之後,通過 AI 自動計算來幫你“補完”旋律的重奏部分。A.I. Duet 運用了人工智能技術,通曉音符的“編碼規則”。


60端到端加密系統 E2EMail

E2EMail 是一個實驗性質的端到端加密系統。E2EMail 由 Google 開發,內置 Java 內部開發的 Java 加密庫。它提供了一種通過 Chrome 擴展程序將 OpenPGP 集成到 Gmail 中的方法。消息的明文單獨保留在客戶端上。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章