平台和工具

Chinese, Simplified
SEO Title
平台和工具

DevOps工具

Chinese, Simplified
SEO Title
devops_tools

【API】Open API 工具

Chinese, Simplified

Current OpenAPI Version

3.0.2 - Link to the specification

Security

通过探索OpenAPI规范,一些工具可以查找您可能没有注意到的攻击向量。

Name Language v2 v3 GitHub
API Contract Security Audit - 上传OpenAPI文件,获取包含已定位漏洞的详细报告,可能的攻击方案,补救方法。 SaaS  

Converters

各种工具可以转换为OpenAPI标准。 适用于各种API格式。

Name Language v2 v3 GitHub
Apimatic Transformer - 转换来自RAML,API Blueprint,OAI v2 / v3,WSDL等的API描述。 SaaS  
API Flow - 从多种格式转换为多种格式。 链接到菲尔的叉子因为原件完全坏了 JavaScript ????
Google Gnostic - 将OpenAPI描述编译为等效的 Protocol Buffer 表示 Go
swagger2openapi - 将规格从OpenAPI v2.0升级到v3.0,捆绑到一个大型文件或尊重$ refs Node.js
OAS RAML Converter -在OAS和RAML API规范之间进行转换 Node.js
OData OpenAPI - OData 4.0 to OpenAPI 3.0.0 转换 XSLT
OpenAPI Filter -从OpenAPI定义中过滤内部组件 Node.js
OData.OpenAPI -将Edm(实体数据模型)转换为OpenApi 3.0 .NET
pyswagger - Python中的客户端和转换器,类型安全,动态,规范兼容。 Python ????
odata2openapi - OData 4.0 to OpenAPI 2 转换 Node.js
avantation - 从HAR生成OpenAPI 3.x规范。 TypeScript
OpenAPI Generator -模板驱动的引擎,通过解析OpenAPI定义(社区驱动的swagger-codegen分支)生成不同语言的文档,API客户端和服务器存根 Java
go-swagger -一切都在一个。 解析器,验证器,从代码生成规范,或从规范生成代码! Go ????

Documentation

生成器可帮助构建基于各种格式和标准的API文档。

Name Language v2 v3 GitHub
APIMatic Developer Experience Portal - Customizable developer portals packed with language specific documentation, client libraries, code samples, an API console and much more. SaaS  
Kong Enterprise Edition - Highly customizable developer portal with developer onboarding, integrated with the Kong API Gateway Lua  
LucyBot DocGen - Generate a customizable website, with API documentation, console, and interactive workflows, from an OpenAPI spec JavaScript
openapi-viewer - Browse and test a REST API described with the OpenAPI 3.0 Specification Vue.js
openapi-ui - React based OpenAPI 3.0+ documentation generator React.js
ReDoc - OpenAPI/Swagger-generated API Reference Documentation React.js
widdershins - Generate Slate/Shins markdown from OpenAPI 2.0/3.0.x Node.js
openapi3-generator - Use your API OpenAPI 3 definition to generate code, documentation, and literally anything you need. Node.js
MrinDoc - Open API spec viewer. Vue.JS
RapiDoc - Custom Element to view OpenAPI spec. Custom Element
RapiPdf - Custom Element to generate PDF from OpenAPI spec. Custom Element
Stoplight - Create beautiful, customizable, interactive API documentation generated from your OpenAPI Specification, integrated with the Stoplight platform SaaS  
Bump - Bump generates elegant documentations and changelogs from your OpenAPI specifications. Git diff, for your API. SaaS  

Text Editors

文本编辑器,以帮助构建API文档。

Name Language v2 v3 GitHub
VSCode/OpenAPI (Swagger) editor - OpenAPI (Swagger) 2.0/3.0.x plugin for Visual Studio Code - new file templates, navigation, intellisense, code snippets Any
KaiZen-OpenAPI-Editor - Full-featured Eclipse editor for OpenAPI 2.0 and 3.0, also available on Eclipse Marketplace. Java
Atom/linter-swagger - This plugin for Atom Linter will lint Swagger 2.0 specifications or OpenAPI 3.0, both JSON and YAML using swagger-parser node package. JavaScript
Swagger Editor - Design, describe, and document your API on the first open source editor fully dedicated to OpenAPI-based APIs. Node.js
SwaggerHub - API design and documentation platform to improve collaboration, standardize development workflow and centralize their API discovery and consumption. SaaS/On-Premise NodeJS  
Senya Editor - Design API specifications fast and effectively​ in your favorite JetBrains IDE. Java  
VSCode/openapi-lint - OpenAPI (Swagger) 2.0/3.0.x intellisense, validator and linter for Visual Studio Code Node.js

GUI Editors

Visual editors to help build API docs.

Name Language v2 v3 GitHub
RepreZen API Studio - RepreZen API Studio is an integrated workbench that brings API-first design into focus for your whole team, harmonizes your API designs, and generates APIs that click into client apps. Java  
Apicurio Studio - A standalone API design studio that can be used to create new or edit existing API designs. TypeScript
Stoplight - Stoplight is the Complete OpenAPI Specification Toolkit that leverages your OpenAPI documents to drive the entire API development process SaaS ????  
OpenAPI-GUI - OpenAPI-GUI is a GUI for creating and editing OpenAPI version 3.0.x JSON/YAML definitions. JavaScript ????

Mock Servers

加速API测试和开发的服务和平台。

Name Language v2 v3 GitHub
Connexion - OpenAPI First framework for Python on top of Flask with automatic endpoint validation & OAuth2 support Python
Prism - Turn any OAI file into an API server with mocking, transformations, validations, and more. cli
Sandbox - SaaS, self-hosted, or CLI tool for turning OpenAPI (and other) definitions into a mock server, where you can modify behaviour, simulate downtime, and any other nonsnese you can think of thanks to a built-in code editor! SaaS / Java ????
Microcks - Mocking and testing platform for API and microservices. Turn your OAI contract examples into ready to use mocks. Use examples to test and validate implementations according schema elements. Self-hosted / SaaS
API Sprout - Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation cli / Docker
MockLab - SaaS platform to upload your spec to create a mock server SaaS
Fakeit - Create mock server from OpenAPI 3 specification with random response generation and request validation. cli / Docker

Server implementations

轻松创建和实现API的资源和路由。

Name Language v2 v3 GitHub
Vert.x Web Api Contract - Create API endpoints with Vert.x 3 and OpenAPI 3 with automatic requests validation Java, Kotlin, JavaScript, Groovy, Ruby, Ceylon & Scala
BaucisJS + baucis-openapi3 - Create REST resources with persistence on MongoDB and expose OpenAPI v.3 contracts JavaScript
BaucisJS + baucis-swagger2 - Create REST resources with persistence on MongoDB and expose OpenAPI v.2 contracts JavaScript
@smartrecruiters/openapi-first - Initializes your API express application with specification in OpenAPI Specification 3.0 format using provided middlewares (parsers, validators, controller, defaults setting) or custom ones Node.js
openapi-backend - Build, Validate, Route, and Mock using OpenAPI specification. Framework-agnostic Node.js
OpenAPI Enforcer Middleware - An express middleware that makes it easy to write web services that follow an Open API specification by leveraging the tools provided in the openapi-enforcer package. Node.js
MicroTS - Code generator - from OpenAPI specification generates TypeScript project with Docker. Node.js
API Platform - REST and GraphQL framework to build modern API-driven projects PHP
Mojolicious::Plugin::OpenApi - Mojolicious::Plugin::OpenAPI is a plugin for Mojolicious framework that add routes and input/output validation to your Mojolicious application based on a OpenAPI (Swagger) specification. Currently v2 is very well supported, while v3 should be considered EXPERIMENTAL. Perl
Fusio - Open source API management platform PHP

Miscellaneous

用于加载文档和解析引用的工具。

Name Language v2 v3 GitHub
OpenAPI Server Code Generator (oapi-codegen) - Generate a web service using the [Echo](https://github.com/labstack/echo) framework from an Open API v3 specification Go
Sway - A library that simplifies OpenAPI integrations/tooling. JavaScript ????
openapi-diff - Utility for comparing two OpenAPI specifications. Java
$ oas (CLI) - Generate OAS files from code comments and easily host them ($ npm install oas -g) JavaScript

Parsers

在验证规范和文档时,在版本之间序列化和迁移API文档。

Name Language v2 v3 GitHub
swagger-parser - OpenAPI Specification parser which is still using the name "Swagger' because they're stubborn. New versions are v3 only, older versions support v1.x/v2. Java
BigstickCarpet/swagger-parser - Swagger/OpenAPI 2.0 and 3.0 parser and validator. Can also bundle multiple files into one via `$ref`. Node.js
KaiZen OpenAPI Parser - High-performance Parser, Validator, and Java Object Model for OpenAPI 3.x Java
OpenAPI-TS - TS Model & utils for OpenAPI 3.0.x contracts TypeScript
kin-openapi - A Go library for handling OpenAPI 3.0 specifications Go
php-openapi - A PHP library for handling OpenAPI 3.0 specifications PHP
Object Oriented OpenAPI Specification - An object oriented approach to generating OpenAPI specs, implemented in PHP PHP
OpenAPI3-Rust - Rust serialization library for OpenAPI v3 Rust
psx-api - Parse and generate API specification formats PHP
Microsoft/OpenAPI.NET - C# based parser with definition validation and migration support from V2 .NET
oas_parser - A Ruby parser for Open API Spec 3.0+ definitions. Ruby
openapi3 - An OpenAPI 3 Specification client, and validator, covering both schema validation and limited data validation for Python 3. Python
Spot - A concise, developer-friendly way to describe your API contract. TypeScript

Schema Validators

使用这些工具快速轻松地验证API架构。

Name Language v2 v3 GitHub
Speccy - Lint to enforce quality rules on your OpenAPI specifications CLI
BigstickCarpet/swagger-cli - A handy cli tool for validating JSON or YAML files schema files that respects $ref Node.js / CLI
openapi-spec-validator - OpenAPI Spec validator Python
Sway - A library that simplifies OpenAPI integrations/tooling. JavaScript ????
oval - CLI for (O)penAPI Specification document (val)idation. JavaScript ????
Spectral - A flexible JSON object linter with out of the box support for OpenAPI Specification TypeScript/JavaScript
OpenAPI Enforcer - Tool to 1) Validate your OAS document, 2) serialize, deserialize, and validate incoming requests and outgoing responses, 3) simplify response building, and 4) producing mock data. Exensible via plugins. Node.js
php-openapi - A PHP library for handling OpenAPI 3.0 specifications PHP

Data Validators

帮助您验证API数据的工具。

Name Language v2 v3 GitHub
Sway - A library that simplifies OpenAPI integrations/tooling. JavaScript ????
Openapi validator - Library that checks response against Openapi schema, based on request path and method PHP
express-ajv-swagger-validation - Express middleware which validates request body, headers, path parameters and query parameters according to the OpenAPI Specification Node.js
committee - Validation middleware for Rack server. This gem validates request and response using OpenAPI Specification. And convert parameter string to specific Ruby object (e.g. convert datetime string to DateTime class). Ruby
OpenAPI Enforcer - Tool to 1) Validate your OAS document, 2) serialize, deserialize, and validate incoming requests and outgoing responses, 3) simplify response building, and 4) producing mock data. Exensible via plugins. Node.js
OpenAPI Validation Middleware - a PSR-7 and PSR-15 middleware to validate requests and responses against your OpenAPI spec PHP
kin-openapi - A Go library for handling OpenAPI 3.0 specifications Go
openapi-psr7-validator - It validates PSR-7 messages against OpenAPI specifications PHP

Testing

快速执行API请求并通过命令行或GUI界面动态验证响应。

Name Language v2 v3 GitHub
Dredd - Language-agnostic command-line tool for validating API description document against backend implementation of the API Javascript
Openapi validator - Library that checks response against Openapi schema, based on request path and method PHP
OpenAPI Enforcer - Tool to 1) Validate your OAS document, 2) serialize, deserialize, and validate incoming requests and outgoing responses, 3) simplify response building, and 4) producing mock data. Exensible via plugins. Node.js
Chai OpenAPI Response Validator - Simple Chai support for asserting that HTTP responses satisfy an OpenAPI spec. Node.js
hikaku - A library that tests if the implementation of a REST-API meets its specification. Kotlin
Swagger Inspector - Swagger Inspector is a free online tool to quickly execute any API request, validate its responses and generate a corresponding OpenAPI definition. Self-hosted/SaaS  
Assertible - Import an OpenAPI specification into Assertible to generate tests that validate JSONSchema responses and status codes on every endpoint. SaaS  

SDK Generators

通过创建SDK快速生成文档,描述和客户端。

Name Language v2 v3 GitHub
OpenAPI Generator - A template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI definition (community-driven fork of swagger-codegen) Java
APIMatic CodeGen - Bring in your API description (OAI v2/v3, RAML, API Blueprint, WSDL, etc.) to generate fully functional SDKs in over 10 languages. SaaS  
janephp/open-api - Generate a PHP Client API (PSR7 compatible) given a OpenAPI specification. PHP
go-swagger - Everything all in one. Parser, validator, generates spec from code, or code from spec! Go ????
guardrail - Principled code generation from OpenAPI Specifications Scala, Java, ...

 

原文:https://openapi.tools/

 

 

SEO Title
OpenAPI.Tools

【Go精选】精选的Go框架,库和软件的精选列表

Chinese, Simplified

A curated list of awesome Go frameworks, libraries and software https://awesome-go.com/

 

Contents

Audio and Music

Libraries for manipulating audio.

  • EasyMIDI - EasyMidi is a simple and reliable library for working with standard midi file (SMF).
  • flac - No-frills native Go FLAC decoder that decodes FLAC files into byte slices.
  • flac - Native Go FLAC encoder/decoder with support for FLAC streams.
  • gaad - Native Go AAC bitstream parser.
  • go-sox - libsox bindings for go.
  • go_mediainfo - libmediainfo bindings for go.
  • gosamplerate - libsamplerate bindings for go.
  • id3v2 - Fast and stable ID3 parsing and writing library for Go.
  • malgo - Mini audio library.
  • minimp3 - Lightweight MP3 decoder library.
  • mix - Sequence-based Go-native audio mixer for music apps.
  • mp3 - Native Go MP3 decoder.
  • music-theory - Music theory models in Go.
  • Oto - A low-level library to play sound on multiple platforms.
  • PortAudio - Go bindings for the PortAudio audio I/O library.
  • portmidi - Go bindings for PortMidi.
  • taglib - Go bindings for taglib.
  • vorbis - "Native" Go Vorbis decoder (uses CGO, but has no dependencies).
  • waveform - Go package capable of generating waveform images from audio streams.

Authentication and OAuth

Libraries for implementing authentications schemes.

  • authboss - Modular authentication system for the web. It tries to remove as much boilerplate and "hard things" as possible so that each time you start a new web project in Go, you can plug it in, configure, and start building your app without having to build an authentication system each time.
  • branca - Golang implementation of Branca Tokens.
  • casbin - Authorization library that supports access control models like ACL, RBAC, ABAC.
  • cookiestxt - provides parser of cookies.txt file format.
  • go-jose - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
  • go-oauth2-server - Standalone, specification-compliant, OAuth2 server written in Golang.
  • gologin - chainable handlers for login with OAuth1 and OAuth2 authentication providers.
  • gorbac - provides a lightweight role-based access control (RBAC) implementation in Golang.
  • goth - provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box.
  • httpauth - HTTP Authentication middleware.
  • jeff - Simple, flexible, secure and idiomatic web session management with pluggable backends.
  • jwt - Clean and easy to use implementation of JSON Web Tokens (JWT).
  • jwt - Lightweight JSON Web Token (JWT) library.
  • jwt-auth - JWT middleware for Golang http servers with many configuration options.
  • jwt-go - Golang implementation of JSON Web Tokens (JWT).
  • loginsrv - JWT login microservice with plugable backends such as OAuth2 (Github), htpasswd, osiam.
  • oauth2 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine and App Engine support.
  • osin - Golang OAuth2 server library.
  • paseto - Golang implementation of Platform-Agnostic Security Tokens (PASETO).
  • permissions2 - Library for keeping track of users, login states and permissions. Uses secure cookies and bcrypt.
  • rbac - Minimalistic RBAC package for Go applications.
  • scs - Session Manager for HTTP servers.
  • securecookie - Efficient secure cookie encoding/decoding.
  • session - Go session management for web servers (including support for Google App Engine - GAE).
  • sessiongate-go - Go session management using the SessionGate Redis module.
  • sessions - Dead simple, highly performant, highly customizable sessions service for go http servers.
  • signedvalue - Signed and timestamped strings compatible with Tornado's create_signed_valuedecode_signed_value, and therefore set_secure_cookie and get_secure_cookie.
  • sjwt - Simple jwt generator and parser.

Bot Building

Libraries for building and working with bots.

  • go-chat-bot - IRC, Slack & Telegram bot written in Go.
  • go-sarah - Framework to build bot for desired chat services including LINE, Slack, Gitter and more.
  • go-tgbot - Pure Golang Telegram Bot API wrapper, generated from swagger file, session-based router and middleware.
  • Golang CryptoTrading Bot - A golang implementation of a console-based trading bot for cryptocurrency exchanges.
  • govkbot - Simple Go VK bot library.
  • hanu - Framework for writing Slack bots.
  • Kelp - official trading and market-making bot for the Stellar DEX. Works out-of-the-box, written in Golang, compatible with centralized exchanges and custom trading strategies.
  • margelet - Framework for building Telegram bots.
  • micha - Go Library for Telegram bot api.
  • slacker - Easy to use framework to create Slack bots.
  • slackscot - Another framework for building Slack bots.
  • tbot - Telegram bot server with API similar to net/http.
  • telebot - Telegram bot framework written in Go.
  • telegram-bot-api - Simple and clean Telegram bot client.
  • Tenyks - Service oriented IRC bot using Redis and JSON for messaging.

Command Line

Standard CLI

Libraries for building standard or basic Command Line applications.

  • argparse - Command line argument parser inspired by Python's argparse module.
  • argv - Go library to split command line string as arguments array using the bash syntax.
  • cli - Feature-rich and easy to use command-line package based on golang struct tags.
  • cli - Simple and complete API for building command line interfaces in Go.
  • cli-init - The easy way to start building Golang command line applications.
  • climax - Alternative CLI with "human face", in spirit of Go command.
  • cmdr - A POSIX/GNU style, getopt-like command-line UI Go library.
  • cobra - Commander for modern Go CLI interactions.
  • commandeer - Dev-friendly CLI apps: sets up flags, defaults, and usage based on struct fields and tags.
  • complete - Write bash completions in Go + Go command bash completion.
  • docopt.go - Command-line arguments parser that will make you smile.
  • env - Tag-based environment configuration for structs.
  • flag - Simple but powerful command line option parsing library for Go supporting subcommand.
  • flaggy - A robust and idiomatic flags package with excellent subcommand support.
  • flagvar - A collection of flag argument types for Go's standard flag package.
  • go-arg - Struct-based argument parsing in Go.
  • go-commander - Go library to simplify CLI workflow.
  • go-flags - go command line option parser.
  • go-getoptions - Go option parser inspired on the flexibility of Perl’s GetOpt::Long.
  • gocmd - Go library for building command line applications.
  • hiboot cli - cli application framework with auto configuration and dependency injection.
  • job - JOB, make your short-term command as a long-term job.
  • kingpin - Command line and flag parser supporting sub commands.
  • liner - Go readline-like library for command-line interfaces.
  • mitchellh/cli - Go library for implementing command-line interfaces.
  • mow.cli - Go library for building CLI applications with sophisticated flag and argument parsing and validation.
  • ops - Unikernel Builder/Orchestrator.
  • pflag - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
  • readline - Pure golang implementation that provides most features in GNU-Readline under MIT license.
  • sand - Simple API for creating interpreters and so much more.
  • sflags - Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin and other libraries.
  • strumt - Library to create prompt chain.
  • ts - Timestamp convert & compare tool.
  • ukautz/clif - Small command line interface framework.
  • urfave/cli - Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli).
  • wlog - Simple logging interface that supports cross-platform color and concurrency.
  • wmenu - Easy to use menu structure for cli applications that prompts users to make choices.

Advanced Console UIs

Libraries for building Console Applications and Console User Interfaces.

  • asciigraph - Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.
  • aurora - ANSI terminal colors that supports fmt.Printf/Sprintf.
  • cfmt - Contextual fmt inspired by bootstrap color classes.
  • chalk - Intuitive package for prettifying terminal/console output.
  • color - Versatile package for colored terminal output.
  • colourize - Go library for ANSI colour text in terminals.
  • ctc - The non-invasive cross-platform terminal color library does not need to modify the Print method.
  • go-ataman - Go library for rendering ANSI colored text templates in terminals.
  • go-colorable - Colorable writer for windows.
  • go-colortext - Go library for color output in terminals.
  • go-isatty - isatty for golang.
  • go-prompt - Library for building a powerful interactive prompt, inspired by python-prompt-toolkit.
  • gocui - Minimalist Go library aimed at creating Console User Interfaces.
  • gommon/color - Style terminal text.
  • gookit/color - Terminal color rendering tool library, support 16 colors, 256 colors, RGB color rendering output, compatible with Windows.
  • mpb - Multi progress bar for terminal applications.
  • progressbar - Basic thread-safe progress bar that works in every OS.
  • simpletable - Simple tables in terminal with Go.
  • tabby - A tiny library for super simple Golang tables.
  • tabular - Print ASCII tables from command line utilities without the need to pass large sets of data to the API.
  • termbox-go - Termbox is a library for creating cross-platform text-based interfaces.
  • termdash - Go terminal dashboard based on termbox-go and inspired by termui.
  • termtables - Go port of the Ruby library terminal-tables for simple ASCII table generation as well as providing markdown and HTML output.
  • termui - Go terminal dashboard based on termbox-go and inspired by blessed-contrib.
  • uilive - Library for updating terminal output in realtime.
  • uiprogress - Flexible library to render progress bars in terminal applications.
  • uitable - Library to improve readability in terminal apps using tabular data.

Configuration

Libraries for configuration parsing.

  • config - Cloud native application configuration. Bind ENV to structs in only two lines.
  • config - JSON or YAML configuration wrapper with environment variables and flags parsing.
  • configure - Provides configuration through multiple sources, including JSON, flags and environment variables.
  • confita - Load configuration in cascade from multiple backends into a struct.
  • conflate - Library/tool to merge multiple JSON/YAML/TOML files from arbitrary URLs, validation against a JSON schema, and application of default values defined in the schema.
  • env - Parse environment variables to Go structs (with defaults).
  • envcfg - Un-marshaling environment variables to Go structs.
  • envconf - Configuration from environment.
  • envconfig - Read your configuration from environment variables.
  • envh - Helpers to manage environment variables.
  • gcfg - read INI-style configuration files into Go structs; supports user-defined types and subsections.
  • go-up - A simple configuration library with recursive placeholders resolution and no magic.
  • goConfig - Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
  • godotenv - Go port of Ruby's dotenv library (Loads environment variables from .env).
  • gofigure - Go application configuration made easy.
  • gone/jconf - Modular JSON configuration. Keep you config structs along with the code they configure and delegate parsing to submodules without sacrificing full config serialization.
  • gookit/config - application config manage(load,get,set). support JSON, YAML, TOML, INI, HCL. multi file load, data override merge.
  • harvester - Harvester, a easy to use static and dynamic configuration package supportig seeding, env vars and Consul integration.
  • hjson - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments.
  • ingo - Flags persisted in an ini-like config file.
  • ini - Go package to read and write INI files.
  • joshbetz/config - Small configuration library for Go that parses environment variables, JSON files, and reloads automatically on SIGHUP.
  • kelseyhightower/envconfig - Go library for managing configuration data from environment variables.
  • koanf - Light weight, extensible library for reading config in Go applications. Built in support for JSON, TOML, YAML, env, command line.
  • konfig - Composable, observable and performant config handling for Go for the distributed processing era.
  • mini - Golang package for parsing ini-style configuration files.
  • sprbox - Build-environment aware toolbox factory and agnostic config parser (YAML, TOML, JSON and Environment vars).
  • store - Lightweight configuration manager for Go.
  • viper - Go configuration with fangs.
  • xdg - Cross platform package that follows the XDG Standard.

Continuous Integration

Tools for help with continuous integration.

  • drone - Drone is a Continuous Integration platform built on Docker, written in Go.
  • duci - A simple ci server no needs domain specific languages.
  • gomason - Test, Build, Sign, and Publish your go binaries from a clean workspace.
  • goveralls - Go integration for Coveralls.io continuous code coverage tracking system.
  • overalls - Multi-Package go project coverprofile for tools like goveralls.
  • roveralls - Recursive coverage testing tool.

CSS Preprocessors

Libraries for preprocessing CSS files.

  • gcss - Pure Go CSS Preprocessor.
  • go-libsass - Go wrapper to the 100% Sass compatible libsass project.

Data Structures

Generic datastructures and algorithms in Go.

  • algorithms - Algorithms and data structures.CLRS study.
  • binpacker - Binary packer and unpacker helps user build custom binary stream.
  • bit - Golang set data structure with bonus bit-twiddling functions.
  • bitset - Go package implementing bitsets.
  • bloom - Bloom filters implemented in Go.
  • bloom - Golang Bloom filter implementation.
  • boomfilters - Probabilistic data structures for processing continuous, unbounded streams.
  • concurrent-writer - Highly concurrent drop-in replacement for bufio.Writer.
  • conjungo - A small, powerful and flexible merge library.
  • count-min-log - Go implementation Count-Min-Log sketch: Approximately counting with approximate counters (Like Count-Min sketch but using less memory).
  • crunch - Go package implementing buffers for handling various datatypes easily.
  • cuckoofilter - Cuckoo filter: a good alternative to a counting bloom filter implemented in Go.
  • deque - A highly optimized double-ended queue.
  • deque - Fast ring-buffer deque (double-ended queue).
  • dict - Python-like dictionaries (dict) for Go.
  • encoding - Integer Compression Libraries for Go.
  • go-adaptive-radix-tree - Go implementation of Adaptive Radix Tree.
  • go-datastructures - Collection of useful, performant, and thread-safe data structures.
  • go-ef - A Go implementation of the Elias-Fano encoding.
  • go-geoindex - In-memory geo index.
  • go-mcache - Fast in-memory key:value store/cache library. Pointer caches.
  • go-rquad - Region quadtrees with efficient point location and neighbour finding.
  • goconcurrentqueue - Concurrent FIFO queue.
  • gods - Go Data Structures. Containers, Sets, Lists, Stacks, Maps, BidiMaps, Trees, HashSet etc.
  • golang-set - Thread-Safe and Non-Thread-Safe high-performance sets for Go.
  • goset - A useful Set collection implementation for Go.
  • goskiplist - Skip list implementation in Go.
  • gota - Implementation of dataframes, series, and data wrangling methods for Go.
  • hide - ID type with marshalling to/from hash to prevent sending IDs to clients.
  • hilbert - Go package for mapping values to and from space-filling curves, such as Hilbert and Peano curves.
  • hyperloglog - HyperLogLog implementation with Sparse, LogLog-Beta bias correction and TailCut space reduction.
  • levenshtein - Levenshtein distance and similarity metrics with customizable edit costs and Winkler-like bonus for common prefix.
  • levenshtein - Implementation to calculate levenshtein distance in Go.
  • mafsa - MA-FSA implementation with Minimal Perfect Hashing.
  • merkletree - Implementation of a merkle tree providing an efficient and secure verification of the contents of data structures.
  • mspm - Multi-String Pattern Matching Algorithm for information retrieval.
  • null - Nullable Go types that can be marshalled/unmarshalled to/from JSON.
  • parsefields - Tools for parse JSON-like logs for collecting unique fields and events.
  • pipeline - An implementation of pipelines with fan-in and fan-out.
  • ptrie - An implementation of prefix tree.
  • ring - Go implementation of a high performance, thread safe bloom filter.
  • roaring - Go package implementing compressed bitsets.
  • set - Simple set data structure implementation in Go using LinkedHashMap.
  • skiplist - Very fast Go Skiplist implementation.
  • skiplist - Skiplist implementation in Go.
  • timedmap - Map with expiring key-value pairs.
  • treap - Persistent, fast ordered map using tree heaps.
  • trie - Trie implementation in Go.
  • ttlcache - In-memory LRU string-interface{} map with expiration for golang.
  • typ - Null Types, Safe primitive type conversion and fetching value from complex structures.
  • willf/bloom - Go package implementing Bloom filters.

Database

Databases implemented in Go.

  • badger - Fast key-value store in Go.
  • bcache - Eventually consistent distributed in-memory cache Go library.
  • BigCache - Efficient key/value cache for gigabytes of data.
  • bolt - Low-level key/value database for Go.
  • buntdb - Fast, embeddable, in-memory key/value database for Go with custom indexing and spatial support.
  • cache - In-memory key:value store with expiration time, 0 dependencies, <100 LoC, 100% coverage.
  • cache2go - In-memory key:value cache which supports automatic invalidation based on timeouts.
  • clusteredBigCache - BigCache with clustering support and individual item expiration.
  • cockroach - Scalable, Geo-Replicated, Transactional Datastore.
  • couchcache - RESTful caching micro-service backed by Couchbase server.
  • CovenantSQL - CovenantSQL is a SQL database on blockchain.
  • dgraph - Scalable, Distributed, Low Latency, High Throughput Graph Database.
  • diskv - Home-grown disk-backed key-value store.
  • eliasdb - Dependency-free, transactional graph database with REST API, phrase search and SQL-like query language.
  • fastcache - fast thread-safe inmemory cache for big number of entries. Minimizes GC overhead.
  • GCache - Cache library with support for expirable Cache, LFU, LRU and ARC.
  • go-cache - In-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.
  • goleveldb - Implementation of the LevelDB key/value database in Go.
  • gorocksdb - Gorocksdb is a wrapper for RocksDB written in Go.
  • groupcache - Groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
  • influxdb - Scalable datastore for metrics, events, and real-time analytics.
  • ledisdb - Ledisdb is a high performance NoSQL like Redis based on LevelDB.
  • levigo - Levigo is a Go wrapper for LevelDB.
  • moss - Moss is a simple LSM key-value storage engine written in 100% Go.
  • nutsdb - Nutsdb is a simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set.
  • piladb - Lightweight RESTful database engine based on stack data structures.
  • prometheus - Monitoring system and time series database.
  • pudge - Fast and simple key/value store written using Go's standard library.
  • rqlite - The lightweight, distributed, relational database built on SQLite.
  • Scribble - Tiny flat file JSON store.
  • slowpoke - Key-value store with persistence.
  • tempdb - Key-value store for temporary items.
  • tidb - TiDB is a distributed SQL database. Inspired by the design of Google F1.
  • tiedot - Your NoSQL database powered by Golang.
  • Vasto - A distributed high-performance key-value store. On Disk. Eventual consistent. HA. Able to grow or shrink without service interruption.
  • VictoriaMetrics - fast, resource-effective and scalable open source time series database. May be used as long-term remote storage for Prometheus. Supports PromQL.

Database schema migration.

  • avro - Discover SQL schemas and convert them to AVRO schemas. Query SQL records into AVRO bytes.
  • darwin - Database schema evolution library for Go.
  • go-fixtures - Django style fixtures for Golang's excellent built-in database/sql library.
  • go-pg-migrations - A Go package to help write migrations with go-pg/pg.
  • gondolier - Database migration library using struct decorators.
  • goose - Database migration tool. You can manage your database's evolution by creating incremental SQL or Go scripts.
  • gormigrate - Database schema migration helper for Gorm ORM.
  • migrate - Database migrations. CLI and Golang library.
  • migrator - Dead simple Go database migration library.
  • pravasan - Simple Migration tool - currently for MySQL but planning to soon support Postgres, SQLite, MongoDB, etc.
  • soda - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
  • sql-migrate - Database migration tool. Allows embedding migrations into the application using go-bindata.

Database tools.

  • chproxy - HTTP proxy for ClickHouse database.
  • clickhouse-bulk - Collects small insterts and sends big requests to ClickHouse servers.
  • datagen - A fast data generator that's multi-table aware and supports multi-row DML.
  • dbbench - Database benchmarking tool with support for several databases and scripts.
  • go-mysql - Go toolset to handle MySQL protocol and replication.
  • go-mysql-elasticsearch - Sync your MySQL data into Elasticsearch automatically.
  • kingshard - kingshard is a high performance proxy for MySQL powered by Golang.
  • myreplication - MySql binary log replication listener. Supports statement and row based replication.
  • octillery - Go package for sharding databases ( Supports every ORM or raw SQL ).
  • orchestrator - MySQL replication topology manager & visualizer.
  • pgweb - Web-based PostgreSQL database browser.
  • prep - Use prepared SQL statements without changing your code.
  • pREST - Serve a RESTful API from any PostgreSQL database.
  • rwdb - rwdb provides read replica capability for multiple database servers setup.
  • vitess - vitess provides servers and tools which facilitate scaling of MySQL databases for large scale web services.

SQL query builder, libraries for building and using SQL.

  • dbq - Zero boilerplate database operations for Go.
  • Dotsql - Go library that helps you keep sql files in one place and use them with ease.
  • gendry - Non-invasive SQL builder and powerful data binder.
  • godbal - Database Abstraction Layer (dbal) for go. Support SQL builder and get result easily.
  • goqu - Idiomatic SQL builder and query library.
  • igor - Abstraction layer for PostgreSQL that supports advanced functionality and uses gorm-like syntax.
  • ormlite - Lightweight package containing some ORM-like features and helpers for sqlite databases.
  • ozzo-dbx - Powerful data retrieval methods as well as DB-agnostic query building capabilities.
  • scaneo - Generate Go code to convert database rows into arbitrary structs.
  • sqrl - SQL query builder, fork of Squirrel with improved performance.
  • Squalus - Thin layer over the Go SQL package that makes it easier to perform queries.
  • Squirrel - Go library that helps you build SQL queries.
  • xo - Generate idiomatic Go code for databases based on existing schema definitions or custom queries supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server.

Database Drivers

Libraries for connecting and operating databases.

  • Relational Databases

    • avatica - Apache Avatica/Phoenix SQL driver for database/sql.
    • bgc - Datastore Connectivity for BigQuery for go.
    • firebirdsql - Firebird RDBMS SQL driver for Go.
    • go-adodb - Microsoft ActiveX Object DataBase driver for go that uses database/sql.
    • go-mssqldb - Microsoft MSSQL driver for Go.
    • go-oci8 - Oracle driver for go that uses database/sql.
    • go-sql-driver/mysql - MySQL driver for Go.
    • go-sqlite3 - SQLite3 driver for go that uses database/sql.
    • gofreetds - Microsoft MSSQL driver. Go wrapper over FreeTDS.
    • goracle - Oracle driver for Go, using the ODPI-C driver.
    • pgx - PostgreSQL driver supporting features beyond those exposed by database/sql.
    • pq - Pure Go Postgres driver for database/sql.
  • NoSQL Databases

    • aerospike-client-go - Aerospike client in Go language.
    • arangolite - Lightweight golang driver for ArangoDB.
    • asc - Datastore Connectivity for Aerospike for go.
    • dynago - Dynago is a principle of least surprise client for DynamoDB.
    • forestdb - Go bindings for ForestDB.
    • go-couchbase - Couchbase client in Go.
    • go-couchdb - Yet another CouchDB HTTP API wrapper for Go.
    • go-pilosa - Go client library for Pilosa.
    • go-rejson - Golang client for redislabs' ReJSON module using Redigo golang client. Store and manipulate structs as JSON objects in redis with ease.
    • gocb - Official Couchbase Go SDK.
    • gocql - Go language driver for Apache Cassandra.
    • godis - redis client implement by golang, inspired by jedis.
    • godscache - A wrapper for the Google Cloud Platform Go Datastore package that adds caching using memcached.
    • gomemcache - memcache client library for the Go programming language.
    • gorethink - Go language driver for RethinkDB.
    • goriak - Go language driver for Riak KV.
    • mgo - (unmaintained) MongoDB driver for the Go language that implements a rich and well tested selection of features under a very simple API following standard Go idioms.
    • mongo-go-driver - Official MongoDB driver for the Go language.
    • neo4j - Neo4j Rest API Bindings for Golang.
    • Neo4j-GO - Neo4j REST Client in golang.
    • neoism - Neo4j client for Golang.
    • redeo - Redis-protocol compatible TCP servers/services.
    • redigo - Redigo is a Go client for the Redis database.
    • redis - Redis client for Golang.
    • xredis - Typesafe, customizable, clean & easy to use Redis client.
  • Search and Analytic Databases.

    • bleve - Modern text indexing library for go.
    • elastic - Elasticsearch client for Go.
    • elasticsql - Convert sql to elasticsearch dsl in Go.
    • elastigo - Elasticsearch client library.
    • go-elasticsearch - Official Elasticsearch client for Go.
    • goes - Library to interact with Elasticsearch.
    • riot - Go Open Source, Distributed, Simple and efficient Search Engine.
    • skizze - probabilistic data-structures service and storage.
  • Multiple Backends.

    • cachego - Golang Cache component for multiple drivers.
    • cayley - Graph database with support for multiple backends.
    • dsc - Datastore connectivity for SQL, NoSQL, structured files.
    • gokv - Simple key-value store abstraction and implementations for Go (Redis, Consul, etcd, bbolt, BadgerDB, LevelDB, Memcached, DynamoDB, S3, PostgreSQL, MongoDB, CockroachDB and many more).

Date and Time

Libraries for working with dates and times.

  • carbon - Simple Time extension with a lot of util methods, ported from PHP Carbon library.
  • date - Augments Time for working with dates, date ranges, time spans, periods, and time-of-day.
  • dateparse - Parse date's without knowing format in advance.
  • durafmt - Time duration formatting library for Go.
  • feiertage - Set of functions to calculate public holidays in Germany, incl. specialization on the states of Germany (Bundesländer). Things like Easter, Pentecost, Thanksgiving...
  • go-persian-calendar - The implementation of the Persian (Solar Hijri) Calendar in Go (golang).
  • go-sunrise - Calculate the sunrise and sunset times for a given location.
  • goweek - Library for working with week entity in golang.
  • iso8601 - Efficiently parse ISO8601 date-times without regex.
  • kair - Date and Time - Golang Formatting Library.
  • now - Now is a time toolkit for golang.
  • NullTime - Nullable time.Time.
  • strftime - C99-compatible strftime formatter.
  • timespan - For interacting with intervals of time, defined as a start time and a duration.
  • timeutil - Useful extensions (Timedelta, Strftime, ...) to the golang's time package.
  • tuesday - Ruby-compatible Strftime function.

Distributed Systems

Packages that help with building Distributed Systems.

  • celeriac - Library for adding support for interacting and monitoring Celery workers, tasks and events in Go.
  • consistent - Consistent hashing with bounded loads.
  • dht - BitTorrent Kademlia DHT implementation.
  • digota - grpc ecommerce microservice.
  • dot - distributed sync using operational transformation/OT.
  • doublejump - A revamped Google's jump consistent hash.
  • dragonboat - A feature complete and high performance multi-group Raft library in Go.
  • drmaa - Job submission library for cluster schedulers based on the DRMAA standard.
  • dynamolock - DynamoDB-backed distributed locking implementation.
  • dynatomic - A library for using DynamoDB as an atomic counter.
  • emitter-io - High performance, distributed, secure and low latency publish-subscribe platform built with MQTT, Websockets and love.
  • flowgraph - flow-based programming package.
  • gleam - Fast and scalable distributed map/reduce system written in pure Go and Luajit, combining Go's high concurrency with Luajit's high performance, runs standalone or distributed.
  • glow - Easy-to-Use scalable distributed big data processing, Map-Reduce, DAG execution, all in pure Go.
  • go-health - Library for enabling asynchronous dependency health checks in your service.
  • go-jump - Port of Google's "Jump" Consistent Hash function.
  • go-kit - Microservice toolkit with support for service discovery, load balancing, pluggable transports, request tracking, etc.
  • gorpc - Simple, fast and scalable RPC library for high load.
  • grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC.
  • hprose - Very newbility RPC Library, support 25+ languages now.
  • jsonrpc - The jsonrpc package helps implement of JSON-RPC 2.0.
  • jsonrpc - JSON-RPC 2.0 HTTP client implementation.
  • KrakenD - Ultra performant API Gateway framework with middlewares.
  • micro - Pluggable microservice toolkit and distributed systems platform.
  • NATS - Lightweight, high performance messaging system for microservices, IoT, and cloud native systems.
  • outboxer - Outboxer is a go library that implements the outbox pattern.
  • pglock - PostgreSQL-backed distributed locking implementation.
  • raft - Golang implementation of the Raft consensus protocol, by HashiCorp.
  • raft - Go implementation of the Raft consensus protocol, by CoreOS.
  • redis-lock - Simplified distributed locking implementation using Redis.
  • resgate - Realtime API Gateway for building REST, real time, and RPC APIs, where all clients are synchronized seamlessly.
  • ringpop-go - Scalable, fault-tolerant application-layer sharding for Go applications.
  • rpcx - Distributed pluggable RPC service framework like alibaba Dubbo.
  • sleuth - Library for master-less p2p auto-discovery and RPC between HTTP services (using ZeroMQ).
  • tendermint - High-performance middleware for transforming a state machine written in any programming language into a Byzantine Fault Tolerant replicated state machine using the Tendermint consensus and blockchain protocols.
  • torrent - BitTorrent client package.

Email

Libraries and tools that implement email creation and sending.

  • chasquid - SMTP server written in Go.
  • douceur - CSS inliner for your HTML emails.
  • email - A robust and flexible email library for Go.
  • go-dkim - DKIM library, to sign & verify email.
  • go-imap - IMAP library for clients and servers.
  • go-message - Streaming library for the Internet Message Format and mail messages.
  • go-premailer - Inline styling for HTML mail in Go.
  • Gomail - Gomail is a very simple and powerful package to send emails.
  • Hectane - Lightweight SMTP client providing an HTTP API.
  • hermes - Golang package that generates clean, responsive HTML e-mails.
  • MailHog - Email and SMTP testing with web and API interface.
  • SendGrid - SendGrid's Go library for sending email.
  • smtp - SMTP server protocol state machine.

Embeddable Scripting Languages

Embedding other languages inside your go code.

  • agora - Dynamically typed, embeddable programming language in Go.
  • anko - Scriptable interpreter written in Go.
  • binder - Go to Lua binding library, based on gopher-lua.
  • expr - an engine that can evaluate expressions.
  • gentee - Embeddable scripting programming language.
  • gisp - Simple LISP in Go.
  • go-duktape - Duktape JavaScript engine bindings for Go.
  • go-lua - Port of the Lua 5.2 VM to pure Go.
  • go-php - PHP bindings for Go.
  • go-python - naive go bindings to the CPython C-API.
  • golua - Go bindings for Lua C API.
  • gopher-lua - Lua 5.1 VM and compiler written in Go.
  • gval - A highly customizable expression language written in Go.
  • ngaro - Embeddable Ngaro VM implementation enabling scripting in Retro.
  • otto - JavaScript interpreter written in Go.
  • purl - Perl 5.18.2 embedded in Go.
  • tengo - Bytecode compiled script language for Go.

Error Handling

Libraries for handling errors.

  • errlog - Hackable package that determines responsible source code for an error (and some other fast-debugging features). Pluggable to any logger in-place.
  • errors - Package that provides simple error handling primitives.
  • errorx - A feature rich error package with stack traces, composition of errors and more.
  • go-multierror - Go (golang) package for representing a list of errors as a single error.
  • tracerr - Golang errors with stack trace and source fragments.
  • werr - Error Wrapper creates an wrapper for the error type in Go which captures the File, Line and Stack of where it was called.

Files

Libraries for handling files and file systems.

  • afero - FileSystem Abstraction System for Go.
  • checksum - Compute message digest, like MD5 and SHA256, for large files.
  • flop - File operations library which aims to mirror feature parity with GNU cp.
  • go-csv-tag - Load csv file using tag.
  • go-decent-copy - Copy files for humans.
  • go-exiftool - Go bindings for ExifTool, the well-known library used to extract as much metadata as possible (EXIF, IPTC, ...) from files (pictures, PDF, office, ...).
  • go-gtfs - Load gtfs files in go.
  • notify - File system event notification library with simple API, similar to os/signal.
  • opc - Load Open Packaging Conventions (OPC) files for Go.
  • pdfcpu - PDF processor.
  • skywalker - Package to allow one to concurrently go through a filesystem with ease.
  • stl - Modules to read and write STL (stereolithography) files. Concurrent algorithm for reading.
  • tarfs - Implementation of the FileSystem interface for tar files.
  • vfs - A pluggable, extensible, and opinionated set of filesystem functionality for Go across a number of filesystem types such as os, S3, and GCS.

Financial

Packages for accounting and finance.

  • accounting - money and currency formatting for golang.
  • currency - High performant & accurate currency computation package.
  • decimal - Arbitrary-precision fixed-point decimal numbers.
  • go-finance - Comprehensive financial markets data in Go.
  • go-finance - Library of financial functions for time value of money (annuities), cash flow, interest rate conversions, bonds and depreciation calculations.
  • go-money - Implementation of Fowler's Money pattern.
  • ofxgo - Query OFX servers and/or parse the responses (with example command-line client).
  • orderbook - Matching Engine for Limit Order Book in Golang.
  • techan - Technical analysis library with advanced market analysis and trading strategies.
  • transaction - Embedded transactional database of accounts, running in multithreaded mode.
  • vat - VAT number validation & EU VAT rates.

Forms

Libraries for working with forms.

  • bind - Bind form data to any Go values.
  • binding - Binds form and JSON data from net/http Request to struct.
  • conform - Keeps user input in check. Trims, sanitizes & scrubs data based on struct tags.
  • form - Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
  • formam - decode form's values into a struct.
  • forms - Framework-agnostic library for parsing and validating form/JSON data which supports multipart forms and files.
  • gorilla/csrf - CSRF protection for Go web applications & services.
  • nosurf - CSRF protection middleware for Go.

Functional

Packages to support functional programming in Go.

  • fpGo - Monad, Functional Programming features for Golang.
  • fuego - Functional Experiment in Go.
  • go-underscore - Useful collection of helpfully functional Go collection utilities.

Game Development

Awesome game development libraries.

  • Azul3D - 3D game engine written in Go.
  • Ebiten - dead simple 2D game library in Go.
  • engo - Engo is an open-source 2D game engine written in Go. It follows the Entity-Component-System paradigm.
  • g3n - Go 3D Game Engine.
  • GarageEngine - 2d game engine written in Go working on OpenGL.
  • glop - Glop (Game Library Of Power) is a fairly simple cross-platform game library.
  • go-astar - Go implementation of the A* path finding algorithm.
  • go-collada - Go package for working with the Collada file format.
  • go-sdl2 - Go bindings for the Simple DirectMedia Layer.
  • go3d - Performance oriented 2D/3D math package for Go.
  • gonet - Game server skeleton implemented with golang.
  • goworld - Scalable game server engine, featuring space-entity framework and hot-swapping.
  • Leaf - Lightweight game server framework.
  • nano - Lightweight, facility, high performance golang based game server framework.
  • Oak - Pure Go game engine.
  • Pitaya - Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.
  • Pixel - Hand-crafted 2D game library in Go.
  • raylib-go - Go bindings for raylib, a simple and easy-to-use library to learn videogames programming.
  • termloop - Terminal-based game engine for Go, built on top of Termbox.

Generation and Generics

Tools to enhance the language with features like generics via code generation.

  • efaceconv - Code generation tool for high performance conversion from interface{} to immutable type without allocations.
  • gen - Code generation tool for ‘generics’-like functionality.
  • generis - Code generation tool providing generics, free-form macros, conditional compilation and HTML templating.
  • go-enum - Code generation for enums from code comments.
  • go-linq - .NET LINQ-like query methods for Go.
  • goderive - Derives functions from input types.
  • gotype - Golang source code parsing, usage like reflect package.
  • GoWrap - Generate decorators for Go interfaces using simple templates.
  • interfaces - Command line tool for generating interface definitions.
  • jennifer - Generate arbitrary Go code without templates.
  • pkgreflect - Go preprocessor for package scoped reflection.

Geographic

Geographic tools and servers

  • geocache - In-memory cache that is suitable for geolocation based applications.
  • geoserver - geoserver Is a Go Package For Manipulating a GeoServer Instance via the GeoServer REST API.
  • gismanager - Publish Your GIS Data(Vector Data) to PostGIS and Geoserver.
  • osm - Library for reading, writing and working with OpenStreetMap data and APIs.
  • pbf - OpenStreetMap PBF golang encoder/decoder.
  • S2 geometry - S2 geometry library in Go.
  • Tile38 - Geolocation DB with spatial index and realtime geofencing.

Go Compilers

Tools for compiling Go to other languages.

  • c4go - Transpile C code to Go code.
  • f4go - Transpile FORTRAN 77 code to Go code.
  • gopherjs - Compiler from Go to JavaScript.
  • llgo - LLVM-based compiler for Go.
  • tardisgo - Golang to Haxe to CPP/CSharp/Java/JavaScript transpiler.

Goroutines

Tools for managing and working with Goroutines.

  • ants - A high-performance goroutine pool for golang.
  • artifex - Simple in-memory job queue for Golang using worker-based dispatching.
  • async - A safe way to execute functions asynchronously, recovering them in case of panic.
  • breaker - Flexible mechanism to make execution flow interruptible.
  • cyclicbarrier - CyclicBarrier for golang.
  • go-floc - Orchestrate goroutines with ease.
  • go-flow - Control goroutines execution order.
  • go-tools/multithreading - Manage a pool of goroutines using this lightweight library with a simple API.
  • go-trylock - TryLock support on read-write lock for Golang.
  • gollback - asynchronous simple function utilities, for managing execution of closures and callbacks.
  • GoSlaves - Simple and Asynchronous Goroutine pool library.
  • goworker - goworker is a Go-based background worker.
  • gpool - manages a resizeable pool of context-aware goroutines to bound concurrency.
  • grpool - Lightweight Goroutine pool.
  • Hunch - Hunch provides functions like: AllFirstRetryWaterfall etc., that makes asynchronous flow control more intuitive.
  • oversight - Oversight is a complete implementation of the Erlang supervision trees.
  • parallel-fn - Run functions in parallel.
  • pool - Limited consumer goroutine or unlimited goroutine pool for easier goroutine handling and cancellation.
  • queue - Gives you a sync.WaitGroup like queue group accessibility. Helps you to throttle and limit goroutines, wait for the end of the all goroutines and much more.
  • routine - go routine control with context, support: Main, Go, Pool and some useful Executors.
  • semaphore - Semaphore pattern implementation with timeout of lock/unlock operations based on channel and context.
  • semaphore - Fast resizable semaphore implementation based on CAS (faster than channel-based semaphore implementations).
  • stl - Software transactional locks based on Software Transactional Memory (STM) concurrency control mechanism.
  • threadpool - Golang threadpool implementation.
  • tunny - Goroutine pool for golang.
  • worker-pool - goworker is a Go simple async worker pool.
  • workerpool - Goroutine pool that limits the concurrency of task execution, not the number of tasks queued.

GUI

Libraries for building GUI Applications.

Toolkits

  • app - Package to create apps with GO, HTML and CSS. Supports: MacOS, Windows in progress.
  • fyne - Cross platform native GUIs designed for Go, rendered using EFL. Supports: Linux, macOS, Windows.
  • go-astilectron - Build cross platform GUI apps with GO and HTML/JS/CSS (powered by Electron).
  • go-gtk - Go bindings for GTK.
  • go-sciter - Go bindings for Sciter: the Embeddable HTML/CSS/script engine for modern desktop UI development. Cross platform.
  • gotk3 - Go bindings for GTK3.
  • gowd - Rapid and simple desktop UI development with GO, HTML, CSS and NW.js. Cross platform.
  • qt - Qt binding for Go (support for Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi).
  • ui - Platform-native GUI library for Go. Cross platform.
  • Wails - Mac, Windows, Linux desktop apps with HTML UI using built-in OS HTML renderer.
  • walk - Windows application library kit for Go.
  • webview - Cross-platform webview window with simple two-way JavaScript bindings (Windows / macOS / Linux).

Interaction

  • go-appindicator - Go bindings for libappindicator3 C library.
  • gosx-notifier - OSX Desktop Notifications library for Go.
  • mac-activity-tracker - OSX library to notify about any (pluggable) activity on your machine.
  • mac-sleep-notifier - OSX Sleep/Wake notifications in golang.
  • robotgo - Go Native cross-platform GUI system automation. Control the mouse, keyboard and other.
  • systray - Cross platform Go library to place an icon and menu in the notification area.
  • trayhost - Cross-platform Go library to place an icon in the host operating system's taskbar.

Hardware

Libraries, tools, and tutorials for interacting with hardware.

See go-hardware for a comprehensive list.

Images

Libraries for manipulating images.

  • bild - Collection of image processing algorithms in pure Go.
  • bimg - Small package for fast and efficient image processing using libvips.
  • cameron - An avatar generator for Go.
  • darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency.
  • geopattern - Create beautiful generative image patterns from a string.
  • gg - 2D rendering in pure Go.
  • gift - Package of image processing filters.
  • gltf - Efficient and robust glTF 2.0 reader, writer and validator.
  • go-cairo - Go binding for the cairo graphics library.
  • go-gd - Go binding for GD library.
  • go-nude - Nudity detection with Go.
  • go-opencv - Go bindings for OpenCV.
  • go-webcolors - Port of webcolors library from Python to Go.
  • gocv - Go package for computer vision using OpenCV 3.3+.
  • goimagehash - Go Perceptual image hashing package.
  • goimghdr - The imghdr module determines the type of image contained in a file for Go.
  • govatar - Library and CMD tool for generating funny avatars.
  • image2ascii - Convert image to ASCII.
  • imagick - Go binding to ImageMagick's MagickWand C API.
  • imaginary - Fast and simple HTTP microservice for image resizing.
  • imaging - Simple Go image processing package.
  • img - Selection of image manipulation tools.
  • ln - 3D line art rendering in Go.
  • mergi - Tool & Go library for image manipulation (Merge, Crop, Resize, Watermark, Animate).
  • mort - Storage and image processing server written in Go.
  • mpo - Decoder and conversion tool for MPO 3D Photos.
  • picfit - An image resizing server written in Go.
  • pt - Path tracing engine written in Go.
  • resize - Image resizing for Go with common interpolation methods.
  • rez - Image resizing in pure Go and SIMD.
  • smartcrop - Finds good crops for arbitrary images and crop sizes.
  • steganography - Pure Go Library for LSB steganography.
  • stegify - Go tool for LSB steganography, capable of hiding any file within an image.
  • svgo - Go Language Library for SVG generation.
  • tga - Package tga is a TARGA image format decoder/encoder.

IoT (Internet of Things)

Libraries for programming devices of the IoT.

  • connectordb - Open-Source Platform for Quantified Self & IoT.
  • devices - Suite of libraries for IoT devices, experimental for x/exp/io.
  • eywa - Project Eywa is essentially a connection manager that keeps track of connected devices.
  • flogo - Project Flogo is an Open Source Framework for IoT Edge Apps & Integration.
  • gatt - Gatt is a Go package for building Bluetooth Low Energy peripherals.
  • gobot - Gobot is a framework for robotics, physical computing, and the Internet of Things.
  • huego - An extensive Philips Hue client library for Go.
  • iot - IoT is a simple framework for implementing a Google IoT Core device.
  • mainflux - Industrial IoT Messaging and Device Management Server.
  • periph - Peripherals I/O to interface with low-level board facilities.
  • sensorbee - Lightweight stream processing engine for IoT.

Job Scheduler

Libraries for scheduling jobs.

  • clockwerk - Go package to schedule periodic jobs using a simple, fluent syntax.
  • clockwork - Simple and intuitive job scheduling library in Go.
  • go-cron - Simple Cron library for go that can execute closures or functions at varying intervals, from once a second to once a year on a specific date and time. Primarily for web applications and long running daemons.
  • gron - Define time-based tasks using a simple Go API and Gron’s scheduler will run them accordingly.
  • JobRunner - Smart and featureful cron job scheduler with job queuing and live monitoring built in.
  • jobs - Persistent and flexible background jobs library.
  • leprechaun - Job scheduler that supports webhooks, crons and classic scheduling.
  • scheduler - Cronjobs scheduling made easy.

JSON

Libraries for working with JSON.

  • ajson - Abstract JSON for golang with JSONPath support.
  • gjo - Small utility to create JSON objects.
  • GJSON - Get a JSON value with one line of code.
  • go-jsonerror - Go-JsonError is ment to allow us to easily create json response errors that follow the JsonApi spec.
  • go-respond - Go package for handling common HTTP JSON responses.
  • gojq - JSON query in Golang.
  • gojson - Automatically generate Go (golang) struct definitions from example JSON.
  • JayDiff - JSON diff utility written in Go.
  • JSON-to-Go - Convert JSON to Go struct.
  • jsonapi-errors - Go bindings based on the JSON API errors reference.
  • jsonf - Console tool for highlighted formatting and struct query fetching JSON.
  • jsongo - Fluent API to make it easier to create Json objects.
  • jsonhal - Simple Go package to make custom structs marshal into HAL compatible JSON responses.
  • kazaam - API for arbitrary transformation of JSON documents.
  • mp - Simple cli email parser. It currently takes stdin and outputs JSON.

Logging

Libraries for generating and working with log files.

  • distillog - distilled levelled logging (think of it as stdlib + log levels).
  • glg - glg is simple and fast leveled logging library for Go.
  • glo - PHP Monolog inspired logging facility with identical severity levels.
  • glog - Leveled execution logs for Go.
  • go-cronowriter - Simple writer that rotate log files automatically based on current date and time, like cronolog.
  • go-log - Simple and configurable Logging in Go, with level, formatters and writers.
  • go-log - Log lib supports level and multi handlers.
  • go-log - Log4j implementation in Go.
  • go-logger - Simple logger of Go Programs, with level handlers.
  • gologger - Simple easy to use log lib for go, logs in Colored Console, Simple Console, File or Elasticsearch.
  • gomol - Multiple-output, structured logging for Go with extensible logging outputs.
  • gone/log - Fast, extendable, full-featured, std-lib source compatible log library.
  • journald - Go implementation of systemd Journal's native API for logging.
  • log - An O(1) logging system that allows you to connect one log to multiple writers (e.g. stdout, a file and a TCP connection).
  • log - Structured logging package for Go.
  • log - Simple, configurable and scalable Structured Logging for Go.
  • log - Structured log interface for Go cleanly separates logging facade from its implementation.
  • log-voyage - Full-featured logging saas written in golang.
  • log15 - Simple, powerful logging for Go.
  • logdump - Package for multi-level logging.
  • logex - Golang log lib, supports tracking and level, wrap by standard log lib.
  • logger - Minimalistic logging library for Go.
  • logmatic - Colorized logger for Golang with dynamic log level configuration.
  • logo - Golang logger to different configurable writers.
  • logrus - Structured logger for Go.
  • logrusly - logrus plug-in to send errors to a Loggly.
  • logutils - Utilities for slightly better logging in Go (Golang) extending the standard logger.
  • logxi - 12-factor app logger that is fast and makes you happy.
  • lumberjack - Simple rolling logger, implements io.WriteCloser.
  • mlog - Simple logging module for go, with 5 levels, an optional rotating logfile feature and stdout/stderr output.
  • onelog - Onelog is a dead simple but very efficient JSON logger. It is the fastest JSON logger out there in all scenario. Also, it is one of the logger with the lowest allocation.
  • ozzo-log - High performance logging supporting log severity, categorization, and filtering. Can send filtered log messages to various targets (e.g. console, network, mail).
  • rollingwriter - RollingWriter is an auto-rotate io.Writer implementation with multi policies to provide log file rotation.
  • seelog - Logging functionality with flexible dispatching, filtering, and formatting.
  • spew - Implements a deep pretty printer for Go data structures to aid in debugging.
  • stdlog - Stdlog is an object-oriented library providing leveled logging. It is very useful for cron jobs.
  • tail - Go package striving to emulate the features of the BSD tail program.
  • xlog - Plugin architecture and flexible log system for Go, with level ctrl, multiple log target and custom log format.
  • xlog - Structured logger for net/context aware HTTP handlers with flexible dispatching.
  • zap - Fast, structured, leveled logging in Go.
  • zerolog - Zero-allocation JSON logger.

Machine Learning

Libraries for Machine Learning.

  • bayesian - Naive Bayesian Classification for Golang.
  • CloudForest - Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
  • eaopt - An evolutionary optimization library.
  • evoli - Genetic Algorithm and Particle Swarm Optimization library.
  • fonet - A Deep Neural Network library written in Go.
  • go-cluster - Go implementation of the k-modes and k-prototypes clustering algorithms.
  • go-deep - A feature-rich neural network library in Go.
  • go-fann - Go bindings for Fast Artificial Neural Networks(FANN) library.
  • go-galib - Genetic Algorithms library written in Go / golang.
  • go-pr - Pattern recognition package in Go lang.
  • gobrain - Neural Networks written in go.
  • godist - Various probability distributions, and associated methods.
  • goga - Genetic algorithm library for Go.
  • GoLearn - General Machine Learning library for Go.
  • golinear - liblinear bindings for Go.
  • GoMind - A simplistic Neural Network Library in Go.
  • goml - On-line Machine Learning in Go.
  • Goptuna - Bayesian optimization framework for black-box functions written in Go. Everything will be optimized.
  • goRecommend - Recommendation Algorithms library written in Go.
  • gorgonia - graph-based computational library like Theano for Go that provides primitives for building various machine learning and neural network algorithms.
  • gorse - A High Performance Recommender System Package based on Collaborative Filtering for Go.
  • goscore - Go Scoring API for PMML.
  • gosseract - Go package for OCR (Optical Character Recognition), by using Tesseract C++ library.
  • libsvm - libsvm golang version derived work based on LIBSVM 3.14.
  • neat - Plug-and-play, parallel Go framework for NeuroEvolution of Augmenting Topologies (NEAT).
  • neural-go - Multilayer perceptron network implemented in Go, with training via backpropagation.
  • ocrserver - A simple OCR API server, seriously easy to be deployed by Docker and Heroku.
  • onnx-go - Go Interface to Open Neural Network Exchange (ONNX).
  • probab - Probability distribution functions. Bayesian inference. Written in pure Go.
  • regommend - Recommendation & collaborative filtering engine.
  • shield - Bayesian text classifier with flexible tokenizers and storage backends for Go.
  • tfgo - Easy to use Tensorflow bindings: simplifies the usage of the official Tensorflow Go bindings. Define computational graphs in Go, load and execute models trained in Python.
  • Varis - Golang Neural Network.

Messaging

Libraries that implement messaging systems.

  • APNs2 - HTTP/2 Apple Push Notification provider for Go — Send push notifications to iOS, tvOS, Safari and OSX apps.
  • Beaver - A real time messaging server to build a scalable in-app notifications, multiplayer games, chat apps in web and mobile apps.
  • Benthos - A message streaming bridge between a range of protocols.
  • Bus - Minimalist message bus implementation for internal communication.
  • Centrifugo - Real-time messaging (Websockets or SockJS) server in Go.
  • Commander - A high-level event driven consumer/producer supporting various "dialects" such as Apache Kafka.
  • dbus - Native Go bindings for D-Bus.
  • drone-line - Sending Line notifications using a binary, docker or Drone CI.
  • emitter - Emits events using Go way, with wildcard, predicates, cancellation possibilities and many other good wins.
  • event - Implementation of the pattern observer.
  • EventBus - The lightweight event bus with async compatibility.
  • gaurun-client - Gaurun Client written in Go.
  • Glue - Robust Go and Javascript Socket Library (Alternative to Socket.io).
  • go-notify - Native implementation of the freedesktop notification spec.
  • go-nsq - the official Go package for NSQ.
  • go-socket.io - socket.io library for golang, a realtime application framework.
  • go-vitotrol - Client library to Viessmann Vitotrol web service.
  • Gollum - A n:m multiplexer that gathers messages from different sources and broadcasts them to a set of destinations.
  • golongpoll - HTTP longpoll server library that makes web pub-sub simple.
  • goose - Server Sent Events in Go.
  • gopush-cluster - gopush-cluster is a go push server cluster.
  • gorush - Push notification server using APNs2 and google GCM.
  • guble - Messaging server using push notifications (Google Firebase Cloud Messaging, Apple Push Notification services, SMS) as well as websockets, a REST API, featuring distributed operation and message-persistence.
  • hub - A Message/Event Hub for Go applications, using publish/subscribe pattern with support for alias like rabbitMQ exchanges.
  • jazz - A simple RabbitMQ abstraction layer for queue administration and publishing and consuming of messages.
  • machinery - Asynchronous task queue/job queue based on distributed message passing.
  • mangos - Pure go implementation of the Nanomsg ("Scalable Protocols") with transport interoperability.
  • melody - Minimalist framework for dealing with websocket sessions, includes broadcasting and automatic ping/pong handling.
  • Mercure - Server and library to dispatch server-sent updates using the Mercure protocol (built on top of Server-Sent Events).
  • messagebus - messagebus is a Go simple async message bus, perfect for using as event bus when doing event sourcing, CQRS, DDD.
  • NATS Go Client - Lightweight and high performance publish-subscribe and distributed queueing messaging system - this is the Go library.
  • nsq-event-bus - A tiny wrapper around NSQ topic and channel.
  • oplog - Generic oplog/replication system for REST APIs.
  • pubsub - Simple pubsub package for go.
  • rabbus - A tiny wrapper over amqp exchanges and queues.
  • rabtap - RabbitMQ swiss army knife cli app.
  • RapidMQ - RapidMQ is a lightweight and reliable library for managing of the local messages queue.
  • redisqueue - redisqueue provides a producer and consumer of a queue that uses Redis streams.
  • rmqconn - RabbitMQ Reconnection. Wrapper over amqp.Connection and amqp.Dial. Allowing to do a reconnection when the connection is broken before forcing the call to the Close () method to be closed.
  • sarama - Go library for Apache Kafka.
  • Uniqush-Push - Redis backed unified push service for server-side notifications to mobile devices.
  • zmq4 - Go interface to ZeroMQ version 4. Also available for version 3 and version 2.

Microsoft Office

  • unioffice - Pure go library for creating and processing Office Word (.docx), Excel (.xlsx) and Powerpoint (.pptx) documents.

Microsoft Excel

Libraries for working with Microsoft Excel.

  • excelize - Golang library for reading and writing Microsoft Excel™ (XLSX) files.
  • go-excel - A simple and light reader to read a relate-db-like excel as a table.
  • goxlsxwriter - Golang bindings for libxlsxwriter for writing XLSX (Microsoft Excel) files.
  • xlsx - Library to simplify reading the XML format used by recent version of Microsoft Excel in Go programs.
  • xlsx - Fast and safe way to read/update your existing Microsoft Excel files in Go programs.

Miscellaneous

Dependency Injection

Libraries for working with dependency injection.

  • alice - Additive dependency injection container for Golang.
  • dig - A reflection based dependency injection toolkit for Go.
  • fx - A dependency injection based application framework for Go (built on top of dig).
  • gocontainer - Simple Dependency Injection Container.
  • inject - A reflection based dependency injection container with simple interface.
  • linker - A reflection based dependency injection and inversion of control library with components lifecycle support.
  • wire - Strict Runtime Dependency Injection for Golang.

Project Layout

Unofficial set of patterns for structuring projects.

  • go-sample - A sample layout for Go application projects with the real code.
  • golang-standards/project-layout - Set of common historical and emerging project layout patterns in the Go ecosystem.
  • scaffold - Scaffold generates starter Go project layout. Lets you focus on business logic implemeted.

Strings

Libraries for working with strings.

  • strutil - String utilities.
  • xstrings - Collection of useful string functions ported from other languages.

These libraries were placed here because none of the other categories seemed to fit.

  • anagent - Minimalistic, pluggable Golang evloop/timer handler with dependency-injection.
  • antch - A fast, powerful and extensible web crawling & scraping framework.
  • archiver - Library and command for making and extracting .zip and .tar.gz archives.
  • autoflags - Go package to automatically define command line flags from struct fields.
  • avgRating - Calculate average score and rating based on Wilson Score Equation.
  • banner - Add beautiful banners into your Go applications.
  • base64Captcha - Base64captch supports digit, number, alphabet, arithmetic, audio and digit-alphabet captcha.
  • battery - Cross-platform, normalized battery information library.
  • bitio - Highly optimized bit-level Reader and Writer for Go.
  • browscap_go - GoLang Library for Browser Capabilities Project.
  • captcha - Package captcha provides an easy to use, unopinionated API for captcha generation.
  • conv - Package conv provides fast and intuitive conversions across Go types.
  • datacounter - Go counters for readers/writer/http.ResponseWriter.
  • ffmt - Beautify data display for Humans.
  • ghorg - Clone all repos from a GitHub org into a single directory.
  • go-commons-pool - Generic object pool for Golang.
  • go-openapi - Collection of packages to parse and utilize open-api schemas.
  • go-resiliency - Resiliency patterns for golang.
  • go-unarr - Decompression library for RAR, TAR, ZIP and 7z archives.
  • gofakeit - Random data generator written in go.
  • gommit - Analyze git commit messages to ensure they follow defined patterns.
  • gopsutil - Cross-platform library for retrieving process and system utilization(CPU, Memory, Disks, etc).
  • gosh - Provide Go Statistics Handler, Struct, Measure Method.
  • gosms - Your own local SMS gateway in Go that can be used to send SMS.
  • gotoprom - Type-safe metrics builder wrapper library for the official Prometheus client.
  • gountries - Package that exposes country and subdivision data.
  • health - Easy to use, extensible health check library.
  • healthcheck - An opinionated and concurrent health-check HTTP handler for RESTful services.
  • hostutils - A golang library for packing and unpacking FQDNs list.
  • indigo - Distributed unique ID generator of using Sonyflake and encoded by Base58.
  • lk - A simple licensing library for golang.
  • llvm - Library for interacting with LLVM IR in pure Go.
  • metrics - Library for metrics instrumentation and Prometheus exposition.
  • morse - Library to convert to and from morse code.
  • numa - NUMA is a utility library, which is written in go. It help us to write some NUMA-AWARED code.
  • pdfgen - HTTP service to generate PDF from Json requests.
  • persian - Some utilities for Persian language in go.
  • sandid - Every grain of sand on earth has its own ID.
  • shellwords - A Golang library to manipulate strings according to the word parsing rules of the UNIX Bourne shell.
  • shortid - Distributed generation of super short, unique, non-sequential, URL friendly IDs.
  • stats - Monitors Go MemStats + System stats such as Memory, Swap and CPU and sends via UDP anywhere you want for logging etc...
  • turtle - Emojis for Go.
  • url-shortener - A modern, powerful, and robust URL shortener microservice with mysql support.
  • VarHandler - Generate boilerplate http input and output handling.
  • xdg - FreeDesktop.org (xdg) Specs implemented in Go.
  • xkg - X Keyboard Grabber.

Natural Language Processing

Libraries for working with human languages.

  • getlang - Fast natural language detection package.
  • go-i18n - Package and an accompanying tool to work with localized text.
  • go-mystem - CGo bindings to Yandex.Mystem - russian morphology analyzer.
  • go-nlp - Utilities for working with discrete probability distributions and other tools useful for doing NLP work.
  • go-pinyin - CN Hanzi to Hanyu Pinyin converter.
  • go-stem - Implementation of the porter stemming algorithm.
  • go-unidecode - ASCII transliterations of Unicode text.
  • go2vec - Reader and utility functions for word2vec embeddings.
  • gojieba - This is a Go implementation of jieba which a Chinese word splitting algorithm.
  • golibstemmer - Go bindings for the snowball libstemmer library including porter 2.
  • gotokenizer - A tokenizer based on the dictionary and Bigram language models for Golang. (Now only support chinese segmentation)
  • gounidecode - Unicode transliterator (also known as unidecode) for Go.
  • gse - Go efficient text segmentation; support english, chinese, japanese and other.
  • icu - Cgo binding for icu4c C library detection and conversion functions. Guaranteed compatibility with version 50.1.
  • kagome - JP morphological analyzer written in pure Go.
  • libtextcat - Cgo binding for libtextcat C library. Guaranteed compatibility with version 2.2.
  • MMSEGO - This is a GO implementation of MMSEG which a Chinese word splitting algorithm.
  • nlp - Extract values from strings and fill your structs with nlp.
  • nlp - Go Natural Language Processing library supporting LSA (Latent Semantic Analysis).
  • paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm.
  • petrovich - Petrovich is the library which inflects Russian names to given grammatical case.
  • porter - This is a fairly straightforward port of Martin Porter's C implementation of the Porter stemming algorithm.
  • porter2 - Really fast Porter 2 stemmer.
  • prose - Library for text processing that supports tokenization, part-of-speech tagging, named-entity extraction, and more.
  • RAKE.go - Go port of the Rapid Automatic Keyword Extraction Algorithm (RAKE).
  • segment - Go library for performing Unicode Text Segmentation as described in Unicode Standard Annex #29
  • sentences - Sentence tokenizer: converts text into a list of sentences.
  • shamoji - The shamoji is word filtering package written in Go.
  • snowball - Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality Snowball native.
  • stemmer - Stemmer packages for Go programming language. Includes English and German stemmers.
  • textcat - Go package for n-gram based text categorization, with support for utf-8 and raw text.
  • whatlanggo - Natural language detection package for Go. Supports 84 languages and 24 scripts (writing systems e.g. Latin, Cyrillic, etc).
  • when - Natural EN and RU language date/time parser with pluggable rules.

Networking

Libraries for working with various layers of the network.

  • arp - Package arp implements the ARP protocol, as described in RFC 826.
  • buffstreams - Streaming protocolbuffer data over TCP made easy.
  • canopus - CoAP Client/Server implementation (RFC 7252).
  • cidranger - Fast IP to CIDR lookup for Go.
  • dhcp6 - Package dhcp6 implements a DHCPv6 server, as described in RFC 3315.
  • dns - Go library for working with DNS.
  • ether - Cross-platform Go package for sending and receiving ethernet frames.
  • ethernet - Package ethernet implements marshaling and unmarshaling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags.
  • fasthttp - Package fasthttp is a fast HTTP implementation for Go, up to 10 times faster than net/http.
  • fortio - Load testing library and command line tool, advanced echo server and web UI. Allows to specify a set query-per-second load and record latency histograms and other useful stats and graph them. Tcp, Http, gRPC.
  • ftp - Package ftp implements a FTP client as described in RFC 959.
  • gmqtt - Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.1.1.
  • gNxI - A collection of tools for Network Management that use the gNMI and gNOI protocols.
  • go-getter - Go library for downloading files or directories from various sources using a URL.
  • go-stun - Go implementation of the STUN client (RFC 3489 and RFC 5389).
  • gobgp - BGP implemented in the Go Programming Language.
  • golibwireshark - Package golibwireshark use libwireshark library to decode pcap file and analyse dissection data.
  • gopacket - Go library for packet processing with libpcap bindings.
  • gopcap - Go wrapper for libpcap.
  • goshark - Package goshark use tshark to decode IP packet and create data struct to analyse packet.
  • gosnmp - Native Go library for performing SNMP actions.
  • gotcp - Go package for quickly writing tcp applications.
  • grab - Go package for managing file downloads.
  • graval - Experimental FTP server framework.
  • HTTPLab - HTTPLabs let you inspect HTTP requests and forge responses.
  • iplib - Library for working with IP addresses (net.IP, net.IPNet), inspired by python ipaddress and ruby ipaddr
  • jazigo - Jazigo is a tool written in Go for retrieving configuration for multiple network devices.
  • kcp-go - KCP - Fast and Reliable ARQ Protocol.
  • kcptun - Extremely simple & fast udp tunnel based on KCP protocol.
  • lhttp - Powerful websocket framework, build your IM server more easily.
  • linkio - Network link speed simulation for Reader/Writer interfaces.
  • llb - It's a very simple but quick backend for proxy servers. Can be useful for fast redirection to predefined domain with zero memory allocation and fast response.
  • mdns - Simple mDNS (Multicast DNS) client/server library in Golang.
  • mqttPaho - The Paho Go Client provides an MQTT client library for connection to MQTT brokers via TCP, TLS or WebSockets.
  • NFF-Go - Framework for rapid development of performant network functions for cloud and bare-metal (former YANFF).
  • packet - Send packets over TCP and UDP. It can buffer messages and hot-swap connections if needed.
  • peerdiscovery - Pure Go library for cross-platform local peer discovery using UDP multicast.
  • portproxy - Simple TCP proxy which adds CORS support to API's which don't support it.
  • publicip - Package publicip returns your public facing IPv4 address (internet egress).
  • quic-go - An implementation of the QUIC protocol in pure Go.
  • raw - Package raw enables reading and writing data at the device driver level for a network interface.
  • sftp - Package sftp implements the SSH File Transfer Protocol as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt.
  • ssh - Higher-level API for building SSH servers (wraps crypto/ssh).
  • sslb - It's a Super Simples Load Balancer, just a little project to achieve some kind of performance.
  • stun - Go implementation of RFC 5389 STUN protocol.
  • tcp_server - Go library for building tcp servers faster.
  • tspool - A TCP Library use worker pool to improve performance and protect your server.
  • utp - Go uTP micro transport protocol implementation.
  • water - Simple TUN/TAP library.
  • webrtc - A pure Go implementation of the WebRTC API.
  • winrm - Go WinRM client to remotely execute commands on Windows machines.
  • xtcp - TCP Server Framework with simultaneous full duplex communication,graceful shutdown,custom protocol.

HTTP Clients

Libraries for making HTTP requests.

  • gentleman - Full-featured plugin-driven HTTP client library.
  • goreq - Enhanced simplified HTTP client based on gorequest.
  • grequests - A Go "clone" of the great and famous Requests library.
  • heimdall - An enchanced http client with retry and hystrix capabilities.
  • pester - Go HTTP client calls with retries, backoff, and concurrency.
  • rq - A nicer interface for golang stdlib HTTP client.
  • sling - Sling is a Go HTTP client library for creating and sending API requests.

OpenGL

Libraries for using OpenGL in Go.

  • gl - Go bindings for OpenGL (generated via glow).
  • glfw - Go bindings for GLFW 3.
  • goxjs/gl - Go cross-platform OpenGL bindings (OS X, Linux, Windows, browsers, iOS, Android).
  • goxjs/glfw - Go cross-platform glfw library for creating an OpenGL context and receiving events.
  • mathgl - Pure Go math package specialized for 3D math, with inspiration from GLM.

ORM

Libraries that implement Object-Relational Mapping or datamapping techniques.

  • beego orm - Powerful orm framework for go. Support: pq/mysql/sqlite3.
  • go-firestorm - A simple ORM for Google/Firebase Cloud Firestore.
  • go-pg - PostgreSQL ORM with focus on PostgreSQL specific features and performance.
  • go-queryset - 100% type-safe ORM with code generation and MySQL, PostgreSQL, Sqlite3, SQL Server support based on GORM.
  • go-sqlbuilder - A flexible and powerful SQL string builder library plus a zero-config ORM.
  • go-store - Simple and fast Redis backed key-value store library for Go.
  • GORM - The fantastic ORM library for Golang, aims to be developer friendly.
  • gorp - Go Relational Persistence, ORM-ish library for Go.
  • grimoire - Grimoire is a database access layer and validation for golang. (Support: MySQL, PostgreSQL and SQLite3).
  • lore - Simple and lightweight pseudo-ORM/pseudo-struct-mapping environment for Go.
  • Marlow - Generated ORM from project structs for compile time safety assurances.
  • pop/soda - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
  • QBS - Stands for Query By Struct. A Go ORM.
  • reform - Better ORM for Go, based on non-empty interfaces and code generation.
  • SQLBoiler - ORM generator. Generate a featureful and blazing-fast ORM tailored to your database schema.
  • upper.io/db - Single interface for interacting with different data sources through the use of adapters that wrap mature database drivers.
  • Xorm - Simple and powerful ORM for Go.
  • Zoom - Blazing-fast datastore and querying engine built on Redis.

Package Management

Official tooling for dependency and package management

  • go modules - Modules are the unit of source code interchange and versioning. The go command has direct support for working with modules, including recording and resolving dependencies on other modules.

Official experimental tooling for package management

  • dep - Go dependency tool.
  • vgo - Versioned Go.

Unofficial libraries for package and dependency management.

  • gigo - PIP-like dependency tool for golang, with support for private repositories and hashes.
  • glide - Manage your golang vendor and vendored packages with ease. Inspired by tools like Maven, Bundler, and Pip.
  • godep - dependency tool for go, godep helps build packages reproducibly by fixing their dependencies.
  • gom - Go Manager - bundle for go.
  • goop - Simple dependency manager for Go (golang), inspired by Bundler.
  • gop - Build and manage your Go applications out of GOPATH.
  • gopm - Go Package Manager.
  • govendor - Go Package Manager. Go vendor tool that works with the standard vendor file.
  • gpm - Barebones dependency manager for Go.
  • johnny-deps - Minimal dependency version using Git.
  • mvn-golang - plugin that provides way for auto-loading of Golang SDK, dependency management and start build environment in Maven project infrastructure.
  • nut - Vendor Go dependencies.
  • VenGO - create and manage exportable isolated go virtual environments.

Performance

  • jaeger - A distributed tracing system.
  • profile - Simple profiling support package for Go.
  • tracer - Simple, lightweight tracing.

Query Language

  • gojsonq - A simple Go package to Query over JSON Data.
  • graphql - graphql parser + utilities.
  • graphql - GraphQL server with a focus on ease of use.
  • graphql-go - Implementation of GraphQL for Go.
  • jsonql - JSON query expression library in Golang.
  • jsonslice - Jsonpath queries with advanced filters.
  • rql - Resource Query Language for REST API.

Resource Embedding

  • esc - Embeds files into Go programs and provides http.FileSystem interfaces to them.
  • fileb0x - Simple tool to embed files in go with focus on "customization" and ease to use.
  • go-embed - Generates go code to embed resource files into your library or executable.
  • go-resources - Unfancy resources embedding with Go.
  • go.rice - go.rice is a Go package that makes working with resources such as html,js,css,images and templates very easy.
  • packr - The simple and easy way to embed static files into Go binaries.
  • statics - Embeds static resources into go files for single binary compilation + works with http.FileSystem + symlinks.
  • statik - Embeds static files into a Go executable.
  • templify - Embed external template files into Go code to create single file binaries.
  • vfsgen - Generates a vfsdata.go file that statically implements the given virtual filesystem.

Science and Data Analysis

Libraries for scientific computing and data analyzing.

  • assocentity - Package assocentity returns the average distance from words to a given entity.
  • bradleyterry - Provides a Bradley-Terry Model for pairwise comparisons.
  • chart - Simple Chart Plotting library for Go. Supports many graphs types.
  • dataframe-go - Dataframes for Go for machine-learning and statistics (similar to pandas).
  • evaler - Simple floating point arithmetic expression evaluator.
  • ewma - Exponentially-weighted moving averages.
  • geom - 2D geometry for golang.
  • go-dsp - Digital Signal Processing for Go.
  • go-gt - Graph theory algorithms written in "Go" language.
  • goent - GO Implementation of Entropy Measures.
  • gohistogram - Approximate histograms for data streams.
  • gonum - Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more.
  • gonum/plot - gonum/plot provides an API for building and drawing plots in Go.
  • goraph - Pure Go graph theory library(data structure, algorith visualization).
  • gosl - Go scientific library for linear algebra, FFT, geometry, NURBS, numerical methods, probabilities, optimisation, differential equations, and more.
  • GoStats - GoStats is an Open Source GoLang library for math statistics mostly used in Machine Learning domains, it covers most of the Statistical measures functions.
  • graph - Library of basic graph algorithms.
  • ode - Ordinary differential equation (ODE) solver which supports extended states and channel-based iteration stop conditions.
  • orb - 2D geometry types with clipping, GeoJSON and Mapbox Vector Tile support.
  • pagerank - Weighted PageRank algorithm implemented in Go.
  • piecewiselinear - Tiny linear interpolation library.
  • PiHex - Implementation of the "Bailey-Borwein-Plouffe" algorithm for the hexadecimal number Pi.
  • rootfinding - root-finding algorithms library for finding roots of quadratic functions.
  • sparse - Go Sparse matrix formats for linear algebra supporting scientific and machine learning applications, compatible with gonum matrix libraries.
  • stats - Statistics package with common functions missing from the Golang standard library.
  • streamtools - general purpose, graphical tool for dealing with streams of data.
  • TextRank - TextRank implementation in Golang with extendable features (summarization, weighting, phrase extraction) and multithreading (goroutine) support.
  • triangolatte - 2D triangulation library. Allows translating lines and polygons (both based on points) to the language of GPUs.

Security

Libraries that are used to help make your application more secure.

  • acmetool - ACME (Let's Encrypt) client tool with automatic renewal.
  • acra - Network encryption proxy to protect database-based applications from data leaks: strong selective encryption, SQL injections prevention, intrusion detection system.
  • argon2pw - Argon2 password hash generation with constant-time password comparison.
  • autocert - Auto provision Let's Encrypt certificates and start a TLS server.
  • BadActor - In-memory, application-driven jailer built in the spirit of fail2ban.
  • Cameradar - Tool and library to remotely hack RTSP streams from surveillance cameras.
  • certificates - An opinionated tool for generating tls certificates.
  • go-yara - Go Bindings for YARA, the "pattern matching swiss knife for malware researchers (and everyone else)".
  • goArgonPass - Argon2 password hash and verification designed to be compatible with existing Python and PHP implementations.
  • goSecretBoxPassword - A probably paranoid package for securely hashing and encrypting passwords.
  • Interpol - Rule-based data generator for fuzzing and penetration testing.
  • jwc - JSON Web Cryptography library.
  • lego - Pure Go ACME client library and CLI tool (for use with Let's Encrypt).
  • memguard - A pure Go library for handling sensitive values in memory.
  • nacl - Go implementation of the NaCL set of API's.
  • passlib - Futureproof password hashing library.
  • secure - HTTP middleware for Go that facilitates some quick security wins.
  • simple-scrypt - Scrypt package with a simple, obvious API and automatic cost calibration built-in.
  • ssh-vault - encrypt/decrypt using ssh keys.
  • sslmgr - SSL certificates made easy with a high level wrapper around acme/autocert.

Serialization

Libraries and tools for binary serialization.

  • asn1 - Asn.1 BER and DER encoding library for golang.
  • bambam - generator for Cap'n Proto schemas from go.
  • bel - Generate TypeScript interfaces from Go structs/interfaces. Useful for JSON RPC.
  • binstruct - Golang binary decoder for mapping data into the structure.
  • colfer - Code generation for the Colfer binary format.
  • csvutil - High Performance, idiomatic CSV record encoding and decoding to native Go structures.
  • fwencoder - Fixed width file parser (encoding and decoding library) for Go.
  • go-capnproto - Cap'n Proto library and parser for go.
  • go-codec - High Performance, feature-Rich, idiomatic encode, decode and rpc library for msgpack, cbor and json, with runtime-based OR code-generation support.
  • gogoprotobuf - Protocol Buffers for Go with Gadgets.
  • goprotobuf - Go support, in the form of a library and protocol compiler plugin, for Google's protocol buffers.
  • jsoniter - High-performance 100% compatible drop-in replacement of "encoding/json".
  • mapstructure - Go library for decoding generic map values into native Go structures.
  • php_session_decoder - GoLang library for working with PHP session format and PHP Serialize/Unserialize functions.
  • pletter - A standard way to wrap a proto message for message brokers.
  • structomap - Library to easily and dynamically generate maps from static structures.

Server Applications

  • algernon - HTTP/2 web server with built-in support for Lua, Markdown, GCSS and Amber.
  • Caddy - Caddy is an alternative, HTTP/2 web server that's easy to configure and use.
  • consul - Consul is a tool for service discovery, monitoring and configuration.
  • devd - Local webserver for developers.
  • discovery - A registry for resilient mid-tier load balancing and failover.
  • etcd - Highly-available key value store for shared configuration and service discovery.
  • Fider - Fider is an open platform to collect and organize customer feedback.
  • Flagr - Flagr is an open-source feature flagging and A/B testing service.
  • flipt - A self contained feature flag solution written in Go and Vue.js
  • jackal - An XMPP server written in Go.
  • minio - Minio is a distributed object storage server.
  • nginx-prometheus - Nginx log parser and exporter to Prometheus.
  • nsq - A realtime distributed messaging platform.
  • psql-streamer - Stream database events from PostgreSQL to Kafka.
  • riemann-relay - Relay to load-balance Riemann events and/or convert them to Carbon.
  • RoadRunner - High-performance PHP application server, load-balancer and process manager.
  • SFTPGo - Full featured and highly configurable SFTP server software.
  • yakvs - Small, networked, in-memory key-value store.

Stream Processing

Libraries and tools for stream processing and reactive programming.

Template Engines

Libraries and tools for templating and lexing.

  • ace - Ace is an HTML template engine for Go, inspired by Slim and Jade. Ace is a refinement of Gold.
  • amber - Amber is an elegant templating engine for Go Programming Language It is inspired from HAML and Jade.
  • damsel - Markup language featuring html outlining via css-selectors, extensible via pkg html/template and others.
  • ego - Lightweight templating language that lets you write templates in Go. Templates are translated into Go and compiled.
  • extemplate - Tiny wrapper around html/template to allow for easy file-based template inheritance.
  • fasttemplate - Simple and fast template engine. Substitutes template placeholders up to 10x faster than text/template.
  • gofpdf - PDF document generator with high level support for text, drawing and images.
  • goview - Goview is a lightweight, minimalist and idiomatic template library based on golang html/template for building Go web application.
  • hero - Hero is a handy, fast and powerful go template engine.
  • jet - Jet template engine.
  • kasia.go - Templating system for HTML and other text documents - go implementation.
  • liquid - Go implementation of Shopify Liquid templates.
  • mustache - Go implementation of the Mustache template language.
  • pongo2 - Django-like template-engine for Go.
  • quicktemplate - Fast, powerful, yet easy to use template engine. Converts templates into Go code and then compiles it.
  • raymond - Complete handlebars implementation in Go.
  • Razor - Razor view engine for Golang.
  • Soy - Closure templates (aka Soy templates) for Go, following the official spec.
  • velvet - Complete handlebars implementation in Go.

Testing

Libraries for testing codebases and generating test data.

  • Testing Frameworks

    • apitest - Simple and extensible behavioural testing library for REST based services or HTTP handlers that supports mocking external http calls and rendering of sequence diagrams.
    • assert - Basic Assertion Library used along side native go testing, with building blocks for custom assertions.
    • badio - Extensions to Go's testing/iotest package.
    • baloo - Expressive and versatile end-to-end HTTP API testing made easy.
    • biff - Bifurcation testing framework, BDD compatible.
    • charlatan - Tool to generate fake interface implementations for tests.
    • commander - Tool for testing cli applications on windows, linux and osx.
    • cupaloy - Simple snapshot testing addon for your test framework.
    • dbcleaner - Clean database for testing purpose, inspired by database_cleaner in Ruby.
    • dsunit - Datastore testing for SQL, NoSQL, structured files.
    • endly - Declarative end to end functional testing.
    • flute - HTTP client testing framework.
    • frisby - REST API testing framework.
    • ginkgo - BDD Testing Framework for Go.
    • go-carpet - Tool for viewing test coverage in terminal.
    • go-cmp - Package for comparing Go values in tests.
    • go-mutesting - Mutation testing for Go source code.
    • go-testdeep - Extremely flexible golang deep comparison, extends the go testing package.
    • go-vcr - Record and replay your HTTP interactions for fast, deterministic and accurate tests.
    • goblin - Mocha like testing framework fo Go.
    • gocheck - More advanced testing framework alternative to gotest.
    • GoConvey - BDD-style framework with web UI and live reload.
    • gocrest - Composable hamcrest-like matchers for Go assertions.
    • godog - Cucumber or Behat like BDD framework for Go.
    • gofight - API Handler Testing for Golang Router framework.
    • gogiven - YATSPEC-like BDD testing framework for Go.
    • gomatch - library created for testing JSON against patterns.
    • gomega - Rspec like matcher/assertion library.
    • GoSpec - BDD-style testing framework for the Go programming language.
    • gospecify - This provides a BDD syntax for testing your Go code. It should be familiar to anybody who has used libraries such as rspec.
    • gosuite - Brings lightweight test suites with setup/teardown facilities to testing by leveraging Go1.7's Subtests.
    • gotest.tools - A collection of packages to augment the go testing package and support common patterns.
    • Hamcrest - fluent framework for declarative Matcher objects that, when applied to input values, produce self-describing results.
    • httpexpect - Concise, declarative, and easy to use end-to-end HTTP and REST API testing.
    • jsonassert - Package for verifying that your JSON payloads are serialized correctly.
    • restit - Go micro framework to help writing RESTful API integration test.
    • testcase - Idiomatic testing framework for Behavior Driven Development.
    • testfixtures - A helper for Rails' like test fixtures to test database applications.
    • Testify - Sacred extension to the standard go testing package.
    • testmd - Convert markdown snippets into testable go code.
    • testsql - Generate test data from SQL files before testing and clear it after finished.
    • Tt - Simple and colorful test tools.
    • wstest - Websocket client for unit-testing a websocket http.Handler.
  • Mock

    • counterfeiter - Tool for generating self-contained mock objects.
    • go-sqlmock - Mock SQL driver for testing database interactions.
    • go-txdb - Single transaction based database driver mainly for testing purposes.
    • gock - Versatile HTTP mocking made easy.
    • gomock - Mocking framework for the Go programming language.
    • govcr - HTTP mock for Golang: record and replay HTTP interactions for offline testing.
    • hoverfly - HTTP(S) proxy for recording and simulating REST/SOAP APIs with extensible middleware and easy-to-use CLI.
    • httpmock - Easy mocking of HTTP responses from external resources.
    • minimock - Mock generator for Go interfaces.
    • mockhttp - Mock object for Go http.ResponseWriter.
  • Fuzzing and delta-debugging/reducing/shrinking.

    • go-fuzz - Randomized testing system.
    • gofuzz - Library for populating go objects with random values.
    • Tavor - Generic fuzzing and delta-debugging framework.
  • Selenium and browser control tools.

    • cdp - Type-safe bindings for the Chrome Debugging Protocol that can be used with browsers or other debug targets that implement it.
    • chromedp - a way to drive/test Chrome, Safari, Edge, Android Webviews, and other browsers supporting the Chrome Debugging Protocol.
    • ggr - a lightweight server that routes and proxies Selenium WebDriver requests to multiple Selenium hubs.
    • selenoid - alternative Selenium hub server that launches browsers within containers.
  • Fail injection

Text Processing

Libraries for parsing and manipulating texts.

  • Specific Formats
    • align - A general purpose application that aligns text.
    • allot - Placeholder and wildcard text parsing for CLI tools and bots.
    • bbConvert - Converts bbCode to HTML that allows you to add support for custom bbCode tags.
    • blackfriday - Markdown processor in Go.
    • bluemonday - HTML Sanitizer.
    • codetree - Parses indented code (python, pixy, scarlet, etc.) and returns a tree structure.
    • colly - Fast and Elegant Scraping Framework for Gophers.
    • commonregex - A collection of common regular expressions for Go.
    • dataflowkit - Web scraping Framework to turn websites into structured data.
    • did - DID (Decentralized Identifiers) Parser and Stringer in Go.
    • doi - Document object identifier (doi) parser in Go.
    • editorconfig-core-go - Editorconfig file parser and manipulator for Go.
    • enca - Minimal cgo bindings for libenca.
    • encdec - Package provides a generic interface to encoders and decodersa.
    • genex - Count and expand Regular Expressions into all matching Strings.
    • github_flavored_markdown - GitHub Flavored Markdown renderer (using blackfriday) with fenced code block highlighting, clickable header anchor links.
    • go-fixedwidth - Fixed-width text formatting (encoder/decoder with reflection).
    • go-humanize - Formatters for time, numbers, and memory size to human readable format.
    • go-nmea - NMEA parser library for the Go language.
    • go-runewidth - Functions to get fixed width of the character or string.
    • go-slugify - Make pretty slug with multiple languages support.
    • go-toml - Go library for the TOML format with query support and handy cli tools.
    • go-vcard - Parse and format vCard.
    • go-zero-width - Zero-width character detection and removal for Go.
    • gofeed - Parse RSS and Atom feeds in Go.
    • gographviz - Parses the Graphviz DOT language.
    • gommon/bytes - Format bytes to string.
    • gonameparts - Parses human names into individual name parts.
    • goq - Declarative unmarshaling of HTML using struct tags with jQuery syntax (uses GoQuery).
    • GoQuery - GoQuery brings a syntax and a set of features similar to jQuery to the Go language.
    • goregen - Library for generating random strings from regular expressions.
    • gotext - GNU gettext utilities for Go.
    • guesslanguage - Functions to determine the natural language of a unicode text.
    • htmlquery - An XPath query package for HTML, lets you extract data or evaluate from HTML documents by an XPath expression.
    • inject - Package inject provides a reflect based injector.
    • ltsv - High performance LTSV (Labeled Tab Separeted Value) reader for Go.
    • mxj - Encode / decode XML as JSON or map[string]interface{}; extract values with dot-notation paths and wildcards. Replaces x2j and j2x packages.
    • sdp - SDP: Session Description Protocol [RFC 4566].
    • sh - Shell parser and formatter.
    • slug - URL-friendly slugify with multiple languages support.
    • Slugify - Go slugify application that handles string.
    • syndfeed - A syndication feed for Atom 1.0 and RSS 2.0.
    • toml - TOML configuration format (encoder/decoder with reflection).
  • Utility
    • gofuckyourself - A sanitization-based swear filter for Go.
    • gotabulate - Easily pretty-print your tabular data with Go.
    • kace - Common case conversions covering common initialisms.
    • parseargs-go - string argument parser that understands quotes and backslashes.
    • parth - URL path segmentation parsing.
    • radix - fast string sorting algorithm.
    • Tagify - Produces a set of tags from given source.
    • TySug - Alternative suggestions with respect to keyboard layouts.
    • xj2go - Convert xml or json to go struct.
    • xurls - Extract urls from text.

Third-party APIs

Libraries for accessing third party APIs.

Utilities

General utilities and tools to make your life easier.

  • abutil - Collection of often-used Golang helpers.
  • apm - Process manager for Golang applications with an HTTP API.
  • backscanner - A scanner similar to bufio.Scanner, but it reads and returns lines in reverse order, starting at a given position and going backward.
  • blank - Verify or remove blanks and whitespace from strings.
  • boilr - Blazingly fast CLI tool for creating projects from boilerplate templates.
  • chyle - Changelog generator using a git repository with multiple configuration possibilities.
  • circuit - An efficient and feature complete Hystrix like Go implementation of the circuit breaker pattern.
  • circuitbreaker - Circuit Breakers in Go.
  • clockwork - A simple fake clock for golang.
  • command - Command pattern for Go with thread safe serial and parallel dispatcher.
  • copy-pasta - Universal multi-workstation clipboard that uses S3 like backend for the storage.
  • ctop - Top-like interface (e.g. htop) for container metrics.
  • ctxutil - A collection of utility functions for contexts.
  • dbt - A framework for running self-updating signed binaries from a central, trusted repository.
  • Death - Managing go application shutdown with signals.
  • Deepcopier - Simple struct copying for Go.
  • delve - Go debugger.
  • dlog - Compile-time controlled logger to make your release smaller without removing debug calls.
  • ergo - The management of multiple local services running over different ports made easy.
  • evaluator - Evaluate an expression dynamicly based on s-expression. It's simple and easy to extend.
  • filetype - Small package to infer the file type checking the magic numbers signature.
  • filler - small utility to fill structs using "fill" tag.
  • filter - provide filtering, sanitizing, and conversion of Go data.
  • fzf - Command-line fuzzy finder written in Go.
  • gaper - Builds and restarts a Go project when it crashes or some watched file changes.
  • generate - runs go generate recursively on a specified path or environment variable and can filter by regex.
  • ghokin - Parallelized formatter with no external dependencies for gherkin (cucumber, behat...).
  • git-time-metric - Simple, seamless, lightweight time tracking for Git.
  • go-astitodo - Parse TODOs in your GO code.
  • go-bind-plugin - go:generate tool for wrapping symbols exported by golang plugins (1.8 only).
  • go-bsdiff - Pure Go bsdiff and bspatch libraries and CLI tools.
  • go-dry - DRY (don't repeat yourself) package for Go.
  • go-funk - Modern Go utility library which provides helpers (map, find, contains, filter, chunk, reverse, ...).
  • go-health - Health package simplifies the way you add health check to your services.
  • go-httpheader - Go library for encoding structs into Header fields.
  • go-problemdetails - Go package for working with Problem Details.
  • go-rate - Timed rate limiter for Go.
  • go-sitemap-generator - XML Sitemap generator written in Go.
  • go-trigger - Go-lang global event triggerer, Register Events with an id and trigger the event from anywhere from your project.
  • goback - Go simple exponential backoff package.
  • godaemon - Utility to write daemons.
  • godropbox - Common libraries for writing Go services/applications from Dropbox.
  • gohper - Various tools/modules help for development.
  • golarm - Fire alarms with system events.
  • golog - Easy and lightweight CLI tool to time track your tasks.
  • gopencils - Small and simple package to easily consume REST APIs.
  • goplaceholder - a small golang lib to generate placeholder images.
  • goreadability - Webpage summary extractor using Facebook Open Graph and arc90's readability.
  • goreleaser - Deliver Go binaries as fast and easily as possible.
  • goreporter - Golang tool that does static analysis, unit testing, code review and generate code quality report.
  • goseaweedfs - SeaweedFS client library with almost full features.
  • gostrutils - Collections of string manipulation and conversion functions.
  • gotenv - Load environment variables from .env or any io.Reader in Go.
  • gpath - Library to simplify access struct fields with Go's expression in reflection.
  • gubrak - Golang utility library with syntactic sugar. It's like lodash, but for golang.
  • handy - Many utilities and helpers like string handlers/formatters and validators.
  • htcat - Parallel and Pipelined HTTP GET Utility.
  • hub - wrap git commands with additional functionality to interact with github from the terminal.
  • hystrix-go - Implements Hystrix patterns of programmer-defined fallbacks aka circuit breaker.
  • immortal - *nix cross-platform (OS agnostic) supervisor.
  • intrinsic - Use x86 SIMD without writing any assembly code.
  • jump - Jump helps you navigate faster by learning your habits.
  • koazee - Library inspired in Lazy evaluation and functional programming that takes the hassle out of working with arrays.
  • lrserver - LiveReload server for Go.
  • mc - Minio Client provides minimal tools to work with Amazon S3 compatible cloud storage and filesystems.
  • mergo - Helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements.
  • mimemagic - Pure Go ultra performant MIME sniffing library/utility.
  • mimesniffer - A MIME type sniffer for Go.
  • mimetype - Package for MIME type detection based on magic numbers.
  • minify - Fast minifiers for HTML, CSS, JS, XML, JSON and SVG file formats.
  • minquery - MongoDB / mgo.v2 query that supports efficient pagination (cursors to continue listing documents where we left off).
  • mmake - Modern Make.
  • moldova - Utility for generating random data based on an input template.
  • mole - cli app to easily create ssh tunnels.
  • mssqlx - Database client library, proxy for any master slave, master master structures. Lightweight and auto balancing in mind.
  • multitick - Multiplexor for aligned tickers.
  • myhttp - Simple API to make HTTP GET requests with timeout support.
  • okrun - go run error steamroller.
  • olaf - Twitter Snowflake implemented in Go.
  • onecache - Caching library with support for multiple backend stores (Redis, Memcached, filesystem etc).
  • panicparse - Groups similar goroutines and colorizes stack dump.
  • peco - Simplistic interactive filtering tool.
  • pgo - Convenient functions for PHP community.
  • pm - Process (i.e. goroutine) manager with an HTTP API.
  • rclient - Readable, flexible, simple-to-use client for REST APIs.
  • realize - Go build system with file watchers and live reload. Run, build and watch file changes with custom paths.
  • repeat - Go implementation of different backoff strategies useful for retrying operations and heartbeating.
  • request - Go HTTP Requests for Humans™.
  • rerate - Redis-based rate counter and rate limiter for Go.
  • rerun - Recompiling and rerunning go apps when source changes.
  • resty - Simple HTTP and REST client for Go inspired by Ruby rest-client.
  • retry - The most advanced functional mechanism to perform actions repetitively until successful.
  • retry - A simple but highly configurable retry package for Go.
  • retry - Simple and easy retry mechanism package for Go.
  • retry - A pretty simple library to ensure your work to be done.
  • retry-go - Retrying made simple and easy for golang.
  • robustly - Runs functions resiliently, catching and restarting panics.
  • scan - Scan golang sql.Rows directly to structs, slices, or primitive types.
  • serve - A static http server anywhere you need.
  • silk - Read silk netflow files.
  • sliceconv - Slice conversion between primitive types.
  • slicer - Makes working with slices easier.
  • spinner - Go package to easily provide a terminal spinner with options.
  • sqlx - provides a set of extensions on top of the excellent built-in database/sql package.
  • sslice - Create a slice which is always sorted.
  • Storm - Simple and powerful toolkit for BoltDB.
  • structs - Implement simple functions to manipulate structs.
  • Task - simple "Make" alternative.
  • toolbox - Slice, map, multimap, struct, function, data conversion utilities. Service router, macro evaluator, tokenizer.
  • ugo - ugo is slice toolbox with concise syntax for Go.
  • UNIS - Common Architecture™ for String Utilities in Go.
  • usql - usql is a universal command-line interface for SQL databases.
  • util - Collection of useful utility functions. (strings, concurrency, manipulations, ...).
  • wuzz - Interactive cli tool for HTTP inspection.
  • xferspdy - Xferspdy provides binary diff and patch library in golang.

UUID

Libraries for working with UUIDs.

  • goid - Generate and Parse RFC4122 compliant V4 UUIDs.
  • nanoid - A tiny and efficient Go unique string ID generator.
  • sno - Compact, sortable and fast unique IDs with embedded metadata.
  • ulid - Go implementation of ULID (Universally Unique Lexicographically Sortable Identifier).
  • uniq - No hassle safe, fast unique identifiers with commands.
  • uuid - Generate, encode, and decode UUIDs v1 with fast or cryptographic-quality random node identifier.
  • uuid - Implementation of Universally Unique Identifier (UUID). Supports both creation and parsing of UUIDs. Actively maintained fork of satori uuid.
  • wuid - An extremely fast unique number generator, 10-135 times faster than UUID.

Validation

Libraries for validation.

  • checkdigit - Provide check digit algorithms (Luhn, Verhoeff, Damm) and calculators (ISBN, EAN, JAN, UPC, etc.).
  • govalidator - Validators and sanitizers for strings, numerics, slices and structs.
  • govalidator - Validate Golang request data with simple rules. Highly inspired by Laravel's request validation.
  • jio - jio is a json schema validator similar to joi.
  • ozzo-validation - Supports validation of various data types (structs, strings, maps, slices, etc.) with configurable and extensible validation rules specified in usual code constructs instead of struct tags.
  • terraform-validator - A norms and conventions validator for Terraform.
  • validate - Go package for data validation and filtering. support validate Map, Struct, Request(Form, JSON, url.Values, Uploaded Files) data and more features.
  • validate - This package provides a framework for writing validations for Go applications.
  • validator - Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving.

Version Control

Libraries for version control.

  • gh - Scriptable server and net/http middleware for GitHub Webhooks.
  • git2go - Go bindings for libgit2.
  • go-git - highly extensible Git implementation in pure Go.
  • go-vcs - manipulate and inspect VCS repositories in Go.
  • hercules - gaining advanced insights from Git repository history.
  • hgo - Hgo is a collection of Go packages providing read-access to local Mercurial repositories.

Video

Libraries for manipulating video.

  • gmf - Go bindings for FFmpeg av* libraries.
  • go-astisub - Manipulate subtitles in GO (.srt, .stl, .ttml, .webvtt, .ssa/.ass, teletext, .smi, etc.).
  • go-astits - Parse and demux MPEG Transport Streams (.ts) natively in GO.
  • go-m3u8 - Parser and generator library for Apple m3u8 playlists.
  • goav - Comphrensive Go bindings for FFmpeg.
  • gst - Go bindings for GStreamer.
  • libgosubs - Subtitle format support for go. Supports .srt, .ttml, and .ass.
  • libvlc-go - Go bindings for libvlc 2.X/3.X/4.X (used by the VLC media player).
  • v4l - Video capture library for Linux, written in Go.

Web Frameworks

Full stack web frameworks.

  • aah - Scalable, performant, rapid development Web framework for Go.
  • Aero - High-performance web framework for Go, reaches top scores in Lighthouse.
  • Air - An ideally refined web framework for Go.
  • Banjo - Very simple and fast web framework for Go.
  • Beego - beego is an open-source, high-performance web framework for the Go programming language.
  • Buffalo - Bringing the productivity of Rails to Go!
  • Echo - High performance, minimalist Go web framework.
  • Fireball - More "natural" feeling web framework.
  • Gem - Simple and fast web framework, friendly to REST API.
  • Gin - Gin is a web framework written in Go! It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity.
  • Gizmo - Microservice toolkit used by the New York Times.
  • go-json-rest - Quick and easy way to setup a RESTful JSON API.
  • go-rest - Small and evil REST framework for Go.
  • Goa - Goa provides a holistic approach for developing remote APIs and microservices in Go.
  • Golax - A non Sinatra fast HTTP framework with support for Google custom methods, deep interceptors, recursion and more.
  • Golf - Golf is a fast, simple and lightweight micro-web framework for Go. It comes with powerful features and has no dependencies other than the Go Standard Library.
  • Gondola - The web framework for writing faster sites, faster.
  • gongular - Fast Go web framework with input mapping/validation and (DI) Dependency Injection.
  • hiboot - hiboot is a high performance web application framework with auto configuration and dependency injection support.
  • Macaron - Macaron is a high productive and modular design web framework in Go.
  • mango - Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.
  • Microservice - The framework for the creation of microservices, written in Golang.
  • neo - Neo is minimal and fast Go Web Framework with extremely simple API.
  • patron - Patron is a microservice framework following best cloud practices with a focus on productivity.
  • Resoursea - REST framework for quickly writing resource based services.
  • REST Layer - Framework to build REST/GraphQL API on top of databases with mostly configuration over code.
  • Revel - High-productivity web framework for the Go language.
  • rex - Rex is a library for modular development built upon gorilla/mux, fully compatible with net/http.
  • route - Simple yet powerful HTTP request multiplexer.
  • rux - Simple and fast web framework for build golang HTTP applications.
  • tango - Micro & pluggable web framework for Go.
  • tigertonic - Go framework for building JSON web services inspired by Dropwizard.
  • traffic - Sinatra inspired regexp/pattern mux and web framework for Go.
  • uAdmin - Fully featured web framework for Golang, inspired by Django.
  • utron - Lightweight MVC framework for Go(Golang).
  • vox - A golang web framework for humans, inspired by Koa heavily.
  • WebGo - A micro-framework to build web apps; with handler chaining, middleware and context injection. With standard library compliant HTTP handlers(i.e. http.HandlerFunc).
  • YARF - Fast micro-framework designed to build REST APIs and web services in a fast and simple way.

Middlewares

Actual middlewares

  • client-timing - An HTTP client for Server-Timing header.
  • CORS - Easily add CORS capabilities to your API.
  • formjson - Transparently handle JSON input as a standard form POST.
  • go-server-timing - Add/parse Server-Timing header.
  • Limiter - Dead simple rate limit middleware for Go.
  • ln-paywall - Go middleware for monetizing APIs on a per-request basis with the Lightning Network (Bitcoin).
  • Tollbooth - Rate limit HTTP request handler.
  • XFF - Handle X-Forwarded-For header and friends.

Libraries for creating HTTP middlewares

  • alice - Painless middleware chaining for Go.
  • catena - http.Handler wrapper catenation (same API as "chain").
  • chain - Handler wrapper chaining with scoped data (net/context-based "middleware").
  • go-wrap - Small middlewares package for net/http.
  • gores - Go package that handles HTML, JSON, XML and etc. responses. Useful for RESTful APIs.
  • interpose - Minimalist net/http middleware for golang.
  • muxchain - Lightweight middleware for net/http.
  • negroni - Idiomatic HTTP middleware for Golang.
  • render - Go package for easily rendering JSON, XML, and HTML template responses.
  • renderer - Simple, lightweight and faster response (JSON, JSONP, XML, YAML, HTML, File) rendering package for Go.
  • rye - Tiny Go middleware library (with canned Middlewares) that supports JWT, CORS, Statsd, and Go 1.7 context.
  • stats - Go middleware that stores various information about your web application.

Routers

  • alien - Lightweight and fast http router from outer space.
  • bellt - A simple Go HTTP router.
  • Bone - Lightning Fast HTTP Multiplexer.
  • Bxog - Simple and fast HTTP router for Go. It works with routes of varying difficulty, length and nesting. And he knows how to create a URL from the received parameters.
  • chi - Small, fast and expressive HTTP router built on net/context.
  • fasthttprouter - High performance router forked from httprouter. The first router fit for fasthttp.
  • FastRouter - a fast, flexible HTTP router written in Go.
  • gocraft/web - Mux and middleware package in Go.
  • Goji - Goji is a minimalistic and flexible HTTP request multiplexer with support for net/context.
  • GoRouter - GoRouter is a Server/API micro framwework, HTTP request router, multiplexer, mux that provides request router with middleware supporting net/context.
  • gowww/router - Lightning fast HTTP router fully compatible with the net/http.Handler interface.
  • httprouter - High performance router. Use this and the standard http handlers to form a very high performance web framework.
  • httptreemux - High-speed, flexible tree-based HTTP router for Go. Inspiration from httprouter.
  • lars - Is a lightweight, fast and extensible zero allocation HTTP router for Go used to create customizable frameworks.
  • mux - Powerful URL router and dispatcher for golang.
  • ozzo-routing - An extremely fast Go (golang) HTTP router that supports regular expression route matching. Comes with full support for building RESTful APIs.
  • pure - Is a lightweight HTTP router that sticks to the std "net/http" implementation.
  • Siesta - Composable framework to write middleware and handlers.
  • vestigo - Performant, stand-alone, HTTP compliant URL Router for go web applications.
  • violetear - Go HTTP router.
  • xmux - High performance muxer based on httprouter with net/context support.
  • xujiajun/gorouter - A simple and fast HTTP router for Go.

Windows

  • d3d9 - Go bindings for Direct3D9.
  • go-ole - Win32 OLE implementation for golang.
  • gosddl - Converter from SDDL-string to user-friendly JSON. SDDL consist of four part: Owner, Primary Group, DACL, SACL.

XML

Libraries and tools for manipulating XML.

  • XML-Comp - Simple command line XML comparer that generates diffs of folders, files and tags.
  • xml2map - XML to MAP converter written Golang.
  • xmlwriter - Procedural XML generation API based on libxml2's xmlwriter module.
  • xpath - XPath package for Go.
  • xquery - XQuery lets you extract data from HTML/XML documents using XPath expression.
  • zek - Generate a Go struct from XML.

Tools

Go software and plugins.

Code Analysis

  • apicompat - Checks recent changes to a Go project for backwards incompatible changes.
  • dupl - Tool for code clone detection.
  • errcheck - Errcheck is a program for checking for unchecked errors in Go programs.
  • gcvis - Visualise Go program GC trace data in real time.
  • go-checkstyle - checkstyle is a style check tool like java checkstyle. This tool inspired by java checkstyle, golint. The style referred to some points in Go Code Review Comments.
  • go-cleanarch - go-cleanarch was created to validate Clean Architecture rules, like a The Dependency Rule and interaction between packages in your Go projects.
  • go-critic - source code linter that brings checks that are currently not implemented in other linters.
  • go-mod-outdated - An easy way to find outdated dependencies of your Go projects.
  • go-outdated - Console application that displays outdated packages.
  • goast-viewer - Web based Golang AST visualizer.
  • GoCover.io - GoCover.io offers the code coverage of any golang package as a service.
  • goimports - Tool to fix (add, remove) your Go imports automatically.
  • GolangCI - GolangCI is an automated Golang code review service for GitHub pull requests. Service is open source and it's free for open source projects.
  • GoLint - Golint is a linter for Go source code.
  • Golint online - Lints online Go source files on GitHub, Bitbucket and Google Project Hosting using the golint package.
  • goreturns - Adds zero-value return statements to match the func return types.
  • gosimple - gosimple is a linter for Go source code that specialises on simplifying code.
  • gostatus - Command line tool, shows the status of repositories that contain Go packages.
  • lint - Run linters as part of go test.
  • php-parser - A Parser for PHP written in Go.
  • staticcheck - staticcheck is go vet on steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#.
  • tarp - tarp finds functions and methods without direct unit tests in Go source code.
  • unconvert - Remove unnecessary type conversions from Go source.
  • unused - unused checks Go code for unused constants, variables, functions and types.
  • validate - Automatically validates struct fields with tags.

Editor Plugins

  • Go plugin for JetBrains IDEs - Go plugin for JetBrains IDEs.
  • go-language-server - A wrapper to turn the VSCode go extension into a language server supporting the language-server-protocol.
  • go-mode - Go mode for GNU/Emacs.
  • go-plus - Go (Golang) Package For Atom That Adds Autocomplete, Formatting, Syntax Checking, Linting and Vetting.
  • gocode - Autocompletion daemon for the Go programming language.
  • goprofiling - This extension adds benchmark profiling support for the Go language to VS Code.
  • GoSublime - Golang plugin collection for the text editor SublimeText 3 providing code completion and other IDE-like features.
  • gounit-vim - Vim plugin for generating Go tests based on the function's or method's signature.
  • theia-go-extension - Go language support for the Theia IDE.
  • vim-compiler-go - Vim plugin to highlight syntax errors on save.
  • vim-go - Go development plugin for Vim.
  • vscode-go - Extension for Visual Studio Code (VS Code) which provides support for the Go language.
  • Watch - Runs a command in an acme win on file changes.

Go Generate Tools

  • generic - flexible data type for Go.
  • genny - Elegant generics for Go.
  • gocontracts - brings design-by-contract to Go by synchronizing the code with the documentation.
  • gonerics - Idiomatic Generics in Go.
  • gotests - Generate Go tests from your source code.
  • gounit - Generate Go tests using your own templates.
  • hasgo - Generate Haskell inspired functions for your slices.
  • re2dfa - Transform regular expressions into finite state machines and output Go source code.
  • TOML-to-Go - Translates TOML into a Go type in the browser instantly.

Go Tools

  • colorgo - Wrapper around go command for colorized go build output.
  • depth - Visualize dependency trees of any package by analyzing imports.
  • gb - An easy to use project based build tool for the Go programming language.
  • generator-go-lang - A Yeoman generator to get new Go projects started.
  • gilbert - Build system and task runner for Go projects.
  • go-callvis - Visualize call graph of your Go program using dot format.
  • go-pkg-complete - Bash completion for go and wgo.
  • go-swagger - Swagger 2.0 implementation for go. Swagger is a simple yet powerful representation of your RESTful API.
  • godbg - Implementation of Rusts dbg! macro for quick and easy debugging during development.
  • OctoLinker - Navigate through go files efficiently with the OctoLinker browser extension for GitHub.
  • richgo - Enrich go test outputs with text decorations.
  • rts - RTS: response to struct. Generates Go structs from server responses.

Software Packages

Software written in Go.

DevOps Tools

  • aptly - aptly is a Debian repository management tool.
  • aurora - Cross-platform web-based Beanstalkd queue server console.
  • awsenv - Small binary that loads Amazon (AWS) environment variables for a profile.
  • Blast - A simple tool for API load testing and batch jobs.
  • bombardier - Fast cross-platform HTTP benchmarking tool.
  • bosun - Time Series Alerting Framework.
  • DepCharge - Helps orchestrating the execution of commands across the many dependencies in larger projects.
  • dogo - Monitoring changes in the source file and automatically compile and run (restart).
  • drone-jenkins - Trigger downstream Jenkins jobs using a binary, docker or Drone CI.
  • drone-scp - Copy files and artifacts via SSH using a binary, docker or Drone CI.
  • Dropship - Tool for deploying code via cdn.
  • easyssh-proxy - Golang package for easy remote execution through SSH and SCP downloading via ProxyCommand.
  • fac - Command-line user interface to fix git merge conflicts.
  • gaia - Build powerful pipelines in any programming language.
  • Gitea - Fork of Gogs, entirely community driven.
  • gitea-github-migrator - Migrate all your GitHub repositories, issues, milestones and labels to your Gitea instance.
  • go-furnace - Hosting solution written in Go. Deploy your Application with ease on AWS, GCP or DigitalOcean.
  • go-selfupdate - Enable your Go applications to self update.
  • gobrew - gobrew lets you easily switch between multiple versions of go.
  • godbg - Web-based gdb front-end application.
  • Gogs - A Self Hosted Git Service in the Go Programming Language.
  • gonative - Tool which creates a build of Go that can cross compile to all platforms while still using the Cgo-enabled versions of the stdlib packages.
  • govvv - “go build” wrapper to easily add version information into Go binaries.
  • gox - Dead simple, no frills Go cross compile tool.
  • goxc - build tool for Go, with a focus on cross-compiling and packaging.
  • grapes - Lightweight tool designed to distribute commands over ssh with ease.
  • GVM - GVM provides an interface to manage Go versions.
  • Hey - Hey is a tiny program that sends some load to a web application.
  • kala - Simplistic, modern, and performant job scheduler.
  • kcli - Command line tool for inspecting kafka topics/partitions/messages.
  • kubernetes - Container Cluster Manager from Google.
  • lstags - Tool and API to sync Docker images across different registries.
  • lwc - A live-updating version of the UNIX wc command.
  • manssh - manssh is a command line tool for managing your ssh alias config easily.
  • Moby - Collaborative project for the container ecosystem to assemble container-based systems.
  • Mora - REST server for accessing MongoDB documents and meta data.
  • ostent - collects and displays system metrics and optionally relays to Graphite and/or InfluxDB.
  • Packer - Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.
  • Pewpew - Flexible HTTP command line stress tester.
  • Pomerium - Pomerium is an identity-aware access proxy.
  • Rodent - Rodent helps you manage Go versions, projects and track dependencies.
  • s3gof3r - Small utility/library optimized for high speed transfer of large objects into and out of Amazon S3.
  • Scaleway-cli - Manage BareMetal Servers from Command Line (as easily as with Docker).
  • script - Making it easy to write shell-like scripts in Go for DevOps and system administration tasks.
  • sg - Benchmarks a set of HTTP endpoints (like ab), with possibility to use the response code and data between each call for specific server stress based on its previous response.
  • skm - SKM is a simple and powerful SSH Keys Manager, it helps you to manage your multiple SSH keys easily!
  • StatusOK - Monitor your Website and REST APIs.Get Notified through Slack, E-mail when your server is down or response time is more than expected.
  • traefik - Reverse proxy and load balancer with support for multiple backends.
  • Vegeta - HTTP load testing tool and library. It's over 9000!
  • webhook - Tool which allows user to create HTTP endpoints (hooks) that execute commands on the server.
  • Wide - Web-based IDE for Teams using Golang.
  • winrm-cli - Cli tool to remotely execute commands on Windows machines.

Other Software

  • borg - Terminal based search engine for bash snippets.
  • boxed - Dropbox based blog engine.
  • Cherry - Tiny webchat server in Go.
  • Circuit - Circuit is a programmable platform-as-a-service (PaaS) and/or Infrastructure-as-a-Service (IaaS), for management, discovery, synchronization and orchestration of services and hosts comprising cloud applications.
  • Comcast - Simulate bad network connections.
  • confd - Manage local application configuration files using templates and data from etcd or consul.
  • DDNS - Personal DDNS client with Digital Ocean Networking DNS as backend.
  • Docker - Open platform for distributed applications for developers and sysadmins.
  • Documize - Modern wiki software that integrates data from SaaS tools.
  • drive - Google Drive client for the commandline.
  • Duplicacy - A cross-platform network and cloud backup tool based on the idea of lock-free deduplication.
  • gfile - Securely transfer files between two computers, without any third party, over WebRTC.
  • Go Package Store - App that displays updates for the Go packages in your GOPATH.
  • go-peerflix - Video streaming torrent client.
  • GoBoy - Nintendo Game Boy Color emulator written in Go.
  • gocc - Gocc is a compiler kit for Go written in Go.
  • GoDNS - A dynamic DNS client tool, supports DNSPod & HE.net, written in Go.
  • GoDocTooltip - Chrome extension for Go Doc sites, which shows function description as tooltip at function list.
  • GoLand - Full featured cross-platform Go IDE.
  • Gor - Http traffic replication tool, for replaying traffic from production to stage/dev environments in real-time.
  • hugo - Fast and Modern Static Website Engine.
  • ide - Browser accessible IDE. Designed for Go with Go.
  • ipe - Open source Pusher server implementation compatible with Pusher client libraries written in GO.
  • joincap - Command-line utility for merging multiple pcap files together.
  • Juju - Cloud-agnostic service deployment and orchestration - supports EC2, Azure, Openstack, MAAS and more.
  • Leaps - Pair programming service using Operational Transforms.
  • lgo - Interactive Go programming with Jupyter. It supports code completion, code inspection and 100% Go compatibility.
  • limetext - Lime Text is a powerful and elegant text editor primarily developed in Go that aims to be a Free and open-source software successor to Sublime Text.
  • LiteIDE - LiteIDE is a simple, open source, cross-platform Go IDE.
  • mockingjay - Fake HTTP servers and consumer driven contracts from one configuration file. You can also make the server randomly misbehave to help do more realistic performance tests.
  • myLG - Command Line Network Diagnostic tool written in Go.
  • naclpipe - Simple NaCL EC25519 based crypto pipe tool written in Go.
  • nes - Nintendo Entertainment System (NES) emulator written in Go.
  • orange-cat - Markdown previewer written in Go.
  • Orbit - A simple tool for running commands and generating files from templates.
  • peg - Peg, Parsing Expression Grammar, is an implementation of a Packrat parser generator.
  • Pipe - A small and beautiful blogging platform.
  • restic - De-duplicating backup program.
  • scc - Sloc Cloc and Code, a very fast accurate code counter with complexity calculations and COCOMO estimates.
  • Seaweed File System - Fast, Simple and Scalable Distributed File System with O(1) disk seek.
  • shell2http - Executing shell commands via http server (for prototyping or remote control).
  • snap - Powerful telemetry framework.
  • Snitch - Simple way to notify your team and many tools when someone has deployed any application via Tsuru.
  • Stack Up - Stack Up, a super simple deployment tool - just Unix - think of it like 'make' for a network of servers.
  • syncthing - Open, decentralized file synchronization tool and protocol.
  • term-quiz - Quizzes for your terminal.
  • toxiproxy - Proxy to simulate network and system conditions for automated tests.
  • tsuru - Extensible and open source Platform as a Service software.
  • vFlow - High-performance, scalable and reliable IPFIX, sFlow and Netflow collector.
  • wellington - Sass project management tool, extends the language with sprite functions (like Compass).

Resources

Where to discover new Go libraries.

Benchmarks

  • autobench - Framework to compare the performance between different Go versions.
  • go-benchmark-app - Powerful HTTP-benchmark tool mixed with Аb, Wrk, Siege tools. Gathering statistics and various parameters for benchmarks and comparison results.
  • go-benchmarks - Few miscellaneous Go microbenchmarks. Compare some language features to alternative approaches.
  • go-http-routing-benchmark - Go HTTP request router benchmark and comparison.
  • go-web-framework-benchmark - Go web framework benchmark.
  • go_serialization_benchmarks - Benchmarks of Go serialization methods.
  • gocostmodel - Benchmarks of common basic operations for the Go language.
  • golang-sql-benchmark - Collection of benchmarks for popular Go database/SQL utilities.
  • gospeed - Go micro-benchmarks for calculating the speed of language constructs.
  • kvbench - Key/Value database benchmark.
  • skynet - Skynet 1M threads microbenchmark.
  • speedtest-resize - Compare various Image resize algorithms for the Go language.

Conferences

E-Books

Gophers

Meetups

Add the group of your city/country here (send PR)

Twitter

Websites

Tutorials

 

原文:https://github.com/avelino/awesome-go

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of awesome Go frameworks, libraries and software

【Javascript精选】一系列很棒的的浏览器端JavaScript库,资源

Chinese, Simplified

A collection of awesome browser-side JavaScript libraries, resources and shiny things.


Package Managers

Host the JavaScript libraries and provide tools for fetching and packaging them.

  • npm - npm is the package manager for JavaScript.
  • Bower - A package manager for the web.
  • component - Client package management for building better web applications.
  • spm - Brand new static package manager.
  • jam - A package manager using a browser-focused and RequireJS compatible repository.
  • jspm - Frictionless browser package management.
  • Ender - The no-library library.
  • volo - Create front end projects from templates, add dependencies, and automate the resulting projects.
  • Duo - Next-generation package manager that blends the best ideas from Component, Browserify and Go to make organizing and writing front-end code quick and painless.
  • yarn - Fast, reliable, and secure dependency management.

Loaders

Module or loading system for JavaScript.

  • RequireJS - A file and module loader for JavaScript.
  • browserify - Browser-side require() the node.js way.
  • SeaJS - A Module Loader for the Web.
  • HeadJS - The only script in your HEAD.
  • curl - A small, fast, extensible module loader that handles AMD, CommonJS Modules/1.1, CSS, HTML/text, and legacy scripts.
  • lazyload - Tiny, dependency-free async JavaScript and CSS loader.
  • script.js - Asynchronous JavaScript loader and dependency manager.
  • systemjs - AMD, CJS & ES6 spec-compliant module loader.
  • LodJS - Module loader based on AMD.
  • ESL - Module loader browser first, support lazy define and AMD.
  • modulejs - Lightweight JavaScript module system.

Bundlers

  • browserify - Browserify lets you require('modules') in the browser by bundling up all of your dependencies.
  • webpack - Packs CommonJs/AMD modules for the browser.
  • Rollup - Next-generation ES6 module bundler.
  • Brunch - Fast front-end web app build tool with simple declarative config.
  • Parcel - Blazing fast, zero configuration web application bundler.

Testing Frameworks

Frameworks

  • mocha - Simple, flexible, fun JavaScript test framework for node.js & the browser.
  • jasmine - DOM-less simple JavaScript testing framework.
  • qunit - An easy-to-use JavaScript Unit Testing framework.
  • jest - Painless JavaScript Unit Testing.
  • prova - Node & Browser test runner based on Tape and Browserify
  • DalekJS - Automated cross browser functional testing with JavaScript
  • Protractor - Protractor is an end-to-end test framework for AngularJS applications.
  • tape - Tap-producing test harness for node and browsers.
  • TestCafe - Automated browser testing for the modern web development stack.
  • ava - ? Futuristic JavaScript test runner

Assertion

  • chai - BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.
  • Enzyme - Enzyme is a JavaScript Testing utility for React that makes it easier to assert, manipulate, and traverse your React Components' output.
  • react testing library - Simple and complete React DOM testing utilities that encourage good testing practices.
  • Sinon.JS - Test spies, stubs, and mocks for JavaScript.
  • expect.js - Minimalistic BDD-style assertions for Node.JS and the browser.

Coverage

  • istanbul - Yet another JS code coverage tool.
  • blanket - A simple code coverage library for JavaScript. Designed to be easy to install and use, for both browser and nodejs.
  • JSCover - JSCover is a tool that measures code coverage for JavaScript programs.

Runner

  • phantomjs - Scriptable Headless WebKit.
  • slimerjs - A PhantomJS-like tool running Gecko.
  • casperjs - Navigation scripting & testing utility for PhantomJS and SlimerJS.
  • zombie - Insanely fast, full-stack, headless browser testing using node.js.
  • totoro - A simple and stable cross-browser testing tool.
  • karma - Spectacular Test Runner for JavaScript.
  • nightwatch - UI automated testing framework based on node.js and selenium webdriver.
  • intern - A next-generation code testing stack for JavaScript.
  • yolpo - A statement-by-statement JavaScript interpreter in the browser.

QA Tools

  • prettier - Prettier is an opinionated code formatter.
  • JSHint - JSHint is a tool that helps to detect errors and potential problems in your JavaScript code.
  • jscs - JavaScript Code Style checker.
  • jsfmt - For formatting, searching, and rewriting JavaScript.
  • jsinspect - Detect copy-pasted and structurally similar code.
  • buddy.js - Magic number detection for JavaScript.
  • ESLint - A fully pluggable tool for identifying and reporting on patterns in JavaScript.
  • JSLint - High-standards, strict & opinionated code quality tool, aiming to keep only good parts of the language.
  • JavaScript Standard Style - Opinionated, no-configuration style guide, style checker, and formatter

MVC Frameworks and Libraries

  • angular.js - HTML enhanced for web apps.
  • aurelia - A JavaScript client framework for mobile, desktop and web.
  • backbone - Give your JS App some Backbone with Models, Views, Collections, and Events.
  • ember.js - A JavaScript framework for creating ambitious web applications.
  • meteor - An ultra-simple, database-everywhere, data-on-the-wire, pure-javascript web framework.
  • ractive - Next-generation DOM manipulation.
  • vue - Intuitive, fast & composable MVVM for building interactive interfaces.
  • knockout - Knockout makes it easier to create rich, responsive UIs with JavaScript.
  • spine - Lightweight MVC library for building JavaScript applications.
  • espresso.js - A minimal JavaScript library for crafting user interfaces.
  • canjs - Can do JS, better, faster, easier.
  • react - A library for building user interfaces. It's declarative, efficient, and extremely flexible. Works with a Virtual DOM.
  • hyperapp - 1kb JavaScript library for building frontend applications.
  • preact - Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM.
  • nativescript - Build truly native cross-platform iOS and Android apps with JavaScript.
  • react-native - A framework for building native apps with React.
  • riot - React-like library, but with very small size.
  • thorax - Strengthening your Backbone.
  • chaplin - An architecture for JavaScript applications using the Backbone.js library.
  • marionette - A composite application library for Backbone.js that aims to simplify the construction of large scale JavaScript applications.
  • ripple - A tiny foundation for building reactive views.
  • rivets - Lightweight and powerful data binding + templating solution.
  • derby - MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.
  • way.js - Simple, lightweight, persistent two-way databinding.
  • mithril.js - Mithril is a client-side MVC framework (Light-weight, Robust, Fast).
  • jsblocks - jsblocks is better MV-ish framework.
  • LiquidLava - Transparent MVC framework for building user interfaces.
  • feathers - A minimalist real-time JavaScript framework for tomorrow's apps.
  • Keo - Functional stateless React components with Shadow DOM support.
  • atvjs - Blazing fast Apple TV application development using pure JavaScript.

Node-Powered CMS Frameworks

  • KeystoneJS - powerful CMS and web app framework.
  • Reaction Commerce - reactive CMS, real-time architecture and design.
  • Ghost - simple, powerful publishing platform.
  • Apostrophe - CMS with content editing and essential services.
  • We.js - framework for real time apps, sites or blogs.
  • Hatch.js - CMS platform with social features.
  • TaracotJS - fast and minimalist CMS based on Node.js.
  • Nodizecms - CMS for CoffeeScript lovers.
  • Cody - CMS with WSYWYG editor.
  • PencilBlue - CMS and blogging platform.

Templating Engines

Templating engines allow you to perform string interpolation.

  • mustache.js - Minimal templating with {{mustaches}} in JavaScript.
  • handlebars.js - An extension to the Mustache templating language.
  • nunjucks - A rich and powerful templating language for JavaScript from Mozilla.
  • hogan.js - A compiler for the Mustache templating language.
  • doT - The fastest + concise JavaScript template engine for nodejs and browsers.
  • dustjs - Asynchronous templates for the browser and node.js.
  • eco - Embedded CoffeeScript templates.
  • JavaScript-Templates - < 1KB lightweight, fast & powerful JavaScript templating engine with zero dependencies.
  • t.js - A tiny JavaScript templating framework in ~400 bytes gzipped.
  • Pug - Robust, elegant, feature rich template engine for nodejs. (formerly known as Jade)
  • EJS - Effective JavaScript templating.
  • xtemplate - eXtensible Template Engine lib for node and the browser
  • marko - A fast, lightweight, HTML-based templating engine for Node.js and the browser with async, streaming, custom tags and CommonJS modules as compiled output.
  • swig - A simple, powerful, and extendable Node.js and browser-based JavaScript template engine.

Articles and Posts

Data Visualization

Data visualization tools for the web.

  • d3 - A JavaScript visualization library for HTML and SVG.
    • metrics-graphics - A library optimized for concise, principled data graphics and layouts.
  • pykcharts.js - Well designed d3.js charting without the complexity of d3.js.
  • three.js - JavaScript 3D library.
  • Chart.js - Simple HTML5 Charts using the tag.
  • paper.js - The Swiss Army Knife of Vector Graphics Scripting – Scriptographer ported to JavaScript and the browser, using HTML5 Canvas.
  • fabric.js - JavaScript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser.
  • peity - Progressive bar, line and pie charts.
  • raphael - JavaScript Vector Library.
  • echarts - Enterprise Charts.
  • vis - Dynamic, browser-based visualization library.
  • two.js - A renderer agnostic two-dimensional drawing api for the web.
  • g.raphael - Charts for Raphaël.
  • sigma.js - A JavaScript library dedicated to graph drawing.
  • arbor - A graph visualization library using web workers and jQuery.
  • cubism - A D3 plugin for visualizing time series.
  • dc.js - Multi-Dimensional charting built to work natively with crossfilter rendered with d3.js
  • vega - A visualization grammar.
  • processing.js - Processing.js makes your data visualizations work using web standards and without any plug-ins.
  • envisionjs - Dynamic HTML5 visualization.
  • rickshaw - JavaScript toolkit for creating interactive real-time graphs.
  • flot - Attractive JavaScript charts for jQuery.
  • morris.js - Pretty time-series line graphs.
  • nvd3 - Build re-usable charts and chart components for d3.js.
  • svg.js - A lightweight library for manipulating and animating SVG.
  • heatmap.js - JavaScript Library for HTML5 canvas based heatmaps.
  • jquery.sparkline - A plugin for the jQuery JavaScript library to generate small sparkline charts directly in the browser.
  • xCharts - A D3-based library for building custom charts and graphs.
  • trianglify - Low poly style background generator with d3.js.
  • d3-cloud - Create word clouds in JavaScript.
  • d4 - A friendly reusable charts DSL for D3.
  • dimple.js - Easy charts for business analytics powered by d3.
  • chartist-js - Simple responsive charts.
  • epoch - A general purpose real-time charting library.
  • c3 - D3-based reusable chart library.
  • BabylonJS - A framework for building 3D games with HTML 5 and WebGL.
  • recharts - Redefined chart library built with React and D3.
  • GraphicsJS - A lightweight JavaScript graphics library with the intuitive API, based on SVG/VML technology.
  • mxGraph - Diagramming library that enables interactive graph and charting applications to be quickly created that run natively in any major browser that is supported by its vendor.

There're also some great commercial libraries, like amchartanychartplotly, and highchart.

Timeline

  • TimelineJS v3 - A Storytelling Timeline built in JavaScript.
  • timesheet.js - JavaScript library for simple HTML5 & CSS3 time sheets.

Spreadsheet

  • HANDSONTABLE - Handsontable is a JavaScript/HTML5 Spreadsheet Library for Developers

Editors

  • ace - Ace (Ajax.org Cloud9 Editor).
  • CodeMirror - In-browser code editor.
  • esprima - ECMAScript parsing infrastructure for multipurpose analysis.
  • quill - A cross browser rich text editor with an API.
  • medium-editor - Medium.com WYSIWYG editor clone.
  • pen - enjoy live editing (+markdown).
  • jquery-notebook - A simple, clean and elegant text editor. Inspired by the awesomeness of Medium.
  • bootstrap-wysiwyg - Tiny bootstrap-compatible WYSIWYG rich text editor.
  • ckeditor-releases - The best web text editor for everyone.
  • editor - A markdown editor. still on development.
  • EpicEditor - An embeddable JavaScript Markdown editor with split fullscreen editing, live previewing, automatic draft saving, offline support, and more.
  • jsoneditor - A web-based tool to view, edit and format JSON.
  • vim.js - JavaScript port of Vim with a persistent ~/.vimrc.
  • Squire - HTML5 rich text editor.
  • TinyMCE - The JavaScript Rich Text editor.
  • trix - A rich text editor for everyday writing. By Basecamp.
  • Trumbowyg - A lightweight and amazing WYSIWYG JavaScript editor.
  • Draft.js - A React framework for building text editors.
  • bootstrap-wysihtml5 - Simple, beautiful wysiwyg editor
  • wysihtml5 - Open source rich text editor based on HTML5 and the progressive-enhancement approach. Uses a sophisticated security concept and aims to generate fully valid HTML5 markup by preventing unmaintainable tag soups and inline styles.
  • raptor-editor - Raptor, an HTML5 WYSIWYG content editor!
  • popline - Popline is an HTML5 Rich-Text-Editor Toolbar.

Documentation

  • DevDocs is an all-in-one API documentation reader with a fast, organized, and consistent interface.
  • dexy is a free-form literate documentation tool for writing any kind of technical document incorporating code.
  • docco is a quick-and-dirty, hundred-line-long, literate-programming-style documentation generator.
  • styledocco generates documentation and style guide documents from your stylesheets.
  • Ronn builds manuals. It converts simple, human readable textfiles to roff for terminal display, and also to HTML for the web.
  • dox is a JavaScript documentation generator written with node. Dox no longer generates an opinionated structure or style for your docs, it simply gives you a JSON representation, allowing you to use markdown and JSDoc-style tags.
  • jsdox is a JSDoc3 to Markdown documentation generator.
  • ESDoc is a good documentation generator for JavaScript.
  • YUIDoc is a Node.js application that generates API documentation from comments in source, using a syntax similar to tools like Javadoc and Doxygen.
  • coddoc is a jsdoc parsing library. Coddoc is different in that it is easily extensible by allowing users to add tag and code parsers through the use of coddoc.addTagHandler and coddoc.addCodeHandler. coddoc also parses source code to be used in APIs.
  • sphinx a tool that makes it easy to create intelligent and beautiful documentation
  • Using JSDoc
  • Beautiful docs is a documentation viewer based on markdown files.
  • documentation.js - API documentation generator with support for ES2015+ and flow annotation.
  • jsduck - API documentation generator made for Sencha JavaScript frameworks, but can be used for other frameworks too.

Files

Libraries for working with files.

  • Papa Parse - A powerful CSV library that supports parsing CSV files/strings and also exporting to CSV.
  • jBinary - High-level I/O (loading, parsing, manipulating, serializing, saving) for binary files with declarative syntax for describing file types and data structures.
  • diff2html - Git diff output parser and pretty HTML generator.
  • jsPDF - JavaScript PDF generation.
  • PDF.js - PDF Reader in JavaScript.

Functional Programming

Functional programming libraries to extend JavaScript’s capabilities.

  • underscore - JavaScript's utility _ belt.
  • lodash - A utility library delivering consistency, customization, performance, & extras.
  • Sugar - A JavaScript library for working with native objects.
  • lazy.js - Like Underscore, but lazier.
  • ramda - A practical functional library for JavaScript programmers.
  • mout - Modular JavaScript Utilities.
  • mesh - Streamable data synchronization utility.
  • preludejs - Hardcore Functional Programming for JavaScript.

Reactive Programming

Reactive programming libraries to extend JavaScript’s capabilities.

  • RxJs - The Reactive Extensions for JavaScript.
  • Bacon - FRP (functional reactive programming) library for JavaScript.
  • Kefir - FRP library for JavaScript inspired by Bacon.js and RxJS with focus on high performance and low memory consumption.
  • Highland - Re-thinking the JavaScript utility belt, Highland manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
  • Most.js - high performance FRP library.
  • MobX - TFRP library for simple, scalable state management.
  • Cycle.js - A functional and reactive JavaScript library for cleaner code.

Data Structure

Data structure libraries to build a more sophisticated application.

  • immutable-js - Immutable Data Collections including Sequence, Range, Repeat, Map, OrderedMap, Set and a sparse Vector.
  • mori - A library for using ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript.
  • buckets - A complete, fully tested and documented data structure library written in JavaScript.
  • hashmap - Simple hashmap implementation that supports any kind of keys.

Date

Date Libraries.

  • moment - Parse, validate, manipulate, and display dates in JavaScript.
  • moment-timezone - Timezone support for moment.js.
  • jquery-timeago - A jQuery plugin that makes it easy to support automatically updating fuzzy timestamps (e.g. "4 minutes ago").
  • timezone-js - Timezone-enabled JavaScript Date object. Uses Olson zoneinfo files for timezone data.
  • date - Date() for humans.
  • ms.js - Tiny millisecond conversion utility.
  • countdown.js - Super simple countdowns.
  • timeago.js - Simple library (less then 2kb) used to format date with *** time ago statement.
  • fecha - Lightweight date formatting and parsing (~2KB). Meant to replace parsing and formatting functionality of moment.js.
  • date-fns - Modern JavaScript date utility library.
  • map-countdown - A browser countdown built on top of the Google Maps

String

String Libraries.

  • voca - The ultimate JavaScript string library
  • selecting - A library that allows you to access the text selected by the user.
  • underscore.string - String manipulation extensions for Underscore.js JavaScript library.
  • string.js - Extra JavaScript string methods.
  • he - A robust HTML entity encoder/decoder written in JavaScript.
  • multiline - Multiline strings in JavaScript.
  • query-string - Parse and stringify URL query strings.
  • URI.js - JavaScript URL mutation library.
  • jsurl - Lightweight URL manipulation with JavaScript.
  • sprintf.js - A sprintf implementation.
  • url-pattern - Easier than regex string matching patterns for urls and other strings. Turn strings into data or data into strings.

Number

  • Numeral-js - A JavaScript library for formatting and manipulating numbers.
  • chance.js - Random generator helper in JavaScript. Can generate numbers, strings etc.
  • odometer - Smoothly transitions numbers with ease.
  • accounting.js - A lightweight JavaScript library for number, money and currency formatting - fully localisable, zero dependencies.
  • money.js - A tiny (1kb) JavaScript currency conversion library, for web & nodeJS.
  • Fraction.js - A rational number library for JavaScript.
  • Complex.js - A complex number library for JavaScript.
  • Polynomial.js - A polynomials library for JavaScript.

Storage

  • store.js - LocalStorage wrapper for all browsers without using cookies or flash. Uses localStorage, globalStorage, and userData behavior under the hood.
  • localForage - Offline storage, improved. Wraps IndexedDB, WebSQL, or localStorage using a simple but powerful API.
  • jStorage - jStorage is a simple key/value database to store data on browser side.
  • cross-storage - Cross domain local storage, with permissions.
  • basket.js - A script and resource loader for caching & loading scripts with localStorage.
  • bag.js - A caching script and resource loader, similar to basket.js, but with additional k/v interface and localStorage / websql / indexedDB support.
  • basil.js - The missing JavaScript smart persistent layer.
  • jquery-cookie - A simple, lightweight jQuery plugin for reading, writing and deleting cookies.
  • js-cookie - A simple, lightweight JavaScript API for handling browser cookies.
  • Cookies - JavaScript Client-Side Cookie Manipulation Library.
  • DB.js - Promise based IndexDB Wrapper library.
  • lawnchair.js - Simple client-side JSON storage.
  • sql.js - SQLite compiled to JavaScript through Emscripten.

Color

  • randomColor - A color generator for JavaScript.
  • chroma.js - JavaScript library for all kinds of color manipulations.
  • color - JavaScript color conversion and manipulation library.
  • colors - Smarter defaults for colors on the web.
  • PleaseJS - JavaScript Library for creating random pleasing colors and color schemes.
  • TinyColor - Fast, small color manipulation and conversion for JavaScript.
  • Vibrant.js - Extract prominent colors from an image.

I18n And L10n

Localization (l10n) and internationalization (i18n) JavaScript libraries.

  • i18next - internationalisation (i18n) with JavaScript the easy way.
  • polyglot - tiny i18n helper library.
  • babelfish - i18n with human friendly API and built in plurals support.
  • ttag - Modern javascript i18n localization library based on ES6 tagged templates and the good old GNU gettext.

Control Flow

  • async - Async utilities for node and the browser.
  • q - A tool for making and composing asynchronous promises in JavaScript.
  • step - An async control-flow library that makes stepping through logic easy.
  • contra - Asynchronous flow control with a functional taste to it.
  • Bluebird - fully featured promise library with focus on innovative features and performance.
  • when - A solid, fast Promises/A+ and when() implementation, plus other async goodies.
  • ObjectEventTarget - Provide a prototype that add support to event listeners (with same behavior of EventTarget from DOMElements available on browsers).

Routing

  • director - A tiny and isomorphic URL router for JavaScript.
  • page.js - Micro client-side router inspired by the Express router (~1200 bytes).
  • pathjs - Simple, lightweight routing for web browsers.
  • crossroads - JavaScript Routes.
  • davis.js - RESTful degradable JavaScript routing using pushState.

Security

  • DOMPurify - A DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG.
  • js-xss - Sanitize untrusted HTML (to prevent XSS) with a configuration specified by a Whitelist.
  • xss-filters - Secure XSS Filters by Yahoo.

Log

  • log - Console.log with style.
  • Conzole - A debug panel built in JavaScript that wraps JavaScript native console object methods and functionality in a panel displayed inside the page.
  • console.log-wrapper - Log to the console in any browser with clarity.
  • loglevel - Minimal lightweight logging for JavaScript, adding reliable log level methods to wrap any available console.log methods.
  • minilog – Lightweight client & server-side logging with Stream-API backends.
  • storyboard - Universal logging library + Chrome extension; it lets you see all client and server tasks triggered by a user action in a single place.

RegExp

  • RegEx101 - Online regex tester and debugger for JavaScript. Also supports Python, PHP and PCRE.
  • RegExr - HTML/JS based tool for creating, testing, and learning about Regular Expressions.
  • RegExpBuilder - Create regular expressions using chained methods.

Voice Command

  • annyang - A JavaScript library for adding voice commands to your site, using speech recognition.
  • voix.js - A JavaScript library to add voice commands to your sites, apps or games.

API

  • axios - Promise based HTTP client for the browser and node.js.
  • bottleneck - A powerful rate limiter that makes throttling easy.
  • oauth-signature-js - JavaScript OAuth 1.0a signature generator for node and the browser.
  • amygdala - RESTful HTTP client for JavaScript powered web applications.
  • jquery.rest - A jQuery plugin for easy consumption of RESTful APIs.
  • Rails Ranger - An opinionated REST client for Ruby on Rails APIs.

Streaming

  • Tailor - Streaming layout service for front-end microservices, inspired by Facebook's BigPipe.

Vision Detection

  • tracking.js - A modern approach for Computer Vision on the web.
  • ocrad.js - OCR in JavaScript via Emscripten.

Machine Learning

  • ConvNetJS - Deep Learning in JavaScript. Train Convolutional Neural Networks (or ordinary ones) in your browser.
  • DN2A - Digital Neural Networks Architecture.
  • Brain.js - Neural networks in JavaScript.
  • Mind.js - A flexible neural network library.
  • Synaptic.js - Architecture-free neural network library for node.js and the browser.
  • TensorFlow.js - A JavaScript library for training and deploying ML models in the browser and on Node.js.
  • ml5.js - Friendly Machine Learning for the Web.

Browser Detection

  • bowser - a browser detector.

Benchmark

  • benchmark.js - A benchmarking library. As used on jsPerf.com.
  • matcha - A caffeine driven, simplistic approach to benchmarking.

Code highlighting

  • Highlight.js - JavaScript syntax highlighter.
  • PrismJS - Lightweight, robust, elegant syntax highlighting.

Loading Status

Libraries for indicate load status.

  • Mprogress.js - Create Google Material Design progress linear bars.
  • NProgress - Slim progress bars for Ajax'y applications.
  • Spin.js - A spinning activity indicator.
  • progress.js - Create and manage progress bar for every objects on the page.
  • progressbar.js - Beautiful and responsive progress bars with animated SVG paths.
  • pace - Automatically add a progress bar to your site.
  • topbar - Tiny & beautiful site-wide progress indicator.
  • nanobar - Very lightweight progress bars. No jQuery.
  • PageLoadingEffects - Modern ways of revealing new content using SVG animations.
  • SpinKit - A collection of loading indicators animated with CSS.
  • Ladda - Buttons with built-in loading indicators.
  • css-loaders - A collection of loading spinners animated with CSS

Besides libraries, there're Collection on Codepen, and generators like AjaxloadPreloaders and CSSLoad.

Validation

  • Parsley.js - Validate your forms, frontend, without writing a single line of JavaScript.
  • jquery-validation - jQuery Validation Plugin.
  • validator.js - String validation and sanitization.
  • validate.js - Lightweight JavaScript form validation library inspired by CodeIgniter.
  • validatr - Cross Browser HTML5 Form Validation.
  • FormValidation - The best jQuery plugin to validate form fields. Formerly BootstrapValidator.
  • is.js - Check types, regexps, presence, time and more.
  • FieldVal - multipurpose validation library. Supports both sync and async validation.

Keyboard Wrappers

  • mousetrap - Simple library for handling keyboard shortcuts in JavaScript.
  • keymaster - A simple micro-library for defining and dispatching keyboard shortcuts.
  • Keypress - A keyboard input capturing utility in which any key can be a modifier key.
  • KeyboardJS - A JavaScript library for binding keyboard combos without the pain of key codes and key combo conflicts.
  • jquery.hotkeys - jQuery Hotkeys lets you watch for keyboard events anywhere in your code supporting almost any key combination.
  • jwerty - Awesome handling of keyboard events.

Tours And Guides

  • intro.js - A better way for new feature introduction and step-by-step users guide for your website and project.
  • shepherd - Guide your users through a tour of your app.
  • bootstrap-tour - Quick and easy product tours with Twitter Bootstrap Popovers.
  • tourist - Simple, flexible tours for your app.
  • chardin.js - Simple overlay instructions for your apps.
  • pageguide - An interactive guide for web page elements using jQuery and CSS3.
  • hopscotch - A framework to make it easy for developers to add product tours to their pages.
  • joyride - jQuery feature tour plugin.
  • focusable - Set a spotlight focus on DOM element adding a overlay layer to the rest of the page.

Notifications

  • iziToast - Elegant, responsive, flexible and lightweight notification plugin with no dependencies.
  • messenger - Growl-style alerts and messages for your app.
  • noty - jQuery notification plugin.
  • pnotify - JavaScript notifications for Bootstrap, jQuery UI, and the Web Notifications Draft.
  • toastr - Simple JavaScript toast notifications.
  • humane-js - A simple, modern, browser notification system.
  • smoke.js - Framework-agnostic styled alert system for JavaScript.
  • notie - Simple notifications and inputs with no dependencies.

Sliders

  • Swiper - Mobile touch slider and framework with hardware accelerated transitions.
  • slick - The last carousel you'll ever need.
  • slidesJs - Is a responsive slideshow plug-in for JQuery(1.7.1+) with features like touch and CSS3 transitions
  • FlexSlider - An awesome, fully responsive jQuery slider plugin.
  • unslider - The simplest jQuery slider there is.
  • sly - JavaScript library for one-directional scrolling with item based navigation support.
  • vegas - A jQuery plugin to add beautiful fullscreen backgrounds to your webpages. It even allows Slideshows.
  • Sequence - CSS animation framework for creating responsive sliders, presentations, banners, and other step-based applications.
  • reveal.js - A framework for easily creating beautiful presentations using HTML.
  • impress.js - It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.
  • bespoke.js - DIY Presentation Micro-Framework
  • Strut - Strut - An Impress.js and Bespoke.js Presentation Editor
  • PhotoSwipe - JavaScript image gallery for mobile and desktop, modular, framework independent.
  • jcSlider - A responsive slider jQuery plugin with CSS animations.
  • basic-jquery-slider - Simple to use, simple to theme, simple to customise.
  • jQuery.adaptive-slider - A jQuery plugin for a slider with adaptive colored figcaption and navigation.
  • slidr - add some slide effects.
  • Flickity - Touch, responsive, flickable galleries.
  • Glide.js - Responsive and touch-friendly jQuery slider. It's simple, lightweight and fast.
  • jQuery.adaptive-slider - A jQuery plugin for a slider with adaptive colored figcaption and navigation.
  • Embla Carousel - An extensible low level carousel for the web, written in TypeScript.

Range Sliders

  • Ion.RangeSlider - Powerful and easily customizable range slider with many options and skin support.
  • jQRangeSlider - A JavaScript slider selector that supports dates.
  • noUiSlider - A lightweight, highly customizable range slider without bloat.
  • rangeslider.js - HTML5 input range slider element polyfill.

Form Widgets

Input

  • typeahead.js - A fast and fully-featured autocomplete library.
  • tag-it - A jQuery UI plugin to handle multi-tag fields as well as tag suggestions/autocomplete.
  • At.js - Add GitHub like mentions autocomplete to your application.
  • Placeholders.js - A JavaScript polyfill for the HTML5 placeholder attribute.
  • fancyInput - Makes typing in input fields fun with CSS3 effects.
  • jQuery-Tags-Input - Magically convert a simple text input into a cool tag list with this jQuery plugin.
  • vanilla-masker - A pure JavaScript mask input.
  • Ion.CheckRadio - jQuery plugin for styling checkboxes and radio-buttons. With skin support.
  • awesomplete - Ultra lightweight, usable, beautiful autocomplete with zero dependencies. - http://leaverou.github.io/awesomplete

Calendar

  • pickadate.js - The mobile-friendly, responsive, and lightweight jQuery date & time input picker.
  • bootstrap-datepicker - A datepicker for @twitter bootstrap forked from Stefan Petre's (of eyecon.ro), improvements by @eternicode.
  • Pikaday - A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.
  • fullcalendar - Full-sized drag & drop event calendar (jQuery plugin).
  • rome - A customizable date (and time) picker. Dependency free, opt-in UI.
  • datedropper - datedropper is a jQuery plugin that provides a quick and easy way to manage dates for input fields.

Select

  • selectize.js - Selectize is the hybrid of a textbox and select box. It's jQuery based and it has autocomplete and native-feeling keyboard navigation; useful for tagging, contact lists, etc.
  • select2 - a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.
  • chosen - A library for making long, unwieldy select boxes more friendly.

File Uploader

  • jQuery-File-Upload - File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery.
  • dropzone - Dropzone is an easy to use drag'n'drop library. It supports image previews and shows nice progress bars.
  • flow.js - A JavaScript library providing multiple simultaneous, stable, fault-tolerant and resumable/restartable file uploads via the HTML5 File API.
  • fine-uploader - Multiple file upload plugin with progress-bar, drag-and-drop, direct-to-S3 uploading.
  • FileAPI - A set of JavaScript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.
  • plupload - A JavaScript API for dealing with file uploads it supports features like multiple file selection, file type filtering, request chunking, client side image scaling and it uses different runtimes to achieve this such as HTML 5, Silverlight and Flash.

Other

  • form - jQuery Form Plugin.
  • Garlic.js - Automatically persist your forms' text and select field values locally, until the form is submitted.
  • Countable - A JavaScript function to add live paragraph-, word- and character-counting to an HTML element.
  • card - Make your credit card form better in one line of code.
  • stretchy - Form element autosizing, the way it should be.
  • analytics - A lightweight, extendable analytics library designed to work with any third-party analytics provider to track page views, custom events, & identify users.

Tips

  • tipsy - Facebook-style tooltips plugin for jQuery.
  • opentip - An open source JavaScript tooltip based on the prototype framework.
  • qTip2 - Pretty powerful tooltips.
  • tooltipster - A jQuery tooltip plugin.
  • simptip - A simple CSS tooltip made with Sass.
  • jquery-popup-overlay - jQuery plugin for responsive and accessible modal windows and tooltips.
  • toolbar - A tooltip style toolbar jQuery plugin
  • hint.css - A tooltip library in CSS for your lovely websites.

Modals and Popups

  • Magnific-Popup - Light and responsive lightbox script with focus on performance.
  • jquery-popbox - jQuery PopBox UI Element.
  • jquery.avgrund.js - A jQuery plugin with new modal concept for popups.
  • vex - A modern dialog library which is highly configurable and easy to style.
  • bootstrap-modal - Extends the default Bootstrap Modal class. Responsive, stackable, ajax and more.
  • css-modal - A modal built out of pure CSS.
  • jquery-popup-overlay - jQuery plugin for responsive and accessible modal windows and tooltips.
  • SweetAlert - An awesome replacement for JavaScript's alert.
  • baguetteBox.js - Simple and easy to use lightbox script written in pure JavaScript.
  • colorbox - A light-weight, customizable lightbox plugin for jQuery.
  • fancyBox - A tool that offers a nice and elegant way to add zooming functionality for images, html content and multi-media on your webpages.
  • swipebox - A touchable jQuery lightbox
  • jBox - jBox is a powerful and flexible jQuery plugin, taking care of all your popup windows, tooltips, notices and more.

Scroll

  • scrollMonitor - A simple and fast API to monitor elements as you scroll.
  • headroom - Give your pages some headroom. Hide your header until you need it.
  • onepage-scroll - Create an Apple-like one page scroller website (iPhone 5S website) with One Page Scroll plugin.
  • iscroll - iScroll is a high performance, small footprint, dependency free, multi-platform JavaScript scroller.
  • skrollr - Stand-alone parallax scrolling library for mobile (Android + iOS) and desktop. No jQuery.
  • parallax - Parallax Engine that reacts to the orientation of a smart device.
  • stellar.js - Parallax scrolling made easy.
  • plax - jQuery powered parallaxing.
  • jparallax - jQuery plugin for creating interactive parallax effect.
  • fullPage - A simple and easy to use plugin to create fullscreen scrolling websites (also known as single page websites).
  • ScrollMenu - A new interface to replace old boring scrollbar.
  • Clusterize.js - Tiny vanilla JS plugin to display large data sets easily.
  • simpleParallax - Simple and tiny JavaScript library to add parallax animations on any images

Menu

  • jQuery-menu-aim - jQuery plugin to fire events when user's cursor aims at particular dropdown menu items. For making responsive mega dropdowns like Amazon's.
  • jQuery contextMenu - contextMenu manager.
  • Slideout - A responsive touch slideout navigation menu for mobile web apps.
  • Slide and swipe - A sliding swipe menu that works with touchSwipe library.

Table/Grid

  • jTable - A jQuery plugin to create AJAX based CRUD tables.
  • DataTables - (jQuery plug-in) It is a highly flexible tool, based upon the foundations of progressive enhancement, and will add advanced interaction controls to any HTML table.
  • Tabulator - (jQuery plug-in) An extremely flexible library that create tables with a range of interactive features from any JSON data source or existing HTML table.
  • Bootstrap Table - An Extension to the popular Bootstrap framework for creating tables that fit the style of your site with no need for additional markup.
  • floatThead - (jQuery plug-in) lock any table's header while scrolling within the body. Works on any table and requires no custom html or css.
  • Masonry - A cascading grid layout library.
  • Packery - A grid layout library that uses a bin-packing algorithm. Useable for draggable layouts.
  • Isotope - A filterable, sortable, grid layout library. Can implement Masonry, Packery, and other layouts.
  • flexboxgrid - Grid based on CSS3 flexbox.

Frameworks

  • Semantic UI - UI Kit with lots of themes and elements.
  • w2ui - A set of jQuery plugins for front-end development of data-driven web applications.
  • fluidity - The worlds smallest fully-responsive css framework.
  • Ink - An HTML5/CSS3 framework used at SAPO for fast and efficient website design and prototyping.

Boilerplates

  • html5-boilerplate - A professional front-end template for building fast, robust, and adaptable web apps or sites.
  • mobile-boilerplate - A front-end template that helps you build fast, modern mobile web apps.
  • webplate - An awesome front-end framework that lets you stay focused on building your site or app while remaining really easy to use.
  • Cerberus - A few simple, but solid patterns for responsive HTML emails. Even in Outlook.
  • full-page-intro-and-navigation - An intro page with a full width background image, a bold animated menu and an iOS-like blurred effect behind the navigation.
  • Fluid-Squares - A fluid grid of square units.
  • Mobile-First-RWD - An example of a mobile-first responsive web design.
  • this-is-responsive - This Is Responsive.
  • npm run-scripts Task automation with NPM run-scripts.

Gesture

  • hammer.js - A JavaScript library for multi-touch gestures.
  • touchemulator - Emulate touch input on your desktop.
  • Dragula - Drag and drop so simple it hurts.

Maps

  • Leaflet - JavaScript library for mobile-friendly interactive maps.
  • Cesium - Open Source WebGL virtual globe and map engine.
  • gmaps - The easiest way to use Google Maps.
  • polymaps - A free JavaScript library for making dynamic, interactive maps in modern web browsers.
  • kartograph.js - Open source JavaScript renderer for Kartograph SVG maps.
  • mapbox.js - Mapbox JavaScript API, a Leaflet Plugin.
  • jqvmap - jQuery Vector Map Library.
  • OpenLayers3 - A high-performance, feature-packed library for all your mapping needs.

Video/Audio

  • prettyembed.js - Prettier embeds for your YouTubes - with nice options like high-res preview images, advanced customization of embed options, and optional FitVids support.
  • html5media - Enables and tags in all major browsers. https://html5media.info/
  • Play-em JS - Play'em is a JavaScript component that manages a music/video track queue and plays a sequence of songs by embedding several players in a HTML DIV including Youtube, Soundcloud and Vimeo.
  • polyplayer - Rule YouTube, Soundcloud and Vimeo player with one API.
  • flowplayer - The HTML5 video player for the web https://flowplayer.org/
  • mediaelement - HTML5 or player with Flash and Silverlight shims that mimics the HTML5 MediaElement API, enabling a consistent UI in all browsers. http://mediaelementjs.com/
  • SoundJS - A library to make working with audio on the web easier. It provides a consistent API for playing audio in different browsers.
  • video.js - Video.js - open source HTML5 & Flash video player.
  • FitVids.js - A lightweight, easy-to-use jQuery plugin for fluid width video embeds.
  • Ion.Sound - Simple sounds on any web page.
  • photobooth-js - A widget that allows users to take their avatar pictures on your site.
  • clappr - An extensible media player for the web http://clappr.io

Typography

  • FlowType.JS - Web typography at its finest: font-size and line-height based on element width.
  • BigText - jQuery plugin, calculates the font-size and word-spacing needed to match a line of text to a specific width.
  • circletype - A jQuery plugin that lets you curve type on the web.
  • slabText - A jQuery plugin for producing big, bold & responsive headlines.
  • simple-text-rotator - Add a super simple rotating text to your website with little to no markup.
  • novacancy.js - Text Neon Golden effect jQuery plug-in.
  • jquery-responsive-text - Make your text sizing responsive!
  • FitText.js - A jQuery plugin for inflating web type.
  • Lettering.js - A lightweight, easy to use JavaScript <span> injector for radical Web Typography.

Animations

Image Processing

  • lena.js - A Library for image processing with filters and util functions.
  • pica - High quality image resize (with fast Lanczos filter, implemented in pure JS).
  • cropper - A simple jQuery image cropping plugin.

ES6

  • es6features - Overview of ECMAScript 6 features.
  • es6-features - ECMAScript 6: Feature Overview & Comparison.
  • es6-cheatsheet - ES2015 [ES6] cheatsheet containing tips, tricks, best practices and code snippets.
  • ECMAScript 6 compatibility table - Compatibility tables for all ECMAScript 6 features on a variety of environments.
  • Babel (Formerly 6to5) - Turn ES6+ code into vanilla ES5 with no runtime.
  • Traceur compiler - ES6 features > ES5. Includes classes, generators, promises, destructuring patterns, default parameters & more.

Generators

  • Gatsby.js - React-based static site generator.

SDK

  • javascript-sdk-design - JavaScript SDK design guide extracted from work and personal experience
  • Spotify SDK - Entity oriented SDK to work with the Spotify Web API.
  • Square Node.js SDK - JavaScript client library for payments and other Square APIs.

Misc

  • echo - Lazy-loading images with data-* attributes.
  • picturefill - A responsive image polyfill for <picture>, srcset, sizes.
  • platform.js - A platform detection library that works on nearly all JavaScript platforms.
  • json3 - A modern JSON implementation compatible with nearly all JavaScript platforms.
  • Logical Or Not - A game about JavaScript specificities.
  • BitSet.js - A JavaScript Bit-Vector implementation
  • spoiler-alert - SPOILER ALERT! A happy little jquery plugin to hide spoilers on your site.
  • jquery.vibrate.js - Vibration API Wrappers
  • list.js - Adds search, sort, filters and flexibility to tables, lists and various HTML elements. Built to be invisible and work on existing HTML. http://www.listjs.com
  • mixitup - MixItUp - A Filter & Sort Plugin.
  • grid - Drag and drop library for two-dimensional, resizable and responsive lists.
  • jquery-match-height - a responsive equal heights plugin for jQuery.
  • survey.js - JavaScript Survey Engine. It uses JSON for survey metadata and results. http://surveyjs.org/
  • Array Explorer and Object Explorer - Resources to help figure out what native JavaScript method would be best to use at any given time
  • Clipboard.js - "Copy to clipboard" without Flash or use of Frameworks.
  • ky - Tiny and elegant HTTP client based on the browser Fetch API.

Podcasts

  • JavaScript Air - The live video broadcast podcast all about JavaScript and the Web platform.
  • Web of Tomorrow - Podcast about JavaScript for beginners.
  • JavaScript Jabber - A weekly podcast about JavaScript, including Node.js, Front-End Technologies, Careers, Teams and more.

Worth Reading

  • You Don't Know JS - Possibly the best book written on modern JavaScript, completely readable online for free, or can be bought to support the author.
  • braziljs/js-the-right-way - An easy-to-read, quick reference for JS best practices, accepted coding standards, and links around the Web.
  • JSbooks - Directory of free JavaScript ebooks.
  • Superhero.js - A collection of resources about creating, testing and maintaining a large JavaScript code base.
  • SJSJ - Simplified JavaScript Jargon is a community-driven attempt at explaining the loads of buzzwords making the current JavaScript ecosystem in a few simple words.
  • How to Write an Open Source JavaScript Library - A comprehensive guide through a set of steps to publish a JavaScript open source library.
  • Jaavascript tutorial - Learn Javascript online from a diverse range of user ranked online tutorials.

Other Awesome Lists

 

原文:https://github.com/sorrycc/awesome-javascript

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A collection of awesome browser-side JavaScript libraries, resources and shiny things.

【Java精选】精选的Java框架,库和软件的精选列表。

Chinese, Simplified

A curated list of awesome Java frameworks, libraries and software.

Contents

Projects

Bean Mapping

Frameworks that ease bean mapping.

  • dOOv - Provides fluent API for typesafe domain model validation and mapping. It uses annotations, code generation and a type safe DSL to make bean validation and mapping fast and easy.
  • Dozer - Mapper that copies data from one object to another using annotations and API or XML configuration.
  • JMapper - Uses byte code manipulation for lightning-fast mapping. Supports annotations and API or XML configuration.
  • MapStruct - Code generator that simplifies mappings between different bean types, based on a convention-over-configuration approach.
  • ModelMapper - Intelligent object mapping library that automatically maps objects to each other.
  • Orika - JavaBean-mapping framework that recursively copies (among other capabilities) data from one object to another.
  • Selma - Annotation processor-based bean mapper.

Build

Tools that handle the build cycle and dependencies of an application.

  • Apache Maven - Declarative build and dependency management that favors convention over configuration. It might be preferable to Apache Ant, which uses a rather procedural approach and can be difficult to maintain.
  • Bazel - Tool from Google that builds code quickly and reliably.
  • Buck - Encourages the creation of small, reusable modules consisting of code and resources.
  • Gradle - Incremental builds programmed via Groovy instead of declaring XML. Works well with Maven's dependency management.

Bytecode Manipulation

Libraries to manipulate bytecode programmatically.

  • ASM - All-purpose, low-level bytecode manipulation and analysis.
  • Byte Buddy - Further simplifies bytecode generation with a fluent API.
  • bytecode-viewer - Java 8 Jar & Android APK reverse engineering suite.
  • Byteman - Manipulate bytecode at runtime via DSL (rules); mainly for testing/troubleshooting.
  • cglib - Bytecode generation library.
  • Javassist - Tries to simplify bytecode editing.
  • Mixin - Manipulate bytecode at runtime using real Java code.
  • Perses - Dynamically injects failure/latency at the bytecode level according to principles of chaos engineering.

Caching

Libraries that provide caching facilities.

  • cache2k - In-memory high performance caching library.
  • Caffeine - High-performance, near-optimal caching library.
  • Ehcache - Distributed general-purpose cache.
  • Infinispan - Highly concurrent key/value datastore used for caching.

CLI

Libraries for everything related to the CLI.

  • ASCII Table - Library to draw tables in ASCII.
  • Airline - Annotation-based framework for parsing Git-like command-line arguments.
  • args4j - Small library to parse command-line arguments.
  • Jansi - ANSI escape codes to format console output.
  • Java ASCII Render - Graphical primitives for the console.
  • JCommander - Command-line argument-parsing framework with custom types and validation via implementing interfaces.
  • jbock - Typesafe, reflection-free, annotation based command-line parser
  • Jexer - Advanced console (and Swing) text user interface (TUI) library, with mouse-draggable windows, built-in terminal window manager, and sixel image support. Looks like Turbo Vision.
  • JLine - Includes features from modern shells like completion or history.
  • JOpt Simple - Fluent parser that uses the POSIX#getopt and GNU#getopt_long syntaxes.
  • picocli - ANSI colors and styles in usage help with annotation-based POSIX/GNU/any syntax, subcommands, strong typing for both options and positional args.
  • Text-IO - Aids the creation of full console-based applications.
  • Lanterna - Easy console text-GUI library, similar to curses.

Cluster Management

Frameworks that can dynamically manage applications inside of a cluster.

  • Apache Aurora - Mesos framework for long-running services and cron jobs.
  • Apache Mesos - Abstracts CPU, memory, storage, and other compute resources away from machines.
  • Singularity - Mesos framework that makes deployment and operations easy. It supports web services, background workers, scheduled jobs, and one-off tasks.

Code Analysis

Tools that provide metrics and quality measurements.

  • Checkstyle - Static analysis of coding conventions and standards.
  • Error Prone - Catches common programming mistakes as compile-time errors.
  • Infer - Modern static analysis tool for verifying the correctness of code.
  • jQAssistant - Static code analysis with Neo4J-based query language.
  • NullAway - Eliminates NullPointerExceptions with low build-time overhead.
  • PMD - Source code analysis for finding bad coding practices.
  • SonarJava - Static analyzer for SonarQube & SonarLint.
  • Sourcetrail c - Visual source code navigator.
  • Spoon - Library for analyzing and transforming Java source code.
  • Spotbugs - Static analysis of bytecode to find potential bugs.

Code Coverage

Frameworks and tools that enable code coverage metrics collection for test suites.

  • Clover c - Relies on source-code instrumentation instead of bytecode instrumentation.
  • Cobertura - Relies on offline (or static) bytecode instrumentation and class loading to collect code coverage metrics.
  • JaCoCo - Framework that enables collection of code coverage metrics, using both offline and runtime bytecode instrumentation.

Code Generators

Tools that generate patterns for repetitive code in order to reduce verbosity and error-proneness.

  • ADT4J - JSR-269 code generator for algebraic data types.
  • Auto - Generates factory, service, and value classes.
  • FreeBuilder - Automatically generates the Builder pattern.
  • Immutables - Annotation processors to generate simple, safe and consistent value objects.
  • JavaPoet - API to generate source files.
  • JHipster - Yeoman source code generator for Spring Boot and AngularJS.
  • Joda-Beans - Small framework that adds queryable properties to Java, enhancing JavaBeans.
  • Lombok - Code generator that aims to reduce verbosity.

Compiler-compiler

Frameworks that help to create parsers, interpreters or compilers.

  • ANTLR - Complex full-featured framework for top-down parsing.
  • JavaCC - Parser generator that generates top-down parsers. Allows lexical state switching and permits extended BNF specifications.
  • JFlex - A lexical analyzer generator.

Configuration

Libraries that provide external configuration.

  • centraldogma - Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2.
  • cfg4j - Modern configuration library for distributed apps written in Java.
  • config - Configuration library for JVM languages.
  • dotenv - A twelve-factor configuration library for Java.
  • ini4j - Provides an API for handling Windows' INI files.
  • KAConf - Annotation-based configuration system for Java and Kotlin.
  • owner - Reduces boilerplate of properties.

Constraint Satisfaction Problem Solver

Libraries that help with implementing optimization and satisfiability problems.

  • Choco - Off-the-shelf constraint satisfaction problem solver that uses constraint programming techniques.
  • JaCoP - Includes an interface for the FlatZinc language, enabling it to execute MiniZinc models.
  • OptaPlanner - Business planning and resource scheduling optimization solver.

CSV

Frameworks and libraries that simplify reading/writing CSV data.

  • jackson-dataformat-csv - Jackson extension for reading and writing CSV.
  • opencsv - Simple CSV parser.
  • Super CSV - Powerful CSV parser with support for Dozer, Joda-Time and Java 8.
  • uniVocity-parsers - One of the fastest and most feature-complete parsers. Also comes with parsers for TSV and fixed-width records.

Database

Everything that simplifies interactions with the database.

  • Apache Drill - Distributed, schema on-the-fly, ANSI SQL query engine for Big Data exploration.
  • Apache Phoenix - High-performance relational database layer over HBase for low-latency applications.
  • AranoDB - ArangoDB Java driver.
  • Chronicle Map - Efficient, in-memory (opt. persisted to disk), off-heap key-value store.
  • druid - High-performance, column-oriented, distributed data store.
  • eXist - A NoSQL document database and application platform.
  • FlexyPool - Brings metrics and failover strategies to the most common connection pooling solutions.
  • Flyway - Simple database migration tool.
  • H2 - Small SQL database notable for its in-memory functionality.
  • HikariCP - High-performance JDBC connection pool.
  • jasync-sql - Async DB driver for MySQL and PostgreSQL.
  • JDBI - Convenient abstraction of JDBC.
  • Jedis - Small client for interaction with Redis, with methods for commands.
  • Jest - Client for the Elasticsearch REST API.
  • jetcd - Client library for etcd.
  • Jinq - Typesafe database queries via symbolic execution of Java 8 Lambdas (on top of JPA or jOOQ).
  • jOOQ - Generates typesafe code based on SQL schema.
  • Liquibase - Database-independent library for tracking, managing and applying database schema changes.
  • MapDB - Embedded database engine that provides concurrent collections backed on disk or in off-heap memory.
  • MariaDB4j - Launcher for MariaDB that requires no installation or external dependencies.
  • OrientDB - Embeddable distributed database written on top of Hazelcast.
  • Presto - Distributed SQL query engine for big data.
  • Querydsl - Typesafe unified queries.
  • Realm - Mobile database to run directly inside phones, tablets or wearables.
  • Redisson - Allows for distributed and scalable data structures on top of a Redis server.
  • requery - A modern, lightweight but powerful object mapping and SQL generator. Easily map to or create databases, or perform queries and updates from any Java-using platform.
  • Speedment - Database access library that utilizes Java 8's Stream API for querying.
  • sql2o - Thin JDBC wrapper that simplifies database access and provides simple mapping of ResultSets to POJOs.
  • Vibur DBCP - JDBC connection pool library with advanced performance monitoring capabilities.
  • Xodus - Highly concurrent transactional schema-less and ACID-compliant embedded database.

Data Structures

Efficient and specific data structures.

  • Apache Avro - Data interchange format with dynamic typing, untagged data, and absence of manually assigned IDs.
  • Apache Orc - Fast and efficient columnar storage format for Hadoop-based workloads.
  • Apache Parquet - Columnar storage format based on assembly algorithms from Google's paper on Dremel.
  • Apache Thrift - Data interchange format that originated at Facebook.
  • Big Queue - A big, fast and persistent queue based on memory-mapped files.
  • HyperMinHash-java - Probabilistic data structure for computing union, intersection, and set cardinality in loglog space.
  • Persistent Collection - Persistent and immutable analogue of the Java Collections Framework.
  • Protobuf - Google's data interchange format.
  • SBE - Simple Binary Encoding, one of the fastest message formats around.
  • Tape - A lightning-fast, transactional, file-based FIFO.
  • Wire - Clean, lightweight protocol buffers.

Date and Time

Libraries related to handling date and time.

  • Almanac Converter - Simple conversion between different calendar systems.
  • iCal4j - Parse and build iCalendar RFC 5545 data models.
  • ThreeTen-Extra - Additional date-time classes that complement those in JDK 8.
  • Time4J - Advanced date and time library.

Dependency Injection

Libraries that help to realize the Inversion of Control paradigm.

  • Apache DeltaSpike - CDI extension framework.
  • Dagger2 - Compile-time injection framework without reflection.
  • Feather - Ultra-lightweight, JSR-330-compliant dependency injection library.
  • Governator - Extensions and utilities that enhance Google Guice.
  • Guice - Lightweight and opinionated framework that completes Dagger.
  • HK2 - Lightweight and dynamic dependency injection framework.
  • JayWire - Lightweight dependency injection framework.

Development

Augmentation of the development process at a fundamental level.

  • AspectJ - Seamless aspect-oriented programming extension.
  • DCEVM - JVM modification that allows unlimited redefinition of loaded classes at runtime.
  • Faux Pas - Library that simplifies error handling by circumventing the issue that none of the functional interfaces in the Java Runtime is allowed by default to throw checked exceptions.
  • HotswapAgent - Unlimited runtime class and resource redefinition.
  • JavaParser - Parse, modify and generate Java code.
  • JavaSymbolSolver - A symbol solver for Java.
  • JRebel c - Instantly reloads code and configuration changes without redeploys.
  • Manifold - Re-energizes Java with powerful features like type-safe metaprogramming, structural typing and extension methods.
  • NoException - Allows checked exceptions in functional interfaces and converts exceptions to Optional return.
  • SneakyThrow - Ignores checked exceptions without bytecode manipulation. Can also be used inside Java 8 stream operations.

Distributed Applications

Libraries and frameworks for writing distributed and fault-tolerant applications.

  • Apache Geode - In-memory data management system that provides reliable asynchronous event notifications and guaranteed message delivery.
  • Apache Storm - Realtime computation system.
  • Apache ZooKeeper - Coordination service with distributed configuration, synchronization, and naming registry for large distributed systems.
  • Atomix - Fault-tolerant distributed coordination framework.
  • Axon Framework - Framework for creating CQRS applications.
  • Dropwizard Circuit Breaker - Circuit breaker design pattern for Dropwizard.
  • Failsafe - Simple failure handling with retries and circuit breakers.
  • Hazelcast c - Highly scalable in-memory datagrid with a free open-source version.
  • Hystrix - Provides latency and fault tolerance.
  • JGroups - Toolkit for reliable messaging and cluster creation.
  • Orbit - Virtual actors; adds another level of abstraction to traditional actors.
  • Quasar - Lightweight threads and actors for the JVM.
  • resilience4j - Functional fault tolerance library.
  • ScaleCube - Embeddable Cluster-Membership library based on SWIM and gossip protocol.
  • Zuul - A gateway service that provides dynamic routing, monitoring, resiliency, security, and more.

Distributed Transactions

Distributed transactions provide a mechanism for ensuring consistency of data updates in the presence of concurrent access and partial failures.

  • Atomikos - Provides transactions for REST, SOA and microservices with support for JTA and XA.
  • Bitronix - A simple but complete implementation of the JTA 1.1 API.
  • Narayana - Provides support for traditional ACID and compensation transactions, also complies with JTA, JTS and other standards.

Distribution

Tools that handle the distribution of applications in native formats.

  • Bintray c - Version control for binaries that handle publishing. Compatible with Maven or Gradle, with a free plan for open-source software as well as several business plans.
  • Boxfuse - Deployment of JVM applications to AWS using the principles of immutable infrastructure.
  • Capsule - Simple and powerful packaging and deployment. A fat JAR on steroids, or a "Docker for Java" that supports JVM-optimized containers.
  • Central Repository - Largest binary component repository available as a free service to the open-source community. Default used by Apache Maven, and available in all other build tools.
  • Cloudsmith c - Fully managed package management SaaS with support for Maven/Gradle/SBT.
  • IzPack - Setup authoring tool for cross-platform deployments.
  • JitPack - Easy-to-use package repository for GitHub. Builds Maven/Gradle projects on demand and publishes ready-to-use packages.
  • Nexus c - Binary management with proxy and caching capabilities.
  • packr - Packs JARs, assets and the JVM for native distribution on Windows, Linux and Mac OS X.
  • really-executable-jars-maven-plugin - Maven plugin for making self-executing JARs.

Document Processing

Libraries that assist with processing office document formats.

  • Apache POI - Supports OOXML (XLSX, DOCX, PPTX) as well as OLE2 (XLS, DOC or PPT).
  • documents4j - API for document format conversion using third-party converters such as MS Word.
  • docx4j - Create and manipulate Microsoft Open XML files.
  • zerocell - Annotation-based API for reading data from Excel sheets into POJOs with focus on reduced overhead.

Formal Verification

Formal-methods tools: proof assistants, model checking, symbolic execution, etc.

  • CATG - Concolic unit testing engine. Automatically generates unit tests using formal methods.
  • Checker Framework - Pluggable type systems. Includes nullness types, physical units, immutability types and more.
  • Daikon - Detects likely program invariants and generates JML specs based on those invariants.
  • Java Path Finder (JPF) - JVM formal verification tool containing a model checker and more. Created by NASA.
  • JMLOK 2.0 - Detects inconsistencies between code and JML specification through feedback-directed random tests generation, and suggests a likely cause for each nonconformance detected.
  • KeY - Formal software development tool that aims to integrate design, implementation, formal specification, and formal verification of object-oriented software as seamlessly as possible. Uses JML for specification and symbolic execution for verification.
  • OpenJML - Translates JML specifications into SMT-LIB format and passes the proof problems implied by the program to backend solvers.

Functional Programming

Libraries that facilitate functional programming.

  • cyclops-react - Monad and stream utilities, comprehensions, pattern matching, functional extensions for all JDK collections, future streams, trampolines and much more.
  • derive4j - Java 8 annotation processor and framework for deriving algebraic data types constructors, pattern-matching and morphisms.
  • Fugue - Functional extensions to Guava.
  • Functional Java - Implements numerous basic and advanced programming abstractions that assist composition-oriented development.
  • jOOλ - Extension to Java 8 that aims to fix gaps in lambda by providing numerous missing types and a rich set of sequential Stream API additions.
  • protonpack - Collection of stream utilities.
  • StreamEx - Enhances Java 8 Streams.
  • Vavr - Functional component library that provides persistent data types and functional control structures.

Game Development

Frameworks that support the development of games.

  • FXGL - JavaFX Game Development Framework.
  • jMonkeyEngine - Game engine for modern 3D development.
  • libGDX - All-round cross-platform, high-level framework.
  • LWJGL - Robust framework that abstracts libraries like OpenGL/CL/AL.

Geospatial

Libraries for working with geospatial data and algorithms.

  • Apache SIS - Library for developing geospatial applications.
  • Geo - GeoHash utilities in Java.
  • Geotoolkit.org - Library for developing geospatial applications. Built on top of the Apache SIS project.
  • GeoTools - Library that provides tools for geospatial data.
  • GraphHopper - Road-routing engine. Used as a Java library or standalone web service.
  • H2GIS - A spatial extension of the H2 database.
  • Jgeohash - Library for using the GeoHash algorithm.
  • Mapsforge - Map rendering based on OpenStreetMap data.
  • Spatial4j - General-purpose spatial/geospatial library.

GUI

Libraries to create modern graphical user interfaces.

  • JavaFX - The successor of Swing.
  • Scene Builder - Visual layout tool for JavaFX applications.
  • SWT - The Standard Widget Toolkit, a graphical widget toolkit.

High Performance

Everything about high-performance computation, from collections to specific libraries.

  • Agrona - Data structures and utility methods that are common in high-performance applications.
  • Disruptor - Inter-thread messaging library.
  • Eclipse Collections - Collections framework inspired by Smalltalk.
  • fastutil - Fast and compact type-specific collections.
  • HPPC - Primitive collections.
  • JCTools - Concurrency tools currently missing from the JDK.
  • Koloboke - Hash sets and hash maps.

HTTP Clients

Libraries that assist with creating HTTP requests and/or binding responses.

  • Armeria - Asynchronous RPC/REST client/server library built on top of Java 8, Netty, HTTP/2, Thrift and gRPC.
  • Async Http Client - Asynchronous HTTP and WebSocket client library.
  • Feign - HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket.
  • OkHttp - HTTP+SPDY client.
  • Play WS - Typesafe client with reactive streams and caching.
  • restQL-core - Microservice query language that fetches information from multiple services.
  • Retrofit - Typesafe REST client.
  • Ribbon - Client-side IPC library that is battle-tested in cloud.
  • Riptide - Client-side response routing for Spring's RestTemplate.
  • unirest-java - Simplified, lightweight HTTP client library.

Hypermedia Types

Libraries that handle serialization to hypermedia types.

  • JSON-LD - JSON-LD implementation.
  • Siren4J - Library for the Siren specification.

IDE

Integrated development environments that try to simplify several aspects of development.

  • Eclipse - Established open-source project with support for lots of plugins and languages.
  • IntelliJ IDEA c - Supports many JVM languages and provides good options for Android development. The commercial edition targets the enterprise sector.
  • NetBeans - Provides integration for several Java SE and EE features, from database access to HTML5.
  • Visual Studio Code - Provides Java support for lightweight projects with a simple, modern workflow by using extensions from the internal marketplace.

Imagery

Libraries that assist with the creation, evaluation or manipulation of graphical images.

  • Imgscalr - Simple, efficient and hardware-accelerated image-scaling library implemented in pure Java 2D.
  • Tess4J - A JNA wrapper for Tesseract OCR API.
  • Thumbnailator - High-quality thumbnail generation library.
  • TwelveMonkeys - Collection of plugins that extend the number of supported image file formats.
  • ZXing - Multi-format 1D/2D barcode image processing library.
  • image-comparison - Compares two images with the same sizes and shows the differences visually by drawing rectangles.

JSON

Libraries for serializing and deserializing JSON to and from Java objects.

  • DSL-JSON - JSON library with advanced compile time databinding.
  • Genson - Powerful and easy-to-use Java-to-JSON conversion library.
  • Gson - Serializes objects to JSON and vice versa. Good performance with on-the-fly usage.
  • HikariJSON - High-performance JSON parser, 2x faster than Jackson.
  • jackson-modules-java8 - Set of Jackson modules for Java 8 datatypes and features.
  • Jackson-datatype-money - Open-source Jackson module to support JSON serialization and deserialization of JavaMoney data types.
  • Jackson - Similar to GSON, but offers performance gains if you need to instantiate the library more often.
  • JSON-io - Convert Java to JSON. Convert JSON to Java. Pretty print JSON. Java JSON serializer.
  • jsoniter - Fast and flexible library with iterator and lazy parsing API.
  • LoganSquare - JSON parsing and serializing library based on Jackson's streaming API. Outperforms GSON & Jackson's library.
  • Moshi - Modern JSON library, less opinionated and uses built-in types like List and Map.
  • Yasson - Binding layer between classes and JSON documents similar to JAXB.

JSON Processing

Libraries for processing data in JSON format.

  • fastjson - Very fast processor with no additional dependencies and full data binding.
  • Jolt - JSON to JSON transformation tool.
  • JsonPath - Extract data from JSON using XPATH-like syntax.
  • JsonSurfer - Streaming JsonPath processor dedicated to processing big and complicated JSON data.

JVM and JDK

Current implementations of the JVM/JDK.

  • Adopt Open JDK - OpenJDK builds which allows to choose between HotSpot and OpenJ9.
  • Avian - JVM with JIT, AOT modes and iOS port.
  • Corretto - No-cost, multiplatform, production-ready distribution of OpenJDK by Amazon.
  • Graal - Polyglot embeddable JVM.
  • Liberica JDK - Built from OpenJDK, thoroughly tested and passed the JCK.
  • OpenJ9 - High performance, enterprise-calibre, flexibly licensed, openly-governed cross-platform JVM extending and augmenting the runtime technology components from the Eclipse OMR and OpenJDK project.
  • Open JDK - Open JDK distributed by Oracle.
  • ParparVM - VM with non-blocking, concurrent GC for iOS.
  • RedHat Open JDK - RedHat's OpenJDK distribution.
  • Zulu - OpenJDK builds for Windows, Linux, and Mac OS X.

Logging

Libraries that log the behavior of an application.

  • Apache Log4j 2 - Complete rewrite with a powerful plugin and configuration architecture.
  • Graylog - Open-source aggregator suited for extended role and permission management.
  • Kibana - Analyzes and visualizes log files. Some features require payment.
  • Logback - Robust logging library with interesting configuration options via Groovy.
  • Logbook - Extensible, open-source library for HTTP request and response logging.
  • Logstash - Tool for managing log files.
  • p6spy - Enables logging for all JDBC transactions without changes to the code.
  • SLF4J - Abstraction layer/simple logging facade.
  • tinylog - Lightweight logging framework with static logger class.
  • Tracer - Call tracing and log correlation in distributed systems.

Machine Learning

Tools that provide specific statistical algorithms for learning from data.

  • Apache Flink - Fast, reliable, large-scale data processing engine.
  • Apache Mahout - Scalable algorithms focused on collaborative filtering, clustering and classification.
  • Apache Spark - Data analytics cluster-computing framework.
  • DatumBox - Provides several algorithms and pre-trained models for natural language processing.
  • DeepDive - Creates structured information from unstructured data and integrates it into an existing database.
  • Deeplearning4j - Distributed and multi-threaded deep learning library.
  • H2O - Analytics engine for statistics over big data.
  • JSAT - Algorithms for pre-processing, classification, regression, and clustering with support for multi-threaded execution.
  • Oryx 2 - Framework for building real-time, large-scale machine learning applications. Includes end-to-end applications for collaborative filtering, classification, regression, and clustering.
  • Smile - The Statistical Machine Intelligence and Learning Engine provides a set of machine learning algorithms and a visualization library.
  • Weka - Collection of algorithms for data mining tasks ranging from pre-processing to visualization.

Messaging

Tools that help send messages between clients to ensure protocol independency.

  • Aeron - Efficient, reliable, unicast and multicast message transport.
  • Apache ActiveMQ - Message broker that implements JMS and converts synchronous to asynchronous communication.
  • Apache Camel - Glues together different transport APIs via Enterprise Integration Patterns.
  • Apache Kafka - High-throughput distributed messaging system.
  • Apache Pulsar - Distributed pub/sub-messaging system.
  • Apache RocketMQ - A fast, reliable, and scalable distributed messaging platform.
  • Apache Qpid - Apache Qpid makes messaging tools that speak AMQP and support many languages and platforms.
  • EventBus - Simple publish/subscribe event bus.
  • Hermes - Fast and reliable message broker built on top of Kafka.
  • JeroMQ - Implementation of ZeroMQ.
  • Nakadi - Provides a RESTful API on top of Kafka.
  • RabbitMQ Java client - RabbitMQ client.
  • Smack - Cross-platform XMPP client library.
  • NATS client - NATS client.

Miscellaneous

Everything else.

  • Codename One - Cross-platform solution for writing native mobile apps.
  • CQEngine - Ultra-fast, SQL-like queries on Java collections.
  • Design Patterns - Implementation and explanation of the most common design patterns.
  • Failsafe - Simple failure handling with retries and circuit breakers.
  • FF4J - Feature Flags for Java.
  • FizzBuzz Enterprise Edition - No-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes.
  • J2ObjC - Java-to-Objective-C translator for porting Android libraries to iOS.
  • JavaCV - Java interface to OpenCV, FFmpeg, and more.
  • JavaX - Reinventing and extending Java with a focus on simplicity.
  • JBake - Static website generator.
  • JBot - Framework for building chatbots.
  • JCuda - JCuda offers Java bindings for CUDA and CUDA-related libraries.
  • Jimfs - In-memory file system.
  • Joda-Money - Basic currency and money classes and algorithms not provided by the JDK.
  • JPad - Snippet runner.
  • LightAdmin - Pluggable CRUD UI library for rapid application development.
  • Maven Wrapper - Analogue of Gradle Wrapper for Maven, allows building projects without installing maven.
  • Membrane Service Proxy - An open-source, reverse-proxy framework written in Java.
  • MinimalFTP - Lightweight, small and customizable FTP server.
  • Modern Java - A Guide to Java 8 - Popular Java 8 guide.
  • Modernizer - Detect uses of legacy Java APIs.
  • Multi-OS Engine - An open-source, cross-platform engine to develop native mobile (iOS, Android, etc.) apps.
  • OpenRefine - Tool for working with messy data: cleaning, transforming, extending it with web services and linking it to databases.
  • PipelinR – Small utility library for using handlers and commands with pipelines.
  • Polyglot for Maven - Extensions for Maven 3.3.1+ that allows writing the POM model in dialects other than XML.
  • Smooks - Extensible framework for building applications that process data which means bindings, transformations, message processing and enrichment.
  • Togglz - Implementation of the Feature Toggles pattern.
  • TypeTools - Tools for resolving generic types.
  • XMLBeam - Processes XML by using annotations or XPath within code.
  • OctoLinker - Browser extension which allows to navigate through code on GitHub more efficiently.

Microservice

Tools for creating and managing microservices.

  • Apollo - Libraries for writing composable microservices.
  • consul-api - Client for the Consul API: a distributed, highly available and datacenter-aware registry/discovery service.
  • Eureka - REST-based service registry for resilient load balancing and failover.
  • Helidon - Two-style approach for writing microservices: Functional-reactive and as an implementation of MicroProfile.
  • Lagom - Framework for creating microservice-based systems.
  • Micronaut - Modern full-stack framework with focus on modularity, minimal memory footprint and startup time.

Monitoring

Tools that monitor applications in production.

  • AppDynamics c - Performance monitor.
  • Automon - Combines the power of AOP with monitoring and/or logging tools.
  • BugSnag c - Exception and error monitoring with an integration of several third party tools for a better workflow and a free hobbyist tier.
  • LeakCanary - Memory leak detection.
  • Failsafe Actuator - Out of the box monitoring of Failsafe Circuit Breaker in Spring-Boot environment.
  • Glowroot - Open-source Java APM.
  • inspectIT - Captures detailed run-time information via hooks that can be changed on the fly. It supports tracing over multiple systems via the OpenTracing API and can correlate the data with end user monitoring.
  • Instrumental c - Real-time Java application performance monitoring. A commercial service with free development accounts.
  • JavaMelody - Performance monitoring and profiling.
  • Jaeger client - Jaeger client.
  • jmxtrans - Connect to multiple JVMs and query them for their attributes via JMX. Its query language is based on JSON, which allows non-Java programmers to access the JVM attributes. Supports different output writes, including Graphite, Ganglia, and StatsD.
  • Jolokia - JMX over REST.
  • Kamon - Tool for monitoring applications running on the JVM.
  • Metrics - Expose metrics via JMX or HTTP and send them to a database.
  • New Relic c - Performance monitor.
  • Datadog c - Modern monitoring & analytics.
  • nudge4j - Remote developer console from the browser for Java 8 via bytecode injection.
  • OverOps c - In-production error monitoring and debugging.
  • Pinpoint - Open-source APM tool.
  • Prometheus - Provides a multi-dimensional data model, DSL, autonomous server nodes and much more.
  • SPM c - Performance monitor with distributing transaction tracing for JVM apps.
  • Stagemonitor - Open-source performance monitoring and transaction tracing for JVM apps.
  • Sysmon - Lightweight platform monitoring tool for Java VMs.
  • zipkin - Distributed tracing system which gathers timing data needed to troubleshoot latency problems in microservice architectures.

Native

For working with platform-specific native libraries.

  • JavaCPP - Provides efficient and easy access to native C++.
  • JNA - Work with native libraries without writing JNI. Also provides interfaces to common system libraries.
  • JNR - Work with native libraries without writing JNI. Also provides interfaces to common system libraries. Same goals as JNA, but faster, and serves as the basis for the upcoming Project Panama.

Natural Language Processing

Libraries that specialize in processing text.

  • CogCompNLP - Provides common annotators for plain text input.
  • CoreNLP - Provides a set of fundamental tools for tasks like tagging, named entity recognition, and sentiment analysis.
  • DKPro - Collection of reusable NLP tools for linguistic pre-processing, machine learning, lexical resources, etc.
  • Lingua - Natural language detection library, especially suited for short paragraphs of text.
  • LingPipe - Toolkit for tasks ranging from POS tagging to sentiment analysis.

Networking

Libraries for building network servers.

  • AkkaGRPC - Support for building streaming gRPC servers and clients on top of Akka Streams.
  • Comsat - Integrates standard Java web-related APIs with Quasar fibers and actors.
  • Dubbo - High-performance RPC framework.
  • Finagle - Extensible RPC system for constructing high-concurrency servers. It implements uniform client and server APIs for several protocols, and is protocol-agnostic to simplify implementation of new protocols.
  • Grizzly - NIO framework. Used as a network layer in Glassfish.
  • gRPC - RPC framework based on protobuf and HTTP/2.
  • KryoNet - Provides a clean and simple API for efficient TCP and UDP client/server network communication using NIO and Kryo.
  • MINA - Abstract, event-driven async I/O API for network operations over TCP/IP and UDP/IP via Java NIO.
  • Netty - Framework for building high-performance network applications.
  • Nifty - Implementation of Thrift clients and servers on Netty.
  • sshj - Programatically use SSH, SCP or SFTP.
  • TLS Channel - Implements a ByteChannel interface over SSLEngine, enabling easy-to-use (socket-like) TLS.
  • Undertow - Web server providing both blocking and non-blocking APIs based on NIO. Used as a network layer in WildFly.
  • urnlib - Represent, parse and encode URNs, as in RFC 2141.

ORM

APIs that handle the persistence of objects.

  • Apache Cayenne - Provides a clean, static API for data access. Also includes a GUI Modeler for working with database mappings, and DB reverse engineering and generation.
  • Doma 2 - Database access framework that verifies and generates source code at compile time using annotation processing as well as native SQL templates called two-way SQL.
  • Ebean - Provides simple and fast data access.
  • EclipseLink - Supports a number of persistence standards: JPA, JAXB, JCA and SDO.
  • Hibernate - Robust and widely used, with an active community.
  • MyBatis - Couples objects with stored procedures or SQL statements.
  • SimpleFlatMapper - Simple database and CSV mapper.

PaaS

Java platform as a service.

PDF

Tools to help with PDF file creation.

Performance analysis

Tools for performance analysis, profiling and benchmarking.

  • fastThread c - Analyze and visualize thread dumps with a free cloud-based upload interface.
  • GCeasy c - Tool to analyze and visualize GC logs. It provides a free cloud-based upload interface.
  • honest-profiler - A low-overhead, bias-free sampling profiler.
  • jHiccup - Logs and records platform JVM stalls.
  • JITWatch - Analyze the JIT compiler optimisations made by the HotSpot JVM.
  • JMH - a Java harness for building, running, and analysing nano/micro/milli/macro benchmarks written in Java and other languages targeting the JVM.
  • JProfiler c - Database profiling for JDBC, JPA and NoSQL, with JEE support.
  • LatencyUtils - Utilities for latency measurement and reporting.
  • XRebel c - Real-time profiling for web applications, with an in-browser widget.
  • YourKit Java Profiler c - Profiler for any application running on the JVM.

Platform

Frameworks that are suites of multiple libraries encompassing several categories.

Apache Commons

  • BCEL - Byte Code Engineering Library - analyze, create, and manipulate Java class files.
  • BeanUtils - Easy-to-use wrappers around the Java reflection and introspection APIs.
  • BeanUtils2 - Redesign of Commons BeanUtils.
  • BSF - Bean Scripting Framework - interface to scripting languages, including JSR-223.
  • Chain - Chain of Responsibility pattern implementation.
  • ClassScan - Find Class interfaces, methods, fields, and annotations without loading.
  • CLI - Command-line arguments parser.
  • CLI2 Redesign of Commons CLI.
  • Codec - General encoding/decoding algorithms (for example phonetic, base64, URL).
  • Collections - Extends or augments the Java Collections Framework.
  • Compress - Defines an API for working with tar, zip and bzip2 files.
  • Configuration - Reading of configuration/preferences files in various formats.
  • Convert - Commons-Convert aims to provide a single library dedicated to the task of converting an object of one type to another.
  • CSV - Component for reading and writing comma separated value files.
  • Daemon - Alternative invocation mechanism for unix-daemon-like java code.
  • DBCP - Database connection pooling services.
  • DbUtils - JDBC helper library.
  • Digester - XML-to-Java-object mapping utility.
  • Email - Library for sending e-mail from Java.
  • Exec - API for dealing with external process execution and environment management in Java.
  • FileUpload - File upload capability for your servlets and web applications.
  • Finder - Java library inspired by the UNIX find command.
  • Flatfile - Java library for working with flat data structures.
  • Functor - A functor is a function that can be manipulated as an object, or an object representing a single, generic function.
  • Graph - A general purpose Graph APIs and algorithms.
  • I18n - Adds the feature of localized message bundles that consist of one or many localized texts that belong together.
  • Id - Id is a component used to generate identifiers.
  • Imaging - A pure-Java image library.
  • IO - Collection of I/O utilities.
  • Javaflow - Continuation implementation to capture the state of the application.
  • JCI - Java Compiler Interface.
  • JCS - Java Caching System.
  • Jelly - XML based scripting and processing engine.
  • Jexl - Expression language which extends the Expression Language of the JSTL.
  • JNet - JNet allows to use dynamically register url stream handlers through the java.net API.
  • JXPath - Utilities for manipulating Java Beans using the XPath syntax.
  • Lang - Provides extra functionality for classes in java.lang.
  • Logging Wrapper around a variety of logging API implementations.
  • Math - Lightweight, self-contained mathematics and statistics components.
  • Monitoring - Monitoring aims to provide a simple but extensible monitoring solution for Java applications.
  • Nabla - Nabla provides automatic differentiation classes that can generate derivative of any function implemented in the Java language.
  • Net - Collection of network utilities and protocol implementations.
  • OGNL - An Object-Graph Navigation Language.
  • OpenPGP - Interface to signing and verifying data using OpenPGP.
  • Performance - A small framework for microbenchmark clients, with implementations for Commons DBCP and Pool.
  • Pipeline - Provides a set of pipeline utilities designed around work queues that run in parallel to sequentially process data objects.
  • Pool - Generic object pooling component.
  • Proxy - Library for creating dynamic proxies.
  • RDF - Common implementation of RDF 1.1 that could be implemented by systems on the JVM.
  • RNG - Commons Rng provides implementations of pseudo-random numbers generators.
  • SCXML - An implementation of the State Chart XML specification aimed at creating and maintaining a Java SCXML engine.
  • Validator - Framework to define validators and validation rules in an xml file.
  • VFS - Virtual File System component for treating files, FTP, SMB, ZIP and such like as a single logical file system.
  • Weaver - Provides an easy way to enhance (weave) compiled bytecode.

Other

  • CUBA Platform - High-level framework for developing enterprise applications with a rich web interface, based on Spring, EclipseLink and Vaadin.
  • Light-Java - A fast, lightweight and productive microservices framework with built-in security.
  • Orienteer - Open-source business application platform for rapid configuration/development of CRM, ERP, LMS and other applications.
  • Spring - Provides many packages for dependency injection, aspect-oriented programming, security, etc.

Processes

Libraries that help the management of operating system processes.

  • ch.vorburger.exec - Convenient API around Apache Commons Exec.
  • zt-exec - Provides a unified API to Apache Commons Exec and ProcessBuilder.
  • zt-process-killer - Stops processes started from Java or the system processes via PID.

Reactive libraries

Libraries for developing reactive applications.

  • Akka - Toolkit and runtime for building concurrent, distributed, fault-tolerant and event-driven applications.
  • Reactive Streams - Provides a standard for asynchronous stream processing with non-blocking backpressure.
  • Reactor - Library for building reactive fast-data applications.
  • RxJava - Allows for composing asynchronous and event-based programs using observable sequences.
  • vert.x - Polyglot event-driven application framework.

REST Frameworks

Frameworks specifically for creating RESTful services.

  • Dropwizard - Opinionated framework for setting up modern web applications with Jetty, Jackson, Jersey and Metrics.
  • Elide - Opinionated framework for JSON- or GraphQL-APIs based on a JPA data model.
  • javalin - Javalin is just a few thousand lines of code on top of Jetty, which means its performance is almost equivalent to pure Jetty.
  • Jersey - JAX-RS reference implementation.
  • Microserver — A convenient, extensible microservices plugin system for Spring & Spring Boot. With more than 30 plugins and growing, it supports both micro-monolith and pure microservices styles.
  • Rapidoid - A simple, secure and extremely fast framework consisting of an embedded HTTP server, GUI components and dependency injection.
  • rest.li - Framework for building robust, scalable RESTful architectures using typesafe bindings and asynchronous, non-blocking IO with an end-to-end developer workflow that promotes clean practices, uniform interface design and consistent data modeling.
  • RESTEasy - Fully certified and portable implementation of the JAX-RS specification.
  • RestExpress - Thin wrapper on the JBoss Netty HTTP stack that provides scaling and performance.
  • Restlet Framework - Pioneering framework with powerful routing and filtering capabilities, and a unified client and server API.
  • Spark - Sinatra inspired framework.
  • Crnk - Implementation of the JSON API specification to build resource-oriented REST endpoints with sorting, filtering, paging, linking, object graphs, type-safety, bulk updates, integrations and more.
  • Swagger - Standard, language-agnostic interface to REST APIs.

Science

Libraries for scientific computing, analysis and visualization.

  • DataMelt - Environment for scientific computation, data analysis and data visualization.
  • Erdos - Modular, light and easy graph framework for theoretic algorithms.
  • GraphStream - Library for modeling and analyzing dynamic graphs.
  • JFreeChart - 2D chart library for Swing, JavaFX and server-side applications.
  • JGraphT - Graph library that provides mathematical graph-theory objects and algorithms.
  • JGraphX - Library for visualizing (mainly Swing) and interacting with node-edge graphs.
  • Mines Java Toolkit - Library for geophysical scientific computation, visualization and digital signal analysis.
  • Morpheus - Provides a versatile two-dimensional memory efficient tabular data structure called a DataFrame to enable efficient in-memory analytics for scientific computing on the JVM.
  • Orson-Charts - Generates a wide variety of 3D charts that can be displayed with Swing and JavaFX or exported to PDF, SVG, PNG and JPEG.
  • Tablesaw - Includes a data-frame, an embedded column store, and hundreds of methods to transform, summarize, or filter data.
  • XChart - A light-weight library for plotting data. Many customizable chart types are available.

Search

Engines that index documents for search and analysis.

  • Apache Lucene - High-performance, full-featured, cross-platform, text search engine library.
  • Apache Solr - Enterprise search engine optimized for high-volume traffic.
  • Elasticsearch - Distributed, multitenant-capable, full-text search engine with a RESTful web interface and schema-free JSON documents.
  • Indexer4j - Simple and light full text indexing and searching library.

Security

Libraries that handle security, authentication, authorization or session management.

  • Apache Shiro - Performs authentication, authorization, cryptography and session management.
  • Bouncy Castle - All-purpose cryptographic library and JCA provider offering a wide range of functions, from basic helpers to PGP/SMIME operations.
  • Cryptomator - Multiplatform, transparent, client-side encryption of files in the cloud.
  • Hdiv - Runtime application that repels application security risks included in the OWASP Top 10, including SQL injection, cross-site scripting, cross-site request forgery, data tampering, and brute force attacks.
  • jjwt - JSON web token for Java and Android.
  • Jwks RSA - JSON Web Key Set parser.
  • Kalium - Binding for the Networking and Cryptography (NaCl) library.
  • Keycloak - Integrated SSO and IDM for browser apps and RESTful web services.
  • Keyczar - Easy-to-use, safe encryption framework with key versioning.
  • Keywhiz - System for distributing and managing secrets.
  • Nbvcxz - Advanced password strength estimation.
  • OACC - Provides permission-based authorization services.
  • pac4j - Security engine.
  • PicketLink - Umbrella project for security and identity management.
  • SecurityBuilder - Fluent Builder API for JCA and JSSE classes and especially X.509 certificates.
  • Themis - Multi-platform high-level cryptographic library provides easy-to-use encryption for protecting sensitive data: secure messaging with forward secrecy, secure data storage (AES256GCM); suits for building end-to-end encrypted applications.
  • Tink - Provides a simple and misuse-proof API for common cryptographic tasks.
  • Vault - Secures, stores, and tightly controls access to tokens, passwords, certificates, API keys, and other secrets. It handles leasing, key revocation, key rolling, and auditing. Through a unified API, users can access an encrypted Key/Value store and network encryption-as-a-service, or generate AWS IAM/STS credentials, SQL/NoSQL databases, X.509 certificates, SSH credentials, and more.

Serialization

Libraries that handle serialization with high efficiency.

  • FlatBuffers - Memory-efficient serialization library that can access serialized data without unpacking and parsing it.
  • FST - JDK-compatible, high-performance object graph serialization.
  • Kryo - Fast and efficient object graph serialization framework.
  • MessagePack - Efficient binary serialization format.
  • PHP Serializer - Serializing objects in the PHP serialization format.

Server

Servers specifically used to deploy applications.

  • Apache Tomcat - Robust, all-round server for Servlet and JSP.
  • Apache TomEE - Tomcat plus Java EE.
  • Jetty - Provides a Web server and javax.servlet container, plus support for HTTP/2, WebSocket, OSGi, JMX, JNDI, JAAS and many other integrations.
  • nanohttpd - Tiny, easily embeddable HTTP server.
  • WebSphere Liberty - Lightweight, modular server developed by IBM.
  • WildFly - Formerly known as JBoss and developed by Red Hat with extensive Java EE support.

Template Engine

Tools that substitute expressions in a template.

  • Handlebars.java - Logicless and semantic Mustache templates.
  • Jade4J - Implementation of Pug (formerly known as Jade).
  • Jtwig - Modular, configurable and fully tested template engine.
  • Pebble - Inspired by Twig and separates itself with its inheritance feature and its easy-to-read syntax. It ships with built-in autoescaping for security and it includes integrated support for internationalization.
  • Rocker - Optimized, memory efficient and speedy template engine producing statically typed, plain objects.
  • Thymeleaf - Aims to be a substitute for JSP and works for XML files.

Testing

Tools that test from model to the view.

Asynchronous

Tools that simplify testing asynchronous services.

  • Awaitility - DSL for synchronizing asynchronous operations.
  • ConcurrentUnit - Toolkit for testing multi-threaded and asynchronous applications.
  • GreenMail - In-memory email server for integration testing. Supports SMTP, POP3 and IMAP including SSL.
  • Hoverfly Java - Native bindings for Hoverfly, a proxy which allows you to simulate HTTP services.
  • REST Assured - DSL for easy testing of REST/HTTP services.

BDD

Testing for the software development process that emerged from TDD and was heavily influenced by DDD and OOAD.

  • Cucumber - Provides a way to describe features in a plain language which customers can understand.
  • Cukes-REST - A collection of Gherkin steps for REST-service testing using Cucumber.
  • J8Spec - Follows a Jasmine-like syntax.
  • JBehave - Extensively configurable framework that describes stories.
  • JGiven - Provides a fluent API which allows for simpler composition.
  • Lamdba Behave - Aims to provide a fluent API to write tests in long and descriptive sentences that read like plain English.
  • Serenity BDD - Automated Acceptance testing and reporting library that works with Cucumber, JBehave and JUnit to make it easier to write high quality executable specifications.

Fixtures

Everything related to the creation and handling of random data.

Frameworks

Provide environments to run tests for a specific use case.

  • ArchUnit - Test library for specifying and asserting architecture rules.
  • Apache JMeter - Functional testing and performance measurements.
  • Arquillian - Integration and functional testing platform for Java EE containers.
  • Citrus - Integration testing framework that focuses on both client- and server-side messaging.
  • Gatling - Load testing tool designed for ease of use, maintainability and high performance.
  • JUnit - Common testing framework.
  • Pact JVM - Consumer-driven contract testing.
  • PIT - Fast mutation-testing framework for evaluating fault-detection abilities of existing JUnit or TestNG test suites.

Matchers

Libraries that provide custom matchers.

  • AssertJ - Fluent assertions that improve readability.
  • JSONAssert - Simplifies testing JSON strings.
  • Truth - Google's assertion and proposition framework.

Miscellaneous

Other stuff related to testing.

  • Mutability Detector - Reports whether instances of a given class are immutable.
  • raml-tester - Tests if a request/response matches a given RAML definition.
  • TestContainers - Provides throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
  • pojo-tester - Automatically performs tests on basic POJO methods.

Mocking

Tools which mock collaborators to help testing single, isolated units.

  • JMockit - Integration testing, API mocking and faking, and code coverage.
  • Mockito - Mocking framework that lets you write tests with a clean and simple API.
  • MockServer - Allows mocking of systems integrated with HTTPS.
  • Moco - Concise web services for stubs and mocks.
  • PowerMock - Mocks static methods, constructors, final classes and methods, private methods, and removal of static initializers.
  • WireMock - Stubs and mocks web services.

Parameterization

Simplifies the writing of parameterized tests.

  • Burst - A unit testing library for varying test data.
  • junit-dataprovider - A TestNG-like data provider/runner for JUnit.
  • JUnitParams - Creates readable and maintainable parametrised tests.

Utility

Libraries which provide general utility functions.

  • bucket4j - Rate limiting library based on token-bucket algorithm.
  • cactoos - Collection of object-oriented primitives.
  • CRaSH - Provides a shell into a JVM that's running CRaSH. Used by Spring Boot and others.
  • Dex - Java/JavaFX tool capable of powerful ETL and data visualization.
  • Embulk - Bulk data loader that helps data transfer between various databases, storages, file formats, and cloud services.
  • fswatch - Micro library to watch for directory file system changes, simplifying java.nio.file.WatchService
  • Gephi - Cross-platform for visualizing and manipulating large graph networks.
  • Guava - Collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and more.
  • JADE - Framework and environment for building and debugging multi-agent systems.
  • JavaVerbalExpressions - Library that helps with constructing difficult regular expressions.
  • JGit - A lightweight, pure Java library implementing the Git version control system.
  • minio-java - Provides simple APIs to access any Amazon S3-compatible object storage server.
  • Protégé - Provides an ontology editor and a framework to build knowledge-based systems.
  • Underscore-java - Port of Underscore.js functions.

Version Managers

Utilities that help create the development shell environment and switch between different Java versions.

  • jabba - Java Version Manager inspired by nvm. Supports Mac OS X, Linux and Windows.
  • jenv - Java Version Manager inspired by rbenv. Can configure globally or per project. Tested on Debian and Mac OS X.
  • SDKMan - Java Version Manager inspired by RVM and rbenv. Supports UNIX-based platforms and Windows.

Web Crawling

Libraries that analyze the content of websites.

  • Apache Nutch - Highly extensible, highly scalable web crawler for production environments.
  • Crawler4j - Simple and lightweight web crawler.
  • jsoup - Scrapes, parses, manipulates and cleans HTML.
  • StormCrawler - SDK for building low-latency and scalable web crawlers.
  • webmagic - Scalable crawler with downloading, url management, content extraction and persistent.

Web Frameworks

Frameworks that handle the communication between the layers of a web application.

  • Apache Tapestry - Component-oriented framework for creating dynamic, robust, highly scalable web applications.
  • Apache Wicket - Component-based web application framework similar to Tapestry, with a stateful GUI.
  • Blade - Lightweight, modular framework that aims to be elegant and simple.
  • Bootique - Minimally opinionated framework for runnable apps.
  • Firefly - Asynchronous framework for rapid development of high-performance web application.
  • Grails - Groovy framework that provides a highly productive environment by favoring convention over configuration, no XML and support for mixins.
  • Jooby - Scalable, fast and modular micro-framework that offers multiple programming models.
  • Ninja - Full-stack web framework.
  • Pippo - Small, highly modularized, Sinatra-like framework.
  • Play - Built on Akka, it provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications in Java and Scala.
  • PrimeFaces - JSF framework with both free and commercial/support versions and frontend components.
  • Ratpack - Set of libraries that facilitate fast, efficient, evolvable and well-tested HTTP applications.
  • Takes - Opinionated web framework which is built around the concepts of True Object-Oriented Programming and immutability.
  • Vaadin Flow - Event-driven framework that uses standard web components. Server-side architecture with Ajax on the client side.

Resources

Awesome Lists

Awesome lists related to the Java & JVM ecosystem.

Communities

Active discussions.

Frontends

Websites that provide a frontend for this list. Please note, there won't be an official website. We don't associate with a particular website and everybody is allowed to create one.

Influential Books

Books that made a big impact and are still worth reading.

Podcasts and Screencasts

Something to look at or listen to while programming.

Twitter

Active accounts to follow. Descriptions from Twitter.

  • Adam Bien - Freelance author, JavaOne Rockstar speaker, consultant, Java Champion.
  • Aleksey Shipilëv - Performance geek, benchmarking czar, concurrency bug hunter.
  • Antonio Goncalves - Java Champion, JUG Leader, Devoxx France, Java EE 6/7, JCP, Author.
  • Arun Gupta - Java Champion, JavaOne Rockstar, JUG Leader, Devoxx4Kids-er, VP of Developer Advocacy at Couchbase.
  • Brian Goetz - Java Language Architect at Oracle.
  • Bruno Borges - Product Manager/Java Jock at Oracle.
  • Chris Richardson - Software architect, consultant, and serial entrepreneur, Java Champion, JavaOne Rock Star, *POJOs in Action- author.
  • Ed Burns - Consulting Member of the Technical Staff at Oracle.
  • Eugen Paraschiv - Author of the Spring Security Course.
  • Heinz Kabutz - Java Champion, speaker, author of The Java Specialists' Newsletter, concurrency performance expert.
  • Holly Cummins - Technical Lead of IBM London's Bluemix Garage, Java Champion, developer, author, JavaOne rockstar.
  • James Weaver - Java/JavaFX/IoT developer, author and speaker.
  • Java EE - Official Java EE Twitter account.
  • Java Magazine - Official Java Magazine account.
  • Java - Official Java Twitter account.
  • Javin Paul - Well-known Java blogger.
  • Josh Long - Spring Advocate at Pivotal, author of O'Reilly's Cloud Native Java- and Building Microservices with Spring Boot, JavaOne Rock Star.
  • Lukas Eder - Java Champion, speaker, JUG.ch co-leader, Founder and CEO Data Geekery (jOOQ).
  • Mario Fusco - RedHatter, JUG coordinator, frequent speaker and author.
  • Mark Heckler - Pivotal Principal Technologist and Developer Advocate, conference speaker, published author, and Java Champion, focusing on Internet of Things and the cloud.
  • Mark Reinhold - Chief Architect, Java Platform Group, Oracle.
  • Markus Eisele - Java EE evangelist, Red Hat.
  • Martijn Verburg - London JUG co-leader, speaker, author, Java Champion and much more.
  • Martin Thompson - Pasty faced performance gangster.
  • Monica Beckwith - Performance consultant, JavaOne Rock Star.
  • OpenJDK - Official OpenJDK account.
  • Peter Lawrey - Peter Lawrey, Java performance expert.
  • Randy Shoup - Stitch Fix VP Engineering, speaker, JavaOne Rock Star.
  • Reza Rahman - Java EE/GlassFish/WebLogic evangelist, author, speaker, open source hacker.
  • Sander Mak - Java Champion, author.
  • Simon Maple - Java Champion, VirtualJUG founder, LJC leader, RebelLabs author.
  • Stephen Colebourne - Java Champion, speaker.
  • Trisha Gee - Java Champion and speaker.
  • Venkat Subramaniam - Author, University of Houston professor, MicroSoft MVP award recipient, JavaOne Rock Star, Java Champion.

Websites

Sites to read.

 

 

原文:

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of awesome Java frameworks, libraries and software.

【安全精选】黑客,测试者和安全研究人员的各种精彩列表的集合

Chinese, Simplified

Awesome Hacking 

A collection of awesome lists for hackers, pentesters & security researchers.

Your contributions are always welcome !

Awesome Repositories

Repository Description
Android Security Collection of Android security related resources
AppSec Resources for learning about application security
Bug Bounty List of Bug Bounty Programs and write-ups from the Bug Bounty hunters
CTF List of CTF frameworks, libraries, resources and softwares
Cyber Skills Curated list of hacking environments where you can train your cyber skills legally and safely
DevSecOps List of awesome DevSecOps tools with the help from community experiments and contributions
Exploit Development Resources for learning about Exploit Development
Fuzzing List of fuzzing resources for learning Fuzzing and initial phases of Exploit Development like root cause analysis
Hacking List of awesome Hacking tutorials, tools and resources
Hacking Resources Collection of hacking / penetration testing resources to make you better!
Honeypots List of honeypot resources
Incident Response List of tools for incident response
Industrial Control System Security List of resources related to Industrial Control System (ICS) security
InfoSec List of awesome infosec courses and training resources
IoT Hacks Collection of Hacks in IoT Space
Malware Analysis List of awesome malware analysis tools and resources
OSINT List of amazingly awesome Open Source Intelligence (OSINT) tools and resources
OSX and iOS Security OSX and iOS related security tools
Pcaptools Collection of tools developed by researchers in the Computer Science area to process network traces
Pentest List of awesome penetration testing resources, tools and other shiny things
PHP Security Libraries for generating secure random numbers, encrypting data and scanning for vulnerabilities
Red Teaming List of Awesome Red Team / Red Teaming Resources
Reversing List of awesome reverse engineering resources
Sec Talks List of awesome security talks
SecLists Collection of multiple types of lists used during security assessments
Security Collection of awesome software, libraries, documents, books, resources and cools stuffs about security
Serverless Security Collection of Serverless security related resources
Social Engineering List of awesome social engineering resources
Static Analysis List of static analysis tools, linters and code quality checkers for various programming languages
Threat Intelligence List of Awesome Threat Intelligence resources
Vehicle Security List of resources for learning about vehicle security and car hacking
Vulnerability Research List of resources about Vulnerability Research
Web Hacking List of web application security
Windows Exploitation - Advanced List of Awesome Advanced Windows Exploitation References
WiFi Arsenal Pack of various useful/useless tools for 802.11 hacking
YARA List of awesome YARA rules, tools, and people
Hacker Roadmap A guide for amateur pen testers and a collection of hacking tools, resources and references to practice ethical hacking.

Other useful repositories

Repository Description
Adversarial Machine Learning Curated list of awesome adversarial machine learning resources
AI Security Curated list of AI security resources
API Security Checklist Checklist of the most important security countermeasures when designing, testing, and releasing your API
APT Notes Various public documents, whitepapers and articles about APT campaigns
Bug Bounty Reference List of bug bounty write-up that is categorized by the bug nature
Cryptography Cryptography resources and tools
CTF Tool List of Capture The Flag (CTF) frameworks, libraries, resources and softwares
CVE PoC List of CVE Proof of Concepts (PoCs)
Detection Lab Vagrant & Packer scripts to build a lab environment complete with security tooling and logging best practices
Forensics List of awesome forensic analysis tools and resources
Free Programming Books Free programming books for developers
Gray Hacker Resources Useful for CTFs, wargames, pentesting
Hacker101 A free class for web security by HackerOne
Infosec Getting Started A collection of resources, documentation, links, etc to help people learn about Infosec
Infosec Reference Information Security Reference That Doesn't Suck
IOC Collection of sources of indicators of compromise
Linux Kernel Exploitation A bunch of links related to Linux kernel fuzzing and exploitation
Lockpicking Resources relating to the security and compromise of locks, safes, and keys.
Machine Learning for Cyber Security Curated list of tools and resources related to the use of machine learning for cyber security
Malware Scripts Useful scripts related with malware
Payloads Collection of web attack payloads
PayloadsAllTheThings List of useful payloads and bypass for Web Application Security and Pentest/CTF
Pentest Cheatsheets Collection of the cheat sheets useful for pentesting
Pentest Wiki A free online security knowledge library for pentesters / researchers
Probable Wordlists Wordlists sorted by probability originally created for password generation and testing
Resource List Collection of useful GitHub projects loosely categorised
Reverse Engineering List of Reverse Engineering articles, books, and papers
RFSec-ToolKit Collection of Radio Frequency Communication Protocol Hacktools
Security Cheatsheets Collection of cheatsheets for various infosec tools and topics
Security List Great security list for fun and profit
Shell List of awesome command-line frameworks, toolkits, guides and gizmos to make complete use of shell
ThreatHunter-Playbook A Threat hunter's playbook to aid the development of techniques and hypothesis for hunting campaigns
Web Security Curated list of Web Security materials and resources

 

原文:https://github.com/Hack-with-Github/Awesome-Hacking

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A collection of various awesome lists for hackers, pentesters and security researchers

【流式框架】精选流式框架,应用程序等的精选列表

Chinese, Simplified

Awesome Streaming

A curated list of awesome streaming (stream processing) frameworks, applications, readings and other resources. Inspired by other awesome projects.

Website

https://manuzhang.github.io/awesome-streaming/ is a more dynamic website where you can find updates of the awesome projects here.

Table of Contents

Streaming Engine

  • Apache Apex [Java] - unified platform for big data stream and batch processing.
  • Apache Flink [Java] - system for high-throughput, low-latency data stream processing that supports stateful computation, data-driven windowing semantics and iterative stream processing.
  • Apache Samza [Scala/Java] - distributed stream processing framework that build on Kafka(messaging, storage) and YARN(fault tolerance, processor isolation, security and resource management).
  • Apache Spark Streaming [Scala] - makes it easy to build scalable fault-tolerant streaming applications.
  • Apache Storm [Clojure/Java] - distributed real-time computation system. Storm is to stream processing what Hadoop is to batch processing.
  • AthenaX [Java] - Uber's Stream Analytics Framework used in production
  • Faust [Python] - stream processing library, porting the ideas from Kafka Streams to Python
  • Gearpump [Scala] - lightweight real-time distributed streaming engine built on Akka.
  • Hazelcast Jet [Java] - A general purpose distributed data processing engine, built on top of Hazelcast.
  • hailstorm [Haskell] - distributed stream processing with exactly-once semantics based on Storm.
  • heron - Twitter's real-time analytics platform that is fully API-compatible with Storm. Storm has been replaced by Heron at Twitter.
  • mupd8(muppet) [Scala/Java] - mapReduce-style framework for processing fast/streaming data.
  • Onyx [Clojure] - Distributed, masterless, high performance, fault tolerant data processing.
  • s4 [Java] - general-purpose, distributed, scalable, fault-tolerant, pluggable platform that allows programmers to easily develop applications for processing continuous unbounded streams of data.
  • SABER [Java/C] - Window-Based Hybrid CPU/GPU Stream Processing Engine.
  • SPQR [Java] - dynamic framework for processing high volumn data streams through pipelines.
  • tigon [C++/Java] - high throughput real-time streaming processing framework built on Hadoop and HBase.
  • Teknek [Java] - Simple elegant stream processing with interactive prototying shell SOL (Stream Operator Language) Mesos, designed for high performance data processing jobs that require flexibility & control.
  • Trill [.NET/C#] - Trill is a high-performance one-pass in-memory streaming analytics engine from Microsoft Research.
  • Wallaroo [Python] - A fast, stream-processing framework. Wallaroo makes it easy to react to data in real-time. By eliminating infrastructure complexity, going from prototype to production has never been simpler.

Streaming Library

  • Apache Kafka Streams [Java] - lightweight stream processing library included in Apache Kafka (since 0.10 version).
  • Akka Streams [Scala] - stream processing library on Akka Actors.
  • Benthos [Go] - Benthos is a high performance and resilient message streaming service, able to connect various sources and sinks and perform arbitrary actions, transformations and filters on payloads
  • FS2(prev. 'Scalaz-Stream') [Scala] - Compositional, streaming I/O library for Scala.
  • monix [Scala] - high-performance Scala / Scala.js library for composing asynchronous and event-based programs.
  • Streamline [Java] - Stream Analytics Framework by Hortonworks, designed as a wrapper around existing streaming solutions like Storm. Aimed to allow users to drag-and-drop streaming components to focus on business logic.
  • StreamAlert [Python] - Airbnb's Real-time Data Analysis and Alerting.
  • Swave [Scala] - A lightweight Reactive Streams Infrastructure Toolkit for Scala.
  • Streamz [Python] - A lightweight library for building pipelines to manage continuous streams of data; supports complex pipelines that involve branching, joining, flow control, feedback, back pressure, and so on.
  • Stream Ops [Java] - A fully embeddable data streaming engine and stream processing API for Java.

Streaming Application

  • straw [Python/Java] - A platform for real-time streaming search.
  • storm-crawler [Java] - Web crawler SDK based on Apache Storm.

IoT

  • sensorbee [Go] - lightweight stream processing engine for IoT.
  • Apache Edgent [Java] - a programming model and runtime that enables continuous streaming analytics on gateways and edge devices which can work with centralized systems to provide efficient and timely analytics across the whole IoT ecosystem: from the center to the edge, opens sourced by IBM.

DSL

  • Apache Beam [Java] - unified model and set of language-specific SDKs for defining and executing data processing workflows, and also data ingestion and integration flows, supporting Enterprise Integration Patterns (EIPs) and Domain Specific Languages (DSLs), open sourced by Google.
  • coast [Scala] - a DSL that builds DAGs on top of Samza and provides exactly-once semantics.
  • Esper [Java] - component for complex event processing (CEP) and event series analysis.
  • Streamparse [Python] - lets you run Python code against real-time streams of data via Apache Storm.
  • summingbird [Scala] - library that lets you write MapReduce programs that look like native Scala or Java collection transformations and execute them on a number of well-known distributed MapReduce platforms, including Storm and Scalding.

Data Pipeline

  • Apache Kafka [Scala/Java] - distributed, partitioned, replicated commit log service, which provides the functionality of a messaging system, but with a unique design.
  • Apache Pulsar [Java] - distributed pub-sub messaging platform with a very flexible messaging model and an intuitive client API.
  • brooklin [Java] - a distributed system intended for streaming data between various heterogeneous source and destination systems with high reliability and throughput at scale from Linkedin (replaced databus).
  • camus [Java] - Linkedin's Kafka -> HDFS pipeline.
  • databus [Java] - Linkedin's source-agnostic distributed change data capture system.
  • flume [Java] - distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data.
  • metaq [Java] - Taobao's high available, high performance distributed messaging system
  • NATS streaming [Go] - fast disk-backed messaging solution
  • nsq [Go] - realtime distributed messaging platform designed to operate at scale, handling billions of messages per day.
  • suro [Java] - data pipeline service for collecting, aggregating, and dispatching large volume of application events including log data.
  • StreamSets Data Collector [Java] - continuous big data ingestion infrastructure that reads from and writes to a large number of end-points, including S3, JDBC, Hadoop, Kafka, Cassandra and many others.

Online Machine Learning

  • Apache Samoa [Java] - distributed streaming machine learning (ML) framework that contains a programing abstraction for distributed streaming ML algorithms.
  • DataSketches [Java] - sketches library from Yahoo!.
  • streamDM [Scala] - mining Big Data streams using Spark Streaming from Huawei.
  • StreamingBandit [Python] - Provides a webserver to quickly setup and evaluate possible solutions to contextual multi-armed bandit (cMAB) problems.
  • StormCV [Java] - enables the use of Apache Storm for video processing by adding computer vision (CV) specific operations and data model.
  • trident-ml [Java] - realtime online machine learning library based on Trident.
  • yurita [Scala] - Anomaly detection framework built on Spark Structured Streaming from Paypal.

Streaming SQL

  • pipelinedb [C] - An open-source relational database that runs SQL queries continuously on streams, incrementally storing results in tables.
  • squall [Java] - Squall executes SQL queries on top of Storm for doing online processing.
  • StreamCQL [Java] - Continuous Query Language on RealTime Computation System.
  • KSQL [Java] - a Streaming SQL Engine for Apache Kafka.

Benchmark

  • storm-benchmark [Java] - a set of benchmarks to test Storm performance.
  • storm-perf-test [Java] - a simple storm performance/stress test.
  • streaming-benchmarks [Java] - Benchmarks for Low Latency (Streaming) solutions including Apache Storm, Apache Spark, Apache Flink, etc.
  • flotilla [Go] - Automated message queue orchestration for scaled-up benchmarking.

Toolkit

  • akka [Scala] - toolkit and runtime for building highly concurrent, distributed, and resilient message-driven application on the JVM.
  • pulsar [Python] - Actor based event driven concurrent framework for Python.
  • aeron [Java/C++] - efficient reliable unicast and multicast message transport.
  • StreamFlow [Java] - stream processing tool designed to help build and monitor processing workflows.
  • samza-luwak [Java] - uses Luwak, a stored-query engine built on Lucene, to implement full-text search on streams.
  • Turbine [Java] - tool for aggregating streams of Server-Sent Event (SSE) JSON data into a single stream.

Closed Source

  • Amazon Kinesis Streams [Java] - real-time, fully managed and scalable data stream engine provided by AWS.
  • Azure Stream Analytics [.NET] a massively scalable, fully managed, real-time, data stream engine provided by Microsoft Azure.
  • concord [C++] - a distributed stream processing framework built in C++ on top of Apache.
  • IBM Streams [Python/Java/Scala] - platform for distributed processing and real-time analytics. Provides toolkits for advanced analytics like geospatial, time series, etc. out of the box.
  • jubatus [C++] - distributed processing framework and streaming machine learning library.
  • LogDevice [C++] - a high-performant distributed system by Facebook for streaming and storing sequential data, using a log structure.
  • mantistech-blog - Netflix's event stream processing system.
  • millwheel - framework for building low-latency data-processing applications that is widely used at Google.

Readings

  1. In-Stream Big Data Processing
  2. The world beyond batch: Streaming 101 by Tyler Akidau.
  3. Real Time Analytics: Algorithms and Systems (VLDB 2015)

 

原文:https://github.com/manuzhang/awesome-streaming

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
a curated list of awesome streaming frameworks, applications, etc

【流水线工具】精选管道工具包的精选列表

Chinese, Simplified

Awesome Pipeline

A curated list of awesome pipeline toolkits inspired by Awesome Sysadmin

Pipeline frameworks & libraries

  • ActionChain - A workflow system for simple linear success/failure workflows.
  • Adage - Small package to describe workflows that are not completely known at definition time.
  • Airflow - Python-based workflow system created by AirBnb.
  • Anduril - Component-based workflow framework for scientific data analysis.
  • Antha - High-level language for biology.
  • Bds - Scripting language for data pipelines.
  • BioMake - GNU-Make-like utility for managing builds and complex workflows.
  • BioQueue - Explicit framework with web monitoring and resource estimation.
  • Bioshake - Haskell DSL built on shake with strong typing and EDAM support
  • Bistro - Library to build and execute typed scientific workflows.
  • Bpipe - Tool for running and managing bioinformatics pipelines.
  • Briefly - Python Meta-programming Library for Job Flow Control.
  • Cluster Flow - Command-line tool which uses common cluster managers to run bioinformatics pipelines.
  • Clusterjob - Automated reproducibility, and hassle-free submission of computational jobs to clusters.
  • Compss - Programming model for distributed infrastructures.
  • Conan2 - Light-weight workflow management application.
  • Consecution - A Python pipeline abstraction inspired by Apache Storm topologies.
  • Cosmos - Python library for massively parallel workflows.
  • Cromwell - Workflow Management System geared towards scientific workflows from the Broad Institute.
  • Cuneiform - Advanced functional workflow language and framework, implemented in Erlang.
  • Dagobah - Simple DAG-based job scheduler in Python.
  • Dagr - A scala based DSL and framework for writing and executing bioinformatics pipelines as Directed Acyclic GRaphs.
  • Dagster - Python-based API for defining DAGs that interfaces with popular workflow managers for building data applications.
  • Dask - Dask is a flexible parallel computing library for analytics.
  • Dockerflow - Workflow runner that uses Dataflow to run a series of tasks in Docker.
  • Doit - Task management & automation tool.
  • Drake - Robust DSL akin to Make, implemented in Clojure.
  • Drake R package - Reproducibility and high-performance computing with an easy R-focused interface. Unrelated to Factual's Drake.
  • Dray - An engine for managing the execution of container-based workflows.
  • eHive - System for creating and running pipelines on a distributed compute resource.
  • Fission Workflows - A fast, lightweight workflow engine for serverless/FaaS functions.
  • Flex - Language agnostic framework for building flexible data science pipelines (Python/Shell/Gnuplot).
  • Flowr - Robust and efficient workflows using a simple language agnostic approach (R package).
  • Gc3pie - Python libraries and tools for running applications on diverse Grids and clusters.
  • Guix Workflow Language - A workflow management language extension for GNU Guix
  • Gwf - Make-like utility for submitting workflows via qsub.
  • HyperLoom - Platform for defining and executing workflow pipelines in large-scale distributed environments.
  • Joblib - Set of tools to provide lightweight pipelining in Python.
  • Jug - A task Based parallelization framework for Python.
  • Kedro - Workflow development tool that helps you build data pipelines.
  • Ketrew - Embedded DSL in the OCAML language alongside a client-server management application.
  • Kronos - Workflow assembler for cancer genome analytics and informatics.
  • Loom - Tool for running bioinformatics workflows locally or in the cloud.
  • Longbow - Job proxying tool for biomolecular simulations.
  • Luigi - Python module that helps you build complex pipelines of batch jobs.
  • Makeflow - Workflow engine for executing large complex workflows on clusters.
  • Mara - A lightweight, opinionated ETL framework, halfway between plain scripts and Apache Airflow
  • Mario - Scala library for defining data pipelines.
  • Martian - A language and framework for developing and executing complex computational pipelines.
  • MD Studio - Microservice based workflow engine.
  • Mistral - Python based workflow engine by the Open Stack project.
  • Moa - Lightweight workflows in bioinformatics.
  • Nextflow - Flow-based computational toolkit for reproducible and scalable bioinformatics pipelines.
  • NiPype - Workflows and interfaces for neuroimaging packages.
  • OpenGE - Accelerated framework for manipulating and interpreting high-throughput sequencing data.
  • Pachyderm - Distributed and reproducible data pipelining and data management, built on the container ecosystem.
  • Parsl - Parallel Scripting Library.
  • PipEngine Ruby based launcher for complex biological pipelines.
  • Pinball - Python based workflow engine by Pinterest.
  • Prefect Core - Python based workflow engine powering Prefect.
  • PyFlow - Lightweight parallel task engine.
  • PypeFlow - Lightweight workflow engine for data analysis scripting.
  • pyperator - Simple push-based python workflow framework using asyncio, supporting recursive networks.
  • pyppl - A python lightweight pipeline framework.
  • pypyr - Simple task runner for sequential steps defined in a pipeline yaml, with AWS and Slack plug-ins.
  • Pwrake - Parallel workflow extension for Rake.
  • Qdo - Lightweight high-throughput queuing system for workflows with many small tasks to perform.
  • Qsubsec - Simple tokenised template system for SGE.
  • Rabix - Python-based workflow toolkit based on the Common Workflow Language and Docker.
  • Rain - Framework for large distributed task-based pipelines, written in Rust with Python API.
  • Ray - Flexible, high-performance distributed Python execution framework.
  • Reflow - Language and runtime for distributed, incremental data processing in the cloud.
  • Remake - Make-like declarative workflows in R.
  • Rmake - Wrapper for the creation of Makefiles, enabling massive parallelization.
  • Rubra - Pipeline system for bioinformatics workflows.
  • Ruffus - Computation Pipeline library for Python.
  • Ruigi - Pipeline tool for R, inspired by Luigi.
  • Sake - Self-documenting build automation tool.
  • SciLuigi - Helper library for writing flexible scientific workflows in Luigi.
  • SciPipe - Library for writing Scientific Workflows in Go.
  • Scoop - Scalable Concurrent Operations in Python.
  • Seqtools - Python library for lazy evaluation of pipelined transformations on indexable containers.
  • Snakemake - Tool for running and managing bioinformatics pipelines.
  • Spiff - Based on the Workflow Patterns initiative and implemented in Python.
  • Stolos - Directed Acyclic Graph task dependency scheduler that simplify distributed pipelines.
  • Stpipe - File processing pipelines as a Python library.
  • Sundial - Jobsystem on AWS ECS or AWS Batch managing dependencies and scheduling.
  • Suro - Java-based distributed pipeline from Netflix.
  • Swift - Fast easy parallel scripting - on multicores, clusters, clouds and supercomputers.
  • Tibanna Tool that helps you run genomic pipelines on Amazon cloud.
  • Toil - Distributed pipeline workflow manager (mostly for genomics).
  • Yap - Extensible parallel framework, written in Python using OpenMPI libraries.
  • Wallaroo - Framework for streaming data applications and algorithms that react to real-time events.
  • WorldMake - Easy Collaborative Reproducible Computing.
  • Zenaton - Workflow engine for orchestrating jobs, data and events across your applications and third party services

Workflow platforms

  • ActivePapers - Computational science made reproducible and publishable.
  • Apache Iravata - Framework for executing and managing computational workflows on distributed computing resources.
  • Arteria - Event-driven automation for sequencing centers. Initiates workflows based on events.
  • Arvados - A container based workflow platform.
  • Biokepler - Bioinformatics Scientific Workflow for Distributed Analysis of Large-Scale Biological Data.
  • Butler - Framework for running scientific workflows on public and academic clouds.
  • Chipster - Open source platform for data analysis.
  • Clubber - Cluster Load Balancer for Bioinformatics e-Resources.
  • Digdag - Workflow manager designed for simplicity, extensibility and collaboration.
  • Fireworks - Centralized workflow server for dynamic workflows of high-throughput computations.
  • Galaxy - Web-based platform for biomedical research.
  • Kepler - Kepler scientific workflow application from University of California.
  • KNIME Analytics Platform - General-purpose platform with many specialized domain extensions.
  • NextflowWorkbench - Integrated development environment for Nextflow, Docker and Reusable Workflows.
  • omega|ml DataOps Platform - Data & model pipeline deployment for humans - integrated, scalable, extensible.
  • OpenMOLE - Workflow Management System for exploration of models and parameter optimization.
  • Ophidia - Data-analytics platform with declarative workflows of distributed operations.
  • Pegasus - Workflow Management System.
  • Pentaho Kettle - Workflow platform with a graphical design environment.
  • Piper - Distributed workflow engine designed to be dead simple.
  • Polyaxon - A platform for machine learning experimentation workflow.
  • Reana - Platform for reusable research data analyses developed by CERN.
  • Sushi - Supporting User for SHell script Integration.
  • Yabi - Online research environment for grid, HPC and cloud computing.
  • Taverna - Domain independent workflow system.
  • VisTrails - Scientific workflow and provenance management system.
  • Wings - Semantic workflow system utilizing Pegasus as execution system.
  • Watchdog - Workflow management system for the automated and distributed analysis of large-scale experimental data.

Workflow languages

Workflow standardization initiatives

Literate programming (aka interactive notebooks)

  • Beaker Notebook-style development environment.
  • Binder - Turn a GitHub repo into a collection of interactive notebooks powered by Jupyter and Kubernetes
  • IPython A rich architecture for interactive computing.
  • Jupyter Language-agnostic notebook literate programming environment.
  • Pathomx - Interactive data workflows built on Python.
  • R Notebooks - R Markdown notebook literate programming environment.
  • SoS - Readable, interactive, cross-platform and cross-language data science workflow system.
  • Zeppelin - Web-based notebook that enables interactive data analytics.

Extract, transform, load (ETL)

  • Cadence Distributed, scalable, durable, and highly available orchestration engine developed by Uber.
  • LinkedPipes ETL - Linked Data publishing and consumption ETL tool.
  • Kiba ETL - A data processing & ETL framework for Ruby.

Application management workflows

  • Argo - Get stuff done with container-native workflows for Kubernetes.
  • Deis - Workflow system to create and manage applications on Kubernetes.

Build automation tools

  • Bazel - Build software just as engineers do at Google.
  • DoIt - Highly generalized task-management and automation in Python.
  • Gradle - Unified cross platforms builds.
  • Scons - Python library focused on C/C++ builds.
  • Shake - Define robust build systems akin to GNU Make using Haskell.
  • Make - The GNU Make build system.
  • Prodmodel - Build system for data science pipelines.

Other projects

  • HPC Grid Runner
  • noWorkflow - Supporting infrastructure to run scientific experiments without a scientific workflow management system, and still get things like provenance.
  • Reprozip - Simplifies the process of creating reproducible experiments from command-line executions.

Related lists

 

原文:https://github.com/pditommaso/awesome-pipeline

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of awesome pipeline toolkits

【系统工具】精选的开源sysadmin资源列表

Chinese, Simplified

Awesome Sysadmin

Table of Contents

Backups

Backup software.

  • Amanda - Client-server model backup tool.
  • Attic - A deduplicating backup program written in Python.
  • Bacula - Another Client-server model backup tool.
  • Bareos - A fork of Bacula backup tool.
  • Barman - Backup and Recovery Manager for disaster recovery of PostgreSQL servers.
  • Backupninja - Lightweight, extensible meta-backup system.
  • Backuppc - Client-server model backup tool with file pooling scheme.
  • Brebis - A fully automated backup checker.
  • Bup - Incremental backups with rolling checksums, git packfiles, de-duplication, and a FUSE filesystem.
  • Burp - Network backup and restore program.
  • Duplicati - Multiple backends, encryption, web-ui and multi-OS backup tool.
  • Duplicity - Encrypted bandwidth-efficient backup using the rsync algorithm.
  • FreeFileSync - Folder comparison and synchronization tool.
  • Lsyncd - File Monitor which spawns a process to synchronize the changes (rsync by default).
  • restic - Fast, secure, efficient backup program
  • Rsnapshot - Filesystem Snapshotting Utility.
  • SafeKeep - Centralized pull-based backup using rdiff-backup.
  • Snebu – Snapshot backup with global multi-client deduplication and transparent compression.
  • UrBackup - Another client-server backup system.
  • ZBackup - A versatile deduplicating backup tool.

Backup libraries.

  • Backup - Provides an elegant DSL in Ruby for performing backups on UNIX-like systems.
  • DREBS - AWS EBS backup script that supports strategies.

Build Automation

Build automation tools.

  • Apache Ant - Automation build tool, similar to make, written in Java.
  • Apache Maven - Build automation tool mainly for Java.
  • GNU Make - The most popular automation build tool for many purposes.
  • Gradle - Another open source build automation system.

ChatOps

Conversation-driven development & management.

  • CloudBot - The simple, fast, expandable, open-source Python IRC bot.
  • Eggdrop - The world's most popular Open Source IRC bot, designed for flexibility and ease of use.
  • Err - A plugin based chatbot designed to be easily deployable, extensible and maintainable.
  • Hubot - A customizable, life embetterment robot.
  • Lazlo - A chatops automation framework in Go.
  • Lita - A robot companion for your company's chat room.
  • KeyBase - Encrypted chat, cloud and git.

Cloning

Cloning software.

  • Clonezilla - Partition and disk imaging/cloning program.
  • Fog - Another computer cloning solution.
  • Redo Backup - Easy Backup, Recovery and Restore.

Cloud Computing

  • AppScale - Open source cloud software with Google App Engine compatibility.
  • Archipel - Manage and supervise virtual machines using Libvirt.
  • CloudStack - Cloud computing software for creating, managing, and deploying infrastructure cloud services.
  • Cobbler - Cobbler is a Linux installation server that allows for rapid setup of network installation environments.
  • Eucalyptus - Open source private cloud software with AWS compatibility.
  • Mesos - Develop and run resource-efficient distributed systems.
  • OpenNebula - An user-driven cloud management platform for sysadmins and devops.
  • Openshift Origin - Open source upstream of OpenShift, the next generation application hosting platform developed by Red Hat.
  • OpenStack - Open source software for building private and public clouds.
  • The Foreman - Foreman is a complete lifecycle management tool for physical and virtual servers. FOSS.
  • Tsuru - Tsuru is an extensible and open source Platform as a Service software.
  • Terraform - Terraform allows you to practice infrastructure as code and is commonly used for AWS/GCE.

Cloud Orchestration

  • BOSH - IaaS orchestration platform originally written for deploying and managing Cloud Foundry PaaS, but also useful for general purpose distributed systems.
  • Ansible - Contains modules for controlling many types of cloud resources.
  • Cloudify - Open source TOSCA-based cloud orchestration software platform written in Python and YAML.
  • consul - It is a tool for discovering and configuring services in your infrastructure.
  • doozerd - Doozer is a highly-available, completely consistent store for small amounts of extremely important data.
  • etcd - A highly-available key value store for shared configuration and service discovery.
  • Juju - Cloud orchestration tool which manages services as charms, YAML configuration and deployment script bundles.
  • MCollective - Ruby framework to manage server orchestration, developed by Puppet labs.
  • Overcast - Deploy VMs across different cloud providers, and run commands and scripts across any or all of them in parallel via SSH.
  • Rundeck - Simple orchestration tool.
  • Salt - Fast, scalable and flexible systems management software written in Python/ZeroMQ.
  • serf - Serf is a tool for cluster membership.
  • StackStorm - Event Driven Operations and ChatOps platform for infrastructure management. Written in Python.
  • zookeeper - ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.

Cloud Storage

  • git-annex assistant - A synchronised folder on each of your OSX and Linux computers, Android devices, removable drives, NAS appliances, and cloud services.
  • nextCloud - Provides access to your files via the web
  • ownCloud - Provides universal access to your files via the web, your computer or your mobile devices.
  • Seafile - Another Open Source Cloud Storage solution.
  • SparkleShare - Provides cloud storage and file synchronization services. By default, it uses Git as a storage backend.
  • Swift - A highly available, distributed, eventually consistent object/blob store.
  • Syncthing - Open Source system for private, encrypted and authenticated distribution of data.

Code Review

Web Based collaborative code review system.

  • Gerrit - Based on the Git version control, it facilitates software developers to review modifications to the source code and approve or reject those changes.
  • Phabricator - Code review tool build by facebook and used by WikiMedia, FB, dropbox etc. Comes with an integrated wiki, bug tracker, VC integration and a CLI tool called arcanist.
  • Review Board - Web-based collaborative code review tool.

Collaborative Software

Collaborative software or groupware suites.

  • Citadel/UX - Collaboration suite (messaging and groupware) that is descended from the Citadel family of programs.
  • EGroupware - Groupware software written in PHP.
  • Horde Groupware - PHP based collaborative software suite that includes email, calendars, wikis, time tracking and file management.
  • Kolab - Another groupware suite.
  • SOGo - Collaborative software server with a focus on simplicity and scalability.
  • Zimbra - Collaborative software suite, that includes an email server and web client.

Configuration Management Database

Configuration management database (CMDB) software.

  • Clusto - Helps you keep track of your inventory, where it is, how it's connected, and provides an abstracted interface for interacting with the elements of the infrastructure.
  • Collins - At Tumblr, it's the infrastructure source of truth and knowledge.
  • i-doit - Open Source IT Documentation and CMDB.
  • iTop - Complete open source, ITIL, web based service management tool.
  • Ralph - Asset management, DCIM and CMDB system for large Data Centers as well as smaller LAN networks.
  • Sicekit - The systems & infrastructure encyclopaedia toolkit (based on MediaWiki).

Configuration Management

Configuration management tools.

  • Ansible - It's written in Python and manages the nodes over SSH.
  • CFEngine - Lightweight agent system. Configuration state is specified via a declarative language.
  • Chef - It's written in Ruby and Erlang and uses a pure-Ruby DSL.
  • mgmt - Next generation config management written in Go.
  • Pallet - Infrastructure definition, configuration and management via a Clojure DSL.
  • Puppet - It's written in Ruby and uses Puppet's declarative language or a Ruby DSL.
  • (R)?ex - It's written in Perl and use plain Perl, over SSH without agent.
  • Salt - It's written in Python.
  • Slaughter - It's written in Perl.

Continuous Integration & Continuous Deployment

Continuous integration/deployment software.

  • Buildbot - Python-based toolkit for continuous integration.
  • Drone - Continuous integration server built on Docker and configured using YAML files.
  • GitLab CI - Based off of ruby. They also provide GitLab, which manages git repositories.
  • Go - Open source continuous delivery server.
  • Jenkins - An extendable open source continuous integration server.
  • Concourse CI - A pipeline-based CI system written in Go.
  • Spinnaker - Open source, multi-cloud continuous delivery platform for releasing software changes.
  • TeamCity - Powerful Continuous Integration out of the box

Control Panels

Web hosting and server control panels.

  • Ajenti - Control panel for Linux and BSD.
  • Cockpit - New multi-server web interface for Linux servers written in C.
  • Feathur - VPS Provisioning and Management Software.
  • Froxlor - Easy to use panel for Linux with Nginx and PHP-FPM support.
  • ISPConfig - Hosting control panel for Linux.
  • Sentora - Control panel for Linux, BSD, and Windows based on ZPanel.
  • VestaCP - Hosting panel for Linux but with Nginx.
  • Virtualmin - Control panel for Linux based on webmin.
  • Webmin - Linux server control panel.
  • ZPanel - Control panel for Linux, BSD, and Windows.

Deployment Automation

Tools and scripts to support deployments to your servers.

  • Capistrano - Deploy your application to any number of machines simultaneously, in sequence or as a rolling set via SSH (rake based).
  • Fabric - Python library and cli tool for streamlining the use of SSH for application deployment or systems administration tasks.
  • Mina - Really fast deployer and server automation tool (rake based).
  • Rocketeer - PHP task runner and deployment tool.
  • Vlad the Deployer - Deployment automation (rake based).

Diagramming

Tools to diagram networks.

  • drawthe.net - Draws network diagrams dynamically from a text file describing the placement, layout and icons.

Distributed Filesystems

Network distributed filesystems.

  • Ceph - Distributed object store and file system.
  • DRBD - Distributed Replicated Block Device.
  • LeoFS - Unstructured object/data storage and a highly available, distributed, eventually consistent storage system.
  • GlusterFS - Scale-out network-attached storage file system.
  • HDFS - Distributed, scalable, and portable file-system written in Java for the Hadoop framework.
  • Lustre - A type of parallel distributed file system, generally used for large-scale cluster computing.
  • MooseFS - Fault tolerant, network distributed file system.
  • MogileFS - Application level, network distributed file system.
  • OpenAFS - Distributed network file system with read-only replicas and multi-OS support.
  • TahoeLAFS - secure, decentralized, fault-tolerant, peer-to-peer distributed data store and distributed file system.
  • XtreemFS - XtreemFS is a fault-tolerant distributed file system for all storage needs.

DNS

DNS servers.

  • Bind - The most widely used name server software.
  • djbdns - A collection of DNS applications, including tinydns.
  • Designate - DNS REST API that support several DNS servers as its backend.
  • dnsmasq - A lightweight service providing DNS, DHCP and TFTP services to small-scale networks.
  • Knot - High performance authoritative-only DNS server.
  • NSD - Authoritative only, high performance, simple name server.
  • PowerDNS - DNS server with a variety of data storage back-ends and load balancing features.
  • Unbound - Validating, recursive, and caching DNS resolver.
  • Yadifa - Lightweight authoritative Name Server with DNSSEC capabilities powering the .eu top-level domain.

Editors

Open source code editors.

  • Atom - A hackable text editor from GitHub.
  • Brackets - Open source code editor for web designers and front-end developers.
  • Eclipse - IDE written in Java with an extensible plug-in system.
  • Geany - GTK2 text editor.
  • GNU Emacs - An extensible, customizable text editor-and more.
  • Haroopad - Markdown editor with live preview.
  • ICEcoder - Code editor awesomeness, built with common web languages.
  • IntellijIDEA - Capable and ergonomic IDE, written in Java, It has a lot of plug-ins.
  • jotgit - Git-backed real-time collaborative code editing.
  • Light Table - The next generation code editor.
  • Lime - Aims to provide an open source solution to Sublime Text
  • SciTE - A SCIntilla based Text Editor.
  • TextMate - A graphical text editor for OS X.
  • Vim - A highly configurable text editor built to enable efficient editing.
  • Nano - A popular text editor, by default comes with most Linux distributions.
  • Visual Studio Code - Fast, hackable, multi-platform code editor from Microsoft.

IT Asset Management

IT Assets Management software.

  • GLPI - Information Resource-Manager with an additional Administration Interface.
  • OCS Inventory NG - Enables users to inventory their IT assets.
  • Netbox - IP address management (IPAM) and data center infrastructure management (DCIM) tool.
  • RackTables - Datacenter and server room asset management like document hardware assets, network addresses, space in racks, networks configuration.
  • Ralph - Asset management, DCIM and CMDB system for large Data Centers as well as smaller LAN networks.
  • Snipe IT - Asset & license management software.
  • OpenDCIM - A web based Data Center Infrastructure Management application.

LDAP

LDAP servers.

LDAP management

Log Management

Log management tools: collect, parse, visualize ...

  • Echofish - A web based real-time event log aggregation, analysis, monitoring and management system.
  • Elasticsearch - A Lucene Based Document store mainly used for log indexing, storage and analysis.
  • Fluentd - Log Collector and Shipper.
  • Flume - Distributed log collection and aggregation system.
  • Graylog2 - Pluggable Log and Event Analysis Server with Alerting options.
  • Heka - Stream processing system which may be used for log aggregation.
  • Kibana - Visualize logs and time-stamped data.
  • Logstash - Tool for managing events and logs.
  • Octopussy - Log Management Solution (Visualize / Alert / Report).

Mail Servers

Mail Delivery Agents (IMAP/POP3 software).

  • Courier IMAP/POP3 - Fast, scalable, enterprise IMAP and POP3 server.
  • Cyrus IMAP/POP3 - Intended to be run on sealed servers, where normal users are not permitted to log in.
  • Dovecot - IMAP and POP3 server written primarily with security in mind.
  • Qpopper - One of the oldest and most popular server implementations of POP3.

Mail Transfer Agents (SMTP servers).

  • Exim - Message transfer agent (MTA) developed at the University of Cambridge.
  • Haraka - A high-performance, pluginable SMTP server written in JavaScript.
  • MailCatcher - Ruby gem that deploys a simply SMTP MTA gateway that accepts all mail and displays in web interface. Useful for debugging or development.
  • Maildrop - Open Source disposable email SMTP server, also useful for development.
  • OpenSMTPD - Secure SMTP server implementation from the OpenBSD project.
  • Postfix - Fast, easy to administer, and secure Sendmail replacement.
  • Qmail - Secure Sendmail replacement.
  • Sendmail - Message transfer agent (MTA).

Complete solutions.

  • Mail-in-a-Box - Take back control of your email with this easy-to-deploy mail server in a box.
  • iRedMail - Full-featured mail server solution based on Postfix and Dovecot.

Messaging

XMPP servers.

  • ejabberd - XMPP instant messaging server written in Erlang/OTP.
  • Metronome IM - Fork of Prosody IM.
  • MongooseIM - Fullstack real-time mobile messaging platform (XMPP+REST) in Erlang
  • Openfire - Real time collaboration (RTC) server.
  • Prosody IM - XMPP server written in Lua.
  • Tigase - XMPP server implementation in Java.

XMPP web clients.

  • Candy - Multi user XMPP client written in Javascript.
  • Kaiwa - Web based chat client in the style of common paid alternatives.

Webchats.

  • Lets-Chat - A self hosted chat suite written in Node.

Monitoring

Monitoring software.

  • Alerta - Distributed, scaleable and flexible monitoring system.
  • Canopsis - Opensource Hypervision and Data Aggregation Software
  • Cacti - Web-based network monitoring and graphing tool.
  • Cabot - Monitoring and alerts, similar to PagerDuty.
  • Centreon - IT infrastructure and application monitoring for service performance.
  • check_mk - Collection of extensions for Nagios.
  • Flapjack - Monitoring notification routing & event processing system.
  • Icinga - Fork of Nagios.
  • LibreNMS - fork of Observium.
  • Monit - Small Open Source utility for managing and monitoring Unix systems.
  • Munin - Networked resource monitoring tool.
  • Naemon - Network monitoring tool based on the Nagios 4 core with performance enhancements and new features.
  • Nagios - Computer system, network and infrastructure monitoring software application.
  • Node-Bell - Real-time anomalies detection for periodic time series, metrics monitor.
  • Observium - SNMP monitoring for servers and networking devices. Runs on linux.
  • Opsview - Based on Nagios 4, Opsview Core is ideal for small IT and test environments.
  • Riemann - Flexible and fast events processor allowing complex events/metrics analysis.
  • Sensu - Open source monitoring framework.
  • Sentry - Application monitoring, event logging and aggregation.
  • Serverstats - A simple tool for creating graphs using rrdtool. (source on github)
  • Seyren - An alerting dashboard for Graphite.
  • Shinken - Another monitoring framework.
  • Xymon - Network monitoring inspired by Big Brother.
  • Zabbix - Enterprise-class software for monitoring of networks and applications.
  • Zenoss - Application, server, and network management platform based on Zope.

Monitoring dashboards.

  • Adagios - Web based Nagios configuration interface.
  • Dash - A low-overhead monitoring web dashboard for a GNU/Linux machine.
  • Thruk - Multibackend monitoring web interface with support for Naemon, Nagios, Icinga and Shinken.
  • Uchiwa - Simple dashboard for the Sensu monitoring framework.

Monitoring distributions.

  • OMD - The Open Monitoring Distribution.

Metric & Metric Collection

Metric gathering and display software.

  • Collectd - System statistic collection daemon.
  • Collectl - High precision system performance metrics collecting tool.
  • dashing - No Longer Maintained - Ruby gem that allows for rapid statistical dashboard development. An all HTML5 approach allows for big screen displays in data centers or conference rooms.
  • Smashing - Ruby gem that allows for rapid statistical dashboard development. An all HTML5 approach allows for big screen displays in data centers or conference rooms. Fork of Dashing.
  • Diamond - Python based statistic collection daemon.
  • Facette - Time series data visualization and graphing software written in Go.
  • Freeboard - A damn-sexy front-end real-time dashboard. Transforms raw JSON into delicious UI.
  • Ganglia - High performance, scalable RRD based monitoring for grids and/or clusters of servers. Compatible with Graphite using a single collection process.
  • Grafana - A Graphite & InfluxDB Dashboard and Graph Editor.
  • Graphite - Open source scalable graphing server.
  • InfluxDB - Open source distributed time series database with no external dependencies.
  • KairosDB - Fast distributed scalable time series database, fork of OpenTSDB 1.x.
  • NetData - Distributed real-time performance and health monitoring.
  • OpenTSDB - Store and server massive amounts of time series data without losing granularity.
  • Packetbeat - Captures network traffic and displays it in a custom Kibana dashboard for easy viewing.
  • Prometheus - Service monitoring system and time series database.
  • RRDtool - Open source industry standard, high performance data logging and graphing system for time series data.
  • Statsd - Application statistic listener.

Network Configuration Management

Network configuration management tools.

  • GestióIP - An automated web based IPv4/IPv6 IP Address Management tool.
  • NOC Project - Scalable, high-performance and open-source OSS system for ISP, service and content providers.
  • Netbox - IP address management (IPAM) and data center infrastructure management (DCIM) tool.
  • Oxidized - A modern take on network device configuration monitoring with web interface and GIT storage.
  • phpIPAM - Open source IP address management with PowerDNS integration.
  • RANCID - Monitors network device's configuration and maintain history of changes.
  • rConfig - Another network device configuration management tool.
  • trigger - Robust network automation toolkit written in Python.

Newsletters

Newsletter software.

  • DadaMail - Mailing List Manager, written in Perl.
  • phpList - Newsletter manager written in PHP.

NoSQL

Column-Family.

  • Apache HBase - Hadoop database, a distributed, big data store.
  • Cassandra - Distributed DBMS designed to handle large amounts of data across many servers.
  • Hypertable - C++ based BigTable-like DBMS, communicates through Thrift and runs either as stand-alone or on distributed FS such as Hadoop.

Document Store.

  • CouchDB - Ease of use, with multi-master replication document-oriented database system.
  • ElasticSearch - Java based database, popular with log aggregation, and email archiving projects.
  • MongoDB - Another document-oriented database system.
  • RavenDB - Document based database with ACID/Transactional features.
  • RethinkDB - Open source distributed document store database, focuses on JSON.

Graph.

  • FlockDB - Twitter's distributed, fault-tolerant graph database.
  • Neo4j - Open source graph database.

Key-Value.

  • Couchbase - In-memory, replicated, peristent key/value datastore.
  • LevelDB - Google's high performance key/value database.
  • Redis - Networked, in-memory, key-value data store with optional durability.
  • Riak - Another fault-tolerant key-value NoSQL database.

Packaging

  • fpm - Versatile multi format package creator.
  • omnibus-ruby - Full stack, cross distro packaging software (Ruby).
  • packman - Full stack, cross distro packaging software (Python).
  • tito - Builds RPMs for git-based projects.

Queuing

Queuing software.

  • ActiveMQ - An open source message broker written in Java together with a full JMS client.
  • BeanstalkD - A simple, fast work queue.
  • Gearman - Fast multi-language queuing/job processing platform.
  • Kafka - A high-throughput distributed messaging system.
  • NSQ - A realtime distributed messaging platform.
  • RabbitMQ - Robust, fully featured, cross distro queuing system.

Queuing libraries.

  • ZeroMQ - High-performance asynchronous messaging library.

RDBMS

Relational DBMS.

  • Firebird - True universal open source database.
  • Galera - Galera Cluster for MySQL is an easy-to-use high-availability solution with high system up-time, no data loss, and scalability for future growth.
  • MariaDB - Community-developed fork of the MySQL.
  • MySQL - Most popular RDBMS server.
  • Percona Server - Enhanced, drop-in MySQL replacement.
  • PostgreSQL - Object-relational database management system (ORDBMS).
  • PostgreSQL-XL - Scalable Open Source PostgreSQL-based database cluster.
  • SQLite - Library that implements a self-contained, serverless, zero-configuration, transactional SQL DBS.

Security

Security tools.

  • Blackbox - Safely store secrets in Git/Mercurial. Provides tooling to automatically encrypt secrets like passwords.
  • Denyhosts - Thwart SSH dictionary based attacks and brute force attacks.
  • Fail2Ban - Scans log files and takes action on IPs that show malicious behavior.
  • fwknop - Protects ports via Single Packet Authorization in your firewall.
  • Glastopf - A low-interaction web application honeypot to emulate vulnerabilities and gather attack data.
  • Kippo - A medium-interaction SSH honeypot, mostly used as a standalone SSH daemon with a configurable Filesystem sandbox.
  • OSSEC - OSSEC is a HIDS that performs log analysis, FIM, rootkit detection, and much more.
  • OSQuery - Query your servers status and info using a SQL like interface.
  • pfSense - Firewall and Router FreeBSD distribution.
  • Snort - Snort is a free and open source network intrusion prevention system (NIPS) and network intrusion detection system (NIDS) created by Martin Roesch in 1998.
  • SpamAssassin - A powerful and popular email spam filter employing a variety of detection technique.
  • BounCA - BounCA is a personal SSL / Certificate Authority Key management tool. Create self-signed SSL certificates via your browser. (Source CodeApache Python

Service Discovery

  • Consul - Consul is a tool for service discovery, monitoring and configuration.
  • Doozerd - Doozer is a highly-available, completely consistent store for small amounts of extremely important data.
  • ZooKeeper - ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.

Software Containers

Operating system–level virtualization.

  • Bitnami - Produces open source installers or software packages for web applications and development stacks as well as virtual appliances.
  • Docker - Open platform for developers and sysadmins to build, ship, and run distributed applications.
  • LXC - Userspace interface for the Linux kernel containment features.
  • LXD - LXD is a container "hypervisor".
  • OpenVZ - Container-based virtualization for Linux.
  • Docker Compose - Fast, isolated development environments using Docker.
  • Singularity - Flexible containers without root.

SSH

SSH tools.

  • Advanced SSH config - Enhances ssh_config file capabilities, completely transparent.
  • autossh - Automatically respawn ssh session after network interruption.
  • Cluster SSH - Controls a number of xterm windows via a single graphical console.
  • DSH - Dancer's shell / distributed shell - Wrapper for executing multiple remote shell commands from one command line.
  • Mosh - The mobile shell.
  • parallel-ssh - Provides parallel versions of OpenSSH and related tools.
  • pdsh - Pdsh is a high-performance, parallel remote shell utility.
  • SSH Power Tool - Execute commands and upload files to many servers simultaneously without using pre-shared keys.
  • sshrc - sources ~/.sshrc on your local computer after logging in remotely.
  • stormssh - A command line tool to manage SSH connections.

Statistics

Analytics software.

  • Analog - Logfile Analyser.
  • AWStats - Generates web, streaming, ftp or mail server statistics graphically.
  • GoAccess - Real-time web log analyzer and interactive viewer that runs in a terminal.
  • Open Web Analytics - Add web analytics to websites using JS, PHP or REST APIs.
  • Piwik - Web analytics application.
  • Webalizer - Fast, free web server log file analysis program.

Status Pages

  • Cachet - An open source status page system written in PHP.

Ticketing systems

Web-based ticketing system.

  • Bugzilla - General-purpose bugtracker and testing tool originally developed and used by the Mozilla project.
  • Cerb - Group-based e-mail management project.
  • Flyspray - Web-based bug tracking system written in PHP.
  • MantisBT - Web-based bug tracking system.
  • osTicket - Simple support ticket system.
  • OTRS - Trouble ticket system for assigning tickets to incoming queries and tracking further communications.
  • Redmine - Open source project management/ticketing web application written in Ruby.
  • Request Tracker - Ticket-tracking system written in Perl.
  • TheBugGenie - Ticket system with extensive user rights system.

Troubleshooting

Troubleshooting tools.

  • mitmproxy - A Python tool used for intercepting, viewing and modifying network traffic. Invaluable in troubleshooting certain problems.
  • Sysdig - Capture system state and activity from a running Linux instance, then save, filter and analyze.
  • Wireshark - The world's foremost network protocol analyzer.

Troubleshooting distributions.

Project Management

Web-based project management and bug tracking systems.

  • ChiliProject - Fork of Redmine.
  • GitBucket Clone of GitHub written in Scala; single jar install.
  • GitLab - Clone of GitHub written in Ruby.
  • Gogs - Self-hosted Git service written in Go.
  • OpenProject - Project collaboration with open source.
  • Phabricator Written in PHP.
  • Redmine - Written in ruby on rails.
  • Taiga - Agile, Free, Open Source Project Management Tool based on the Kanban and Scrum methods.
  • The Bug Genie - Written in PHP.
  • Trac - Written in python.

Version control

Software versioning and revision control.

  • Fossil - Distributed version control with built-in wiki and bug tracking.
  • Git - Distributed revision control and source code management (SCM) with an emphasis on speed.
  • GNU Bazaar - Distributed revision control system sponsored by Canonical.
  • Mercurial - Another distributed revision control.
  • Subversion - Client-server revision control system.

Virtualization

Virtualization software.

  • Archipel - XMPP based virtualization management platform.
  • Ganeti - Cluster virtual server management software tool built on top of KVM and Xen.
  • KVM - Linux kernel virtualization infrastructure.
  • OpenNebula - Flexible enterprise cloud made simple.
  • oVirt - Manages virtual machines, storage and virtual networks.
  • Packer - A tool for creating identical machine images for multiple platforms from a single source configuration.
  • Proxmox VE - Complete open source virtualization management solution.
  • QEMU - QEMU is a generic and open source machine emulator and virtualizer.
  • Vagrant - Tool for building complete development environments.
  • VirtualBox - Virtualization product from Oracle Corporation.
  • Xen - Virtual machine monitor for 32/64 bit Intel / AMD (IA 64) and PowerPC 970 architectures.

VPN

VPN software.

  • OpenVPN - Uses a custom security protocol that utilizes SSL/TLS for key exchange.
  • Pritunl - OpenVPN based solution. Easy to set up.
  • SoftEther - Multi-protocol software VPN with advanced features
  • sshuttle - Poor man's VPN.
  • strongSwan - Complete IPsec implementation for Linux.
  • tinc - Distributed p2p VPN.
  • wireguard - New minimal VPN Solution that is very fast.

Web

Web servers.

  • Apache - Most popular web server.
  • Caddy - The HTTP/2 Web Server with Fully Managed TLS.
  • Cherokee - Lightweight, high-performance web server/reverse proxy.
  • Lighttpd - Web server more optimized for speed-critical environments.
  • Nginx - Reverse proxy, load balancer, HTTP cache, and web server.
  • uWSGI - The uWSGI project aims at developing a full stack for building hosting services.

Web Performance.

  • HAProxy - Software based load Balancing, SSL offloading and performance optimization, compression, and general web routing.
  • Squid - Caching proxy for the web supporting HTTP, HTTPS, FTP, and more.
  • Traefik - Træfɪk is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease.
  • Varnish - HTTP based web application accelerator focusing on optimizing caching and compression.

Webmails

Webmail applications.

  • Mailpile - A modern, fast web-mail client with user-friendly encryption and privacy features.
  • Roundcube - Browser-based IMAP client with an application-like user interface.
  • SquirrelMail - Another browser-based IMAP client.

Wikis

Wiki software.

  • BookStack - A simple, user-friendly wiki built with PHP that uses MySQL for storage.
  • DokuWiki - Simple to use and highly versatile wiki that doesn't require a database.
  • Gollum - A simple, Git-powered wiki with a sweet API and local frontend.
  • ikiwiki - A wiki compiler.
  • MDwiki - Wiki completely built in HTML5/Javascript and runs 100% on the client.
  • MediaWiki - Used to power Wikipedia.
  • MoinMoin - An advanced, easy to use and extensible WikiEngine with a large community of users.
  • Ōlelo Wiki - A a wiki that stores pages in a Git repository.
  • TiddlyWiki - Complete interactive wiki in JavaScript.

Resources

Various resources, such as books, websites and articles, for improving your skills and knowledge.

Blogs

Books

Sysadmin related books.

Newsletters

  • Servers for Hackers - Newsletter for programmers who find themselves needing to know their way around a server.
  • DevOpsLinks - A community of DevOps, SysAdmin & Developers with a weekly newsletter and a team chat.

Repositories

Debian-based distributions.

  • Dotdeb - Repository with LAMP updated packages for Debian.

RPM-based distributions.

  • ElRepo - Community Repo for Enterprise Linux (RHEL, CentOS, etc).
  • EPEL - Repository for RHEL and compatibles (CentOS, Scientific Linux).
  • Remi - Repository with LAMP updated packages for RHEL/Centos/Fedora.
  • Software Collections - Community Release of Red Hat Software Collections. Provides updated packages of Ruby, Python, etc. for CentOS/Scientific Linux 6.x.

Websites

Useful sysadmin related websites.

  • Ops School - Comprehensive program that will help you learn to be an operations engineer.
  • Digital Ocean Tutorials - A surprisingly vast resource for getting the basics of certain applications, tools, or even systems administration topics.

 

原文:https://github.com/huiwenhan/awesome-sysadmin

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of amazingly awesome open source sysadmin resources

【网络工具】GoReplay :进行测试和监视的瑞士军刀

Chinese, Simplified

快速行动而不会破坏事物

GoReplay是一个开源网络监视工具,可以记录您的实时流量,并将其用于影子,负载测试或详细的分析和监视。

进行测试和监视的瑞士军刀

阴影,也称为流量镜像或暗流量



系统的行为取决于环境和流量模式。通过集成或手动测试无法发现一整层错误。

GoReplay为您提供了一个简单的想法,可以重用现有流量进行测试:您可以选择部分生产流量并将其重播到测试环境,同时能够即时过滤和重写请求。

我们先进的技术可在不影响您的应用程序的情况下分析和记录网络流量,从而消除了将第三方组件置于关键路径中带来的风险。

GoReplay增强了您对代码部署,配置更改和基础架构更改的信心,并确保您的应用程序不会被边缘情况绊倒,边缘情况只会在您上线后才会出现。

学到更多

负载测试



编写综合测试非常困难,因为要真正复制生产流量模式几乎是不可能的。人类,浏览器和机器人都会做一些奇怪的事情,这些事情会影响请求的频率,URL权重,标头大小等。

使用GoReplay,您可以以更高或更低的速度重播记录的流量,确保重播的请求完全相同,以相同的顺序甚至在相同的TCP会话中来进行,因此可以说GoReplay是最简单,最准确的负载测试工具。

GoReplay性能和集群功能使您可以垂直和水平扩展它,以便对任何复杂性进行高效,准确的负载测试。

学到更多

监测与分析



即使您的应用程序不支持监视或审核,您也可以使GoReplay记录所有流量,而无需修改应用程序,并将其存储在纯文件中或重定向到诸如ElasticSearch,Kafka或S3之类的源以进行进一步分析。

GoReplay可以用可以用任何语言编写的插件扩展,并允许您动态地访问和修改原始请求,响应和重播的Respose数据,以实现复杂的重写和监视逻辑,使其成为瑞士军刀,用于测试和监控网络应用。

功能仅受您的想象力限制:

  •     -存储生产流量的最新快照以创建可重复的测试用例
  •     -记录数据以进行审核,并动态剥离敏感数据
  •     -通过statsd,ELK,prometheus代理或类似工具公开实时应用指标
  •     -监控应用程序的性能和运行状况

原文:https://goreplay.org/#detailed

本文:

讨论:请加入知识星球或者微信圈子【首席架构师圈】

SEO Title
GoReplay : Swiss Army knife for testing and monitoring

【首席架构师推荐】web测试工具列表

Chinese, Simplified

这是一个Web测试工具列表,提供了关于特性的一般概述,有时用于Web抓取。

主要特点

Web测试工具可以根据用户测试Web应用程序的不同先决条件(主要是脚本需求、GUI功能和浏览器兼容性)进行分类。

Web testing tools Web browser based (model) Scriptable Scripting Language Recorder Multiple domain Frames
eggPlant Functional Yes

(IE, Firefox, Safari, Opera, Chrome)
Yes SenseTalk Yes  
iMacros Yes

(Firefox, Chrome, IE)
Yes iMacro Script Yes Yes Yes
Katalon Studio Yes

(IE, Firefox, Chrome, Safari, Opera and any modern browser)
Yes Groovy Yes Yes Yes
Maveryx Yes

(IE, Firefox, Chrome, Safari, Opera and any modern browser)
Yes C#, Java No Yes  
Ranorex Studio Yes

(Chrome, Firefox, Safari, IE)
Yes C#, VB.NET Yes Yes Yes
Sahi Yes

(IE, Firefox, Chrome, Safari, Opera and any modern browser)
Yes Sahi Script Yes Yes Yes
Selenium Yes

(IE, Firefox, Chrome, Safari, Opera, Edge)
Yes Ruby, Java, NodeJS, PHP, Perl, Python, C#, Groovy Firefox and Chrome Yes Yes
SOAtest Yes Yes Python, JavaScript, Java Yes Yes Yes
TestComplete Yes

(IE, Firefox, Chrome)
Yes VBScript, JScript, C++Script, C#Script, DelphiScript Yes Yes Yes
Test Studio Yes

(Chrome, Firefox, Safari, IE)
Yes C#, VB.NET Yes Yes Yes
Tricentis Tosca[1] Yes

(Chrome, Firefox, IE, Edge)
Yes C#, VB.Net Yes Yes Yes
WatiN Yes

(IE, Firefox)
Yes C#, ability to run JavaScript from C# calls IE/FF   Yes
Watir Yes

(IE, Firefox, Chrome, Safari, Opera, Edge)
Yes Ruby No Yes Yes
HP-UFT Yes

(IE, Firefox, Chrome, Safari, Opera, Edge)
Yes VBScript Yes Yes Yes

See also[edit]

 

原文:https://en.wikipedia.org/wiki/List_of_web_testing_tools

本文:https://pub.intelligentx.net/node/756

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of web testing tools

【首席架构师推荐】一系列令人敬畏的渗透测试资源,工具和其他的东西

Chinese, Simplified

Awesome Penetration Testing 

A collection of awesome penetration testing resources.

Penetration testing is the practice of launching authorized, simulated attacks against computer systems and their physical infrastructure to expose potential security weaknesses and vulnerabilities.

Your contributions and suggestions are heartily♥ welcome. (✿◕‿◕). Please check the Contributing Guidelines for more details. This work is licensed under a Creative Commons Attribution 4.0 International License.

This project is supported by Netsparker Web Application Security Scanner

Contents

Anonymity Tools

  • I2P - The Invisible Internet Project.
  • Nipe - Script to redirect all traffic from the machine to the Tor network.
  • OnionScan - Tool for investigating the Dark Web by finding operational security issues introduced by Tor hidden service operators.
  • Tor - Free software and onion routed overlay network that helps you defend against traffic analysis.
  • What Every Browser Knows About You - Comprehensive detection page to test your own Web browser's configuration for privacy and identity leaks.
  • dos-over-tor - Proof of concept denial of service over Tor stress test tool.
  • kalitorify - Transparent proxy through Tor for Kali Linux OS.

Anti-virus Evasion Tools

  • AntiVirus Evasion Tool (AVET) - Post-process exploits containing executable files targeted for Windows machines to avoid being recognized by antivirus software.
  • CarbonCopy - Tool that creates a spoofed certificate of any online website and signs an Executable for AV evasion.
  • Hyperion - Runtime encryptor for 32-bit portable executables ("PE .exes").
  • Shellter - Dynamic shellcode injection tool, and the first truly dynamic PE infector ever created.
  • UniByAv - Simple obfuscator that takes raw shellcode and generates Anti-Virus friendly executables by using a brute-forcable, 32-bit XOR key.
  • Veil - Generate metasploit payloads that bypass common anti-virus solutions.
  • peCloak.py - Automates the process of hiding a malicious Windows executable from antivirus (AV) detection.
  • peCloakCapstone - Multi-platform fork of the peCloak.py automated malware antivirus evasion tool.
  • shellsploit - Generates custom shellcode, backdoors, injectors, optionally obfuscates every byte via encoders.

Books

See also DEF CON Suggested Reading.

Defensive Programming Books

Hacker's Handbook Series Books

Lock Picking Books

Malware Analysis Books

Network Analysis Books

Penetration Testing Books

Reverse Engineering Books

Social Engineering Books

Windows Books

CTF Tools

  • Pwntools - Rapid exploit development framework built for use in CTFs.
  • RsaCtfTool - Decrypt data enciphered using weak RSA keys, and recover private keys from public keys using a variety of automated attacks.
  • ctf-tools - Collection of setup scripts to install various security research tools easily and quickly deployable to new machines.
  • shellpop - Easily generate sophisticated reverse or bind shell commands to help you save time during penetration tests.

Collaboration Tools

  • RedELK - Track and alarm about Blue Team activities while providing better usability in long term offensive operations.

Conferences and Events

  • 44Con - Annual Security Conference held in London.
  • AppSecUSA - Annual conference organized by OWASP.
  • BSides - Framework for organising and holding security conferences.
  • BalCCon - Balkan Computer Congress, annually held in Novi Sad, Serbia.
  • Black Hat - Annual security conference in Las Vegas.
  • BruCON - Annual security conference in Belgium.
  • CCC - Annual meeting of the international hacker scene in Germany.
  • CHCon - Christchurch Hacker Con, Only South Island of New Zealand hacker con.
  • CarolinaCon - Infosec conference, held annually in North Carolina.
  • DEF CON - Annual hacker convention in Las Vegas.
  • DeepSec - Security Conference in Vienna, Austria.
  • DefCamp - Largest Security Conference in Eastern Europe, held annually in Bucharest, Romania.
  • DerbyCon - Annual hacker conference based in Louisville.
  • Ekoparty - Largest Security Conference in Latin America, held annually in Buenos Aires, Argentina.
  • FSec - FSec - Croatian Information Security Gathering in Varaždin, Croatia.
  • HITB - Deep-knowledge security conference held in Malaysia and The Netherlands.
  • Hack.lu - Annual conference held in Luxembourg.
  • Hackfest - Largest hacking conference in Canada.
  • Infosecurity Europe - Europe's number one information security event, held in London, UK.
  • LayerOne - Annual US security conference held every spring in Los Angeles.
  • Nullcon - Annual conference in Delhi and Goa, India.
  • PhreakNIC - Technology conference held annually in middle Tennessee.
  • RSA Conference USA - Annual security conference in San Francisco, California, USA.
  • SECUINSIDE - Security Conference in Seoul.
  • ShmooCon - Annual US East coast hacker convention.
  • SkyDogCon - Technology conference in Nashville.
  • SummerCon - One of the oldest hacker conventions, held during Summer.
  • Swiss Cyber Storm - Annual security conference in Lucerne, Switzerland.
  • ThotCon - Annual US hacker conference held in Chicago.
  • Troopers - Annual international IT Security event with workshops held in Heidelberg, Germany.
  • Virus Bulletin Conference - Annual conference going to be held in Denver, USA for 2016.

Docker Containers

Docker Containers of Intentionally Vulnerable Systems

Docker Containers of Penetration Testing Distributions and Tools

File Format Analysis Tools

  • Hachoir - Python library to view and edit a binary stream as tree of fields and tools for metadata extraction.
  • Kaitai Struct - File formats and network protocols dissection language and web IDE, generating parsers in C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby.
  • Veles - Binary data visualization and analysis tool.

GNU/Linux Utilities

  • Hwacha - Post-exploitation tool to quickly execute payloads via SSH on one or more Linux systems simultaneously.
  • LinEnum - Scripted local Linux enumeration and privilege escalation checker useful for auditing a host and during CTF gaming.
  • Linux Exploit Suggester - Heuristic reporting on potentially viable exploits for a given GNU/Linux system.
  • Lynis - Auditing tool for UNIX-based systems.
  • checksec.sh - Shell script designed to test what standard Linux OS and PaX security features are being used.
  • unix-privesc-check - Shell script to check for simple privilege escalation vectors on UNIX systems.

Hash Cracking Tools

  • BruteForce Wallet - Find the password of an encrypted wallet file (i.e. wallet.dat).
  • CeWL - Generates custom wordlists by spidering a target's website and collecting unique words.
  • Hashcat - The more fast hash cracker.
  • JWT Cracker - Simple HS256 JSON Web Token (JWT) token brute force cracker.
  • John the Ripper - Fast password cracker.
  • Rar Crack - RAR bruteforce cracker.
  • StegCracker - Steganography brute-force utility to uncover hidden data inside files.

Hex Editors

  • 0xED - Native macOS hex editor that supports plug-ins to display custom data types.
  • Bless - High quality, full featured, cross-platform graphical hex editor written in Gtk#.
  • Frhed - Binary file editor for Windows.
  • Hex Fiend - Fast, open source, hex editor for macOS with support for viewing binary diffs.
  • HexEdit.js - Browser-based hex editing.
  • Hexinator - World's finest (proprietary, commercial) Hex Editor.
  • hexedit - Simple, fast, console-based hex editor.
  • wxHexEditor - Free GUI hex editor for GNU/Linux, macOS, and Windows.

Industrial Control and SCADA Systems

See also awesome-industrial-control-system-security.

  • Industrial Exploitation Framework (ISF) - Metasploit-like exploit framework based on routersploit designed to target Industrial Control Systems (ICS), SCADA devices, PLC firmware, and more.
  • s7scan - Scanner for enumerating Siemens S7 PLCs on a TCP/IP or LLC network.

Multi-paradigm Frameworks

  • Armitage - Java-based GUI front-end for the Metasploit Framework.
  • AutoSploit - Automated mass exploiter, which collects target by employing the Shodan.io API and programmatically chooses Metasploit exploit modules based on the Shodan query.
  • Decker - Penetration testing orchestration and automation framework, which allows writing declarative, reusable configurations capable of ingesting variables and using outputs of tools it has run as inputs to others.
  • Faraday - Multiuser integrated pentesting environment for red teams performing cooperative penetration tests, security audits, and risk assessments.
  • Metasploit - Software for offensive security teams to help verify vulnerabilities and manage security assessments.
  • Pupy - Cross-platform (Windows, Linux, macOS, Android) remote administration and post-exploitation tool.

Network Tools

  • CrackMapExec - Swiss army knife for pentesting networks.
  • IKEForce - Command line IPSEC VPN brute forcing tool for Linux that allows group name/ID enumeration and XAUTH brute forcing capabilities.
  • Intercepter-NG - Multifunctional network toolkit.
  • Legion - Graphical semi-automated discovery and reconnaissance framework based on Python 3 and forked from SPARTA.
  • Network-Tools.com - Website offering an interface to numerous basic network utilities like pingtraceroutewhois, and more.
  • Praeda - Automated multi-function printer data harvester for gathering usable data during security assessments.
  • Printer Exploitation Toolkit (PRET) - Tool for printer security testing capable of IP and USB connectivity, fuzzing, and exploitation of PostScript, PJL, and PCL printer language features.
  • SPARTA - Graphical interface offering scriptable, configurable access to existing network infrastructure scanning and enumeration tools.
  • THC Hydra - Online password cracking tool with built-in support for many network protocols, including HTTP, SMB, FTP, telnet, ICQ, MySQL, LDAP, IMAP, VNC, and more.
  • Zarp - Network attack tool centered around the exploitation of local networks.
  • dnstwist - Domain name permutation engine for detecting typo squatting, phishing and corporate espionage.
  • dsniff - Collection of tools for network auditing and pentesting.
  • impacket - Collection of Python classes for working with network protocols.
  • routersploit - Open source exploitation framework similar to Metasploit but dedicated to embedded devices.
  • rshijack - TCP connection hijacker, Rust rewrite of shijack.

DDoS Tools

  • Anevicon - Powerful UDP-based load generator, written in Rust.
  • HOIC - Updated version of Low Orbit Ion Cannon, has 'boosters' to get around common counter measures.
  • JS LOIC - JavaScript in-browser version of LOIC.
  • LOIC - Open source network stress tool for Windows.
  • Memcrashed - DDoS attack tool for sending forged UDP packets to vulnerable Memcached servers obtained using Shodan API.
  • SlowLoris - DoS tool that uses low bandwidth on the attacking side.
  • T50 - Faster network stress tool.
  • UFONet - Abuses OSI layer 7 HTTP to create/manage 'zombies' and to conduct different attacks using; GET/POST, multithreading, proxies, origin spoofing methods, cache evasion techniques, etc.

Exfiltration Tools

  • Cloakify - Textual steganography toolkit that converts any filetype into lists of everyday strings.
  • DET - Proof of concept to perform data exfiltration using either single or multiple channel(s) at the same time.
  • Iodine - Tunnel IPv4 data through a DNS server; useful for exfiltration from networks where Internet access is firewalled, but DNS queries are allowed.
  • TrevorC2 - Client/server tool for masking command and control and data exfiltration through a normally browsable website, not typical HTTP POST requests.
  • pwnat - Punches holes in firewalls and NATs.
  • tgcd - Simple Unix network utility to extend the accessibility of TCP/IP based network services beyond firewalls.

Network Reconnaissance Tools

  • ACLight - Script for advanced discovery of sensitive Privileged Accounts - includes Shadow Admins.
  • CloudFail - Unmask server IP addresses hidden behind Cloudflare by searching old database records and detecting misconfigured DNS.
  • DNSDumpster - Online DNS recon and search service.
  • Mass Scan - TCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes.
  • ScanCannon - Python script to quickly enumerate large networks by calling masscan to quickly identify open ports and then nmap to gain details on the systems/services on those ports.
  • XRay - Network (sub)domain discovery and reconnaissance automation tool.
  • dnsenum - Perl script that enumerates DNS information from a domain, attempts zone transfers, performs a brute force dictionary style attack, and then performs reverse look-ups on the results.
  • dnsmap - Passive DNS network mapper.
  • dnsrecon - DNS enumeration script.
  • dnstracer - Determines where a given DNS server gets its information from, and follows the chain of DNS servers.
  • fierce - Python3 port of the original fierce.pl DNS reconnaissance tool for locating non-contiguous IP space.
  • nmap - Free security scanner for network exploration & security audits.
  • passivedns-client - Library and query tool for querying several passive DNS providers.
  • passivedns - Network sniffer that logs all DNS server replies for use in a passive DNS setup.
  • scanless - Utility for using websites to perform port scans on your behalf so as not to reveal your own IP.
  • smbmap - Handy SMB enumeration tool.
  • zmap - Open source network scanner that enables researchers to easily perform Internet-wide network studies.

Protocol Analyzers and Sniffers

  • Debookee - Simple and powerful network traffic analyzer for macOS.
  • Dripcap - Caffeinated packet analyzer.
  • Dshell - Network forensic analysis framework.
  • Netzob - Reverse engineering, traffic generation and fuzzing of communication protocols.
  • Wireshark - Widely-used graphical, cross-platform network protocol analyzer.
  • netsniff-ng - Swiss army knife for for network sniffing.
  • sniffglue - Secure multithreaded packet sniffer.
  • tcpdump/libpcap - Common packet analyzer that runs under the command line.

Network Traffic Replay and Editing Tools

  • TraceWrangler - Network capture file toolkit that can edit and merge pcap or pcapng files with batch editing features.
  • WireEdit - Full stack WYSIWYG pcap editor (requires a free license to edit packets).
  • bittwist - Simple yet powerful libpcap-based Ethernet packet generator useful in simulating networking traffic or scenario, testing firewall, IDS, and IPS, and troubleshooting various network problems.
  • hping3 - Network tool able to send custom TCP/IP packets.
  • pig - GNU/Linux packet crafting tool.
  • scapy - Python-based interactive packet manipulation program and library.
  • tcpreplay - Suite of free Open Source utilities for editing and replaying previously captured network traffic.

Proxies and Machine-in-the-Middle (MITM) Tools

  • BetterCAP - Modular, portable and easily extensible MITM framework.
  • Ettercap - Comprehensive, mature suite for machine-in-the-middle attacks.
  • Habu - Python utility implementing a variety of network attacks, such as ARP poisoning, DHCP starvation, and more.
  • Lambda-Proxy - Utility for testing SQL Injection vulnerabilities on AWS Lambda serverless functions.
  • MITMf - Framework for Man-In-The-Middle attacks.
  • Morpheus - Automated ettercap TCP/IP Hijacking tool.
  • SSH MITM - Intercept SSH connections with a proxy; all plaintext passwords and sessions are logged to disk.
  • dnschef - Highly configurable DNS proxy for pentesters.
  • evilgrade - Modular framework to take advantage of poor upgrade implementations by injecting fake updates.
  • mallory - HTTP/HTTPS proxy over SSH.
  • mitmproxy - Interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers.
  • oregano - Python module that runs as a machine-in-the-middle (MITM) accepting Tor client requests.
  • sylkie - Command line tool and library for testing networks for common address spoofing security vulnerabilities in IPv6 networks using the Neighbor Discovery Protocol.

Transport Layer Security Tools

  • SSLyze - Fast and comprehensive TLS/SSL configuration analyzer to help identify security mis-configurations.
  • crackpkcs12 - Multithreaded program to crack PKCS#12 files (.p12 and .pfx extensions), such as TLS/SSL certificates.
  • testssl.sh - Command line tool which checks a server's service on any port for the support of TLS/SSL ciphers, protocols as well as some cryptographic flaws.
  • tls_prober - Fingerprint a server's SSL/TLS implementation.

Wireless Network Tools

  • Aircrack-ng - Set of tools for auditing wireless networks.
  • Airgeddon - Multi-use bash script for Linux systems to audit wireless networks.
  • BoopSuite - Suite of tools written in Python for wireless auditing.
  • Bully - Implementation of the WPS brute force attack, written in C.
  • Cowpatty - Brute-force dictionary attack against WPA-PSK.
  • Fluxion - Suite of automated social engineering based WPA attacks.
  • KRACK Detector - Detect and prevent KRACK attacks in your network.
  • Kismet - Wireless network detector, sniffer, and IDS.
  • Reaver - Brute force attack against WiFi Protected Setup.
  • WiFi-Pumpkin - Framework for rogue Wi-Fi access point attack.
  • Wifite - Automated wireless attack tool.
  • infernal-twin - Automated wireless hacking tool.
  • krackattacks-scripts - WPA2 Krack attack scripts.
  • wifi-arsenal - Resources for Wi-Fi Pentesting.

Network Vulnerability Scanners

  • celerystalk - Asynchronous enumeration and vulnerability scanner that "runs all the tools on all the hosts" in a configurable manner.
  • Nessus - Commercial vulnerability management, configuration, and compliance assessment platform, sold by Tenable.
  • Netsparker Application Security Scanner - Application security scanner to automatically find security flaws.
  • Nexpose - Commercial vulnerability and risk management assessment engine that integrates with Metasploit, sold by Rapid7.
  • OpenVAS - Free software implementation of the popular Nessus vulnerability assessment system.
  • Vuls - Agentless vulnerability scanner for GNU/Linux and FreeBSD, written in Go.

Web Vulnerability Scanners

  • ACSTIS - Automated client-side template injection (sandbox escape/bypass) detection for AngularJS.
  • Arachni - Scriptable framework for evaluating the security of web applications.
  • JCS - Joomla Vulnerability Component Scanner with automatic database updater from exploitdb and packetstorm.
  • Netsparker Application Security Scanner - Application security scanner to automatically find security flaws.
  • Nikto - Noisy but fast black box web server and web application vulnerability scanner.
  • SQLmate - Friend of sqlmap that identifies SQLi vulnerabilities based on a given dork and (optional) website.
  • SecApps - In-browser web application security testing suite.
  • WPScan - Black box WordPress vulnerability scanner.
  • Wapiti - Black box web application vulnerability scanner with built-in fuzzer.
  • WebReaver - Commercial, graphical web application vulnerability scanner designed for macOS.
  • cms-explorer - Reveal the specific modules, plugins, components and themes that various websites powered by content management systems are running.
  • joomscan - Joomla vulnerability scanner.
  • w3af - Web application attack and audit framework.

OSINT Tools

  • AQUATONE - Subdomain discovery tool utilizing various open sources producing a report that can be used as input to other tools.
  • BinGoo - GNU/Linux bash based Bing and Google Dorking Tool.
  • Censys - Collects data on hosts and websites through daily ZMap and ZGrab scans.
  • DataSploit - OSINT visualizer utilizing Shodan, Censys, Clearbit, EmailHunter, FullContact, and Zoomeye behind the scenes.
  • dorkbot - Command-line tool to scan Google (or other) search results for vulnerabilities.
  • FOCA (Fingerprinting Organizations with Collected Archives) - Automated document harvester that searches Google, Bing, and DuckDuckGo to find and extrapolate internal company organizational structures.
  • GooDork - Command line Google dorking tool.
  • Google Hacking Database - Database of Google dorks; can be used for recon.
  • GyoiThon - GyoiThon is an Intelligence Gathering tool using Machine Learning.
  • Hunter.io - Data broker providing a Web search interface for discovering the email addresses and other organizational details of a company.
  • Intrigue - Automated OSINT & Attack Surface discovery framework with powerful API, UI and CLI.
  • Maltego - Proprietary software for open source intelligence and forensics, from Paterva.
  • OWASP Amass - Subdomain enumeration via scraping, web archives, brute forcing, permutations, reverse DNS sweeping, TLS certificates, passive DNS data sources, etc.
  • PacketTotal - Simple, free, high-quality packet capture file analysis facilitating the quick detection of network-borne malware (using Bro and Suricata IDS signatures under the hood).
  • Shodan - World's first search engine for Internet-connected devices.
  • SimplyEmail - Email recon made fast and easy.
  • Sn1per - Automated Pentest Recon Scanner.
  • Spiderfoot - Multi-source OSINT automation tool with a Web UI and report visualizations.
  • Threat Crowd - Search engine for threats.
  • Virus Total - Free service that analyzes suspicious files and URLs and facilitates the quick detection of viruses, worms, trojans, and all kinds of malware.
  • ZoomEye - Search engine for cyberspace that lets the user find specific network components.
  • creepy - Geolocation OSINT tool.
  • dork-cli - Command line Google dork tool.
  • dorks - Google hack database automation tool.
  • fast-recon - Perform Google dorks against a domain.
  • gOSINT - OSINT tool with multiple modules and a telegram scraper.
  • github-dorks - CLI tool to scan GitHub repos/organizations for potential sensitive information leaks.
  • image-match - Quickly search over billions of images.
  • metagoofil - Metadata harvester.
  • pagodo - Automate Google Hacking Database scraping.
  • recon-ng - Full-featured Web Reconnaissance framework written in Python.
  • sn0int - Semi-automatic OSINT framework and package manager.
  • snitch - Information gathering via dorks.
  • surfraw - Fast UNIX command line interface to a variety of popular WWW search engines.
  • theHarvester - E-mail, subdomain and people names harvester.
  • vcsmap - Plugin-based tool to scan public version control systems for sensitive information.
  • WhatBreach - Search email addresses and discover all known breaches that this email has been seen in, and download the breached database if it is publicly available.

Online Resources

Online Code Samples and Examples

Online Exploit Development Resources

Online Lock Picking Resources

Online Open Sources Intelligence (OSINT) Resources

  • CertGraph - Crawls a domain's SSL/TLS certificates for its certificate alternative names.
  • GhostProject - Searchable database of billions of cleartext passwords, partially visible for free.
  • Intel Techniques - Collection of OSINT tools. Menu on the left can be used to navigate through the categories.
  • NetBootcamp OSINT Tools - Collection of OSINT links and custom Web interfaces to other services.
  • OSINT Framework - Collection of various OSINT tools broken out by category.
  • WiGLE.net - Information about wireless networks world-wide, with user-friendly desktop and web applications.

Online Operating Systems Resources

Online Penetration Testing Resources

Social Engineering Resources

Other Lists Online

Penetration Testing Report Templates

Operating System Distributions

  • Android Tamer - Distribution built for Android security professionals that includes tools required for Android security testing.
  • ArchStrike - Arch GNU/Linux repository for security professionals and enthusiasts.
  • AttifyOS - GNU/Linux distribution focused on tools useful during Internet of Things (IoT) security assessments.
  • BackBox - Ubuntu-based distribution for penetration tests and security assessments.
  • BlackArch - Arch GNU/Linux-based distribution for penetration testers and security researchers.
  • Buscador - GNU/Linux virtual machine that is pre-configured for online investigators.
  • Kali - Rolling Debian-based GNU/Linux distribution designed for penetration testing and digital forensics.
  • Network Security Toolkit (NST) - Fedora-based GNU/Linux bootable live Operating System designed to provide easy access to best-of-breed open source network security applications.
  • Parrot - Distribution similar to Kali, with support for multiple hardware architectures.
  • PentestBox - Open source pre-configured portable penetration testing environment for the Windows Operating System.
  • The Pentesters Framework - Distro organized around the Penetration Testing Execution Standard (PTES), providing a curated collection of utilities that omits less frequently used utilities.

Periodicals

Physical Access Tools

  • AT Commands - Use AT commands over an Android device's USB port to rewrite device firmware, bypass security mechanisms, exfiltrate sensitive information, perform screen unlocks, and inject touch events.
  • Bash Bunny - Local exploit delivery tool in the form of a USB thumbdrive in which you write payloads in a DSL called BunnyScript.
  • LAN Turtle - Covert "USB Ethernet Adapter" that provides remote access, network intelligence gathering, and MITM capabilities when installed in a local network.
  • PCILeech - Uses PCIe hardware devices to read and write from the target system memory via Direct Memory Access (DMA) over PCIe.
  • Packet Squirrel - Ethernet multi-tool designed to enable covert remote access, painless packet captures, and secure VPN connections with the flip of a switch.
  • Poisontap - Siphons cookies, exposes internal (LAN-side) router and installs web backdoor on locked computers.
  • Proxmark3 - RFID/NFC cloning, replay, and spoofing toolkit often used for analyzing and attacking proximity cards/readers, wireless keys/keyfobs, and more.
  • USB Rubber Ducky - Customizable keystroke injection attack platform masquerading as a USB thumbdrive.
  • WiFi Pineapple - Wireless auditing and penetration testing platform.

Reverse Engineering Tools

See also awesome-reversing.

  • Capstone - Lightweight multi-platform, multi-architecture disassembly framework.
  • Evan's Debugger - OllyDbg-like debugger for GNU/Linux.
  • Frida - Dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers.
  • Ghidra - Suite of free software reverse engineering tools developed by NSA's Research Directorate originally exposed in WikiLeaks's "Vault 7" publication and now maintained as open source software.
  • Immunity Debugger - Powerful way to write exploits and analyze malware.
  • Interactive Disassembler (IDA Pro) - Proprietary multi-processor disassembler and debugger for Windows, GNU/Linux, or macOS; also has a free version, IDA Free.
  • Medusa - Open source, cross-platform interactive disassembler.
  • OllyDbg - x86 debugger for Windows binaries that emphasizes binary code analysis.
  • PyREBox - Python scriptable Reverse Engineering sandbox by Cisco-Talos.
  • Radare2 - Open source, crossplatform reverse engineering framework.
  • UEFITool - UEFI firmware image viewer and editor.
  • Voltron - Extensible debugger UI toolkit written in Python.
  • WDK/WinDbg - Windows Driver Kit and WinDbg.
  • binwalk - Fast, easy to use tool for analyzing, reverse engineering, and extracting firmware images.
  • boxxy - Linkable sandbox explorer.
  • dnSpy - Tool to reverse engineer .NET assemblies.
  • peda - Python Exploit Development Assistance for GDB.
  • plasma - Interactive disassembler for x86/ARM/MIPS. Generates indented pseudo-code with colored syntax code.
  • pwndbg - GDB plug-in that eases debugging with GDB, with a focus on features needed by low-level software developers, hardware hackers, reverse-engineers, and exploit developers.
  • rVMI - Debugger on steroids; inspect userspace processes, kernel drivers, and preboot environments in a single tool.
  • x64dbg - Open source x64/x32 debugger for windows.

Security Education Courses

Side-channel Tools

  • ChipWhisperer - Complete open-source toolchain for side-channel power analysis and glitching attacks.

Social Engineering Tools

  • Beelogger - Tool for generating keylooger.
  • Catphish - Tool for phishing and corporate espionage written in Ruby.
  • Evilginx2 - Standalone man-in-the-middle attack framework.
  • Evilginx - MITM attack framework used for phishing credentials and session cookies from any Web service.
  • FiercePhish - Full-fledged phishing framework to manage all phishing engagements.
  • Gophish - Open-source phishing framework.
  • King Phisher - Phishing campaign toolkit used for creating and managing multiple simultaneous phishing attacks with custom email and server content.
  • Modlishka - Flexible and powerful reverse proxy with real-time two-factor authentication.
  • ReelPhish - Real-time two-factor phishing tool.
  • ShellPhish - Social media site cloner and phishing tool built atop SocialFish.
  • Social Engineer Toolkit (SET) - Open source pentesting framework designed for social engineering featuring a number of custom attack vectors to make believable attacks quickly.
  • SocialFish - Social media phishing framework that can run on an Android phone or in a Docker container.
  • phishery - TLS/SSL enabled Basic Auth credential harvester.
  • wifiphisher - Automated phishing attacks against WiFi networks.

Static Analyzers

  • Brakeman - Static analysis security vulnerability scanner for Ruby on Rails applications.
  • FindBugs - Free software static analyzer to look for bugs in Java code.
  • Progpilot - Static security analysis tool for PHP code.
  • RegEx-DoS - Analyzes source code for Regular Expressions susceptible to Denial of Service attacks.
  • bandit - Security oriented static analyser for Python code.
  • cppcheck - Extensible C/C++ static analyzer focused on finding bugs.
  • sobelow - Security-focused static analysis for the Phoenix Framework.
  • cwe_checker - Suite of tools built atop the Binary Analysis Platform (BAP) to heuristically detect CWEs in compiled binaries and firmware.

Vulnerability Databases

  • Bugtraq (BID) - Software security bug identification database compiled from submissions to the SecurityFocus mailing list and other sources, operated by Symantec, Inc.
  • CXSecurity - Archive of published CVE and Bugtraq software vulnerabilities cross-referenced with a Google dork database for discovering the listed vulnerability.
  • China National Vulnerability Database (CNNVD) - Chinese government-run vulnerability database analoguous to the United States's CVE database hosted by Mitre Corporation.
  • Common Vulnerabilities and Exposures (CVE) - Dictionary of common names (i.e., CVE Identifiers) for publicly known security vulnerabilities.
  • Distributed Weakness Filing (DWF) - Federated CNA (CVE Number Authority) mirroring MITRE's CVE database and offering additional CVE-equivalent numbers to otherwise out-of-scope vulnerability disclosures.
  • Exploit-DB - Non-profit project hosting exploits for software vulnerabilities, provided as a public service by Offensive Security.
  • Full-Disclosure - Public, vendor-neutral forum for detailed discussion of vulnerabilities, often publishes details before many other sources.
  • HPI-VDB - Aggregator of cross-referenced software vulnerabilities offering free-of-charge API access, provided by the Hasso-Plattner Institute, Potsdam.
  • Inj3ct0r - Exploit marketplace and vulnerability information aggregator. (Onion service.)
  • Microsoft Security Advisories - Archive of security advisories impacting Microsoft software.
  • Microsoft Security Bulletins - Announcements of security issues discovered in Microsoft software, published by the Microsoft Security Response Center (MSRC).
  • Mozilla Foundation Security Advisories - Archive of security advisories impacting Mozilla software, including the Firefox Web Browser.
  • National Vulnerability Database (NVD) - United States government's National Vulnerability Database provides additional meta-data (CPE, CVSS scoring) of the standard CVE List along with a fine-grained search engine.
  • Packet Storm - Compendium of exploits, advisories, tools, and other security-related resources aggregated from across the industry.
  • SecuriTeam - Independent source of software vulnerability information.
  • US-CERT Vulnerability Notes Database - Summaries, technical details, remediation information, and lists of vendors affected by software vulnerabilities, aggregated by the United States Computer Emergency Response Team (US-CERT).
  • Vulnerability Lab - Open forum for security advisories organized by category of exploit target.
  • Vulners - Security database of software vulnerabilities.
  • Vulmon - Vulnerability search engine with vulnerability intelligence features that conducts full text searches in its database.
  • Zero Day Initiative - Bug bounty program with publicly accessible archive of published security advisories, operated by TippingPoint.

Web Exploitation

  • BlindElephant - Web application fingerprinter.
  • Browser Exploitation Framework (BeEF) - Command and control server for delivering exploits to commandeered Web browsers.
  • Burp Suite - Integrated platform for performing security testing of web applications.
  • Commix - Automated all-in-one operating system command injection and exploitation tool.
  • DVCS Ripper - Rip web accessible (distributed) version control systems: SVN/GIT/HG/BZR.
  • EyeWitness - Tool to take screenshots of websites, provide some server header info, and identify default credentials if possible.
  • Fiddler - Free cross-platform web debugging proxy with user-friendly companion tools.
  • FuzzDB - Dictionary of attack patterns and primitives for black-box application fault injection and resource discovery.
  • GitTools - Automatically find and download Web-accessible .git repositories.
  • Kadabra - Automatic LFI exploiter and scanner.
  • Kadimus - LFI scan and exploit tool.
  • NoSQLmap - Automatic NoSQL injection and database takeover tool.
  • OWASP Zed Attack Proxy (ZAP) - Feature-rich, scriptable HTTP intercepting proxy and fuzzer for penetration testing web applications.
  • Offensive Web Testing Framework (OWTF) - Python-based framework for pentesting Web applications based on the OWASP Testing Guide.
  • Raccoon - High performance offensive security tool for reconnaissance and vulnerability scanning.
  • SQLmap - Automatic SQL injection and database takeover tool.
  • VHostScan - Virtual host scanner that performs reverse lookups, can be used with pivot tools, detect catch-all scenarios, aliases and dynamic default pages.
  • WPSploit - Exploit WordPress-powered websites with Metasploit.
  • Wappalyzer - Wappalyzer uncovers the technologies used on websites.
  • WhatWaf - Detect and bypass web application firewalls and protection systems.
  • WhatWeb - Website fingerprinter.
  • Wordpress Exploit Framework - Ruby framework for developing and using modules which aid in the penetration testing of WordPress powered websites and systems.
  • autochrome - Easy to install a test browser with all the appropriate setting needed for web application testing with native Burp support, from NCCGroup.
  • badtouch - Scriptable network authentication cracker.
  • fimap - Find, prepare, audit, exploit and even Google automatically for LFI/RFI bugs.
  • liffy - LFI exploitation tool.
  • recursebuster - Content discovery tool to perform directory and file bruteforcing.
  • sslstrip2 - SSLStrip version to defeat HSTS.
  • sslstrip - Demonstration of the HTTPS stripping attacks.
  • tplmap - Automatic server-side template injection and Web server takeover tool.
  • wafw00f - Identifies and fingerprints Web Application Firewall (WAF) products.
  • webscreenshot - Simple script to take screenshots of websites from a list of sites.
  • weevely3 - Weaponized PHP-based web shell.

Android Utilities

  • Android Open Pwn Project (AOPP) - Variant of the Android Open Source Project (AOSP), called Pwnix, is built from the ground up for network hacking and pentesting.
  • cSploit - Advanced IT security professional toolkit on Android featuring an integrated Metasploit daemon and MITM capabilities.
  • Fing - Network scanning and host enumeration app that performs NetBIOS, UPnP, Bonjour, SNMP, and various other advanced device fingerprinting techniques.

Windows Utilities

  • Active Directory and Privilege Escalation (ADAPE) - Umbrella script that automates numerous useful PowerShell modules to discover security misconfigurations and attempt privilege escalation against Active Directory.
  • Bloodhound - Graphical Active Directory trust relationship explorer.
  • Commando VM - Automated installation of over 140 Windows software packages for penetration testing and red teaming.
  • Covenant - ASP.NET Core application that serves as a collaborative command and control platform for red teamers.
  • DeathStar - Python script that uses Empire's RESTful API to automate gaining Domain Admin rights in Active Directory environments.
  • Empire - Pure PowerShell post-exploitation agent.
  • Fibratus - Tool for exploration and tracing of the Windows kernel.
  • LaZagne - Credentials recovery project.
  • Magic Unicorn - Shellcode generator for numerous attack vectors, including Microsoft Office macros, PowerShell, HTML applications (HTA), or certutil (using fake certificates).
  • MailSniper - Modular tool for searching through email in a Microsoft Exchange environment, gathering the Global Address List from Outlook Web Access (OWA) and Exchange Web Services (EWS), and more.
  • PowerSploit - PowerShell Post-Exploitation Framework.
  • RID_ENUM - Python script that can enumerate all users from a Windows Domain Controller and crack those user's passwords using brute-force.
  • Responder - Link-Local Multicast Name Resolution (LLMNR), NBT-NS, and mDNS poisoner.
  • Ruler - Abuses client-side Outlook features to gain a remote shell on a Microsoft Exchange server.
  • SCOMDecrypt - Retrieve and decrypt RunAs credentials stored within Microsoft System Center Operations Manager (SCOM) databases.
  • Sysinternals Suite - The Sysinternals Troubleshooting Utilities.
  • Windows Credentials Editor - Inspect logon sessions and add, change, list, and delete associated credentials, including Kerberos tickets.
  • Windows Exploit Suggester - Detects potential missing patches on the target.
  • mimikatz - Credentials extraction tool for Windows operating system.
  • redsnarf - Post-exploitation tool for retrieving password hashes and credentials from Windows workstations, servers, and domain controllers.
  • wePWNise - Generates architecture independent VBA code to be used in Office documents or templates and automates bypassing application control and exploit mitigation software.

macOS Utilities

  • Bella - Pure Python post-exploitation data mining and remote administration tool for macOS.
  • EvilOSX - Modular RAT that uses numerous evasion and exfiltration techniques out-of-the-box.

 

 

原文:

本文:https://pub.intelligentx.net/collection-awesome-penetration-testing-resources-tools-and-other-shiny-things

讨论:请加入支持星球或者小红圈【首席架构师圈】

SEO Title
A collection of awesome penetration testing resources, tools and other shiny things

【首席架构师推荐】信息图形软件列表

Chinese, Simplified

这是一个软件列表创建任何类型的信息图形:

  • 其中包括从提供的数据集创建一个或多个信息图形的能力
  • 它要么是专门为信息可视化提供的
Software Example(s) Interface Licence(s) Latest Release Operating system Distinguishing features
License Open Source (yes/no)
AIDA     LGPL Yes October 2003 / 3.2.1   Open interfaces and formats for particle physics data processing
Algebrator   GUI Proprietary No 2009 / 4.2

Linux

Mac

OS X,

Sugar,

Windows

2D graphs
Archim drawing 2D and 3D graphs   freeware No 2008 Windows Graphs in polar (or other) coordinates become specific cases of parametric graphs.
Baudline Baudline GUI Proprietary No July 21, 2010 / 1.08

FreeBSD, Linux, 

Mac OS X, Solaris

Signal analysis tool
D3js   JavaScript library BSD Yes August 25, 2018 / 5.7.0

web

browsers, js engines

static and dynamic presentations
DADiSP DADiSP GUI, command line, SPL script language Proprietary No January 17, 2017 / 6.7 B02 Windows Numerical analysis and signal processing with a spreadsheet-like interface
DAP     GNU-style copyleft[1] Yes April 16, 2014 / 3.10   Statistics
Datacopia

Sample charts created through datacopia

GUI (web based) Freemium No  

Windows,

Linux,

Mac,

iOS,

Android

Generates a ranked list of several plots & visualizations based on an analysis of the data provided, allowing the user to choose their favorite graphic, share it, and export it as an image.
DataScene   GUI Shareware No March 2011 / 3.0.7

Linux,

Unix/X11, Windows

2D & 3D graphing, animated graphs, data analysis, curve fitting, and data monitoring.
Descartes (plotting tool)   GUI GPL Yes July 10, 2005 / 0.7

Any

(Python)

Inactive as of 2005
EditGrid   GUI (web based)       Any (Web-based application) Online spreadsheet; service due to end May 1, 2014
EJS EJS GUI GPL Yes  

Linux, 

Mac OS X,

Windows

Creates ODE solving interactive, ready-to-publish Java applets
Epi Info     GPL Yes February 2, 2018 / 7.2.2.6 Windows Statistics
EViews     Proprietary No June 21, 2017 / 10   Statistics
Fityk old screenshot GUI, command line GPL Yes December 19, 2016 / 1.3.1

Linux, 

Mac OS X, Windows

specialized in curve fitting
FlexPro     Proprietary No 2017

MS

Windows

only

 
FreeMat Freemat screenshot   GPL[2] Yes June 30, 2013 / 4.2

Linux, 

Mac OS X, Windows

 
FusionCharts

Create Interactive Charts and Graphs

GUI (web based), JavaScript Charting Library Proprietary No November 1, 2016 / 3.11.3

All Web Browsers (including

IE 6), JS Engines

Interactive JavaScript Charts for your Web & Mobile applications. Get 90+ chart types and 965 maps, readymade business dashboards and demos.
GeoGebra GeoGebra GUI GPL[3] Yes September 3, 2017 / 6.0.385.0

Linux, 

Mac OS X, Sugar,

Windows

Very good for rendering Geometry, Graphs, Statistical Diagrams, (LaTeX) Formula Rendering. All antialiased in PNG Export. Export to SVG, EPS, EMF, PNG, PDF.
Gephi Gephi GUI GPLv3 / CDDL 1.0 Yes February 14, 2016 / 0.9.1

Linux, 

Mac OS X, Windows

Networks and complex systems, dynamic and hierarchical graphs
ggplot2   R GPL2 Yes December 30, 2016 / 2.2.1

Cross-

platform

Based on "The Grammar of Graphics"
GLE   Command line, GUI BSD / GPL Yes August 18, 2015 / 4.2.5f

Linux,

Mac,

Windows

Graphics scripting language
GNU Octave Octave GUI, command line, C, C++, Fortran GPL Yes August 9, 2018 / 4.4.1

eComStation

FreeBSD,

Linux, 

Mac OS X, OS/2

Solaris or Windows

MATLAB compatible, built-in ODE and DAE solvers, extensive user contributed toolboxes
Gnumeric   GUI GPL[4] Yes August 19, 2018 / 1.12.43

Cross-

platform

Spreadsheet
Gnuplot Foucault pendulum Command line, PythonRuby, Smalltalk, third-party GUIs Own license Yes June 4, 2018 / 5.2.4

Amiga,

Atari ST,

BeOS, Linux,

Mac,

MS-DOS,

OS/2,

OS-9/68k,

Ultrix,

Windows,

VMS

Built in scripting language
Grace Grace-screenshot Command line, GUI, various APIs GPL Yes February 14, 2015 / 5.1.25

Linux,

Mac(X11), Windows

(cygwin)

Uses Motif;

fork of Xmgr

GrADS   command line GPL Yes April 25, 2018 / 2.2.1

Linux,

Mac OS X,

Windows,

Solaris,

IBM AIX,

DEC Alpha,

IRIX

Visualization of Earth science data
GraphPad Prism   GUI proprietary No October 12, 2016 / 7.0b

Mac,

Windows

 
Graphviz   DOT language CPL Yes December 25, 2016 / 2.40.1

Linux, 

Mac OS X,

Windows

 
gretl   GUI GPL Yes September 3, 2018 / 2018c

Linux,

Mac,

Windows

Specialized in econometrics and time series analyses, built-in scripting language, interface to gnuplot and R
HippoDraw     GPL v2 Yes October 2007 / 1.21.3   C++-based data analysis system
IGOR Pro IGOR Pro GUI proprietary No April 11, 2019 / 8.0.3

Mac,

Windows

3D and volume visualization, Curve and peak fitting, Signal processing, Image processing
ILNumerics   Math library for .NET / C# GPL / proprietary   June 11, 2015 / v4.8

Windows

and Linux

Math library with rich visualization features (interactive 3D scenes, scientific plotting) and 

MATLAB-like

syntax.

Ipe IPE Clipping example GUI, XML GPL Yes December 10, 2016 / 7.2.7

Linux,

Mac,

Windows,

OS/X

IPE Graphics with LaTeX equations or notations can be stored as PDF files (not only exported to PDF) and be included in LaTeX documents. pdftoipe allows any PDF graph to be edited in Ipe.
JFreeChart JFreeChart screenshot GUI, JavaGroovy LGPL Yes November 5, 2017 / 1.5.0 Any (Java)  
KChart KChart screenshot GUI GPL Yes March 21, 2017 / 3.0.1 Linux (KDE)  
Kig   GUI GPL Yes     Geometry diagrams only
LabPlot LabPlot screenshot GUI, Qt scripting GPL Yes April 19, 2019 / 2.6.0

Linux (KDE),

Windows

data analysis, nonlinear curve fitting in 2D, data picking from images, live data plotting
LabVIEW     Proprietary No May 2017 / 2017   Visual circuits modeling
LiSiCA LiSiCA 2d output.png Python   No  

Windows,

Linux

Ligand-based virtual screening software that searches for 2D and 3D similarities between a reference compound and a database of target compounds.
MagicPlot   GUI Proprietary No September 18, 2016 / 2.7.2 Any (Java) Nonlinear fitting, batch processing
Maple Maple GUI, command line Proprietary No May 25, 2017 / 2017

Linux, Mac

OS X,

Windows

 
MathCad   GUI Proprietary No March 6, 2017 / Prime 4.0, November 2015 / 15.0 M045 Windows Simple GUI driven interface
Mathematica Mathematica GUI, command line, C++ Proprietary No 12.0.0 (April 16, 2019; 5 months ago) [±][5]

Linux, 

Mac OS X,

Windows, 

Raspberry Pi[6]

Computer algebra, statistics and numerical analysis system with general graphic language. See Wolfram Language.
MATLAB MATLAB GUI Proprietary No September 20, 2017 / R2017b

Linux,

 Mac OS X,

Windows

Matrix system
Maxima   GUI, command line GPL Yes October 3, 2017 / 5.41.0

BSD, Linux, 

Mac OS X,

Unix Like

OS,

Windows

Various

graphical user interfaces, Support LaTeX with

 GNU

TeXmacs and Web frontend with SageMath

MayaVi Mayavi GUI, Python, scriptable, embeddable BSD Yes August 3, 2018 / 4.6.2

GNU/Linux, 

Mac OS X,

Windows

Visualises computational grids, scalar/vector/tensor data. Texture & ray-cast mappers.
MedCalc   GUI Proprietary No August 17, 2017 / 17.9 Windows Statistics
Microsoft Excel   GUI Proprietary No  

Mac OS X, 

Windows

Spreadsheet
NCSS (statistical software)   GUI Proprietary No May 2, 2016 / NCSS 11 Windows Statistical Analysis and Statistical Graphics software
Nucalc   GUI proprietary No  

Mac OS, 

Mac OS X,

Windows

 
Numbers (iWork)   GUI Proprietary No March 28, 2017 / 4.1 Mac OS X Spreadsheet
OpenDX   GUI Proprietary No January 19, 2006 / 4.4.0

Cross-

platform

 
OpenOffice.org Calc   GUI GNU LGPL Yes January 25, 2011 / 3.3

Cross

-platform

Spreadsheet
OpenPlaG openPlaG graphs screenshot GUI GPL Yes June 12, 2018 / 3.5 Any (PHP 5) graph plotter
Orange Orange example workflow screenshot GUI, Python scripting GPL Yes September 3, 2017 / 3.5

GNU/Linux,

Windows,

Mac OS X

A visual programming data-flow software suite with widgets for statistical data analysis, interactive data visualizationdata mining, and machine learning.
Origin   GUI, COM, C/C++ and scripting proprietary No June 22, 2017 / 2017 SR2 Windows

Multi-layer

2D, 3D

and statistical graphs for science and engineering. Built-in digitizing tool. Auto-recalculation and reporting. Programmable, with access to NAG Numerical Library.

ParaView   GUI, Python scripting GPL Yes June 19, 2018 / 5.5.2

Linux/Unix, 

Mac OS X,

Windows

Parallel scientific and Computational Fluid Dynamics visualizations
PDL PDL   Artistic License / GPL Yes May 6, 2018 / 2.019

Perl

Data

Language

 
PGPLOT   FORTRAN, C   No February 26, 2001 / 5.2.2

Linux,

Mac,

Windows

(Fortran) California Institute of Technology, Inactive as of 2001
ploticus A plot of Wikipedia statistics in Ploticus Command line, C GPL Yes May 2013 / 2.42

Linux,

Mac,

Windows

plots and charts from data
Plotly A plot made using plotly GUIcommand line Python Commercial No  

Any

(web-based)

plots and charts in browser, web-sharing and exporting, drag-and-drop data import, Python command line
plotutils   command line, C/C++ GPL Yes September 27, 2009 / 2.6

Linux,

Mac,

Windows

Collection of command line programs, C/C++ API
PLplot 3D surface plot Ada, C/C++/D, Fortran 77/90, C, C++, Java, Lisp, Lua, OCaml, Octave, Perl, Python, Tcl/Tk LGPL Yes August 26, 2017 / 5.13.0

Linux,

Mac,

Windows

Many different output formats: CGM, GIF, Jpeg, Png, Latex, PBM, PDF, Postscript, SVG, XFig, Qt, wxWidgets
PSPP   GUIcommand line GPL Yes August 20, 2017 / 1.0.0

Linux,

Mac,

Windows

Statistical analysis of sampled data. Free replacement for SPSS.
QtiPlot   GUI, Python proprietary No May 31, 2017 / 0.9.9.11

Linux,

Mac,

Windows

Python scriptable
R Plots from lm example.svg Third party GPL Yes July 2, 2018 / 3.5.1("Feather Spray")

Linux,

Mac,

Windows

In addition to base graphics, has a large number of graphics packages including lattice and ggplot2.[7] Interoperabile with other free software packages.
ROOT ROOT plot showing regions of interest in a 2D distribution GUI, C++, Python, Ruby LGPL Yes August 23, 2018 / 6.14.04

Linux,

Mac,

Windows

De facto standard in high energy physics
RRDtool RRDtool Command line GPL Yes May 17, 2017 / 1.7.0

Linux,

Windows

 
S             Statistics
S-PLUS     Proprietary No November 2010 / 8.2   Statistics

SAS

System

    Proprietary No July 10, 2013 / 9.4   Statistics
SciDAVis Scidavis 0.1.0 screenshot.png GUI, Python GPL Yes June 4, 2018 / 1.23

Linux,

Mac,

Windows

Qt4-based GUI, Python scriptable
Scilab Scilab   CeCILL Yes February 15, 2018 / 6.0.1

Linux, 

Mac OS X,

Windows

Matrix system

SciPy,

 NumPy

matplotlib 

modules for 

Python

matplotlib Python, GUI, command line BSD/matplotlib Yes June 21, 2017 / 0.19.1, July 6, 2017 / 1.13.1, May 10, 2017 / 2.0.2

FreeBSD,

Linux,

 Mac OS X,

Windows

Extensive numerical and scientific library with MATLAB-style plotting
SigmaPlot   GUI proprietary No 2014 / 13.0.0 Windows  
SOCR             Statistics
Sonic Visualiser   GUI GPL Yes August 14, 2018 / 3.1.1

Linux,

 MacOS

Windows

 
SPSS   GUI, command line Proprietary No August 8, 2017 / 25.0   Statistics
Stata     Proprietary No June 6, 2017 / 15.0   Statistics
Statgraphics

Dynamic Response Surface Plot

GUI Proprietary No July 2015 / 17.1.08 Windows Statistical software package for exploratory data analysis, dynamic data visualization, statistical modeling, design of experiments, time series forecasting, quality improvement and Six Sigma.

Statistical

Lab

        May 2, 2011 / 3.81    
SymPy SymPy   BSD Yes September 14, 2018 / 1.3

Linux, 

Mac OS X,

Windows

Python library for computer algebra and symbolic mathematics
Sysquake   GUI, command line Proprietary No November 5, 2013 / 5.0

Linux, 

Mac OS X,

Windows

MATLAB compatible, interactive graphics
Systat     Proprietary No     Statistics
Tableau   GUI Proprietary No   Windows Spreadsheet
TAChart Simthyr 3.1 on openSUSE 11.png Charting library modified LGPL Yes November 13, 2016 / 1.6.2

Linux,

Mac OS X,

Windows

Very flexible charting component for Lazarus / Free Pascal.
Tecplot Tecplot 3d vortices.jpg GUI proprietary No 2016 / 2016

Linux,

Mac,

UNIX,

Windows

Computational Fluid Dynamics
Teechart TeeChart Gallery.png Charting library Open Source Yes 2018

Windows,

macOS,

Linux,

iOS,

Android

Full set of chart types, maps & gauges, interactive, real-time, PNG, JPEG export, cross-browser support, integration with WordPress, Drupal, Node.js, Joomla, TypeScript, NuGet among others.
think-cell chart   GUI proprietary No   Windows Support for waterfallMarimekko and Gantt charts. Direct integration into Microsoft PowerPoint.
Veusz Veusz screenshot 1.3.png GUI, Python, command line GPL Yes July 22, 2018 / 3.0.1

Mac, Unix,

Windows

Create publication-quality PS/PDF plots, Python scripting and plugin interface
Visifire   Independent of server side scripting Proprietary No June 5, 2014 / 5.1.7-0 Mac, Windows  
VisIt Rayleigh-Taylor instability.jpg GUI, C++, Python, and Java BSD Yes May 2018 / 2.13.2

Linux, Mac,

Windows

Designed to handle very large data sets
Webix   JavaScript library GPLV3/Proprietary[8] Yes June 27, 2017 / 4.4

Cross platforms,

cross browsers

JavaScript/HTML5 based; More than 75 widgets and controls; Maps; Charts; DataTables; Organograms; Gauge charts

World

Programming

System

(WPS

Analytics)

  GUI, command line Proprietary No March 2018 / 4.0

AIX, Linux,

Linux for

Arm8 64-bit

(AArch64),

macOS,

PowerLinux, POWER/System p/pSeries (LE),

Solaris,

Windows,

Linux for

System z,

z/OS

Statistics. Handles very large data sets. Supports mixing Python, R, SAS and SQL languages within in a single user program
XGraph   GUI, command line Proprietary No April 2014 / v4.30

Linux,

Windows

Interactive and batch 2D data file plotting

Zoho Office

Suite

  GUI (web based) Proprietary No  

Any

(web-based

application)

Online spreadsheet

Vector graphics

Vector graphics software can be used for manual graphing or for editing the output of another program. Please see:

A few online editors using vector graphics for specific needs have been created.[citation needed] This kind of creative interfaces work well together with data visualization tools like the ones above.[citation needed]

See also

 

原文:https://en.wikipedia.org/wiki/List_of_information_graphics_software

本文:https://pub.intelligentx.net/wikipedia-list-information-graphics-software

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of information graphics software

【首席架构师推荐】小部件工具包列表

Chinese, Simplified

本文提供了一组小部件工具包(也称为GUI框架),它们用于构造程序的图形用户界面(GUI),根据程序与各种操作系统的关系进行组织。

Low-level widget toolkits

Integrated in the operating system

  • OS X uses Cocoa. Mac OS9 and OS X use Carbon for 32-bit applications.
  • The Windows API used in Microsoft Windows. Microsoft had the graphics functions integrated in the kernel until 2006[1]
  • The Haiku operating system uses an extended and modernised version of the Be API that was used by its spiritual predecessor BeOS. Haiku Inc. is expected to drop binary and source compatibility with the BeOS at some point in the future, which will result in its own Haiku API.

As a separate layer on top of the operating system

  • The X Window System contains primitive building blocks, called Xt or "Intrinsics", but they are mostly only used by older toolkits such as: OLITMotif and Xaw. Most contemporary toolkits, such as GTK+ or Qt, bypass them and use Xlib or XCB directly.
  • The Amiga OS Intuition was formerly present in the Amiga Kickstart ROM and integrated itself with a medium-high level widget library which invoked the Workbench Amiga native GUI. Since Amiga OS 2.0, Intuition.library became disk based and object oriented. Also Workbench.library and Icon.library became disk based, and could be replaced with similar third-party solutions.
  • Since 2005, Microsoft has taken the graphics system out of Windows' kernel.[2]

High-level widget toolkits

Widget toolkit comparison table
Toolkit name Windows OS X Unix-like Programming language License
Qt Yes Yes Yes C++ LGPL, commercial
MFC Yes No No C++ Proprietary
OWL (superseded by VCL) Yes No No C++ (Borland C++) Proprietary
VCL (supersedes OWL) Yes No No Object Pascal (Delphi) Proprietary
WTL Yes No No C++ Microsoft Public License
LCL Yes Yes Yes Object Pascal (Free Pascal) LGPL
LessTif No No Yes C LGPL
GTK Yes Yes Yes C LGPL
FLTK Yes Yes Yes C++ LGPL
Fox toolkit Yes No Yes C++ LGPL
Nana C++ Yes No Yes C++ Boost license
wxWidgets Yes Yes Yes C++ WxWindows license
TnFOX Yes Yes Yes C++ LGPL
Ultimate++ Yes No Yes C++ BSD
Rogue Wave Views Yes No Yes C++ proprietary
CEGUI Yes Yes Yes C++ MIT
IUP Yes No Yes C MIT
Shoes (GUI toolkit) cross-platform Ruby MIT
AWT cross-platform Java  
Swing cross-platform Java  
Pivot (WTK) cross-platform Java Apache License
GNUstep Yes Yes Yes Objective-C LGPL
Juce Yes Yes Yes C++ GPL, commercial
Cocoa No Yes No Objective-C Proprietary
Elementary Yes Yes Yes C LGPLBSD
Tk Yes Yes Yes C BSD
Kivy cross-platform Python MIT

OS dependent

On Amiga

  • BOOPSI (Basic Object Oriented Programming System for Intuition) was introduced with OS 2.0 and enhanced Intuition with a system of classes in which every class represents a single widget or describes an interface event. This led to an evolution in which third-party developers each realised their own personal systems of classes.
  • MUI: object-oriented GUI toolkit and the official toolkit for MorphOS.
  • ReAction: object-oriented GUI toolkit and the official toolkit for AmigaOS.
  • Zune (GUI toolkit) is an open source clone of MUI and the official toolkit for AROS.

On Macintosh

On Microsoft Windows

On Unix, under the X Window System

Note that the X Window System was originally primarily for Unix-like operating systems, but it now runs on Microsoft Windows as well using, for example, Cygwin, so some or all of these toolkits can also be used under Windows.

Cross-platform

Based on C (including bindings to other languages)

  • Elementaryopen source (LGPL), a part of the Enlightenment Foundation Libraries, a fast, stable, and scalable library that can be used to create both rich and fast applications that can be used on anything from every day desktop computers to small PDA's and set-top boxes.
  • GTK+open source (LGPL), primarily for the X Window System, ported to and emulated under other platforms; used in the GNOMERoxLXDE and Xfce desktop environments. The Windows port has support for native widgets.
  • IUPopen source (MIT), a minimalist GUI toolkit in ANSI C for Windows, UNIX and Linux.
  • Tkopen source (BSD-style), a widget set accessed from Tcl and other high-level script languages (interfaced in Python as Tkinter).
  • XForms, the Forms Library for X
  • XVT, Extensible Virtual Toolkit

Based on C++ (including bindings to other languages)

Based on OpenGL

  • Clutter (LGPL) (in C) is an open source software library for creating fast, visually rich and animated graphical user interfaces.

Based on Flash

  • Adobe Flash allows creating widgets running in most web browsers and in several mobile phones.
  • Adobe Flex provides high-level widgets for building web user interfaces. Flash widgets can be used in Flex.
  • Flash and Flex widgets will run without a web browser in the Adobe AIR runtime environment.

Based on XML

Based on JavaScript

Main article: JavaScript library

General

RIAs

Full-stack framework

Resource-based

No longer developed

Based on SVG

  • Raphaël is a JavaScript toolkit for SVG interfaces and animations

Based on .NET

  • Gtk#, C# wrappers around the underlying GTK+ and GNOME libraries, written in C and available on Linux, MacOS and Windows.
  • Windows Forms. There is an original Microsoft's implementation that is a wrapper around the Windows API and runs on windows, and Mono's alternative implementation that is cross platform.

Based on Java

  • The Abstract Window Toolkit (AWT) is Sun Microsystems' original widget toolkit for Java applications. It typically uses another toolkit on each platform on which it runs.
  • Swing is a richer widget toolkit supported since J2SE 1.2 as a replacement for AWT widgets. Swing is a lightweight toolkit, meaning it does not rely on native widgets.
  • Apache Pivot is an open-source platform for building rich web applications in Java or any JVM-compatible language, and relies on the WTK widget toolkit.
  • JavaFX and FXML.
  • The Standard Widget Toolkit (SWT) is a native widget toolkit for Java that was developed as part of the Eclipse project. SWT uses a standard toolkit for the running platform (such as the Windows API, OS X Cocoa, or GTK+) underneath.
  • Qt Jambi, the official Java binding to Qt from Trolltech. The commercial support and development has stopped[5]

Based on Object Pascal

  • IP Pascal uses a graphics library built on top of standard language constructs. Also unusual for being a procedural toolkit that is cross-platform (no callbacks or other tricks), and is completely upward compatible with standard serial input and output paradigms. Completely standard programs with serial output can be run and extended with graphical constructs.
  • Lazarus LCL (for PascalObject Pascal and Delphi via Free Pascal compiler), a class library wrapping GTK+ 1.2, Gtk+ 2.x and the Windows API (Carbon, Windows CE and Qt4 support are all in development).
  • fpGUI is created with the Free Pascal compiler. It doesn't rely on any large 3rdParty libraries and currently runs on Linux, Windows, Windows CE, and Mac (via X11). A Carbon (OS X) port is underway.
  • CLX (Component Library for Cross-platform), used with Borland's DelphiC++ Builder, and Kylix, for producing cross-platform applications. It is based on Qt, wrapped in such a way that its programming interface is similar to that of the VCL toolkit.

Based on Objective-C

Based on Ruby

Not yet categorised

Comparison of widget toolkits

Toolkit Initial release Latest release Main language Bindings Tools License Pros Cons Back-end
XawAthena 1983   C            
AWT 1995   Java       portable    
CEGUI December 2004 0.8.7 (April 28, 2016; 3 years ago) [±][6] C++ Python,[7] Lua (using tolua++)[8] CEED[9] MIT License Free license, fast, cross-platform, portable, free GUI editing tool    
Clutter 2006   C Perl, Python, C#, C++, Vala, Ruby   LGPL GTK+ and WebKit embedding    
Elementary 2007 (EFL: 2001) 2016 C JavaScript, Python, Vala, C++ editje, edje LGPL Portable, stable, fast, finger-friendly    
FLTK 1998 2019 C++ Python (pyFLTK), Perl (FLTK.pm), Ruby (Ruby/FLTK), Tcl (Tcl Fltk), Guile (guile-fltk), Eiffel (IFLTK) FLUID (Fast Light UI Designer) LGPL (with an exception that allows static linking) fast, small enough to static link limited widget selection  
FOX 1997   C++ Ruby (FXRuby), Python (FXPy), Eiffel (EiffelFox)     consistent across platforms non-native look and feel  
GLUI     C++            
GNUstep 1994 2017 Objective-C Java, Ruby, Scheme Gorm (computing) GPL for the apps, LGPL for the libs Portable, free license Native on macOS (with Cocoa) X11Win32Wayland
GTK+ 1997 3.24.4[10] (January 21, 2019; 7 months ago) [±] C C++ (gtkmm), Perl (Gtk2-perl), Ruby (ruby-gtk2), Python (PyGTK), Haskell (Gtk2Hs), Java (java-gnome) (not available for Microsoft Windows), C# (Gtk#), PHP (PHP-GTK), Ada (GTKAda), D (gtkD), FreeBasic (GladeToBac), Go (go-gtk), OCaml (lablgtk), JavaScript (GjsSeed), Fortran (gtk-fortran), Lua (lua-lgi), R (RGtk2) and others via GTK-server Glade LGPL Portable, free license Partly native only.[11][12]  
IUP 1992 2017[13] C Lua (IupLua)[14] LEDC: a compiler for LED MIT Portable, lightweight, use the native API, native look&feel, free licence Non‑Unicode (only plain ASCII) [15]  
MotifLesstif 1980s   C   BX Pro        
Nana C++ 2007 1.2.2 (December 8, 2015; 3 years ago) [±][16] C++   VisualStudio, Dev-C++, Code::Blocks, GCC   portable, lightweight, modern C++ style    
Qt 1991 5.13.1[17] (5 September 2019; 15 days ago) [±] C++ Ruby (QtRuby), Python (PyQtPySidePythonQt), Ada (QtAda), c# ( Qyoto), Java (Qt Jambi), Pascal ( FreePascal Qt4 ), Perl (Perl Qt4), PHP(PHP-Qt), Haskell (Qt Haskell), Lua (lqtQtLua), Dao ( DaoQt), Tcl ( qtcl ), Common Lisp (CommonQt), D (QtD), Harbour (hbqt) Qt Designer, Qt Creator GPLLGPL.[18] Portable, rich widget set, GUI builder, free license, stable API Partially native only.[19][20][21]  
Shoes (GUI toolkit) 2007 2010 Ruby     MIT license/Open source Simplicity, ease of use    
SWT     Java D (DWT) Eclipse   portable    
Swing 1996   Java   Eclipse, NetBeans GPL for OpenJDK Portable (Java), advanced widgets, GUI builders    
Tk 1991 2015 C, Tcl Ruby (RubyTk), Python (Tkinter), Perl (Perl/Tk), Ada (TASH), Common Lisp (LTk), Erlang (etk), ... |   BSD very portable, many language bindings    
Ultimate++ 2004   C++   TheIDE BSD portable, NTL, free license    
Rogue Wave Views 1993 2014 (5.8) C++   ivfstudio proprietary portable (Windows, Unix-like), good support commercial  
VCF     C++     BSD free license    
Windows Forms     CLI languages CLI languages Expression, Visual Studio     portability issues, no MVC  
WPFXAMLSilverlight 2007   CLI languages CLI languages Expression, Visual Studio     Portability issues  
MFCWinAPI 1992   C++   Visual Studio     not portable (but Wine implements it for X Window)  
ATLWTL 2004   C++   Visual Studio     not portable  
wxWidgets 1992 3.1.2 (10 December 2018; 9 months ago) [±][22] C++ C++ (native), Ruby (wxRuby), Python (wxPython), Perl (wxPerl), Java (wxJavajwx!), Lua (wxLua), Tcl(wxTCL), JavaScript (GLUEscript), Smalltalk (wxSqueak), Erlang (wxErlang), Haskell (wxHaskell), C (wxC), D (wxD), .NET Framework (wxNet), Common Lisp (wxCL), Basic (wxBasic), BlitzMax (wxMax), Euphoria (wxEuphoria), Ada (wxAda), Pike (wxPike) VisualWx, Boa Constructor, PythonCard, Spe, XRCed, wxGladewxFormBuilder, DialogBlocks ($), wxDesigner ($) wxWindows License Portable, rich widget set, free licence, semantic similarities to MFC make migration easy.    
XUL     XML, JavaScript       portable    
Juce 2004   C++   Jucer GPL, commercial Cross-platform, with additional audio plug-in wrapping tools (VSTRTASAAX etc.)    
XVT 1989 2010 C and C++   Design for C and architect for C++ Proprietary Cross-platform, rich widget set, C and C++ GUI builders, very stable    
CLX     C++            
VCL     Delphi            
Toolkit Initial release Latest release Main language Bindings Tools License Pros Cons Back-end

See also

 

原文:https://en.wikipedia.org/wiki/List_of_widget_toolkits

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of widget toolkits

【首席架构师推荐】精选企业门户系统列表

Chinese, Simplified

这是一个著名的企业门户供应商列表。企业门户是跨组织边界集成信息、人员和流程的框架。

Vendor Product Name Technology License Portlet API
Apache Software Foundation Jetspeed 2.3.1 Java EE Apache License v2.0 JSR-286
ATG ATG Portal Java EE Proprietary JSR-168
Broadvision Broadvision Portal 8.2 Java EE Proprietary JSR-168
Bluenog Bluenog ICE 4.5 Java EE Proprietary JSR-168
Edge Technologies enPortal Java EE Proprietary Proprietary and Java API
Elcom Technology CommunityManager.NET .NET Proprietary unknown
JBoss and eXo GateIn Portal 3 Java EE LGPL JSR-286
Hippo Hippo Java EE Open Source and Proprietary Licenses Widgets / WOA
IBM WebSphere Portal 8.5 Java EE Proprietary JSR-168, JSR-286, WSRP, Widgets / WOA, CMS
Interwoven TeamPortal Java EE Proprietary JSR-168
JBoss JBoss Enterprise Portal Platform 5.1 Java EE LGPL JSR-286, WSRP
Larsen & Toubro Infotech IntraNet ASP.NET Proprietary unknown
Liferay Liferay Portal 7.2 Java EE LGPL and Proprietary Licenses JSR-168, JSR-286, WSRP
Magnolia International Ltd. Magnolia CMS Java EE GPL and Proprietary Licenses Components, Spring, CMIS, JSR-170, Web-Services, JSON, JAAS, REST, Open-Social
Mairie de Paris Lutèce Java EE BSD JSR-168
MetaQuotes Software Corp. TeamWox C++ Proprietary  
Microsoft Office Sharepoint Server 2010 ASP.NET Proprietary WSRP,Webparts(Proprietary)
Open Text Corporation Vignette Portal 8.0 Java EE Proprietary JSR-286
Oracle Oracle WebCenter Suite 12c Java EE Proprietary JSR-168, JSR-286, WSRP
Oracle (BEA Systems) Oracle WebLogic Portal 10g Java EE Proprietary JSR-168, JSR-286
Oracle (BEA Systems) Oracle WebCenter Interaction 10g Java EE/ASP.NET Proprietary JSR-168
Oracle Oracle IAS Portal 10g Java EE Proprietary JSR-168
Oracle Cloud WebCenter Portal Cloud Java EE Proprietary JSR-168, JSR-286
Samsung SDS ACUBE Portal 5.0 Java EE Proprietary JSR-168
SAP SE SAP NetWeaver 7.5 Java EE Proprietary JSR-168
SORCE SORCE V9 ASP.NET Proprietary unknown
Sun Microsystems Sun Java System Portal Server 7.2 Java EE Open Source, licensing & support plans JSR-286
Sun Microsystems Sun GlassFish Web Space Server 10.0 Java EE Open Source, licensing & support plans JSR-286
Tibco Software PortalBuilder 5.2 Java EE Proprietary JSR-168
TmaxSoft ProPortal 4.0 Java EE Proprietary JSR-168
Jasig uPortal Java EE Apache License v2.0 JSR-168, JSR-286

 

原文:https://en.wikipedia.org/wiki/List_of_enterprise_portal_vendors

本文:https://pub.intelligentx.net/wikipedia-list-enterprise-portal-vendors

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of enterprise portal vendors

【首席架构师推荐】精选内容管理系统列表

Chinese, Simplified

这是一个值得注意的内容管理系统列表,用于组织和促进协作内容创建。其中许多都构建在独立的内容管理框架之上。

开源软件

本节列出可以在web服务器上安装和管理的免费和开源软件。

浅紫色背景下列出的系统不再处于活动开发中。

Java

Name Platform Supported databases Latest stable release Licenses Latest release date
Alfresco Community Edition Java MySQLOracleSQL ServerPostgreSQLDB2, 201901[1] LGPL 2019-02-04[±]
Ametys CMS Java MySQLOracleSQL ServerJCRApache Derby

4.1.11[2]

Apache 2.0 License

2019-??-??[±]

Apache Roller Java HSQLMySQLOracleSQL ServerDB2PostgreSQLApache Derby 5.2.2[3] Apache 2.0 License 2019-01-11[±]
Bloomreach Experience Manager Java MySQLOracleSQL ServerIngresPostgreSQLJCR 13.1[4] Apache 2.0 License 2019-03-20
Crafter CMS Java GitSolrCMIS 3.1.0[5] GNU GPL v3 2019-05-02[±]
dotCMS Java MySQLOracleMSSQLPostgreSQL 5.1.6[6] GNU GPL v3 2019-06-06[±]
DSpace Java OraclePostgreSQL 6.3 BSD License 2018-06-27
Enonic XP Java Embedded NoSQL 7.0.2[7] GPL v3 2019-07-02
Fedora Commons Java MySQLOraclePostgreSQLMulgara (MPTSTore RDF Semantic Triplestore) 5.0.2[8] Apache License 2019-02-14[±]
Jahia Community Distribution Java Apache DerbyJCRMySQLPostgreSQL 7.2.2 GPL 2018-03-01
LogicalDOC Community Edition Java MySQLOracleSQL ServerPostgreSQL 7.4.2[9] LGPL 2016-03-24
Nuxeo EP Java MySQLOracleSQL ServerIngresPostgreSQLMongoDB 10.2 Apache 2.0 License 2018-07-26
Magnolia Java H2DerbyMySQLPostgreSQLOracleMSSQL 6.1.1 GPL & proprietary 2019-07-30
OpenCms Java HSQLMySQLOracleSQL ServerDB2PostgreSQL 11.0.0[10] LGPL 2019-04-30[±]
OpenKM Community Edition Java MySQLPostgreSQLOracleSQL ServerHSQLDB 6.3.6 GPL 2018-03-06 [11]
OpenWGA Java MySQLPostgreSQLIBM DB2HSQLDBOracleSQL ServerIBM Lotus DominoCMIS

7.7.1[12]

GPL & proprietary

2019-07-28[±]

XWiki Java MySQLPostgreSQLOracleSQL ServerHSQLDB 11.7[13] LGPL 2019-08-27[±]

 

Java packages/bundle

Name Platform Supported databases Latest stable release Licenses Latest release date
Apache Lenya JavaXMLApache Cocoon   2.0.4[14] Apache License 2011-03-14
Daisy JavaXMLApache Cocoon MySQL 2.4.2 Apache License 2011-02-21

Microsoft ASP.NET

Name Platform Supported databases Latest stable release Licenses Latest release date
BetterCMS ASP.NET (Web Forms, MVC) SQL ServerSQL Azure[15] 2.0.8[16] LGPL 2017-06-20[±]
C1 CMS ASP.NET (Web Forms, MVC) XMLSQL Server 6.6[17] Mozilla Public License 2018-12-05[±]
DNN ASP.NET (Web Forms, MVC) SQL ServerSQL Server ExpressSQL Azure 9.3.2[18] MIT License 2019-05-01[±]
Kentico CMS ASP.NET SQL Server 12.0 SP[19] Proprietary, Free 2019-06-26[±]
mojoPortal ASP.NET SQL ServerMySQLPostgreSQLSQLiteFirebirdSQL CE 2.7[20] EPL 2018-10-20[±]
Orchard Project ASP.NET (Web Forms, MVC) SQL ServerMySQLPostgreSQLSQLite 1.10.3[21] New BSD License 2019-02-28[±]
Umbraco ASP.NET (Web Forms, MVC) SQL ServerSQL CESQL AzureMySQL 8.0.2[22] MIT License 2019-04-30[±]

Perl

Name Platform Supported databases Latest stable release Licenses Latest release date
blosxom Perl Flat-file database 2.1.2 MIT 2008-10-02
Bricolage Perl on mod perl MySQLPostgreSQLOracle 2.0.1 BSD 2011-02-09
EPrints Perl on mod perl MySQLPostgreSQL 3.4.1[23] GPL 2019-04-05[±]
Foswiki Perl Flat-file database 2.1.6[24] GPL 2018-03-02[±]
Ikiwiki Perl Git (software)Apache SubversionMercurial 3.20190228[25] GPL 2019-02-28[±]
Movable Type Open Source Perlmod perlFastCGI, w/PHP MySQL 5.2.13 GPL 2015-04-14[26]
Sellerdeck eCommerce Perl Flat-file databaseFlat-file database 16.0.3 GPL 2017-02-20
SPINE Perlmod perl MySQLPostgreSQL 1.2.2 GPL 2006-12-27
TWiki Perl Plain files (under version control) 6.1.0[27] GPL 2018-07-16[±]
WebGUI Perl on mod perl MySQL 7.10.30 GPL 2016-01-06[28]

PHP

Name Platform Supported databases Latest stable release Licenses Latest release date
ATutor PHP MySQL 2.2.4[29] GPL 2018-06-20[±]
Backdrop CMS PHP MySQL 1.13.3[30] GPL 2019-08-07[±]
b2evolution PHP MySQLMariaDB[31] 6.11.2[32] GPLv2 2019-06-13[±]
CMSimple PHP Flat-file database 4.7.8 GPLv3 2019-06-17[33]
CMS Made Simple PHP MySQL 2.2.10 GPL 2019-03-06[34]
Coderity PHP MySQL 3.3.13 MIT 2015-02-27[35]
Composr CMS PHP MySQL 10.0.13 CPAL 2018-01-22[36]
concrete5 PHP MySQLMariaDB 8.5.1 MIT 2019-04-03[37]
Contao PHP MySQL 4.8.3[38] LGPL 2019-09-12[±]
DokuWiki PHP Flat-file database 2018-04-22b[39] GPL 2018-04-22[±]
Dotclear PHP MySQLPostgreSQLSQLite 2.14.3[40] GPL 2018-09-26[±]
Drupal PHP MariaDBMicrosoft SQL ServerMySQLOraclePercona ServerPostgreSQLSQLite[41] 8.7.7[42] GPLv2+ 2019-09-04[±]
Exponent CMS PHP MySQL 2.5.0[43] GPL 2019-03-14 [±]
eZ Platform PHP MySQLMariaDBPostgreSQL 2.5[44] GPL 2019-03-29[±]
eZ Publish PHP MySQLPostgreSQLOracleMicrosoft SQL Server 5.4 GPL 2014-12-02[45]
Geeklog PHP MySQLPostgreSQLMicrosoft SQL Server 2.2.0[46] GPL 2018-06-26[±]
GetSimple CMS PHP Flat-file database 3.3.14 GPL 2018-09-01[47]
Grav PHP Flat-file database 1.6.15[48] MIT 2019-08-20[±]
Habari PHP MySQLPostgreSQL,[49] SQLite 0.9.2 Apache License 2014-09-16[50]
ImpressCMS PHP MySQL 1.3.11[51] GPL 2018-12-08[±]
ImpressPages PHP MySQL 5.0.3[52] GPL MIT 2017-07-11[±]
Jamroom PHP MySQLMariaDBPercona 6.1.0 MPL 2017-08-30[53]
Joomla! PHP MySQLPostgreSQLMSSQLSQLite 3.9.4 GPL 2019-03-12[54]
Kajona PHP MySQLPostgreSQLSQLiteMariaDBOracle 6.2 LGPL 2017-06-08[55]
Known PHP MySQLMongoDB 0.9.9 Apache License 2017-05-16[56]
Magento PHP MySQL 2.3.2[57] OSL Ver. 3 / AFL Ver. 3 2019-06-25[±]
Mambo PHP MySQL 4.6.5 GPL 2008-06-01
MediaWiki PHP MySQLMariaDBPostgreSQLSQLiteMSSQL[58] 1.33.0[59] GPL 2019-07-02[±]
MiaCMS PHP MySQL 4.9 GPL 2009-07-29[60]
Microweber PHP MySQLPostgreSQLSQLite 1.0.15 Apache License 2018-04-10
Midgard CMS PHP (Midgard framework) MySQL 12.0.9.2 LGPL 2012-09-26[61]
MODX PHP MySQL 2.7.1-pl[62] GPL 2019-02-14[±]
Novius OS PHP MySQL 5.0.1 (Elche) AGPLv3 2014-07-08[63]
Nucleus CMS PHP MySQL 3.64 GPL 2011-03-14[64]
OctoberCMS PHP MySQLPostgreSQLSQLite 458[65] MIT 2019-08-12[±]
OpenCart PHP MySQL 3.0.3.2[66] GNU 2019-04-09[±]
Omeka PHP MySQL 2.6.1[67] GPL 2018-05-02[±]
papaya CMS PHP MySQLPostgreSQLSQLite 5.5.2 GPL v2 2013-02-12[68]
pH7Builder PHP MySQLMariaDB 15.1.6[69] GPL 3.0 2019-05-28[±]
Phire CMS PHP MySQL 2.1.0 New BSD License 2016-07-07[70]
PHP-Fusion PHP MySQL 9.03.00[71] AGPLv3 2019-02-14[±]
PHP-Nuke PHP MySQL 8.3.2 GPL 2014-01-30[72]
phpWebLog PHP MySQL 0.5.3 GPL 2001-10-31
phpWiki PHP MySQL 1.5.5 GPL 2015-12-11[73]
Pimcore PHP MySQL 6.2.0[74] GPL 2019-09-05[±]
PivotX PHP MySQLFlat-file database 2.3.11 GPL 2015-06-21[75]
Pixie (CMS) PHP MySQL 1.0.4 GPL 2010-03-21
PmWiki PHP Flat-file database[76] SQLite[77] 2.2.118[78] GPL 2019-08-28[±]
Prestashop PHP MySQL 1.7.6.1[79] Open Software License 3.0 2019-08-26[±]
ProcessWire PHP MySQL 3.0.123 Mozilla Public License 2.0 2018-12-21[80]
SMW+ PHP - MediaWiki MySQL 1.7.0 GPL 2012-04-24[81]
Serendipity PHP + Smarty MySQLPostgreSQLMySQLiSQLite 2.1.5[82] BSD 2019-05-01[±]
SilverStripe PHP MySQLMicrosoft SQL ServerPostgreSQLSQLiteOracle 4.4.3[83] BSD[84] 2019-08-19[±]
SPIP PHP MySQLPostgreSQLSQLite 3.2.4[85] LGPL 2019-04-08[±]
Textpattern PHP MySQLMariaDB[86] 4.7.3[87] GPL 2019-02-25[±]
Tiki Wiki CMS Groupware PHP MySQL 19.1[88] LGPL 2019-02-14[±]
TYPO3 PHP MySQLOraclePostgreSQL 9.5.7[89] GPL 2019-05-15[±]
WordPress PHP MySQLMariaDB 5.2.2[90] GPL 2019-06-18[±]
XOOPS PHP MySQL 2.5.10[91] GPL 2019-04-29[±]

Python

Name Platform Supported databases Latest stable release Licenses Latest release date
django CMS Python/Django PostgreSQLMySQLSQLite 3 and Oracle 3.6.0[92] BSD 2019-01-29[±]
Mezzanine Python/Django PostgreSQLMySQLSQLite 3 and Oracle 4.3.1[93] BSD 2018-08-08[±]
MoinMoin Python Flat-file database 1.9.10[94] GPL 2018-09-09[±]
Plone Python/Zope MySQLPostgreSQLSQLiteOracleZODB, via Zope 5.2[95] GPL 2019-07-19[±]
Wagtail Python/Django PostgreSQLMySQLSQLite 3 and Oracle 2.5.1 BSD 2019-08-05[96]

Ruby on Rails

Name Platform Supported databases Latest stable release Licenses Latest release date
Alchemy CMS Ruby on Rails PostgreSQLMySQLSQLite 4.1.0[97] BSD 2018-09-22[±]
Publify Ruby on Rails MySQLPostgreSQLSQLite 9.1.0[98] MIT 2018-04-19[±]
Radiant Ruby on Rails MySQLPostgreSQLSQLiteDB2[99] 1.1.4[100] MIT 2013-09-24
Refinery CMS Ruby on Rails MySQLPostgreSQLSQLite 4.0.3[101] MIT 2019-03-03[±]

ColdFusion Markup Language (CFML)

Name Platform Supported databases Latest stable release Licenses Latest release date
ContentBox Modular CMS Lucee / Railo / Adobe ColdFusion MySQL/Microsoft SQL Server/PostgreSQL/HSQLDB/Apache Derby 2.1.0 Apache License or proprietary 2015-05-05[102]
FarCry CMS Lucee / Railo / OpenBD / Adobe ColdFusion MySQL/Microsoft SQL Server/Oracle/Postgres 7.0.7 GPL or proprietary 2015-01-14[103]
Mura CMS Lucee / Railo / OpenBD / Adobe ColdFusion MySQL/Microsoft SQL Server/Oracle 7.1 GPL or proprietary 2018-07-13[104]

JavaScript

Name Platform Supported databases Latest stable release Licenses Latest release date
Ghost Node.js SQLiteMySQL 2.25.3[105] MIT 2019-06-26[±]
TiddlyWiki Node.js & client-side JavaScript Flat-file database 5.1.19[106] BSD license 2018-12-20[±]
Wiki.js Node.js MongoDB 1.0.117[107] GNU Affero General Public License 2019-01-22[±]

Others

Name Platform Supported databases Latest stable release Licenses Latest release date
OpenACS Tcl AOLserver PostgreSQL/Oracle 5.9.1 GPL 2017-08-08[108]

软件即服务(SaaS)

本节列出专有软件,包括软件、主机和与单个供应商的支持。这部分包括免费服务。

Name Licensed version available Last stable version Web content management Group content management Enterprise content management
Adobe Business Catalyst   V4 End Of Life 2021/03/26 Yes Yes Yes
Alfresco Cloud Yes (Alfresco Community & Enterprise) 2012.05 No Yes Yes
Cloud CMS Yes 3.2.3 Yes Yes Yes
Crafter CMS Cloud Yes (Crafter CMS Enterprise) 2017.08 Yes Yes No
censhare Yes 2017.02 Yes Yes Yes
Clickability (Limelight Networks) No   Yes No No
dotCMS Cloud[109] Yes 5.0.3 Yes Yes Yes
Frontis Archive Publishing System Yes V3.12.01.11 Yes Yes Yes
Huddle Yes 2012 Yes Yes Yes
Microsoft Office 365 Yes (MS SharePoint, MS Lync, MS Exchange, MS Office) 2013 Yes Yes Yes
O3Spaces Yes 3.2.1 Yes Yes No
OpenKM Cloud [110] Yes 6.4.48 [111] Yes Yes Yes
OU Campus Yes 10.2.4 Yes Yes  
Polopoly Web CMS   10.2 Yes Yes No
Quintype Yes 1.0 Yes Yes Yes
uCoz     Yes Yes No
Umbraco Cloud Yes 7.13.2 Yes Yes Yes
Windows Live No 2011 No Yes No
XaitPorter Yes 4.9.6 No No Yes
Zesty.io Yes (Multi-Tenant SaaS) Versionless Yes Yes Yes

专有软件

本节列出要在用户自己的服务器上安装和管理的专有软件。本节包括免费软件专有软件。

浅紫色背景下列出的系统不再处于活动开发中。

Name Platform Supported databases Latest stable release Licenses Latest release date Web content management Group web content management Enterprise content management
Adobe Experience Manager[112] (formerly Day CQ5) Java JCR (Apache Jackrabbit Oak), MongoDB 6.4.2 Proprietary software 2018-10[113] Yes Yes Yes
Alfresco (Enterprise & Community Edition) Java OracleSQL ServerMySQLPostgreSQLDB2 4.0.2 Enterprise, 4.2.c Community Open Source 2015-03[114] No Yes Yes
Altitude3.Net ASP.NET SQL Server 2015.07.14 Proprietary software 2015-7-14 Yes Yes Yes
censhare Java Oracle 2017.2 Proprietary software 2017-05-12 Yes Yes Yes
Contegro ASP.NET SQL Server 4.0.0 Proprietary software 2010-17-11 Yes Yes No
Contentverse Java OracleSQL Server 8.1 Proprietary software 2014 Yes Yes Yes
CoreMedia WCM Java JDBC-compliant databases 8   2015-03-19 Yes No Yes
dotCMS Java OracleSQL ServerMySQLPostgreSQL 5.0.3 Proprietary software 2018-11-09 Yes Yes Yes
Ektron CMS ASP.NET SQL Server 9.20 Proprietary software 2016-12-09 Yes Yes Yes
Elcom CMS ASP.NET SQL Server 9.0 Proprietary software 2011-02-15 Yes Yes Yes
Episerver CMS ASP.NET SQL Server 10 Proprietary software 2017-01-16 Yes Yes Yes
ExpressionEngine PHP MySQL 4.3.6 Proprietary software 2018-10-02 Yes No Yes
Hyland OnBase ECM .NET SQL Server, Oracle       Yes Yes Yes
IBM Enterprise Content Management Java OracleDB2 8.5 Proprietary software 2013 Yes Yes Yes
Jadu PHP MySQLSQL Server Continuously Released Proprietary software   Yes Yes No
Jahia Enterprise Distribution Java MySQLOraclePostgreSQLMicrosoft SQL Server 6.6.2.3 Proprietary software 2013-12-20 Yes Yes Yes
Kentico CMS ASP.NET SQL Server 12.0 SP[19] Proprietary software 2019-06-26[±] Yes Yes Yes
Microsoft SharePoint ASP.NET SQL Server (2005, 2008 or 2012), SQL Express 6.0 Proprietary, Open API 2016-05-04 Yes Yes Yes
Movable Type Perl MySQLOracleSQL Server 7.0 Proprietary 2018-05-29[115] Yes Yes Yes
OpenText Documentum Java OracleSQL ServerDB2 16.4 Proprietary software 2018-05-01 No No Yes
OpenText Teamsite Java, .Net, XML, XSLT OracleSQL ServerDB2MySQL 16.2 Proprietary software 2017-04 Yes Yes Yes
Oracle WebCenter Content

(formerly Universal Content Management)
Java Oracle 11g     Yes Yes Yes
OU Campus Java MySQLMicrosoft SQL Server, SAP Sybase ASE 10.2.4 Proprietary software 2015-06-24 Yes Yes Yes
Pulse CMS PHP Flat-file database 5.3.2   2019-04-24[116] Yes No No
Sitecore ASP.NET (Webforms or MVC) SQL Server (2005, 2008, 2012), Oracle 8.2.5 Proprietary software 2017-08-01 Yes Yes Yes
Telligent Community ASP.NET SQL Server 5.0   2009-06-26 Yes Yes No
TerminalFour (SiteManager) Java MySQLOracleSQL Server 8.1.9.9 Proprietary 2017-06-24 Yes Yes Yes
XaitPorter (local license) PHP Oracle 4.9.6 Proprietary software 2013-04 No No Yes

其他内容管理框架

内容管理框架(CMF)是一个便于使用可重用组件或自定义软件管理Web内容的系统。它共享Web应用程序框架和内容管理系统(CMS)的一些方面。

下面是一个自称是CMFs的著名系统列表。

Name Technologies
Apache Jackrabbit Java
AxKit Perl
Jakarta Slide Java
Open Semantic Framework DrupalOWLPHP, and RDF
RadPHP MySQL, PHP 5.6+, PostgreSQL, and etc.

原文:https://en.wikipedia.org/wiki/List_of_content_management_systems

本文:https://pub.intelligentx.net/list-content-management-systems

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
List of content management systems

【首席架构师推荐】视频编辑软件列表

Chinese, Simplified

以下是视频编辑软件列表

包含在这个列表中的标准是执行非线性视频编辑的能力。大多数现代的代码转换软件都支持对视频剪辑的一部分进行代码转换,这可以算作剪切和修剪。但是,本条各项目有下列条件之一:

是否可以执行其他非线性视频编辑功能,如蒙太奇或合成

可以做修剪或裁剪不转码

Free and open-source

See also: List of free and open-source software packages § Video editing

Active and stable

Inactive

Proprietary

Freeware or Freemium products

Active

Discontinued

Commercial

Active

Discontinued

See also

 

原文:https://en.wikipedia.org/wiki/List_of_video_editing_software

本文:https://pub.intelligentx.net/wikipedia-list-video-editing-software

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of video editing software

【首席架构师推荐】视频转码软件列表

Chinese, Simplified

Open-source

Freeware

Commercial

See also

 

原文:https://en.wikipedia.org/wiki/List_of_video_transcoding_software

本文:https://pub.intelligentx.net/wikipedia-list-video-transcoding-software

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of video transcoding software

事件枢纽

Chinese, Simplified
SEO Title
event hub

-【首席架构师看Event Hub】Kafka深挖第1部分:错误处理、消息转换和事务支持

Chinese, Simplified

接下来是《如何在您的Spring启动应用程序中使用Apache Kafka》https://www.confluent.io/blog/apache-kafka-spring-boot-application ,这展示了如何开始使用Spring启动和Apache Kafka®,这里我们将更深入地挖掘Apache Kafka项目的Spring提供的一些附加功能。

Apache Kafka的Spring为Kafka带来了熟悉的Spring编程模型。它提供了用于发布记录的KafkaTemplate和用于异步执行POJO侦听器的侦听器容器。Spring引导自动配置连接了许多基础设施,因此您可以将精力集中在业务逻辑上。

 

User Code / Listening Container / Kafka Clients / Kafka

错误恢复

考虑一下这个简单的POJO监听器方法:

@KafkaListener(id = "fooGroup", topics = "topic1")

public void listen(String in) {

  logger.info("Received: " + in);

  if (in.startsWith("foo")) {

    throw new RuntimeException("failed");

  }

}

 

默认情况下,失败的记录会被简单地记录下来,然后我们继续下一个。但是,我们可以在侦听器容器中配置一个错误处理程序来执行一些其他操作。为此,我们用我们自己的来覆盖Spring Boot的自动配置容器工厂:

@Bean

public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory(

    ConcurrentKafkaListenerContainerFactoryConfigurer configurer,

    ConsumerFactory<Object, Object> kafkaConsumerFactory) {

  ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<>();

  configurer.configure(factory, kafkaConsumerFactory);

  factory.setErrorHandler(new SeekToCurrentErrorHandler()); // <<<<<<

  return factory;

}

注意,我们仍然可以利用大部分的自动配置。

SeekToCurrentErrorHandler丢弃轮询()中的剩余记录,并在使用者上执行查找操作来重置偏移量,以便在下一次轮询时再次获取被丢弃的记录。默认情况下,错误处理程序跟踪失败的记录,在10次提交尝试后放弃,并记录失败的记录。但是,我们也可以将失败的消息发送到另一个主题。我们称这是一个毫无意义的话题。

下面的例子把这一切放在一起:

@Bean

public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory(

    ConcurrentKafkaListenerContainerFactoryConfigurer configurer,

    ConsumerFactory<Object, Object> kafkaConsumerFactory,

    KafkaTemplate<Object, Object> template) {

  ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<>();

  configurer.configure(factory, kafkaConsumerFactory);

  factory.setErrorHandler(new SeekToCurrentErrorHandler(

      new DeadLetterPublishingRecoverer(template), 3));

  return factory;

}

@KafkaListener(id = "fooGroup", topics = "topic1")

public void listen(String in) {

  logger.info("Received: " + in);

  if (in.startsWith("foo")) {

    throw new RuntimeException("failed");

  }

}

@KafkaListener(id = "dltGroup", topics = "topic1.DLT")

public void dltListen(String in) {

  logger.info("Received from DLT: " + in);

}

 

反序列化错误

但是,在Spring获得记录之前发生的反序列化异常又如何呢?进入ErrorHandlingDeserializer。此反序列化器包装委托反序列化器并捕获任何异常。然后将它们转发给侦听器容器,后者将它们直接发送给错误处理程序。异常包含源数据,因此可以诊断问题。

域对象并推断类型

考虑下面的例子:

@Bean

public RecordMessageConverter converter() {

  return new StringJsonMessageConverter();

}

@KafkaListener(id = "fooGroup", topics = "topic1")

public void listen(Foo2 foo) {

  logger.info("Received: " + foo);

  if (foo.getFoo().startsWith("fail")) {

    throw new RuntimeException("failed");

  }

}

@KafkaListener(id = "dltGroup", topics = "topic1.DLT")

public void dltListen(Foo2 in) {

  logger.info("Received from DLT: " + in);

}

 

注意,我们现在正在使用类型为Foo2的对象。消息转换器bean推断要转换为方法签名中的参数类型的类型。

转换器自动“信任”类型。Spring Boot自动将转换器配置到侦听器容器中。

在生产者方面,发送的对象可以是一个不同的类(只要它的类型兼容):

@RestController

public class Controller {

    @Autowired

    private KafkaTemplate<Object, Object> template;

    @PostMapping(path = "/send/foo/{what}")

    public void sendFoo(@PathVariable String what) {

        this.template.send("topic1", new Foo1(what));

    }

}

 

和:

spring:

  kafka:

    producer:

      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer

$ curl -X POST http://localhost:8080/send/foo/fail

 

这里,我们在消费者端使用StringDeserializer和“智能”消息转换器。

多种监听器

我们还可以使用单个侦听器容器,并根据类型路由到特定的方法。这次我们不能推断类型,因为类型是用来选择要调用的方法的。

相反,我们依赖于在记录头中传递的类型信息来将源类型映射到目标类型。此外,由于我们没有推断类型,所以需要将消息转换器配置为“信任”映射类型的包。

在本例中,我们将在两端使用消息转换器(以及StringSerializer和StringDeserializer)。下面是消费者端转换器的例子:

 

@Bean

public RecordMessageConverter converter() {

  StringJsonMessageConverter converter = new StringJsonMessageConverter();

  DefaultJackson2JavaTypeMapper typeMapper = new DefaultJackson2JavaTypeMapper();

  typeMapper.setTypePrecedence(TypePrecedence.TYPE_ID);

  typeMapper.addTrustedPackages("com.common");

  Map<String, Class<?>> mappings = new HashMap<>();

  mappings.put("foo", Foo2.class);

  mappings.put("bar", Bar2.class);

  typeMapper.setIdClassMapping(mappings);

  converter.setTypeMapper(typeMapper);

  return converter;

}

在这里,我们从“foo”映射到类Foo2,从“bar”映射到类Bar2。注意,我们必须告诉它使用TYPE_ID头来确定转换的类型。同样,Spring Boot会自动将消息转换器配置到容器中。下面是应用程序片段中的生产端类型映射。yml文件;格式是一个逗号分隔的令牌列表:FQCN:

spring:

  kafka:

    producer:

      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer

      properties:

        spring.json.type.mapping: foo:com.common.Foo1,bar:com.common.Bar1

 

这个配置将类Foo1映射到“foo”,将类Bar1映射到“bar”。

监听器:

@Component

@KafkaListener(id = "multiGroup", topics = { "foos", "bars" })

public class MultiMethods {

    @KafkaHandler

    public void foo(Foo1 foo) {

        System.out.println("Received: " + foo);

    }

    @KafkaHandler

    public void bar(Bar bar) {

        System.out.println("Received: " + bar);

    }

    @KafkaHandler(isDefault = true)

    public void unknown(Object object) {

        System.out.println("Received unknown: " + object);

    }

}

 

生产者:

@RestController

public class Controller {

    @Autowired

    private KafkaTemplate<Object, Object> template;

    @PostMapping(path = "/send/foo/{what}")

    public void sendFoo(@PathVariable String what) {

        this.template.send(new GenericMessage<>(new Foo1(what),

                Collections.singletonMap(KafkaHeaders.TOPIC, "foos")));

    }

    @PostMapping(path = "/send/bar/{what}")

    public void sendBar(@PathVariable String what) {

        this.template.send(new GenericMessage<>(new Bar(what),

                Collections.singletonMap(KafkaHeaders.TOPIC, "bars")));

    }

    @PostMapping(path = "/send/unknown/{what}")

    public void sendUnknown(@PathVariable String what) {

        this.template.send(new GenericMessage<>(what,

                Collections.singletonMap(KafkaHeaders.TOPIC, "bars")));

    }

}

 

事务

通过在应用程序中设置transactional-id前缀来启用事务。yml文件:

spring:

    kafka:

      producer:

        value-serializer: org.springframework.kafka.support.serializer.JsonSerializer

        transaction-id-prefix: tx.

      consumer:

        properties:

          isolation.level: read_committed

 

当使用spring-kafka 1.3时。x或更高版本和支持事务的kafka-clients版本(0.11或更高版本),在@KafkaListener方法中执行的任何KafkaTemplate操作都将参与事务,而侦听器容器将在提交事务之前向事务发送偏移量。请注意,我们还为使用者设置了隔离级别,使其无法看到未提交的记录。下面的例子暂停监听器,这样我们可以看到效果:

@KafkaListener(id = "fooGroup2", topics = "topic2")

public void listen(List foos) throws IOException {

  logger.info("Received: " + foos);

  foos.forEach(f -> kafkaTemplate.send("topic3", f.getFoo().toUpperCase()));

  logger.info("Messages sent, hit enter to commit tx");

  System.in.read();

}

@KafkaListener(id = "fooGroup3", topics = "topic3")

public void listen(String in) {

  logger.info("Received: " + in);

}

 

本例中的生产者在一个事务中发送多条记录:

@PostMapping(path = "/send/foos/{what}")

public void sendFoo(@PathVariable String what) {

  this.template.executeInTransaction(kafkaTemplate -> {

    StringUtils.commaDelimitedListToSet(what).stream()

      .map(s -> new Foo1(s))

      .forEach(foo -> kafkaTemplate.send("topic2", foo));

    return null;

  });

}

curl -X POST http://localhost:8080/send/foos/a,b,c,d,e

Received: [Foo2 [foo=a], Foo2 [foo=b], Foo2 [foo=c], Foo2 [foo=d], Foo2 [foo=e]]

Messages sent, hit Enter to commit tx

Received: [A, B, C, D, E]

结论

在Apache Kafka中使用Spring可以消除很多样板代码。它还增加了诸如错误处理、重试和记录筛选等功能——而我们只是触及了表面。

 

原文:https://www.confluent.io/blog/spring-for-apache-kafka-deep-dive-part-1-error-handling-message-conversion-transaction-support

本文:https://pub.intelligentx.net/node/782

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
Spring for Apache Kafka Deep Dive – Part 1: Error Handling, Message Conversion and Transaction Support

【Kafka】 将ACID测试应用于Apache Kafka,Kafka是一个数据库吗?

Chinese, Simplified

Applying the ACID Test to Apache Kafka

前往旧金山的旅行,我的房子已经六年了,房价迫使向东移动,总是令人兴奋。海景,美味的印度美食和冲浪的回忆让我怀念孩子们的婚姻生活。最令人兴奋的是关于最新热门技术的嗡嗡声,紧迫感和夸张。

在这次旅行中,Confluent的Kafka峰会令人兴奋。正如我上个月在Eckerson.com上所写的那样,超低延迟,高度可扩展的分布式Apache Kafka数据流平台开创了实时数据集成,处理和分析的新纪元。借助Kafka,企业可以解决新的高级分析用例,并从更多数据中提取更多价值。他们正在实施Kafka和流媒体替代方案,例如Amazon Kinesis和Azure Event Hub,以实现数据湖流式传输,具有许多大数据端点的复杂消息队列,微服务数据共享以及机器学习的预处理。

所有好东西。但是Kafka取代数据架构支柱,比如数据库吗?

剑桥大学研究员马丁·克莱普曼在上周的会议上提出了他所谓的“略带挑衅性的问题”,“Kafka是一个数据库吗?”克莱普曼缩小了数据库的一个定义特征,即它支持ACID的能力 - 兼容数据集。

正如许多读者所知,ACID指的是四种数据库属性 - 原子性,一致性,隔离性和持久性 - 通常被认为对事务数据有效性至关重要。 ACID数据库通过错误,断电或其他组件故障来维护数据完整性。另一种方式考虑,有效的事务要求其所有相关的DB操作都符合ACID。 ACID已成为35年来数据库的黄金标准。

在一次深思熟虑的25分钟会议中,Kleppmann在逻辑上将ACID测试应用于Kafka。我建议观看视频。以下是他的想法摘要。

持久化

Kleppmann从这里开始,因为耐用性似乎是最简单的解决方案。即使系统崩溃,软件发生故障等,持久数据仍然可用并提交。通常,这意味着数据和一个或多个副本被写入非易失性存储器,例如磁盘。 Kafka经纪人可以通过将记录(通常是跨复制分区的多个副本)保存到基于磁盘的文件系统来满足此要求。与其他数据系统一样,这些记录也可以备份到远程位置,以便在发生灾难时提供额外的持久性。

原子性

原子数据库事务作为单个单元运行,可以是成功的,也可以是完全失败的。这是什么意思?事务永远不会被部分提交。如果所有写入都未完全完成,则必须回滚所有内容。 Kleppmann说,Kafka满足了这个属性,因为生产者以一种全有或全无的方式将每条记录写入一个不可变的日志。数据库,缓存和搜索索引都独立地从日志中消耗该记录,而不会相互干扰。作为另一个例子,可以原子地处理包括来自一个帐户的借方和贷方到另一个帐户的交易。这是通过使用流处理算法来实现的,该算法发出这两个相互关联的事件,信用卡和借记卡,用于在Kafka平台上进行协调处理。

隔离性

事务通常同时执行,例如,同时写入多个位置和从多个位置读取。这就产生了隔离的需要,或者确保并发执行的事务反映了正确的顺序。通过将事务逻辑构建到流处理器中,Kafka可以实现序列化,即最高级别的隔离,确保事务不会重叠或以其他方式影响彼此的记录序列。可序列化隔离有效地意味着事务可以表现得就像数据库是所有数据库一样,没有干扰活动。

一致性

Kafka的最终ACID测试是一致性,这意味着根据定义的约束和其他规则,事务是有效的。例如,规则可能指定用户名必须是唯一的。 Kafka再一次依靠流处理算法来清除这个障碍,例如检查任何事务请求的有效性。

Kafka的变形

因此,在流处理算法的帮助下,Kleppmann得出结论,Kafka确实可以符合ACID标准。这为Kafka管理的数据的完整性和下游使用的有效性提供了新的信心。然而,虽然Kafka可以无限期地保留数据,但很少有架构师或开发人员希望Kafka能够很快取代数据库。实际上,Kleppmann建议临时查询最好留给数据库和数据仓库领域,并且最终没有明确说明Kafka实际上是一个数据库。

Kleppmann的论文涉及将Kafka视为数据流平台的更大趋势。

Confluent首席执行官Jay Kreps建议Kafka将事件处理作为数据架构基础的合法位置。



事实上,企业本质上是一系列事件和对这些事件的反应。数据仓库基于事实表,事实是事件,与Kafka相比,这使得数据仓库成为“一个非常慢的事件流”。在这里,克雷普斯遵循硅谷悠久的传统,将新技术定位为既定秩序的破坏者。

这个论点是有道理的。作为符合ACID标准,可扩展,超低延迟的数据流平台,Kafka可以作为微服务,事件监控/分析和各种类型实时应用的中心企业推动者。

实际上,企业正在采用Kafka为用例提供数据流,例如流数据湖摄取,消息排队,机器学习预处理和微服务支持。某些数据集成产品会自动将生产数据库事务发布到Kafka记录流,以解决这些用例。 Kafka在这些组织的数据架构中发挥了关键作用。

从业人员的小提示

在可预见的未来,数据流媒体从业者 - 包括架构师,开发人员及其经理 - 不希望Kafka很快取代数据库或数据仓库。相反,Kafka将作为实时运河系统发挥关键作用,在当今日益异构的环境中,在平台之间和跨管道之间移动数据。您可以配置一个数据库生产者将主题流发送给几十个不同的消费者,从Spark驱动的数据湖到微服务平台,再到各种NoSQL存储库。在大多数情况下,这些消费者最适合管理分析。

所以Kafka是一个实时的数据运河系统,也是无与伦比的一个,但不是数据库。如果Kafka Summit的嗡嗡声有任何迹象,那么Kafka运河将成为许多组织在未来几年投资的一个令人信服的选择。

Kevin是Eckerson Group的贡献分析师,以及Attunity的产品营销高级总监。 要了解有关CDC在Kafka,数据湖和云环境中的作用的更多信息,请查看Kevin共同撰写的书,Streaming Change Data Capture:现代数据架构基础,O'Reilly 2018。

原文:https://www.eckerson.com/articles/applying-the-acid-test-to-apache-kafka

        http://pub.intelligentx.net

 

SEO Title
Applying the ACID Test to Apache Kafka

【Kafka】Kafka测试的快速实用的例子

Chinese, Simplified

1.简介



在本教程中,我们将快速探索一些基本的高级方法,用于测试使用Kafka构建的微服务应用程序。此外,我们将了解以传统/现有测试方式测试Kafka应用程序的声明方式的优势。

对于此处解释的所有内容,我们可以在本文的“结论”部分找到正在运行的代码示例。

为了使教程简明扼要,我们将仅演示以下方面。

  • 制造者测试
  • 消费者测试
  • 挂钩生产者和消费者测试
  • 生成RAW记录和JSON记录
  • 使用RAW记录和JSON记录
  • 传统的测试挑战。
  • 声明式测试的优点(IEEE论文)
  • 将REST API测试与Kafka测试相结合
  • 在Docker中旋转Kafka  - 单节点和多节点

在继续本教程之前,我强烈建议您阅读我们需要了解的Kafka测试最低要求。

有关Kafka流以及如何开发流应用程序的更多详细信息,请访问Confluent开发流媒体应用程序教程。

2.Kafka测试挑战



困难的部分是应用程序逻辑的某些部分或数据库过程不断地为主题生成记录,应用程序的另一部分继续使用记录并根据业务规则不断处理它们。

记录,分区,偏移,异常情况等不断变化,使得难以根据测试内容,何时测试以及如何测试进行思考。

 

 

3.测试解决方案方法



我们可以采用端到端的测试方法,该方法将验证生产,消费和DLQ记录以及应用程序处理逻辑。 这将使我们有信心将我们的应用程序发布到更高的环境。

我们可以通过在Docker化容器中创建Kafka或将我们的测试指向我们的Kubernetes-Kafka集群或任何其他微服务基础架构中的任何集成测试环境来实现。

在这里,我们选择一个功能,生成所需的记录并验证,使用预期的记录并验证,以及HTTP REST或SOAP API验证,这有助于保持我们的测试更清洁,更少噪音。

Image title

4.生产者测试



当我们为主题创建记录时,我们可以验证来自Kafka经纪人的确认。 此验证采用recordMetadata格式。

例如,将“recordMetaData”可视化为JSON将如下所示:

Response from the broker after a successful "produce".
 
{
    "recordMetadata": {
        "offset": 0,
        "timestamp": 1547760760264,
        "serializedKeySize": 13,
        "serializedValueSize": 34,
        "topicPartition": {
            "hash": 749715182,
            "partition": 0,   //<--- To which partition the record landed
            "topic": "demo-topic"
        }
    }
}

5.消费者测试



当我们从主题中阅读或使用时,我们可以验证从主题中获取的记录。 在这里,我们也可以验证/断言一些元数据,但大多数时候您可能只需要处理记录(而不是元数据)。

例如,有时我们只能验证记录的数量,即只有大小,而不是实际记录

例如,将获取的“记录”可视化为JSON将如下所示:

Records fetched after a successful "consume".
 
{
    "records": [
        {
            "topic": "demo-topic",
            "key": "1547792460796",
            "value": "Hello World 1"
        },
        {
            // ...
        }
    ]
}

包含元数据信息的完整记录看起来就像我们在下面得到的那样,如果我们有测试要求,我们也可以验证/断言。

The fetched records with the metadata from the broker.

 
{
    "records": [
        {
            "topic": "demo-topic",
            "partition": 0,
            "offset": 3,
            "key": "1547792460796", //<---- Record key
            "value": "Hello World", //<---- Record value 
        }
    ]
}

6.生产者和消费者测试



在相同的端到端测试中,我们可以对相同的记录执行以下两个步骤:

步骤1:



生成主题“demo-topic”并验证来自代理的receivedrecordMetadata。

例如,使用“key”生成记录:“1234”,“value”:“Hello World”



第2步:



从同一主题“demo-topic”中获取并验证记录。

断言响应中存在相同的记录,即“密钥”:“1234”,“值”:“Hello World”。

如果在我们开始消费之前将它们生成到同一主题,我们可能已经消耗了多条记录。



7.传统测试方式的挑战



第1点



首先,传统风格没有任何问题。但是,对于Kafka经纪人来说,它有一个陡峭的学习曲线来处理。

例如,当我们处理经纪人时,我们需要彻底了解Kafka客户端API,例如: Key-SerDe,Value-SerDe,Time-Outs,同时记录Poolings,commitSyncs,recordTypes等,以及API级别的更多内容。

对于功能测试,我们并不需要在API级别了解这些概念。

第2点



我们的测试代码与客户端API代码紧密结合。这意味着我们在维护测试套件以及测试框架的代码时引入了许多挑战。

8.声明式测试的优点



为了绘制一个明喻,“docker-compose”作品的有趣方式被称为“声明方式”。我们告诉Docker Compose框架(在YAML文件中)在某些端口上启动某些东西,将某些服务链接到其他服务等,框架为我们完成了一些事情。我们也可以用类似的声明方式驱动我们的测试,我们将在下一节中看到。

这有多整洁?试想一下,如果我们必须为相同的重复性任务编写代码/ shell脚本,那将是多么麻烦。

第1点



在声明式样式中,我们可以完全跳过处理代理的API级别,并且只关注测试场景。但是,我们仍然可以灵活地使用Kafka Client API并为其添加自己的风格。

第2点



这有助于发现更多缺陷,因为我们不会花时间编写代码,而是花更多的时间编写测试并覆盖更多的业务场景/用户旅程。

怎么样?

在这里,我们告诉测试使用Kafka-Topic,这是我们的“终点”或“url”

     即“url”:“kafka-topic:demo-topic”

接下来,我们告诉测试使用操作“生产”

     即“操作”:“生产”

接下来,我们需要将记录发送到请求有效负载:

"request": {
    "records": [
        {
            "key": "KEY-1234",
            "value": "Hello World"
        }
    ]
}



然后,我们告诉测试我们期望响应“status”返回为“Ok”和来自代理的一些记录元数据,即非空值。这是我们测试的“断言”部分。

"assertions": {
    "status" : "Ok",
    "recordMetadata" : "$NOT.NULL"
}



注意:我们甚至可以立即声明所有'recordMetadata,我们将在后面的部分中看到。现在,让我们保持简单并继续。

完成后,我们的完整测试将如下所示:

{
    "name": "produce_a_record",
    "url": "kafka-topic:demo-topic",
    "operation": "produce",
    "request": {
        "recordType" : "RAW",
        "records": [
            {
                "key": 101,
                "value": "Hello World"
            }
        ]
    },
    "assertions": {
        "status": "Ok",
        "recordMetadata": "$NOT.NULL"
    }
}



就是这样。我们完成了测试用例并准备运行。

现在,看看上面的测试,任何人都可以轻松找出正在测试的场景。

注意:

  • 我们使用客户端API消除了编码麻烦,以处理Kafka经纪人。
  • 我们通过遍历其对象路径,解析请求 - 有效负载,解析响应 - 有效负载等,消除了断言每个字段键/值的编码麻烦。

同时,我们使用框架的JSON比较功能立即断言结果,因此,使测试更容易和更清洁。

我们在测试时逃脱了两个主要的麻烦。

并且,字段的顺序在这里无关紧要。以下代码也是正确的(字段顺序交换)。

"assertions": {
        "recordMetadata": "$NOT.NULL"
        "status": "Ok",
}

9.使用JUnit运行单个测试



这非常容易。 我们只需要将JUnit @Test方法指向JSON文件即可。 真的是这样的。

@TargetEnv("kafka_servers/kafka_test_server.properties")
@RunWith(ZeroCodeUnitRunner.class)
public class KafkaProduceTest {

 
    @Test
    @JsonTestCase("kafka/produce/test_kafka_produce.json")
    public void testProduce() throws Exception {
         // No code is needed here. What? 
         // Where are the 'assertions' gone ?
    }

 
}

在上面的代码中:

'test_kafka_produce.json'是测试用例,其中包含我们之前讨论过的JSON步骤。

'kafka_test_server.properties'包含“Broker”详细信息和生产者/消费者配置。

'@RunWith(ZeroCodeUnitRunner.class)'是运行测试的JUnit自定义运行器。

此外,我们可以使用Suite runner或Package runner来运行整个测试套件。

请访问这些RAW和JSON示例和说明。

生成RAW消息

生成JSON消息

 

10.写我们的第一个制造者测试



我们在上面的部分中学习了如何生成记录并断言代理响应/确认。

但我们不必止步于此。 我们可以进一步要求我们的测试逐字段断言“recordMetadata”以验证它是否写入了正确“主题”的正确“分区”等等,如下所示。

"assertions": {
    "status": "Ok",
    "recordMetadata": {
        "offset": 0,   //<--- This is the record 'offset' in the partition
        "topicPartition": {
            "partition": 0,   //<--- This is the partition number
            "topic": "demo-topic"  //<--- This is the topic name
        }
    }
}

 

而已。在上面的“断言”块中,我们完成了预期值与实际值的比较。

注意:比较和断言立即完成。 “断言”块立即与从Kafka Broker收到的实际“status”和“recordMetadata”进行比较。字段的顺序在这里并不重要。如果字段值或结构不匹配,则测试仅失败。

11.编写我们的首次消费者测试



同样,要编写“消费者”测试,我们需要知道:

主题名称'demo-topic'是我们的“终点”,a.k.a。“url”:“url”:“kafka-topic:demo-topic”。

操作,即“消费”:“操作”:“消费”。

在使用主题消息时,我们需要发送如下信息:“request”:{}

上述“请求”意味着什么也不做,只是消费而不做“提交”。

或者我们可以在测试中提及在消费或消费记录后做某些事情。

"request": {
    "consumerLocalConfigs": {
        "commitSync": true,
        "maxNoOfRetryPollsOrTimeouts": 3
    }
}



“commitSync”:true:在这里,我们告诉测试在使用消息之后执行`commitSync`,这意味着,当你下次`poll`时它不再读取消息。它只会在有关主题的情况下阅读新消息。

“maxNoOfRetryPollsOrTimeouts”:3:在这里,我们告诉测试最多显示轮询三次,然后停止轮询。如果我们有更多记录,我们可以将其设置为更大的值。默认值为1。

“pollingTime”:500:在这里,我们告诉测试每次轮询时轮询500毫秒。如果跳过此标志,则默认值为100毫秒。

访问此页面以获取所有可配置密钥 - 来自源代码的ConsumerLocalConfigs。

访问HelloWorld Kafka示例仓库,在家中试用。

注意:这些配置值可以在属性文件中全局设置为所有测试,这意味着它将应用于我们的测试包中的所有测试。此外,我们可以覆盖套件内特定测试或测试的任何配置。因此,它为我们提供了覆盖所有测试场景的灵活性。

好吧,设置这些属性并不是什么大问题,我们必须这样做才能将它们外化。因此,维护起来越简单,对我们来说就越好!但我们必须了解其中的内容。

我们将在接下来的章节中讨论这个问题。

12.将REST API测试与Kafka测试相结合



大多数时候,在微服务架构中,我们使用RESTful服务,SOAP服务(可能是遗留的)和Kafka来构建应用程序。

因此,我们需要涵盖端到端测试场景中的所有API合同验证,包括Kafka。

但这并不是什么大问题,因为毕竟这里没有什么变化,除了我们只是将我们的“url”指向我们的REST或SOAP服务的HTTP端点,然后相应地操纵有效负载/断言块。真的是这样的。

请访问将Kafka测试与REST API测试结合使用,以获得完整的逐步方法。

如果我们有一个用例:

步骤1:Kafka调用 - 我们向“地址主题”发送ID为“id-lon-123”的“地址”记录,该记录最终被处理并写入“地址”数据库(例如Postgres或Hadoop)。然后我们断言经纪人确认。

步骤2:REST调用 - 使用“/ api / v1 / addresses / id-lon-123”查询(GET)“地址”REST API并断言响应。

相应的测试用例如下所示。

{
    "scenarioName": "Kafka and REST api validation example",
    "steps": [
        {
            "name": "produce_to_kafka",
            "url": "kafka-topic:people-address",
            "operation": "produce",
            "request": {
                "recordType" : "JSON",
                "records": [
                    {
                        "key": "id-lon-123",
                        "value": {
                            "id": "id-lon-123",
                            "postCode": "UK-BA9"
                        }
                    }
                ]
            },
            "assertions": {
                "status": "Ok",
                "recordMetadata" : "$NOT.NULL"
            }
        },
        {
            "name": "verify_updated_address",
            "url": "/api/v1/addresses/${$.produce_to_kafka.request.records[0].value.id}",
            "operation": "GET",
            "request": {
                "headers": {
                    "X-GOVT-API-KEY": "top-key-only-known-to-secu-cleared"
                }
            },
            "assertions": {
                "status": 200,
                "value": {
                    "id": "${$.produce_to_kafka.request.records[0].value.id}",
                    "postCode": "${$.produce_to_kafka.request.records[0].value.postcode}"
                }
            }
        }
    ]
}



易于阅读!容易写!

字段通过JSON路径重用值而不是硬编码。这是一个很好的节省时间!

13.生成RAW记录与JSON记录



在RAW的情况下,我们只是静静地说:

“recordType”:“RAW”,

然后,我们的测试用例如下所示:

{
    "name": "produce_a_record",
    "url": "kafka-topic:demo-topic",
    "operation": "produce",
    "request": {
        "recordType" : "RAW",
        "records": [
            {
                "key": 101,
                "value": "Hello World"
            }
        ]
    },
    "assertions": {
        "status": "Ok",
        "recordMetadata": "$NOT.NULL"
    }
}



2.对于JSON记录,我们以相同的方式提及它:

“recordType”:“JSON”

而且,我们的测试用例如下所示:

{
    "name": "produce_a_record",
    "url": "kafka-topic:demo-topic",
    "operation": "produce",
    "request": {
        "recordType" : "JSON",
        "records": [
            {
                "key": 101,
                "value": { 
                    "name" : "Jey"
                }
            }
        ]
    },
    "assertions": {
        "status": "Ok",
        "recordMetadata": "$NOT.NULL"
    }
}



注意:“value”部分这次有一个JSON记录。

14.Kafka在Docker容器中



理想情况下,本节应该在开头。但是,只是在不知道结果的情况下运行docker-compose文件有什么意义呢?我们可以在这里找到让每个人的生活变得轻松!

我们可以在下面找到docker-compose文件和分步说明。

Docker中的单节点Kafka

Docker中的多节点Kafka集群



15.结论



在本教程中,我们以声明的方式学习了Kafka测试的一些基本方面。此外,我们学习了如何轻松地测试涉及Kafka和REST的微服务。

使用这种方法,我们已经测试并验证了集群Kafka数据管道到Hadoop以及部署在Kubernetes Orchestrated pod中的Http REST / SOAP API。我们发现这种方法非常非常直接并且降低了复杂性,以便将工件维护和推广到更高的环境。

通过这种方法,我们能够完全清晰地涵盖了许多测试场景,并且在开发周期的早期阶段发现了更多缺陷,即使没有编写任何测试代码也是如此。这有助于我们以简单,干净的方式构建和维护我们的回归包。

下面给出了repo GitHub(在家尝试)的这些示例的完整源代码。

要运行任何测试,我们可以直接导航到'src / test / java'下相应的JUnit @Test。在点击任何Junit测试之前,我们需要使用kafka调出Docker。

使用“kafka-schema-registry.yml(参见Wiki)”可以运行所有测试。



如果您发现此页面对测试Kafka和HTTP API很有帮助,请在GitHub上留下“明星”!

快乐的测试!

原文:https://dzone.com/articles/a-quick-and-practical-example-of-kafka-testing

 

SEO Title
A Quick and Practical Example of Kafka Testing

【Kafka】用于测试kafka的工具

Chinese, Simplified

上下文



我意识到软件工具可以帮助我们在两个关键方面测试kafka:性能和稳健性。我从很少了解工具或它们的能力开始,虽然我知道十年前我曾经简要使用的jmeter。

我最初的目标是找到一种可以生成和消耗负载的方法。然后,这个负载将成为试验稳健性测试的背景,以了解系统和数据复制在恶劣条件下的工作和处理能力。通过inclement我的意思是不同程度的不利条件,如网络条件差,复杂的错误条件,在升级过程中“错误的”节点被取下而系统试图赶上积压的交易等等。我出现了我正在分别写下Beaufort环境条件的概念。

稳健性测试工具



我的研究很快就让我开始了凯尔金斯伯里的工作。他有一些优秀的视频https://www.youtube.com/watch?v=NsI51Mo6r3ohttps://www.youtube.com/watch?v=tpbNTEYE9NQ以及开源软件工具和各种文章https:// aphyr .com /关于测试各种技术的帖子https://jepsen.io/analyses包括Zookeeper和Kafka。 Jay Kreps提供了他对Kyle测试的看法http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafka-and-je…

到现在为止还挺好…

然而,当我开始研究使用jepsen测试新版Kafka的实际方面时,我至少遇到了一些重大挑战。我找不到原始脚本,我找到的那些脚本https://github.com/gator1/jepsen/tree/master/kafka是一个Clojure,一种不熟悉的语言,以及旧版本的Kafka(0.10。 2.0)。更重要的是它依赖于docker。虽然docker是一个非常强大和快速的工具,但客户端不愿意相信在docker环境中运行的测试(我们的环境至少需要20个实例来测试最小的配置)。

下一个要尝试的项目是https://github.com/mbsimonovic/jepsen-python,这是我和其他团队成员充分了解的语言。但是我们又遇到了它使用docker的拦截器。但是,如果我们可以获得支持docker swarm的依赖项之一,那么似乎有一些测试集群的潜力。那个项目是Blockade。我问是如何添加对docker swarm的支持;根据项目团队之一https://github.com/worstcase/blockade/issues/67,相当多。

到目前为止,我们需要继续前进并专注于测试Kafka的性能,可伸缩性和延迟,包括区域间数据复制,因此我们不得不暂停搜索自动化工具或框架来控制测试的稳健性方面。

性能测试工具



目前我将继续专注于工具而不是尝试定义性能测试与负载测试等,因为在区分这些术语和其他相关术语方面存在许多分歧。我们知道我们需要生成流量模式的方法,范围从简单的文本到与预期的生产流量配置文件非常相似的流量模式。

在项目期间,我们发现了至少5个生成负载的候选者:

  • kafkameter https://github.com/BrightTag/kafkameter
  • pepper-box:https://github.com/GSLabDev/pepper-box
  • kafka工具:https://github.com/apache/kafka
  • sangrenel:https://github.com/jamiealquiza/sangrenel
  • ducktape:https://github.com/confluentinc/ducktape

kafkameter和胡椒盒都集成了jmeter。其中胡椒盒更新,灵感来自kafkameter。 kafkameter显然需要大量的工作来满足我们的需求,所以我们开始尝试胡椒盒。我们很快分叉了项目,因此我们可以轻松地试验和添加功能,而不会干扰父项目,或者通过等待批准等延迟我们需要做的测试。

我已经将使用胡椒盒的细节移到了一个单独的博客文章http://blog.bettersoftwaretesting.com/2018/04/working-with-pepper-box-t…

 

我希望我们有更多的时间



可以做很多工作来改进工具和使用测试工具来测试Kafka的方法。我们需要在分配期间立即关注,以便快速提供反馈和结果。此外,测试特别是在早期阶段进入杂草,正确配置Kafka作为几种技术的新手非常耗时。我们确实希望在项目早期进行更多测试,并建立定期,可靠和值得信赖的测试结果。

有足够的空间来改进辣椒盒和分析工具。其中一些已经在各自的github存储库中被识别出来。

https://github.com/commercetest/pepper-box/issues

https://github.com/commercetest/pepperbox-analysis/issues

我接下来要探索的是什么

至少在我看来,最大的直接改进是专注于使用可信赖的统计分析工具(如R),以便我们可以自动化更多的测试处理和图形方面。

更多主题



以下是我希望在以后的文章中介绍的主题:

  • 管理和扩展测试,特别是如何运行许多测试并跟踪结果,同时保持环境的健康和清洁。
  • 设计生产者和消费者,以便我们可以使用消费者代码收集的结果来测量吞吐量和延迟。
  • 消息保真度与增加保真度的开销之间的权衡(高保真成本比运行时的低保真成本更高)。
  • 我们在建立值得信赖,可靠的测试环境以及简单地执行测试时遇到的许多不利因素

 

原文 :http://blog.bettersoftwaretesting.com/2018/04/tools-for-testing-kafka/

SEO Title
Tools for testing kafka

【事件枢纽】对AWS托管Apache Kafka的真实回顾:亚马逊MSK

Chinese, Simplified

AWS刚刚在Re-Invent 2018上发布了一个托管Apache Kafka服务。我跳过它来弄清楚产品。炒作值得吗?你应该用吗?其他供应商应该担心吗?这是我的评论!

TLDR:虽然我认为亚马逊MSK是一个公开的预览,并且它表现出良好的性能,但截至今天我发现它缺乏主要功能,包括适当的安全性,这使得MSK目前无法推荐。

我应该开心......但我不是



对我来说,使用Apache Kafka的人越多,我获得的业务就越多。当我在Udemy上在线教Apache Kafka时(https://kafka-tutorials.com/上的链接),从AWS获得想要学习Apache Kafka的整个用户群的前景令人兴奋!作为Apache Kafka顾问,花费时间部署数据管道比部署基础架构总是更有趣。

不幸的是,今天发布的AWS错过了这个标志。我认为它让人联想到AWS整体上的开源软件托管服务:它们早期发布,缺乏我认为应该是MVP的功能。在我看来,这将阻止未来的用户。

你得到什么



让我们开始谈论积极的方面。只需几次点击和15到30分钟的等待时间,您就可以获得完全复制的多AZ Kafka群集。它还配备了Zookeeper管理,数据存储由EBS卷支持。您为EC2实例支付双倍的价格,但这是托管服务的价格。 EBS成本与您自己使用EBS卷的成本相同。

 

注意:你只能拥有一个经纪人,这个经纪人是你要部署的AZ数量的倍数......这是件好事!

从那里,您将获得一个引导服务器URL和一个Zookeeper DNS名称,您可以点击并开始使用Kafka。 要获取URL,您必须使用CLI ...

$ aws kafka list-clusters
{
    "ClusterInfoList": [
        {
            "BrokerNodeGroupInfo": {
                "BrokerAZDistribution": "DEFAULT",
                "ClientSubnets": [
                    "subnet-c69251b1",
                    "subnet-07816c5e",
                    "subnet-fc512699"
                ],
                "InstanceType": "kafka.m5.large",
                "StorageInfo": {
                    "EbsStorageInfo": {
                        "VolumeSize": 1000
                    }
                }
            },
            "ClusterArn": "arn:aws:kafka:us-east-1:160803060715:cluster/test/9d2be72e-0d3b-4a2a-abbd-d8708ec4dca8-3",
            "ClusterName": "test",
            "CreationTime": "2018-11-30T08:21:36.824Z",
            "CurrentBrokerSoftwareInfo": {
                "KafkaVersion": "1.1.1"
            },
            "CurrentVersion": "K13V1IB3VIYZZH",
            "EncryptionInfo": {
                "EncryptionAtRest": {
                    "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:160803060715:key/c8a78efb-4daa-48ee-9fe8-26d40c274aaf"
                }
            },
            "EnhancedMonitoring": "DEFAULT",
            "NumberOfBrokerNodes": 3,
            "State": "ACTIVE",
            "ZookeeperConnectString": "172.31.31.89:2181,172.31.9.136:2181,172.31.73.166:2181"
        }
    ]
}
$ aws kafka get-bootstrap-brokers --cluster-arn arn:aws:kafka:us-east-1:160803060715:cluster/test/9d2be72e-0d3b-4a2a-abbd-d8708ec4dca8-3
{
    "BootstrapBrokerString": "172.31.72.155:9092,172.31.10.218:9092,172.31.18.106:9092"
}

 

就卡夫卡版而言,你得到...... 1.1.1。它真的很旧,我们现在有2.1和2.0.1可用......哦。您已经拥有的所有Kafka客户都应该工作,包括Kafka Connect,Kafka Streams,连接Kafka的监控解决方案等。

监控明智,我们可以在CloudWatch中查看指标,我想这是一个值得欢迎的补充。 “默认”监控级别是免费的,您必须为“每个经纪人”和“每个经纪人的每个主题”支付额外费用。这有点荒谬,因为每个经纪人都需要“每个主题”。只需将其纳入经纪人的成本,并让所有人免费......呃。指标列表虽然很好,但我很高兴他们揭露了一些最重要的指标:https://docs.aws.amazon.com/msk/latest/developerguide/monitoring.html#metrics-details

最后,因为您购买了EC2实例,所以您可以自由使用您喜欢的任何网络带宽。与其他管理的Kafka提供商相比,我认为这是AWS产品的一个重要区别。

我创建了一个集群,我用3个代理m5.large和一个机器m5a.large作为客户端进行了快速性能测试。性能方面,集群看起来很稳固,我能够以70MB /秒的速度获得峰值吞吐量。

 

$ kafka-topics.sh — zookeeper 172.31.31.89:2181,172.31.9.136:2181,172.31.73.166:2181 — create — topic test — replication-factor 3 — partitions 12
Created topic “test”.
$ kafka-producer-perf-test.sh — topic test — throughput 10000 — num-records 10000000000 — producer-props acks=all linger.ms=10 batch.size=65536 bootstrap.servers=172.31.72.155:9092,172.31.10.218:9092,172.31.18.106:9092 — record-size 1000
49912 records sent, 9968.4 records/sec (9.51 MB/sec), 17.4 ms avg latency, 236.0 max latency.
50076 records sent, 10011.2 records/sec (9.55 MB/sec), 10.6 ms avg latency, 35.0 max latency.
49994 records sent, 9994.8 records/sec (9.53 MB/sec), 10.0 ms avg latency, 29.0 max latency.
50074 records sent, 10014.8 records/sec (9.55 MB/sec), 9.9 ms avg latency, 33.0 max latency.
$ kafka-producer-perf-test.sh — topic test — throughput 50000 — num-records 10000000000 — producer-props acks=all linger.ms=10 batch.size=65536 bootstrap.servers=172.31.72.155:9092,172.31.10.218:9092,172.31.18.106:9092 — record-size 1000
249251 records sent, 49820.3 records/sec (47.51 MB/sec), 26.0 ms avg latency, 226.0 max latency.
250275 records sent, 50055.0 records/sec (47.74 MB/sec), 13.7 ms avg latency, 34.0 max latency.
250079 records sent, 49985.8 records/sec (47.67 MB/sec), 13.6 ms avg latency, 35.0 max latency.
$ kafka-producer-perf-test.sh — topic test — throughput 100000 — num-records 10000000000 — producer-props acks=all linger.ms=10 batch.size=65536 bootstrap.servers=172.31.72.155:9092,172.31.10.218:9092,172.31.18.106:9092 — record-size 1000
369975 records sent, 73906.3 records/sec (70.48 MB/sec), 343.9 ms avg latency, 1112.0 max latency.
351592 records sent, 70290.3 records/sec (67.03 MB/sec), 444.9 ms avg latency, 1402.0 max latency.
351236 records sent, 70233.2 records/sec (66.98 MB/sec), 453.6 ms avg latency, 1359.0 max latency.
354300 records sent, 70845.8 records/sec (67.56 MB/sec), 447.4 ms avg latency, 1365.0 max latency.

 

我们没有得到什么



首先,我想在房间里找到大象:安全。

 

对我来说,MSK并不安全

 



我认为任何人使用MSK的主要原因是为了安全。好的,我在自己的云中有一个Apache Kafka集群,所以我是唯一可以访问它的人,这是一个很大的优势。 AWS做了什么?好吧,它由KMS支持加密EBS卷,而且你没有SSH访问你的数据,这是好的。这为您的数据提供了“静态加密”功能。

但是,自从3岁以上的Kafka v0.9起,我们就拥有了适当的Kafka安全性。在每个Kafka版本中,它都在使用新的安全机制进行改进。今天我们在Kafka Security中有两个组件:

  • 飞行中的SSL加密:你没有得到MSK(现在)。 https://aws.amazon.com/msk/faqs/。这意味着您的网络周围的所有数据都完全未加密。 Route53和ACM的整合有望在以后出现......但是现在你已经暴露了。
  • 身份验证和授权:所以这是我最大的问题:您创建了一个MSK群集,并且您认为它是安全的,因为营销登录页面告诉您它是安全的。好吧,一点也不。它绝对使用NO安全机制,因此任何人都可以创建/读取/写入/删除任何主题的数据。哦,任何人都可以改变Zookeeper。我的意思是,每个受管理的Kafka提供商都提供安全保障。它有多种形式:SASL / GSSAPI,SASL / OAUTH,SASL / PLAIN,SASL / SCRAM和AWS没有实现任何这些。实际上,当您考虑AWS和安全性时,您认为是IAM。 SASL / IAM将成为杀手锏。 AWS IAM内部的身份验证和授权,梦想。嗯......不会很快发生的。

因此,当您获得所有奇特的网络和服务控制安全性时,您的实际Kafka群集将尽可能地打开。这意味着您在当前系统中如此难以处理的数据的任何安全控制在MSK中完全丢失。对我来说,这对我所有咨询客户来说都是一个破坏性的交易。

让我细微一点:这是MSK的预览,我确信在积压的某个地方,AWS确实有一张大卡可以实现并释放某种真正的安全性。但是,当您发布服务时,您只有一次机会给人留下印象,而且您发布的内容有点完整。 AWS在这里错过了标记,很长一段时间,我认为MSK是不安全的。即使有一天它变得“安全”,它也表明AWS缺乏支持安全第一卡夫卡的承诺,这反映了产品的思维方式:营销能力。

我们没有得到的其他东西



除了安全性,这里还有我想念的衣物清单:

  • 托管的结构模式注册表
  • 能够放入Kafka的jar(适用于度量报告者,特定类,Java代理)
  • 指向并单击镜像制造商/复制
  • 指向并单击备份到S3
  • 点击并点击Kinesis与Kafka的链接
  • 管理Kafka Connect
  • 控制Kafka配置(虽然你可以使用kafka-configs命令破解它...你欢迎AWS)
  • 扩展集群
  • 来自控制台的主题管理
  • 通过控制台管理几乎所有内容
  • 您的群集支持 - 对于我来说,这是一个很大的未知,因为AWS支持是否能够支持您的Kafka群集。根据我的经验,支持Kafka集群并不容易,这是其他管理的Kafka供应商可能真正擅长的。另一个区别

 

AWS和开源世界



AWS喜欢从开源世界中获取产品并将其作为服务付费。 Elastic Search和Envoy是两个例子,现在我们有Apache Kafka。问题在于,从历史上看,AWS并没有给予它带来大量现金的项目。这对于这些项目来说是个大问题,因为他们生活在社区支持之下。

请证明我错了AWS:

Embedded video

公平地说,AWS已经开始开源今年非常大的FireCracker,这可能预示着思维方式的转变......时间会证明。

结束思考



我认为管理卡夫卡空间的竞争越来越激烈。它充满了伟大的演员,如Confluent,Aiven,CloudKarafka,Instaclustr,Landoop,Heroku以及其他我可能缺少的演员。 AWS肯定会增加很多压力,但是现在亚马逊MSK非常小,我不推荐它。你最终还是会管理很多,这不是你首先注册的,是吗?

原文:https://medium.com/@stephane.maarek/an-honest-review-of-aws-managed-apache-kafka-amazon-msk-94b1ff9459d8

本文 :http://pub.intelligentx.net/node/367

讨论:请加入知识星球【首席架构师圈】

SEO Title
An Honest Review of AWS Managed Apache Kafka: Amazon MSK

【企业事件平台】自动化Kafka测试

Chinese, Simplified

概观



Apache Kafka正在被普遍利用,并且在世界上形成一些大规模和重要的系统,每天处理数万亿条消息。它是许多金融和科技行业公司的管道骨干。

在继续之前,我想提出一些期望。本文的重点不是解释Kafka及其架构的复杂性或用例,而是清楚地说明可用于执行Kafka测试的库之一以及我们的方法和经验。 Zerocode如何允许我们执行集成,单元​​和端到端(E2E)测试。本文适用于那些已经熟悉Kafka的人,其应用或至少具有很强的理论知识水平。要按照我们的设置,您需要克隆https://github.com/authorjapps/zerocode并安装一些监控工具(Confluent Control Center)。



用例



由于项目的机密性和我们对客户的承诺,我会用我们在测试Kafka时可能遇到的一般情况来打扮我们的用例。请随时通过评论或LinkedIn与您讨论您的具体情况。该项目有30多个微服务,向Kafka生成和使用消息,并对流程中的消息执行某些转换和验证。

我们的方法



我们决定使用Zerocode,因为它的步长链,简单和水平可扩展格式允许我们用简单的JSON格式编写带有效负载和响应断言的测试(利用JSON路径:https://github.com/json-path /JsonPath/blob/master/README.md#path-examples)

Confluent Center(本地)是我们选择的平台,可以获得对测试用例的可视性和监控。

为了模拟我们的测试场景之一(即消息可能来自微服务A然后被消费并需要从微服务B消费和验证)我们向topic_A发出消息并利用KSQL将这些消息写入topic_B并从topic_B和执行断言然后执行另一个KSQL查询以在topic_C上传递该有效负载并重复。 Zerocode的JSON声明式风格使我们能够有效地完成这项工作。

 

KTA-1

挑战



作为一个常识,我们知道卡夫卡的消息没有订购!

ZEROCODE的建议:

在我们与Zerocode社区的讨论中,可以使用以下选项来解决:

client.id in:/zerocode/kafka-testing/src/test/resources/kafka_servers/kafka_producer.properties

group.id in:/zerocode/kafka-testing/src/test/resources/kafka_servers/kafka_consumer.properties

注意:

在Kafka; client.id:允许您轻松地将代理上的请求与创建它的客户端实例相关联。查看更多示例和详细信息:https://docs.confluent.io/current/clients/producer.html

并且,group.id:property为同一个使用者组中的一组使用者定义唯一标识。您可以在此处了解更多信息:https://jaceklaskowski.gitbooks.io/apache-kafka/kafka-properties-client-id.html?q = group.id

例1:

Zerocode允许您配置例如client.id = zerocode-producer _ $ {RANDOM.NUMBER}以及其他各种占位符。保持其独特性有助于跟踪和测试目的。

通过上面定义的client.id,为每个执行的测试分配一个唯一的ID。

以下示例结果:

第一次运行 -  client.id = test_producer_1553209530873

第二次运行 -  client.id = test_producer_1553209530889

第3次运行 -  client.id = test_producer_1553209530893

此后缀数字ID是唯一的,因为它是当前时间戳的数字等效值。

例2:

Zerocode社区的另一个建议方法是将client.id定义为时间戳,因为它是测试和跟踪的理想选择

client.id = test_producer _ $ {LOCAL.DATE.TODAY:yyyy-MM-dd}

例如

第1天 -  client.id = test_producer_2018-03-18

第二天 -  client.id = test_producer_2018-03-19

第3天 -  client.id = test_producer_2018-03-20

有关其他占位符的信息,请参阅以下链接以定义client.id https://github.com/authorjapps/zerocode#localdate-and-localdatetime-for…,在适合您项目要求的README文件中进行说明。

根据Kafka的要求,group.id在kafka_consumer.properties中定义。

例如group.id = consumerGroup14等

将其定义为唯一可以帮助您实现端到端的测试。此外,这可能会重新运行整个测试套件/包,即使您的CI构建管道可重复。

这种独特性将允许消费者获取旧+新消息(如果它有帮助)。

更多示例和详细信息:https://docs.confluent.io/current/clients/consumer.html

 

我们的经验和学习



Zerocode允许我们使用带有Java runner(Junit)的JSON配置文件和可配置的Kafka服务器,生产者和消费者属性的Java runner实现这一目标。

我们使用KSQL将数据从一个主题移动到另一个主题,以模拟多微服务的参与,如上所述。

下面分享了一些测试截图:

1.开始使用实例

CI-2

2. KSQL QUERIES

查看我们用于在不同主题之间移动数据的模拟KSQL查询的快照。

CP-2

 

请仔细检查您的存储库中是否添加了以下依赖项:

<dependency>

  <groupId>org.jsmart</groupId>

  <artifactId>zerocode-tdd</artifactId>

  <version>1.3.5</version>

</dependency>

属性配置示例包括:

Producer属性:https://github.com/authorjapps/hello-kafka-stream-testing/blob/master/src/test/resources/kafka_servers/kafka_producer_unique.properties

Consumer属性:https://github.com/authorjapps/hello-kafka-stream-testing/blob/master/src/test/resources/kafka_servers/kafka_consumer_unique.properties



要运行的示例测试用例:



KafkaProduceUniqueClientIdTest.java:

https://github.com/authorjapps/hello-kafka-stream-testing/blob/master/s…

KafkaConsumeUniqueGroupIdTest.java:

https://github.com/authorjapps/hello-kafka-stream-testing/blob/master/s…

下面是我们在一个测试场景中使用的示例JSON配置:

 

 检测结果

testResult1-1

testpicture2

安全



在Zerocode提供的安全性方面如下:

  1. 对于Oauth2,请在DZone安全区查看一个非常简短且精确的博客:https://dzone.com/articles/oauth2-authentication-in-zerocode如果您需要更多信息,请联系社区或Zerocode。
  2. 对于企业代理配置,您可以按照此处的自述文件部分进行操作:https://github.com/authorjapps/zerocode#soap-method-invocation-where-corporate-proxy-enabled
  3. 这适用于任何Http API调用,例如REST,SOAP等
  4. 具有工作示例的SAML / JWT是:https://github.com/authorjapps/zerocode#using-any-properties-file-key-value-in-the-steps repo
  5. 如果令牌是动态的,那么在运行时将它们注入头部仍然很容易:https://github.com/santhoshTpixler在他的博客中解释过
  6. 如果您使用OpenAM或RedHat SSO或Simple Basic Auth。您可以参考自述文件https://github.com/authorjapps/zerocode#http-basic-authentication-step-…。您可以手动使用每个测试用例或将其嵌入到HttpClient中,这是一次性的(并且维护开销较少)
  7. 自定义HTTP客户端:无论如何,Zerocode的Http客户端支持Http和Https连接。但您可以覆盖并添加/删除安全功能以满足您的项目要求。

请参阅示例:https://github.com/authorjapps/zerocode-hello-world/blob/master/src/main/java/org/jsmart/zerocode/zerocodejavaexec/httpclient/CustomHttpClient.java#L46

test1

然后它非常简单直接使用如下 - 

只需注释您的测试类或套件类。

@UseHttpClient(CustomHttpClient.class)

以类似的方式,您可以注入所需的任何自定义标头。

https://github.com/authorjapps/zerocode-hello-world/blob/master/src/mai…

例如

testpicture11

特色与未来



在与Zerocode广泛贡献社区的讨论中,关于特征比较前端,Zerocode正在收集来自客户的反馈/数据以捕获对Zerocode的好处和偏好,例如

  • 从Postman(collections)到Zerocode
  • 从其他基于Step-Definition的BDD工具到Zerocode等。

我们和Zerocode很乐意听取您对此的反馈。

预热



分布式测试非常棘手,没有灵丹妙药,因其独特的角落案例而闻名。要解决这些问题,需要从流程设计到生产的大量设计思路和SDLC(软件开发生命周期)实践。本博客的目标是根据需要分享一些有关如何处理和扩展测试的见解,以及现有的经过深思熟虑和文档选项Zerocode旨在保持质量。

重要的是要清楚地概述Zerocode是特殊的:

  • 应用集成测试
  • 端到端测试
  • 系统集成测试
  • 负载/压力测试
  • API模拟制作(使用wiremock JSON DSL)

以声明的方式将开发人员/测试人员的麻烦减少到零。

我们选择合适的测试库或框架的结论是:

  • 便于使用
  • 减少语法开销
  • 易于处理和断言有效载荷
  • 易于扩展测试跑步者
  • 易于添加自定义安全功能
  • 便于手动测试人员了解测试流程

我们真诚地希望这能在一定程度上帮助社区,并帮助我们与来自Zerocode的同类精神弥合和填补空白。

尊敬的参考文献



有关如何测试Kafka或REST API生成和使用Kafka的更多详细信息,请参阅以下链接或通过以下评论与我们联系:https://github.com/authorjapps/zerocode

SEO Title
Automate Kafka Testing

【存储架构】使用Apache Pulsar分层存储省钱

Chinese, Simplified

随着公司开始考虑推出实时消息传递系统,查看总体硬件成本是很重要的。通过一些前瞻性的规划,公司可以节省高达85%的总体存储成本。

在我们开始进行成本比较之前,让我简要地说明apache kafka和apache pulsar是如何存储数据的,它们有什么不同,以及为什么这些不同很重要。

数据存储在Kafka

Figure 1: Simple Kafka storage diagram

在Kafka中,代理进程执行所有数据移动和存储。当生产者发送数据时,它被发送到代理进程。当使用者轮询数据时,将从代理检索数据。当代理进程接收数据时,它将数据存储在单独的本地目录中。

在Kafka集群中,有许多不同的代理进程正在运行。这些代理进程中的每一个都在物理上独立的计算机或容器上运行。

数据存储在Pulsar

有几种不同的方法可以建立一个Pulsar集群。这种级别的可扩展性是我们优化存储成本的方法。

简单Pulsar设置

 

Figure 2: Simple Pulsar storage diagram

在Pulsar中,代理进程执行所有数据移动。当生产者发送数据时,它被发送到代理进程。当消费者将数据推送到代理时,数据来自代理。当Broker进程接收数据时,它将数据存储在一个并置的bookeeper Bookie中。BookKeeper Bookie是BookKeeper中存储数据的进程的名称。

在Pulsar集群中,有许多不同的代理进程在运行。这些代理进程中的每一个都在物理上独立的计算机或容器上运行。

带Bookkeeper的Pulsar集群

Figure 3: Pulsar with separate BookKeeper cluster

正如您刚才看到的,数据不是直接由Pulsar代理存储的。相反,Pulsar代理使用ApacheBookKeeper来存储他们的数据。数据的发送/接收和存储的这种解耦允许您让BookKeeper在另一台物理上独立的计算机或容器上运行。

当代理保存消息时,它将简单地将数据发送到BookKeeper流程。这允许BookKeeper集群和Pulsar集群彼此独立缩放。您可以发送/接收大量短时间内存储的消息(许多Pulsar经纪人和很少的预订)。你可以收到很少的信息并长期存储(很少的Pulsar经纪人和许多预订)。

一个常见的问题是,如果在单独的机器上有经纪人和簿记会导致性能问题。代理保留最近消息的内存缓存。事实上,99.9%的消息将是缓存命中,因为大多数消费者只是接收最新消息。

卸载至S3

Figure 4: Pulsar with separate BookKeeper cluster that is offloading to S3

Pulsar的解耦存储体系结构在Pulsar中有一个新特性,称为分层存储,这一特性非常出色。这允许BookKeeper根据管理员配置的策略自动将数据从存储在簿记台上移动到存储在S3中。

注意:虽然我把S3作为赌注者的一个选择,但它并不是唯一受支持的技术。目前支持Google云存储,即将支持Azure Blob存储。您可以将S3看作是您所选择的支持云存储选项的缩写。

尽管数据存储在S3中,但经纪人仍然可以访问S3中的数据,因为赌注经纪人负责数据移动。S3的IO比本地存储的数据慢。

存储的关键区别

如你所见,Kafka和Pulsar在存储方面的主要区别在于耦合。在Kafka中,存储耦合到代理。在Pulsar中,存储与簿记分离。

Figure 5: Kafka Offload

你可能知道,Kafka确实有能力将数据放入S3。这可以通过设置Kafka Connect或编写自定义使用者手动完成。

 

Figure 6: Kafka access

这种对S3的卸载确实带来了一个重要的警告,如图6所示。现在,数据的所有后续处理或消耗都必须使用另一个支持S3的计算引擎来完成,否则数据必须重新流回到Kafka主题并进行处理。

Figure 7: Pulsar access

使用Pulsar,数据可以与计算引擎共享。这两方面都是最好的,因为代理仍然可以访问旧消息,而计算引擎也可以。

例如,Spark可以处理存储在S3中的旧消息,同时Pulsar用户可以请求这些消息。请注意,在其他计算引擎中读取Pulsar的数据需要一个能够理解Pulsar磁盘格式的自定义输入格式。在撰写本文时,Pulsar支持Spark和Presto的连接器。

计算成本

既然我们了解了Kafka如何存储数据以及Pulsar存储数据的各种方法,我们就可以开始计算成本了。为了让这个过程更简单更具体,我们将根据亚马逊网络服务的美国东部(俄亥俄州)地区2019年1月的定价来确定我们的数字。对于S3,每个GB月的成本为0.023美元;对于EBS Amazon EBS通用SSD,每个GB月的配置存储成本为0.10美元。

在这个场景中,假设我们每天存储500 GB的消息。我们需要将这些消息存储14天。大约有7000 GB的原始事件消息。在Kafka和Pulsar中,数据被保存了3次以实现冗余。这使我们的存储需求高达21000 GB。对于Kafka和Pulsar(没有S3),光是存储成本每年就要25200美元。

有了Pulsar和S3,我们不需要在BookKeeper那里存储14天。我们只需要在Pulsar中存储一天,在S3中存储另外13天(您消耗的大部分时间都是几分钟前的数据)。这意味着我们需要1500 GB的EBS(500 GBx3副本)和6500 GB的S3(请记住,S3不直接收取冗余费用)。EBS和S3每年的成本分别为1794美元和1800美元,总计3594美元。这显然不包括S3请求的成本,但这些成本每年应该在50-300美元之间。

这两者的价格相差85.7%,数据可用性没有损失。这显然是一个例子。为了帮助您估计成本差异,我创建了一个Pulsar存储节省电子表格。只要输入你的数据,它会给你的价格差异。

更多关于成本的信息

对于云用户来说,S3中数据的存档存储已经纳入预算。这可能使节省更高。

还有其他更便宜的S3层。它们的sla更低,但成本更低。你也许可以走得更低,像冰川Glacier这些S3层。冰川Glacier的价格从0.023美元一路下跌到0.004美元。

考虑到您的用例和集群需求,您可以通过选择正确数量的Pulsar代理和bookeeper Bookie节点来进一步优化成本。您的EC2成本通常比存储成本高得多。

通过了解Kafka和Pulsar的存储差异,您可以真正优化您的存储开销。这使您能够灵活地交付业务所需的内容,同时仍能降低IT开销。

完全披露:这篇文章得到了Streamlio的支持。Streamlio提供了一个由apache pulsar和其他开源技术支持的解决方案。

原文:https://www.splunk.com/en_us/blog/it/saving-money-with-apache-pulsar-ti…

本文:http://jiagoushi.pro/node/1508

讨论:请加入知识星球【首席架构师圈】或者微信【csa_cea_cto】或者QQ【2808908662】

 

SEO Title
Saving Money with Apache Pulsar Tiered Storage

【消息中间件】Redis vs Kafka vs RabbitMQ

Chinese, Simplified

对微服务使用异步通信时,通常使用消息代理。代理确保不同微服务之间的通信可靠且稳定,消息在系统内得到管理和监控,并且消息不会丢失。您可以从几个消息代理中进行选择,它们的规模和数据功能各不相同。这篇博文将比较三种最受欢迎​​的代理:RabbitMQ、Kafka 和 Redis。



微服务通信:同步和异步



微服务之间有两种常见的通信方式:同步和异步。在同步通信中,调用者在发送下一条消息之前等待响应,它作为 HTTP 之上的 REST 协议运行。相反,在异步通信中,消息是在不等待响应的情况下发送的。这适用于分布式系统,通常需要消息代理来管理消息。

您选择的通信类型应考虑不同的参数,例如您如何构建微服务、您拥有的基础设施、延迟、规模、依赖关系和通信目的。异步通信的建立可能更复杂,需要向堆栈中添加更多组件,但对微服务使用异步通信的优点大于缺点。



异步通信优势



首先,异步通信根据定义是非阻塞的。它还支持比同步操作更好的扩展。第三,在微服务崩溃的情况下,异步通信机制提供了各种恢复技术,并且通常更擅长处理与崩溃有关的错误。此外,当使用代理而不是 REST 协议时,接收通信的服务实际上不需要相互了解。甚至可以在旧服务运行很长时间后引入新服务,即更好的解耦服务。

最后,在选择异步操作时,您可以提高未来创建中央发现、监控、负载平衡甚至策略执行器的能力。这将为您的代码和系统构建提供灵活性、可扩展性和更多功能。



选择正确的消息代理



异步通信通常通过消息代理进行管理。还有其他方法,例如 aysncio,但它们更加稀缺和有限。

在选择代理来执行异步操作时,您应该考虑以下几点:

Broker Scale — 系统中每秒发送的消息数。

数据持久性——恢复消息的能力。

消费者能力——经纪人是否能够管理一对一和/或一对多的消费者。



一对一

one to one

一对多

one to many

我们检查了最新和最好的服务,以找出这三个类别中最强大的提供商。



比较不同的消息代理



RabbitMQ (AMQP)



规模:

根据配置和资源,这里的大概是每秒 50K msg。

持久性:

支持持久性和瞬态消息。

一对一与一对多消费者:

两者兼而有之。

RabbitMQ 于 2007 年发布,是最早创建的通用消息代理之一。它是一个开源软件,通过实现高级消息队列协议 (AMQP),通过点对点和发布-订阅方法传递消息。它旨在支持复杂的路由逻辑。

有一些托管服务允许您将其用作 SaaS,但它不是本地主要云提供商堆栈的一部分。 RabbitMQ 支持所有主要语言,包括 Python、Java、.NET、PHP、Ruby、JavaScript、Go、Swift 等。

在持久模式下会出现一些性能问题。



卡夫卡



规模:

每秒最多可以发送一百万条消息。

持久化:

是的。

一对一 vs 一对多消费者:

只有一对多(乍一看似乎很奇怪,对吧?!)。

Kafka 由 Linkedin 于 2011 年创建,用于处理高吞吐量、低延迟的处理。作为分布式流媒体平台,Kafka 复制了发布订阅服务。它提供数据持久性并存储记录流,使其能够交换质量消息。

Kafka 在 Azure、AWS 和 Confluent 上管理了 SaaS。他们都是Kafka项目的创造者和主要贡献者。 Kafka 支持所有主要语言,包括 Python、Java、C/C++、Clojure、.NET、PHP、Ruby、JavaScript、Go、Swift 等。



Redis



规模

每秒最多可以发送一百万条消息。

持久性

基本上,没有——它是一个内存中的数据存储。

一对一与一对多消费者:

两者兼而有之。

Redis 与其他消息代理略有不同。从本质上讲,Redis 是一种内存中数据存储,可用作高性能键值存储或消息代理。另一个区别是 Redis 没有持久性,而是将其内存转储到磁盘/数据库中。它也非常适合实时数据处理。

最初,Redis 不是一对一和一对多的。然而,自从 Redis 5.0 引入了 pub-sub,功能得到了提升,一对多成为了一个真正的选择。

每个用例的消息代理



我们介绍了 RabbitMQ、Kafka 和 Redis 的一些特性。这三者都是同类中的野兽,但正如所描述的,它们的运作方式大不相同。以下是我们针对不同用例使用的正确消息代理的建议。



短命消息:Redis



Redis 的内存数据库几乎非常适合具有不需要持久性的短期消息的用例。因为它提供极快的服务和内存中的功能,Redis 是短保留消息的完美候选者,在这种情况下,持久性不是那么重要,您可以容忍一些损失。随着 5.0 中 Redis 流的发布,它也是一对多用例的候选者,由于限制和旧的 pub-sub 功能,这是绝对需要的。



海量数据:Kafka



Kafka 是一个高吞吐量的分布式队列,专为长时间存储大量数据而构建。 Kafka 非常适合需要持久性的一对多用例。



复杂路由:RabbitMQ



RabbitMQ 是一个较旧但成熟的代理,具有许多支持复杂路由的特性和功能。当要求的速率不高(超过几万条消息/秒)时,它甚至会支持复杂的路由通信。



考虑您的软件堆栈



当然,最后要考虑的是您当前的软件堆栈。如果您正在寻找一个相对简单的集成过程,并且您不想在一个堆栈中维护不同的代理,您可能更倾向于使用您的堆栈已经支持的代理。

例如,如果您在 RabbitMQ 之上的系统中使用 Celery for Task Queue,您将有动力使用 RabbitMQ 或 Redis,而不是 Kafka,后者不受支持并且需要一些重写。

我们在 Otonomo 已经通过我们的平台演变和增长使用了上述所有内容,然后是一些!重要的是要记住,每种工具都有自己的优缺点,关键是要了解它们并为工作以及特定时刻、情况和要求选择合适的工具。

原文:https://blog.devgenius.io/redis-vs-kafka-vs-rabbitmq-e935ebbc7ec

本文:https://jiagoushi.pro/node/1639

 

SEO Title
Redis vs Kafka vs RabbitMQ

【首席架构师看Event Hub】Kafka深挖 -第2部分:Apache Kafka和Spring Cloud Stream

Chinese, Simplified

在这个博客系列的第1部分之后,Apache Kafka的Spring——第1部分:错误处理、消息转换和事务支持,在这里的第2部分中,我们将关注另一个增强开发者在Kafka上构建流应用程序时体验的项目:Spring Cloud Stream。

我们将在这篇文章中讨论以下内容:

  • Spring云流及其编程模型概述
  • Apache Kafka®集成在Spring云流
  • Spring Cloud Stream如何让Kafka开发人员更轻松地开发应用程序
  • 使用Kafka流和Spring云流进行流处理

让我们首先看看什么是Spring Cloud Stream,以及它如何与Apache Kafka一起工作。

什么是Spring Cloud Stream?

Spring Cloud Stream是一个框架,它允许应用程序开发人员编写消息驱动的微服务。这是通过使用Spring Boot提供的基础来实现的,同时还支持其他Spring组合项目(如Spring Integration、Spring Cloud函数和Project Reactor)公开的编程模型和范例。它支持使用描述输入和输出组件的类型安全编程模型编写应用程序。应用程序的常见示例包括源(生产者)、接收(消费者)和处理器(生产者和消费者)。

典型的Spring cloud stream 应用程序包括用于通信的输入和输出组件。这些输入和输出被映射到Kafka主题。Spring cloud stream应用程序可以接收来自Kafka主题的输入数据,它可以选择生成另一个Kafka主题的输出。这些与Kafka连接接收器和源不同。有关各种Spring Cloud流开箱即用应用程序的更多信息,请访问项目页面。

消息传递系统和Spring cloud stream之间的桥梁是通过绑定器抽象实现的。绑定器适用于多个消息传递系统,但最常用的绑定器之一适用于Apache Kafka。

Kafka绑定器扩展了Spring Boot、Apache Kafka的Spring和Spring集成的坚实基础。由于绑定器是一个抽象,所以其他消息传递系统也有可用的实现。

Spring Cloud Stream支持发布/订阅语义、消费者组和本机分区,并尽可能将这些职责委派给消息传递系统。对于Kafka绑定器,这些概念在内部映射并委托给Kafka,因为Kafka本身就支持它们。当消息传递系统本身不支持这些概念时,Spring Cloud Stream将它们作为核心特性提供。

以下是绑定器抽象如何与输入和输出工作的图示:

Spring Cloud Stream Application

使用Spring Cloud Stream创建Kafka应用程序

Spring Initializr是使用Spring Cloud Stream创建新应用程序的最佳场所。这篇博文介绍了如何在Spring启动应用程序中使用Apache Kafka,涵盖了从Spring Initializr创建应用程序所需的所有步骤。对于Spring Cloud Stream,惟一的区别是您需要“Cloud Stream”和“Kafka”作为组件。以下是你需要选择的一个例子:

Spring Initializr

Initializr包含开发流应用程序所需的所有依赖项。通过使用Initializr,您还可以选择构建工具(如Maven或Gradle)和目标JVM语言(如Java或Kotlin)。

该构建将生成一个能够作为独立应用程序(例如,从命令行)运行的uber JAR。

Apache Kafka的Spring cloud stream编程模型

Spring Cloud Stream提供了一个编程模型,支持与Apache Kafka的即时连接。应用程序需要在其类路径中包含Kafka绑定,并添加一个名为@EnableBinding的注释,该注释将Kafka主题绑定到它的输入或输出(或两者)。

Spring Cloud Stream提供了三个与@EnableBinding绑定的方便接口:Source(单个输出)、Sink(单个输入)和Processor(单个输入和输出)。它还可以扩展到具有多个输入和输出的自定义接口。

下面的代码片段展示了Spring Cloud Stream的基本编程模型:

@SpringBootApplication

@EnableBinding(Processor.class)

public class UppercaseProcessor {

  @StreamListener(Processor.INPUT)

  @SendTo(Processor.OUTPUT)

  public String process(String s) {

     return s.toUpperCase();

  }

}

在这个应用程序中,注意这个方法是用@StreamListener注释的,它是由Spring Cloud Stream提供的,用于接收来自Kafka主题的消息。同样的方法也使用SendTo进行注释,SendTo是将消息发送到输出目的地的方便注释。这是一个Spring云流处理器应用程序,它使用来自输入的消息并将消息生成到输出。

在前面的代码中没有提到Kafka主题。此时可能出现的一个自然问题是,“这个应用程序如何与Kafka通信?”答案是:入站和出站主题是通过使用Spring Boot支持的许多配置选项之一来配置的。在本例中,我们使用一个名为application的YAML配置文件。yml,它是默认搜索的。下面是输入和输出目的地的配置:

spring.cloud.stream.bindings:

  input:

    destination: topic1

  output:

    destination: topic2

 

Spring Cloud Stream将输入映射到topic1,将输出映射到topic2。这是一组非常少的配置,但是可以使用更多的选项来进一步定制应用程序。默认情况下,主题是用单个分区创建的,但是可以由应用程序覆盖。更多信息请参考这些文档。

最重要的是,开发人员可以简单地专注于编写核心业务逻辑,让Spring Cloud Stream和Spring Boot来处理基础设施问题(比如连接到Kafka、配置和调优应用程序等等)。

下面的例子展示了另一个简单的应用程序(消费者):

@SpringBootApplication

@EnableBinding(Sink.class)

public class LoggingConsumerApplication {

  @StreamListener(Sink.INPUT)

  public void handle(Person person) {

     System.out.println("Received: " + person);

  }

  public static class Person {

     private String name;

     public String getName() {

        return name;

     }

     public void setName(String name) {

        this.name = name;

     }

     public String toString() {

        return this.name;

     }

  }

}

 

注意,@EnableBinding提供了一个接收器,这表明这是一个消费者。与前一个应用程序的一个主要区别是,使用@StreamListener注释的方法将一个名为Person的POJO作为参数,而不是字符串。来自Kafka主题的消息是如何转换成这个POJO的?Spring Cloud Stream提供了自动的内容类型转换。默认情况下,它使用application/JSON作为内容类型,但也支持其他内容类型。您可以通过使用属性spring.cloud.stream.binding .input来提供内容类型。然后将其设置为适当的内容类型,如application/Avro。

适当的消息转换器由Spring Cloud Stream根据这个配置来选择。如果应用程序希望使用Kafka提供的本地序列化和反序列化,而不是使用Spring Cloud Stream提供的消息转换器,那么可以设置以下属性。

序列化:

spring.cloud.stream.bindings.output.useNativeEncoding=true

反序列化:

spring.cloud.stream.bindings.input.useNativeDecoding=true

Auto-provisioning of topic

Apache Kafka绑定器提供了一个在启动时配置主题的配置程序。如果在代理上启用了主题创建,Spring Cloud Stream应用程序可以在应用程序启动时创建和配置Kafka主题。

例如,可以向供应者提供分区和其他主题级配置。这些定制可以在绑定器级别进行,绑定器级别将应用于应用程序中使用的所有主题,也可以在单独的生产者和消费者级别进行。这非常方便,特别是在应用程序的开发和测试期间。有许多关于如何为多个分区配置主题的示例。

支持使用者组和分区

可以使用Spring Cloud Stream配置众所周知的属性,如用户组和分区。消费者组可以通过属性设置:

spring.cloud.stream.bindings.input.group =组名称

如前所述,在内部,这个组将被翻译成Kafka的消费者组。

在编写生产者应用程序时,Spring Cloud Stream提供了将数据发送到特定分区的选项。同样,在内部,框架将这些职责委托给Kafka。

对于使用者,如果禁用自动再平衡(这是一个需要覆盖的简单配置属性),则特定的应用程序实例可以限制为使用来自一组特定分区的消息。有关详细信息,请参阅这些配置选项。

绑定可视化和控制

通过使用Spring Boot的致动器机制,我们现在能够控制Spring cloud stream中的各个绑定。

在运行时,可以使用执行器端点来停止、暂停、恢复等,执行器端点是Spring Boot的机制,用于在将应用程序推向生产环境时监视和管理应用程序。该特性使用户能够对应用程序处理来自Kafka的数据的方式有更多的控制。如果应用程序因绑定而暂停,那么来自该特定主题的处理记录将暂停,直到恢复。

Spring Cloud Stream还集成了Micrometer,以启用更丰富的指标、发出混乱的速率并提供其他与监视相关的功能。这些系统可以与许多其他监测系统进一步集成。Kafka绑定器提供了扩展的度量功能,为主题的消费者滞后提供了额外的见解。

Spring Boot通过一个特殊的健康状况端点提供应用程序健康状况检查。Kafka绑定器提供了一个健康指示器的特殊实现,它考虑到代理的连接性,并检查所有的分区是否都是健康的。如果发现任何分区没有leader,或者代理无法连接,那么health check将报告相应的状态。

Kafka流在Spring cloud stream中的支持概述

在编写流处理应用程序时,Spring Cloud stream提供了另一个专门用于Kafka流的绑定器。与常规的Kafka绑定器一样,Kafka Streams绑定器也关注开发人员的生产力,因此开发人员可以专注于为KStream、KTable、GlobalKTable等编写业务逻辑,而不是编写基础结构代码。绑定器负责连接到Kafka,以及创建、配置和维护流和主题。例如,如果应用程序方法具有KStream签名,则绑定器将连接到目标主题,并在后台从该主题生成流。应用程序开发人员不必显式地这样做,因为绑定器已经为应用程序提供了绑定。

其他类型(如KTable和GlobalKTable)也是如此。底层的KafkaStreams对象由绑定器提供,用于依赖注入,因此,应用程序不直接维护它。更确切地说,它是由春天的云流为你做的。

要使用Spring Cloud Stream开始Kafka流,请转到Spring Initializr并选择如下图所示的选项,以生成一个应用程序,该应用程序带有使用Spring Cloud Stream编写Kafka流应用程序的依赖项:

Spring Initializr: Writing Kafka Streams applications using Spring Cloud Stream.

下面的例子展示了一个用Spring Cloud Stream编写的Kafka Streams应用程序:

@SpringBootApplication

public class KafkaStreamsTableJoin {

  @EnableBinding(StreamTableProcessor.class)

  public static class KStreamToTableJoinApplication {

     @StreamListener

     @SendTo("output")

     public KStream<String, Long> process(@Input("input1") KStream<String, Long> userClicksStream,

                                 @Input("input2") KTable<String, String> userRegionsTable) {

        return userClicksStream

              .leftJoin(userRegionsTable,

                    (clicks, region) -> new RegionWithClicks(region == null ? "UNKNOWN" : region, clicks),

                    Joined.with(Serdes.String(), Serdes.Long(), null))

              .map((user, regionWithClicks) -> new KeyValue<>(regionWithClicks.getRegion(), regionWithClicks.getClicks()))

              .groupByKey(Serialized.with(Serdes.String(), Serdes.Long()))

              .reduce((firstClicks, secondClicks) -> firstClicks + secondClicks)

              .toStream();

     }

  }

  interface StreamTableProcessor {

     @Input("input1")

     KStream inputStream();

     @Output("output")

     KStreamoutputStream();

     @Input("input2")

     KTable inputTable();

  }

}

在前面的代码中有几件事情需要注意。在@StreamListener方法中,没有用于设置Kafka流组件的代码。应用程序不需要构建流拓扑,以便将KStream或KTable与Kafka主题关联起来,启动和停止流,等等。所有这些机制都是由Kafka流的Spring Cloud Stream binder处理的。在调用该方法时,已经创建了一个KStream和一个KTable供应用程序使用。

应用程序创建一个名为StreamTableProcessor的自定义接口,该接口指定用于输入和输出绑定的Kafka流类型。此接口与@EnableBinding一起使用。此接口的使用方式与我们在前面的处理器和接收器接口示例中使用的方式相同。与常规的Kafka绑定器类似,Kafka上的目的地也是通过使用Spring云流属性指定的。您可以为前面的应用程序提供这些配置选项来创建必要的流和表:

spring.cloud.stream.bindings.input1.destination=userClicksTopic spring.cloud.stream.bindings.input2.destination=userRegionsTopic spring.cloud-stream.bindings.output.destination=userClickRegionsTopic

我们使用两个Kafka主题来创建传入流:一个用于将消息消费为KStream,另一个用于消费为KTable。框架根据自定义接口StreamTableProcessor中提供的绑定适当地使用所需的类型。然后,这些类型将与方法签名配对,以便在应用程序代码中使用。在出站时,出站的KStream被发送到输出Kafka主题。

Kafka流中可查询的状态存储支持

Kafka流为编写有状态应用程序提供了第一类原语。当使用Spring Cloud Stream和Kafka流构建有状态应用程序时,就有可能使用RESTful应用程序从RocksDB的持久状态存储中提取信息。下面是一个Spring REST应用程序的例子,它依赖于Kafka流中的状态存储:

@RestController

public class FooController {

  private final Log logger = LogFactory.getLog(getClass());

  @Autowired

  private InteractiveQueryService interactiveQueryService;

@RequestMapping("/song/id")

public SongBean song(@RequestParam(value="id") Long id) {

     final ReadOnlyKeyValueStore<Long, Song> songStore =

           interactiveQueryService.getQueryableStore(“STORE-NAME”,

 QueryableStoreTypes.<Long, Song>keyValueStore());

     final Song song = songStore.get(id);

     if (song == null) {

        throw new IllegalArgumentException("Song not found.");

     }

     return new SongBean(song.getArtist(), song.getAlbum(), song.getName());

  }

}

 

InteractiveQueryService是Apache Kafka Streams绑定器提供的一个API,应用程序可以使用它从状态存储中检索数据。应用程序可以使用此服务按名称查询状态存储,而不是直接通过底层流基础设施访问状态存储。当Kafka Streams应用程序的多个实例运行时,该服务还提供了用户友好的方式来访问服务器主机信息,这些实例之间有分区。

通常在这种情况下,应用程序必须通过直接访问Kafka Streams API来找到密钥所在的分区所在的主机。InteractiveQueryService提供了这些API方法的包装器。一旦应用程序获得了对状态存储的访问权,它就可以通过查询来形成进一步的见解。最终,可以通过上面所示的REST端点来提供这些见解。您可以在GitHub上找到一个使用Spring Cloud Stream编写的Kafka Streams应用程序的示例,在这个示例中,它使用本节中提到的特性来适应Kafka音乐示例。

Branching in Kafka Streams

通过使用SendTo注释,可以在Spring Cloud流中原生地使用Kafka流的分支特性。

@StreamListener("input")

@SendTo({“englishTopic”, “frenchTopic”, “spanishTopic”})

public KStream<?, WordCount>[] process(KStream<Object, String> input) {

  Predicate<Object, WordCount> isEnglish = (k, v) -> v.word.equals("english");

  Predicate<Object, WordCount> isFrench =  (k, v) -> v.word.equals("french");

  Predicate<Object, WordCount> isSpanish = (k, v) -> v.word.equals("spanish");

  return input

        .flatMapValues(value -> Arrays.asList(value.toLowerCase().split("\\W+")))

        .groupBy((key, value) -> value)

        .windowedBy(timeWindows)

        .count(Materialized.as("WordCounts-1"))

        .toStream()

        .map((key, value) -> new KeyValue<>(null, new WordCount(key.key(), value, new Date(key.window().start()), new Date(key.window().end()))))

        .branch(isEnglish, isFrench, isSpanish);

}

注意,SendTo注释有三个不同输出的绑定,方法本身返回一个KStream[]。Spring Cloud Stream在内部将分支发送到输出绑定到的Kafka主题。观察SendTo注释中指定的输出顺序。这些输出绑定将与输出的KStream[]按其在数组中的顺序配对。

数组的第一个索引中的第一个KStream可以映射到englishTopic,然后将下一个映射到frenchTopic,以此类推。这里的想法是,应用程序可以专注于功能方面的事情,并使用Spring Cloud Stream设置所有这些输出流,否则开发人员将不得不为每个流单独做这些工作。

Spring cloud stream中的错误处理

Spring Cloud Stream提供了错误处理机制来处理失败的消息。它们可以被发送到死信队列(DLQ),这是Spring Cloud Stream创建的一个特殊的Kafka主题。当失败的记录被发送到DLQ时,头信息被添加到记录中,其中包含关于失败的更多信息,如异常堆栈跟踪、消息等。

发送到DLQ是可选的,框架提供各种配置选项来定制它。

对于Spring Cloud Stream中的Kafka Streams应用程序,错误处理主要集中在反序列化错误上。Apache Kafka Streams绑定器提供了使用Kafka Streams提供的反序列化处理程序的能力。它还提供了在主流继续处理时将失败的记录发送到DLQ的能力。当应用程序需要返回来访问错误记录时,这是非常有用的。

模式演化和Confluent 模式注册

Spring Cloud Stream支持模式演化,它提供了与Confluent模式注册中心以及Spring Cloud Stream提供的本地模式注册中心服务器一起工作的功能。应用程序通过在应用程序级别上包含@EnableSchemaRegistryClient注释来启用模式注册表。Spring Cloud Stream提供了各种基于Avro的消息转换器,可以方便地与模式演化一起使用。在使用Confluent模式注册表时,Spring Cloud Stream提供了一个应用程序需要作为SchemaRegistryClient bean提供的特殊客户端实现(ConfluentSchemaRegistryClient)。

结论

Spring Cloud Stream通过自动处理其他同等重要的非功能需求(如供应、自动内容转换、错误处理、配置管理、用户组、分区、监视、健康检查等),使应用程序开发人员更容易关注业务逻辑,从而提高了使用Apache Kafka的生产率。

原文:https://www.confluent.io/blog/spring-for-apache-kafka-deep-dive-part-2-apache-kafka-spring-cloud-stream

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】或者关注【首席架构师智库】

 

SEO Title
Spring for Apache Kafka Deep Dive – Part 2: Apache Kafka and Spring Cloud Stream

【首席架构师看Event Hub】如何在您的Spring启动应用程序中使用Apache Kafka

Chinese, Simplified

在体系结构规划期间选择正确的消息传递系统始终是一个挑战,但这是需要确定的最重要的考虑因素之一。作为一名开发人员,我每天都要编写需要服务大量用户并实时处理大量数据的应用程序。

通常,我将Java与Spring框架(Spring Boot、Spring数据、Spring云、Spring缓存等)一起使用。Spring Boot是一个框架,它允许我比以前更快更轻松地完成开发过程。它已在我的组织中发挥了关键作用。随着用户数量的快速增长,我们意识到我们显然需要每秒处理1,000,000个事件。

当我们发现Apache Kafka®时,我们发现它满足了我们的需求,可以快速处理数百万条消息。这就是为什么我们决定尝试一下。从那一刻起,卡夫卡就成了我口袋里的重要工具。你会问,我为什么选择它?

Apache Kafka是:

  • 可伸缩的
  • 容错
  • 一个很棒的发布-订阅消息传递系统
  • 与大多数消息传递系统相比,具有更高的吞吐量
  • 高度耐用
  • 高度可靠
  • 高的性能

这就是为什么我决定在我的项目中使用它。根据我的经验,我在这里提供了一个循序渐进的指南,介绍如何在Spring启动应用程序中包含Apache Kafka,以便您也可以开始利用它的优点。

先决条件

  • 本文要求您拥有Confluent平台
  • 手动安装使用ZIP和TAR档案
  • 下载
    • 解压缩它
    • 按照逐步说明,您将在本地环境中启动和运行Kafka

我建议在您的开发中使用Confluent CLI来启动和运行Apache Kafka和流平台的其他组件。

你会从这本指南中得到什么

阅读完本指南后,您将拥有一个Spring Boot应用程序,其中包含一个Kafka生成器,用于向您的Kafka主题发布消息,以及一个Kafka使用者,用于读取这些消息。

好了,让我们开始吧!

表的内容

  1. 步骤1:生成项目
  2. 步骤2:发布/读取来自Kafka主题的消息
  3. 步骤3:通过应用程序配置Kafka。yml配置文件
  4. 步骤4:创建一个生产者
  5. 第五步:创造一个消费者
  6. 步骤6:创建一个REST控制器

步骤1:生成项目

首先,让我们使用Spring Initializr来生成我们的项目。我们的项目将有Spring MVC/web支持和Apache Kafka支持。

Generate a Spring Boot project with Spring Initializr

一旦你解压缩了这个项目,你将会有一个非常简单的结构。我将在本文的最后向您展示项目的外观,以便您能够轻松地遵循相同的结构。我将使用Intellij IDEA,但是你可以使用任何Java IDE。

步骤2:发布/读取来自Kafka主题的消息

现在,你可以看到它是什么样的。让我们继续讨论来自Kafka主题的发布/阅读消息。

首先创建一个简单的Java类,我们将使用它作为示例:package com.demo.models;

public class User {

    private String name;

    private int age;

    public User(String name, int age) {

        this.name = name;

        this.age = age;

    }

}

 

Spring Boot with Kafka – Intellij IDEA

步骤3:通过应用程序配置Kafka.yml配置文件

接下来,我们需要创建配置文件。我们需要以某种方式配置我们的Kafka生产者和消费者,使他们能够发布和从主题读取消息。我们可以使用任意一个应用程序,而不是创建一个Java类,并用@Configuration注释标记它。属性文件或application.yml。Spring Boot允许我们避免过去编写的所有样板代码,并为我们提供了更智能的配置应用程序的方法,如下所示:

server: port: 9000

spring:

   kafka:

     consumer:

        bootstrap-servers: localhost:9092

        group-id: group_id

        auto-offset-reset: earliest

        key-deserializer: org.apache.kafka.common.serialization.StringDeserializer

        value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

     producer:

        bootstrap-servers: localhost:9092

        key-serializer: org.apache.kafka.common.serialization.StringSerializer

        value-serializer: org.apache.kafka.common.serialization.StringSerializer

如果您想了解更多关于Spring引导自动配置的信息,可以阅读这篇简短而有用的文章。有关可用配置属性的完整列表,请参阅官方文档。

步骤4:创建一个生产者

创建生产者将把我们的消息写入主题。

@Service

public class Producer {

    private static final Logger logger = LoggerFactory.getLogger(Producer.class);

    private static final String TOPIC = "users";

    @Autowired

    private KafkaTemplate<String, String> kafkaTemplate;

    public void sendMessage(String message) {

        logger.info(String.format("#### -> Producing message -> %s", message));

        this.kafkaTemplate.send(TOPIC, message);

    }

}

我们只是自动连接KafkaTemplate,并将使用此实例发布消息到主题——这就是生产者!

第五步:创造一个消费者

Consumer是负责根据您自己的业务逻辑的需要读取消息并对其进行处理的服务。要设置它,请输入以下内容:

@Service

public class Consumer {

    private final Logger logger = LoggerFactory.getLogger(Producer.class);

    @KafkaListener(topics = "users", groupId = "group_id")

    public void consume(String message) throws IOException {

        logger.info(String.format("#### -> Consumed message -> %s", message));

    }

}

 

在这里,我们告诉我们的方法void consumption (String message)订阅用户的主题,并将每个消息发送到应用程序日志。在实际的应用程序中,可以按照业务需要的方式处理消息。

步骤6:创建一个REST控制器

如果我们已经有了一个消费者,那么我们就已经拥有了消费Kafka消息所需的一切。

为了完整地显示我们创建的所有内容是如何工作的,我们需要创建一个具有单个端点的控制器。消息将被发布到这个端点,然后由我们的生产者进行处理。

然后,我们的使用者将以登录到控制台的方式捕获和处理它。

@RestController

@RequestMapping(value = "/kafka")

public class KafkaController {

    private final Producer producer;

    @Autowired

    KafkaController(Producer producer) {

        this.producer = producer;

    }

    @PostMapping(value = "/publish")

    public void sendMessageToKafkaTopic(@RequestParam("message") String message) {

        this.producer.sendMessage(message);

    }

}

让我们用cURL把信息发送给Kafka:

curl -X POST -F 'message=test' http://localhost:9000/kafka/publish

Add Apache Kafka to your Spring Boot Project

基本上,这是它!在不到10个步骤中,您就了解了将Apache Kafka添加到Spring启动项目是多么容易。如果您遵循了这个指南,您现在就知道如何将Kafka集成到您的Spring Boot项目中,并且您已经准备好使用这个超级工具了!

对更感兴趣吗?

如果您想了解更多信息,可以下载Confluent平台,这是Apache Kafka的领先发行版。您还可以在GitHub上找到本文中的所有代码。

这是Igor Kosandyak的一篇客座文章,他是Oril的一名Java软件工程师,在各个开发领域都有丰富的经验。

原文:https://www.confluent.io/blog/apache-kafka-spring-boot-application

本文:https://pub.intelligentx.net/how-work-apache-kafka-your-spring-boot-application

讨论:请加入知识星球或者小红圈【首席架构师圈】

 

SEO Title
How to Work with Apache Kafka in Your Spring Boot Application

【首席架构师看事件流架构】 Kafka深挖第3部分:Apache Kafka和Spring Cloud data Flow

Chinese, Simplified

后第1部分和第2部分的弹簧为Apache卡夫卡深潜水的博客系列,在第3部分中我们将讨论另一个项目从春天团队:春云数据流,其重点是使开发人员能够轻松地开发、部署和协调事件流管道基于Apache卡夫卡®。作为前一篇博客系列文章的延续,本文解释了Spring Cloud数据流如何帮助您提高开发人员的工作效率并管理基于apache - kafka的事件流应用程序开发。

我们将在这篇文章中讨论以下内容:

  • Spring云数据流生态系统概述
  • 如何使用Spring云数据流来开发、部署和编排事件流管道和应用程序

Spring Cloud Data Flow生态系统

Spring Cloud Data Flow是一个用于设计、开发和持续交付数据管道的工具包。它支持从设计到生产部署的事件流应用程序开发的集中管理。在Spring Cloud数据流中,数据管道可以是事件流(实时长时间运行)或任务/批处理(短期)数据密集型应用程序的组合。与Spring Cloud数据流交互的方式多种多样:

  • 仪表板GUI
  • 命令行Shell
  • 流Java DSL(领域特定语言)
  • 通过curl的RESTful api,等等。

为了将事件流管道部署到Cloud Foundry (CF)和Kubernetes (K8s)等平台,Spring Cloud数据流将应用程序生命周期操作(部署、更新、回滚)委托给另一个名为Spring Cloud Skipper的服务器组件。虽然事件流管道部署由Spring Cloud Skipper处理,但将短时间(任务/批处理)数据管道部署到目标平台则由Spring Cloud数据流本身管理。

Spring Cloud数据流和Spring Cloud Skipper运行时都配置为通过OAuth 2.0和OpenID连接提供身份验证和授权。Spring Cloud Data Flow使用基于微米的集成来帮助监视事件流应用程序,并提供Grafana仪表板,您可以安装和定制它。

开发事件流应用程序

在Spring Cloud Data Flow中,事件流管道通常由Spring Cloud Stream应用程序组成,不过任何定制构建的应用程序都可以安装在管道中。开发人员可以直接使用或扩展任何开箱即用的实用程序事件流应用程序来覆盖常见的用例,或者使用Spring Cloud Stream编写自定义应用程序。

所有开箱即用的事件流应用程序是:

  • 可作为Apache Maven构件或Docker映像使用
  • 使用RabbitMQ或Apache Kafka Spring云流绑定器构建
  • 内置 PrometheusInfluxDB 监测系统

开箱即用的应用程序与Kafka Connect应用程序类似,不同之处是它们使用Spring Cloud Stream框架进行集成和调试。

为了构建一个事件流管道,Spring Cloud数据流提供了一组应用程序类型:

  • 源表示数据管道中的第一步,它是一个生产者,从数据库、文件系统、FTP服务器、物联网设备等外部系统中提取数据。
  • 处理器表示可以从上游生产者(源或处理器)消费的应用程序,对消费的数据执行业务操作,并将处理后的数据发出供下游消费
  • sink表示数据管道的最后一个阶段,它可以将消耗的数据写入外部系统,如Cassandra、PostgreSQL、Amazon S3等。

需要注意的是,在Spring Cloud数据流中,事件流数据管道默认是线性的。这意味着管道中的每个应用程序使用单个目的地(例如Kafka主题)与另一个应用程序通信,数据从生产者线性地流向消费者。然而,在某些用例中,流管道是非线性的,并且可以有多个输入和输出——这是Kafka Streams应用程序的典型设置。

在事件流数据管道中也可以有非spring - cloud - stream应用程序(Kafka连接应用程序、Polygot应用程序等)。

Spring Cloud Data Flow使用流应用程序DSL支持这些情况,并使用应用程序类型app突出显示这些应用程序。

Spring Cloud Data Flow Applications

上面的可视化演示了一个由两个应用程序组成的事件流管道,其中可以使用Spring Cloud数据流部署http和jdbc。这两个应用程序都是使用Spring Cloud Stream框架构建的,我们在第2部分中介绍了这个框架,它们都可以在公共Maven存储库/Docker Hub中使用。管道符号|(即。在流DSL中表示一个事件流平台,如Apache Kafka,配置为事件流应用程序的通信。

事件流平台或消息传递中间件提供了流的生产者http源和消费者jdbc接收器应用程序之间的松散耦合。这种松散耦合对于云本地部署模型至关重要,因为管道内的应用程序可以独立地发展、扩展或执行滚动升级,而不会影响上游生产者或下游消费者。当Spring Cloud数据流将Apache Kafka用于事件流应用程序时,它与流媒体平台上的各种产品产生了良好的共鸣。

Spring Cloud data flow环境设置

Spring Cloud Data Flow网站已经开始为本地、Kubernetes和Cloud Foundry提供指南。对于本博客,让我们使用Docker在本地运行这个设置。首先,您需要从Spring Cloud数据流GitHub repo下载Docker撰写文件。

这个Docker的撰写配置有:

  • Apache Kafka
  • Spring Cloud Data Flow server
  • Spring Cloud Skipper server
  • Prometheus (application metrics and monitoring)
  • Grafana (data visualization)
  • Automatic registration of out-of-the-box event streaming applications

由于以上所有组件将与事件流应用程序一起在我们的Docker环境中运行,请确保为您的Docker设置分配最少6GB的空间。

接下来,安装docker-compose并运行以下命令:

export DATAFLOW_VERSION=2.1.0.RELEASE

export SKIPPER_VERSION=2.0.2.RELEASE

docker-compose up

启动所有组件后,可以通过http://localhost:9393/dashboard访问Spring Cloud Data flow仪表板,并注册以下开箱即用的事件流应用程序:

Dashboard

 

创建事件流管道

让我们使用上一篇博客文章中介绍的相同的大写处理器和日志接收应用程序在Spring Cloud数据流中创建一个事件管道。使用这些应用程序,让我们创建一个简单的流http-events-transformer,如下所示:

http – transform – log

  • http源侦听http web端点以获取传入数据,并将它们发布到Kafka主题。
  • 转换处理器使用来自Kafka主题的事件,其中http源发布步骤1中的数据。然后应用转换逻辑—将传入的有效负载转换为大写,并将处理后的数据发布到另一个Kafka主题。
  • 日志接收器使用第2步中转换处理器的输出Kafka主题中的事件,它的职责只是在日志中显示结果。

Spring Cloud数据流中的流DSL语法应该是这样的:

http | transform | log

在Spring Cloud数据流仪表板的“Streams”页面中,您可以创建一个新的流,如下所示。

输入以下流DSL文本:

http-events-transformer=http --server.port=9000 | transform --expression=payload.toUpperCase() | log

 

Create a stream

当部署流时,有两种类型的属性可以被覆盖:

  • 应用程序级属性,这是Spring云流应用程序的配置属性
  • 部署目标平台的属性,如本地、Kubernetes或Cloud Foundry

在Spring Cloud Data Flow dashboard的“Streams”页面中,选择stream http-events-transformer,然后单击“deploy”。

在部署流时,请确保将平台选择为本地平台,以便在本地环境中部署流。将日志应用程序的本地平台部署者属性inheritLogging设置为true(如下面的屏幕截图所示),这样可以将日志应用程序的日志文件复制到Spring Cloud Skipper服务器日志中。将应用程序日志放在Skipper服务器日志下可以简化演示。

Deploy Stream Definition

在部署流时,将检索各个应用程序的http、转换和日志,并将每个应用程序的部署请求发送到目标平台(即、本地、Kubernetes和CloudFoundry)的数据流。同样,当应用程序引导时,以下Kafka主题由Spring Cloud Stream框架自动创建,这就是这些应用程序如何在运行时作为连贯的事件流管道组合在一起。

  • http-events-transformer.http(将http源的输出连接到转换处理器的输入的主题)
  • http-events-transformer.transform(将转换处理器的输出连接到日志接收器的输入的主题)

Kafka主题名是由Spring云数据流根据流和应用程序命名约定派生的。您可以通过使用适当的Spring云流绑定属性来覆盖这些名称。

要查看所有的运行时流应用程序,请参阅“运行时”页面:

Runtime applications

成功部署流之后,HTTP应用程序就可以接收http://localhost:9000上的数据了。让我们发布一些测试数据到http web端点:

curl -X POST http://localhost:9000 -d "spring" -H "Content-Type: text/plain"

因为我们继承了日志应用的日志,所以Spring Cloud Skipper server日志中日志应用的输出可以看作:

log-sink : SPRING

调试流应用程序

您可以在运行时调试部署的应用程序。调试配置根据目标平台而异。请参阅在本地、Kubernetes和Cloud Foundry目标环境中调试部署的应用程序的文档。要在本地开发环境中调试应用程序,只需传递本地部署器属性debugPort即可。

监控事件流应用程序

对于当前的设置,我们使用基于prometheus的应用程序监控,并在缺省情况下使用admin/admin设置一个Grafana仪表板。

通过从Spring Cloud数据流仪表板的“Streams”页面单击事件流http-events-transformer的“Grafana dashboard”图标,可以从Grafana仪表板监视事件流部署。

Grafana dashboard for monitoring the stream deployment

 

审计用户操作

Spring Cloud Data Flow server涉及的所有操作都经过审计,审计记录可以从Spring Cloud Data Flow dashboard中的“审计记录”页面访问。

Audit Records

您可以通过单击“Streams”页面中http-events-transformer的Destroy stream选项来删除流。

有关事件流应用程序开发和部署的详细信息,请参阅流开发人员指南。

使用Kafka Streams应用程序开发事件流管道

当您有一个使用Kafka Streams应用程序的事件流管道时,它们可以在Spring Cloud数据流事件流管道中用作处理器应用程序。在下面的示例中,您将看到如何将Kafka Streams应用程序注册为Spring Cloud数据流处理器应用程序,并随后在事件流管道中使用。

本博客中使用的所有样例应用程序都可以在GitHub上找到。应用程序kstreams-word-count是一个Kafka Streams应用程序,它使用Spring Cloud Stream框架来计算给定时间窗口内输入的单词。该应用程序被构建并发布到Spring Maven repo中。

在Spring Cloud Data Flow“Apps”页面的“Add Application(s)”中,您可以通过选择其应用程序类型作为处理器来注册kstreams-word-count应用程序,以及其Maven URI:

Register one or more applications

让我们使用开箱即用的http源应用程序,它在http web端点http://localhost:9001处侦听传入的数据,并将使用的数据发布到上面步骤中注册的kstream-wordcount处理器。Kafka Streams处理器根据时间窗口计算字数,然后将其输出传播到开箱即用的日志应用程序,该应用程序将字数计数Kafka Streams处理器的结果记录下来。

从Spring Cloud数据流仪表板中的“Streams”页面,使用stream DSL创建一个流:

kstream-wc-sample

通过将平台指定为本地,从“Streams”页面部署kstream-wc-sample流。另外,指定部署程序属性local。将日志应用程序的继承日志记录设置为true。

Deploy Stream Definition: kstream-wc-sample

当流成功部署后,所有http、kstream-word-count和log都作为分布式应用程序运行,通过事件流管道中配置的特定Kafka主题连接。

现在,你可以张贴一些字卡夫卡流的应用程序来处理:

curl -X POST http://localhost:9001 -H "Content-Type: text/plain" -d "Baby shark, doo doo doo doo doo doo"

你可以看到日志应用程序现在有以下:

skipper            | 2019-03-25 09:53:37.228  INFO 66 --- [container-0-C-1] log-sink                                 : {"word":"baby","count":1,"start":"2019-03-25T09:53:30.000+0000","end":"2019-03-25T09:54:00.000+0000"}

skipper            | 2019-03-25 09:53:37.229  INFO 66 --- [container-0-C-1] log-sink                                 : {"word":"shark","count":1,"start":"2019-03-25T09:53:30.000+0000","end":"2019-03-25T09:54:00.000+0000"}

skipper            | 2019-03-25 09:53:37.234  INFO 66 --- [container-0-C-1] log-sink                                 : {"word":"doo","count":6,"start":"2019-03-25T09:53:30.000+0000","end":"2019-03-25T09:54:00.000+0000"}

从上面的示例中,您可以看到Kafka Streams应用程序如何适应事件流数据管道。您还看到了如何在Spring Cloud数据流中管理这样的事件流管道。此时,您可以从kstream-wc-sample流页面取消部署并删除流。

结论

对于使用Apache Kafka的事件流应用程序开发人员和数据爱好者来说,本博客提供了Spring Cloud数据流如何帮助开发和部署具有所有基本特性的事件流应用程序,如易于开发和管理、监控和安全性。

Spring Cloud Data Flow提供了一系列工具和自动化来跨云原生平台部署和管理事件流管道。本系列的第4部分将提供通用的事件流拓扑和连续部署模式,作为Spring Cloud数据流中的事件流应用程序的原生集。请继续关注!

原文:https://www.confluent.io/blog/spring-for-apache-kafka-deep-dive-part-3-apache-kafka-and-spring-cloud-data-flow

本文:https://pub.intelligentx.net/node/785

讨论:请加入知识星球或者小红圈【首席架构师圈】

知识星球:

SEO Title
Spring for Apache Kafka Deep Dive – Part 3: Apache Kafka and Spring Cloud Data Flow

云计算平台

Chinese, Simplified
SEO Title
cloud computing platform

其他工具

Chinese, Simplified
SEO Title
other tools

【BPM技术】Zeebe是一个用于微服务编排的工作流引擎。

Chinese, Simplified

Zeebe是一个用于微服务编排的工作流引擎。

这篇文章将帮助你确切地了解什么是Zeebe以及它如何可能与你相关。我们将简要介绍Zeebe以及它所解决的问题,然后再进行更详细的介绍。

我们将在整个写作过程中使用“工作流”这个词,根据您的背景,在微服务的环境中您可能不熟悉这个词。当我们说“工作流”时,我们的意思是“允许我们实现某个目标的一系列任务”。“工作流”可以与“业务流程”或“流程”同义使用。

在Zeebe编排的工作流中,每个任务通常由不同的微服务执行。

介绍

公司的端到端工作流几乎总是跨越多个微服务。例如,在电子商务公司中,“客户订单”工作流可能涉及支付微服务、库存微服务、配送微服务等等。

A sample customer order workflow

这些跨微服务工作流是公司的核心收入驱动因素,但它们很少被建模和监控;通常,通过不同微服务的事件流仅在代码中隐含地表示。

如果是这样,我们如何确保工作流的可见性并提供状态和错误监视?我们如何保证整个流始终是完整的,即使单个微服务失败?或者我们如何至少认识到一个流程被卡住了所以我们可以进去并修复它?

Zeebe是一个免费的、源代码可用的微服务编制工作流引擎,它提供:

  • 对公司端到端的工作流状态的可见性,包括正在运行的工作流的数量、平均工作流持续时间、工作流中的当前错误,等等。
  • 根据工作流的当前状态编制工作流;Zeebe将“命令”作为事件发布,可以由一个或多个微服务使用,确保工作流按照其定义进行。
  • 监视超时或其他流程错误,以及配置错误处理路径的能力,例如有状态重试或向能够手动解决问题的团队升级,确保工作流始终按计划完成。

Zeebe被设计用来解决非常大规模的微服务编排问题,为了实现这一点,它提供:

  • 横向可伸缩性,不依赖于外部数据库;相反,Zeebe直接将数据写入部署它的服务器上的文件系统,并且可以轻松地跨计算机集群分发处理,从而提供高吞吐量。
  • 通过易于配置的复制机制实现容错,确保Zeebe可以从机器或软件故障中恢复,而不会造成数据丢失和最小的停机时间。
  • 一种消息驱动的体系结构,其中所有与工作流相关的事件都被写入仅用于追加的日志。这些事件可以导出到外部系统进行长期存储,以提供一个完整的工作流审计日志。
  • 发布-订阅交互模型,它允许连接到Zeebe的微服务在提供处理反压力机制的同时保持高度的控制。
  • 在iso标准BPMN 2.0中建模的可视化工作流,使得技术和非技术涉众可以用一种公共语言协作进行工作流设计。
  • 与语言无关的客户机模型,使得用组织用来构建微服务的几乎任何编程语言构建Zeebe客户机成为可能。

您可以在文档中了解有关这些技术概念的更多信息。

如果您只需要看这些,并且您认为Zeebe可能适合您,我们鼓励您尝试一下。现在就可以下载了。入门教程是不需要编写任何代码就可以动手操作的好方法。

如果你有问题,请联系Zeebe社区。你可以在Zeebe论坛上发布一个问题,或者在我们的Slack频道与Zeebe开发者合作。我们希望收到你的来信。

Zeebe现在可以用于生产。您可以在这里看到路线图。

如果你想了解更多关于Zeebe的信息,你可以继续阅读。在这篇文章的其余部分,我们将更详细地讨论三个主题:

  • Zeebe解决的问题和它的重要性
  • Zeebe如何解决这个问题
  • 为什么Zeebe很适合解决这个问题

Zeebe解决的问题和它的重要性

微服务体系结构近年来变得越来越流行,这是有原因的。专注的、跨功能的团队在使用他们选择的技术堆栈时可以快速、独立地交付价值。

但是使微服务体系结构如此吸引人的原则——松耦合、独立的部署周期——也带来了重大的挑战。

微服务体系结构的核心原则是每个微服务只负责一种业务功能。我们将再次引用引言中的电子商务示例,其中一个微服务负责支付处理,另一个负责库存,另一个负责运输,等等:

A sample customer order workflow

每个微服务的存在都是为了促进更广泛的工作流程:尽可能快速有效地为购物者提供他们想要的服务。而只有在端到端工作流成功的情况下,公司才会成功,因此确保工作流的质量至关重要。

在微服务体系结构中,每个微服务只负责严格限定范围的业务功能,谁负责端到端工作流?

默认情况下,没有人。实际上,端到端工作流甚至可能没有在公司内部正式文档化,从微服务到微服务的事件流仅在代码中隐式地表示。

许多微服务体系结构依赖于纯编舞(choreography)模式进行通信,其中微服务通过在没有中央控制器(也称为发布-订阅或发布-订阅模型)的情况下向消息传递平台发布事件和使用事件进行协作。编舞(choreography)确实为微服务的开发人员提供了一定程度的灵活性。

然而,在其典型的实现中,编舞(choreography)并不提供:

  • 对业务当前状态的可见性:有多少端到端工作流实例正在进行中,它们的状态是什么?在过去24小时内,有多少工作流实例没有成功完成?为什么这些工作流实例没有成功完成?完成一个工作流实例或工作流中的一个特定步骤的平均时间是多少?
  • 故障处理以确保即使在错误发生时工作流也能完成:如果作为工作流一部分的服务失败,谁负责处理该故障?工作流的重试逻辑是什么?如果需要人为干预,我们有什么规则来及时解决问题升级?

注意:当我们说“工作流实例”时,我们指的是“工作流的一次出现”。在电子商务示例中,单个工作流实例将是单个客户订单。

因此,微服务体系结构面临产生好的软件(在微服务级别)但产生坏的业务结果的风险。毕竟,工作流的成功最终决定了业务的成败。

开发团队如何在确保健壮的端到端工作流的同时获得微服务体系结构的好处?

这就是Zeebe的作用。

Zeebe如何解决这个问题

Zeebe是一个工作流引擎。如果你是工作流引擎的新手,这里有一个维基百科提供的通用定义:

工作流引擎是管理业务流程的系统。它监视工作流中活动的状态,并根据定义的流程确定要转换到哪个新活动。

标签“工作流引擎”与缓慢、低吞吐量的用例(如人工任务管理)有遗留关联。

另一方面,Zeebe提供高吞吐量、低延迟和水平可伸缩性(provides high throughput, low latency, and horizontal scalability. )。为了解释原因,让我们介绍一些Zeebe的关键架构概念。

首先,Zeebe不需要中央数据库组件,而是利用了事件源,这意味着对工作流状态的所有更改都作为事件捕获,并存储在仅用于追加的日志中。在Zeebe中,这个日志被称为“主题”。主题被直接写入运行Zeebe的服务器上的文件系统,工作流的当前状态可以从存储在主题中的事件中派生出来。

为了实现可伸缩性,主题可以很容易地分布在集群(分区)中的多个节点上,分区通常存储在多个节点上(复制),以实现容错。

Zeebe使用客户机/服务器模型。服务器(代理)是一个远程引擎,作为它自己的程序在Java虚拟机上运行。代理负责存储与工作流相关的主题,在适当的时候将工作项分发给客户端,并通过发布-sub将工作流事件流公开给Zeebe客户端。Zeebe客户机可以嵌入到应用程序中以连接到代理。

如果您使用过Apache Kafka、Apache Pulsar或类似的消息传递系统,那么您可能对这种架构很熟悉。如果您想了解更多关于Zeebe的核心概念,请查看文档。

现在让我们讨论一下Zeebe如何在更实际的术语中解决端到端工作流问题。Zeebe使用户能够:

  • 显式地定义和建模跨越多个微服务的工作流
  • 获得工作流如何执行的详细可见性,并了解哪里存在问题
  • 编排完成已定义工作流的微服务,以确保所有工作流实例都按照计划完成——即使在过程中出现问题

在下面的部分中,我们将讨论如何在一般意义上使用Zeebe,而不使用代码示例。在未来,我们可能会分享“蓝图”来演示如何准确地构建这些解决方案,如果社区认为它有用的话。

用Zeebe解决工作流问题,第1步:感知工作流的事件监控

工作流感知事件监视是Zeebe对我们上面定义的可见性问题的回答。

回顾一下:

  • 您的业务依赖于一个或多个长时间运行的工作流的成功完成
  • 这些工作流是由独立开发和独立部署的微服务执行的,这些微服务通过发布-订阅进行通信,没有中央控制机制
  • 尽管您可以洞察到给定微服务的性能,但您对工作流的端到端运行状况以及业务的当前状态几乎没有可见性

Zeebe可以与已经在事件驱动架构中使用的组件一起工作,而不需要替换或删除任何现有系统来提供工作流可见性。

下面是一个简单的图表,展示了Zeebe如何用于跨微服务的工作流的可见性:

Zeebe for microservices visibility

在本例中,Zeebe订阅发布到您的消息传递平台的事件,并将它们与预定义的工作流相关联,工作流已在BPMN 2.0中可视化建模并部署到Zeebe代理中(要了解有关Zeebe工作流的更多信息,请参阅文档)。

Zeebe处理的与工作流相关的事件可用于为仪表板提供动力,构建揭示工作流中问题区域的热图,以及在工作流实例出现问题并需要关注时构建警报工具。

Workflow heat map for debugging and analysis

在此实现中,Zeebe超出了监视单个微服务运行状况的范围,并提供了以下可见性:

  • 业务的当前状态:当前有多少跨微服务工作流正在运行,它们的状态是什么?
  • 是否有正在运行的进程由于错误或其他问题而“卡住”?
  • 我们的平均端到端流程持续时间是多长?我们在流程的哪些地方遇到了问题?

在本例中,Zeebe纯粹作为“侦听器”操作,不直接与参与工作流的微服务交互。让我们讨论一下如何扩展这个“可见性”解决方案,以利用Zeebe的编排功能。

用Zeebe解决工作流问题,步骤2:微服务编制

Microservices编排是Zeebe对我们在本文前面讨论的失败处理和重试问题的回答。

在微服务社区中,微服务编排有时被认为与核心微服务原则(如松散耦合和独立可部署性)不一致。但事实并非如此!微服务编排可以按照符合这些原则的方式实现,Zeebe也相应地设计了。

下面是一个简单的图表,展示了Zeebe如何用于微服务编排:

Zeebe for microservices orchestration

该体系结构与我们上面描述的“Zeebe for visibility”体系结构非常相似。一个显著的区别是,在我们的图中,我们删除了消息传递平台层,而Zeebe直接与参与工作流的微服务通信。

仍然可以在不删除现有消息传递平台的情况下使用Zeebe进行微服务编排——除了订阅与工作流相关的事件(如“可见性”解决方案中所示)之外,Zeebe还可以简单地将事件发布到消息传递平台。

但是Zeebe也可以在没有消息传递平台的情况下使用,这里我们想强调一下这种方法。

您可以将Zeebe的工作流编制方法视为状态机。当工作流实例进展到某个任务时,Zeebe发送一条消息通知负责的worker服务,然后等待该worker完成任务。

任务完成后,worker服务通知Zeebe,流继续执行下一个步骤。如果工作人员未能完成任务,工作流将保持在当前步骤,可能会重新尝试该任务,直到最终成功,或者如果需要人工干预,将其升级到另一个团队。

Zeebe将任务通知消息的创建与工作的实际执行分离开来,这意味着Zeebe可以以最大的可能速率发送任务通知消息,而不管是否有工作人员服务可用来承担工作。

Zeebe将任务通知排队,直到它能够将它们推送给工作人员。如果当前没有工作人员服务可用,工作消息将保持排队状态。如果工人服务订阅了,Zeebe的背压协议确保工人可以控制他们接收任务的速度。

这种微服务编排方法仍然提供了工作流和工作流实例的完整可见性,同时也确保工作流按照其定义完成,即使在过程中出现了故障。

为什么Zeebe很适合解决这些问题?

Zeebe 支持横向扩展

扩展以处理高吞吐量工作负载的能力对于Zeebe在微服务编排中的角色至关重要。为了处理大量的工作流实例,可能需要跨计算机集群分发Zeebe,以满足吞吐量需求。

Zeebe使用分区来提供水平可伸缩性,并且基于我们的内部基准测试,分区提供了一种有效的方法来扩展到每秒启动数千个工作流实例,即使在一个相对较小的(5个节点)集群上也是如此。

Zeebe具有容错能力和高可用性

Zeebe允许用户在创建主题时配置复制因子。复制因子决定在其他代理上存储一个分区的多少个“热备用”副本。如果一个代理宕机,另一个代理可以替换它,不会造成数据丢失。由于数据分布在集群中的多个代理中,Zeebe提供了容错和高可用性,而不需要外部数据库,直接将数据存储在部署数据的服务器的文件系统上。Zeebe也不需要外部集群协调器(如ZooKeeper)。Zeebe是完全自给自足的。

Zeebe允许可视化地定义工作流

ISO-standard BPMN 2.0是在Zeebe中定义工作流的默认建模语言。工作流是在技术和非技术涉众的充分参与下可视化地定义的。虽然Zeebe对BPMN符号的覆盖不如Camunda BPM等更成熟的BPM平台那么全面,但Zeebe的路线图包括定期添加对新符号的支持。

Zeebe是语言不可知论者

目前,Zeebe提供了两个开箱即用的Java客户机和Go客户机。Zeebe客户机基于gRPC,这意味着可以用组织通常用于构建微服务的许多编程语言轻松生成Zeebe客户机。这里提供了grpc支持的编程语言列表。

Zeebe是完全消息驱动的

Zeebe代理和客户端完全通过发布-订阅进行通信,这使得遵循松耦合原则并支持Zeebe和参与工作流的微服务之间的异步通信成为可能。Zeebe的订阅协议包括一个backpressure机制,以确保客户机不会因来自Zeebe的工作而超载。

Zeebe可以方便地存储用于审计的事件的完整历史

Zeebe导出器使工作流事件数据流化到存储系统变得很容易,因此这些数据可以无限期地使用。这对于报告和可见性很重要,而且根据您的行业,出于监管原因,这可能也是必要的。

Zeebe听起来不错,但我有一个在microservices编配之外的用例。我能用Zeebe吗?

是的,当然!我们经常在微服务编制用例的上下文中讨论Zeebe,因为Zeebe能够很好地解决这个问题,但是Zeebe可以应用于微服务编制之外的用例。

Zeebe是一个工作流引擎,可以处理广泛的高吞吐量用例。以下是Zeebe的一些一般特点:

  • Zeebe在设计时考虑了大规模工作流(每秒最多可以启动数万个新的工作流实例)。Zeebe不依赖于外部数据库,而是将数据以不可变日志的形式直接存储在部署Zeebe的服务器上;这个体系结构对于Zeebe处理高吞吐量和水平伸缩的能力非常关键。
  • 目前,Zeebe代理和外部服务之间的所有通信都由Zeebe的客户端处理。Zeebe的客户机协议与编程语言无关,这意味着可以用许多常用编程语言轻松生成客户机。
  • Zeebe目前涵盖的BPMN符号比Camunda BPM等更成熟的工作流引擎还少。然而,Zeebe定期添加对新符号的支持,并且最终,Zeebe将提供对工作流自动化有意义的BPMN符号的完整覆盖。

我如何开始用Zeebe?

首先,感谢您的阅读!我们希望您能够清楚地理解我们为什么要构建Zeebe以及它如何能够帮助您。

要开始使用Zeebe,我们建议您:

  • 阅读Zeebe的核心技术概念:Zeebe文档的“概述”部分介绍了Zeebe背后的一些关键思想和概念。
  • 安装Zeebe:安装指南向您展示在哪里可以找到Zeebe的最新发行版,以及如何在Docker上运行Zeebe,然后指导您完成成功的安装。
  • 尝试入门教程:获得动手和学习端到端Zeebe经验,从在Zeebe Modeler中建模,到使用Zeebe命令行界面创建和完成工作流实例,再到可视化操作中发生的事情。
  • 在论坛中问一个问题:Zeebe文档中的“获取帮助和参与”页面包含了Zeebe论坛和我们的公共Slack频道的链接,这两个链接都可以用来与Zeebe工程团队取得联系。我们渴望听到问题和反馈。

 

原文:https://zeebe.io/what-is-zeebe/

本文:http://jiagoushi.pro/node/1211

讨论:请加入知识星球【首席架构师圈】或者小号【jiagoushi_pro】或者QQ群【11107777】

本文地址
https://architect.pub/zeebe-workflow-engine-microservices-orchestration
SEO Title
Zeebe is a workflow engine for microservices orchestration.

【人工智能工具】15款适用于建筑师和设计师的顶级人工智能工具

视频号

微信公众号

知识星球

Chinese, Simplified

Architizer的技术目录是建筑师的技术工具数据库,从最新的生成设计和人工智能到渲染和可视化、3D建模、项目管理等等。在此处浏览完整的类别库。

在整个行业中,建筑师们正在接受一个新的合作伙伴来进行他们的创造性追求:人工智能。曾经被重复和单调所困扰的建筑工人发现自己正处于数字革命的风口浪尖,在这场革命中,比特和字节掌握着自动化和一度难以想象的可能性的关键。

人工智能革命并没有敲响我们的大门;它已经介入,摘下帽子,准备开始工作。设计的动力正在演变,我们走在最前沿,将人类的创造力和机器的精度融合在一起。架构的未来不仅仅是在书写——它正在编码,这是你现在可以使用的14种最有价值的人工智能工具。

可以肯定地说,建筑师的人工智能工具清单进展迅速,每天都有新的项目公布,随着建筑和技术格局的不断发展,建筑师可以期待更多创新的人工智能软件的出现,每一款都有望进一步革新这一领域。这些进步将塑造建筑设计的未来,使专业人士能够交付卓越的项目,同时突破创造力和效率的界限,并满怀希望地拯救我们的星球。

用于概念设计的最佳人工智能工具

Midjourney

现在到处都是Midjourney。人工智能驱动的图像生成工具为建筑师提供了一幅想象无限的画布。根据书面提示,Midtravel巧妙地编织出可用于说明概念思维的逼真图像。

虽然Midtravel还没有取代你最喜欢的可视化工具,但该智能程序可以通过制作令人惊叹的视觉叙事来帮助设计师传达复杂的设计,以帮助向客户和利益相关者展示我们的愿景。即使是最大胆的建筑理念也可以通过Midtravel从脑海中浮现到屏幕上,使其成为实验设计的宝库。

Adobe Firefly

Adobe Firefly,仍在发展的蛹中飞舞,已经在展示其潜力的力量。生成型人工智能家族的这一新兴成员有望点燃建筑师和设计师的创造力之火,同时简化工作流程,为生成图像、文本效果和其他创造性内容提供一个通用且值得信赖的平台。

目前,萤火虫和Midtravel一样,是一个动态的伴侣,可以使用文本到图像的提示来说明创新的设计思想。该程序是Adobe套件的一部分。萤火虫是一个值得信赖的联络人,通过一个公认和可靠的平台促进与同事和客户的合作关系。

作为一个相对较新的程序,萤火虫的许多承诺功能还没有实现。界面背后的大脑不想落后于极受欢迎的Midtravel,因此决定在程序完成前向用户提供功能,这一点并不牵强。然而,随着Adobe Firefly的不断成熟,我们可能会看到Adobe在其流行的设计程序之间创建无缝过渡的雄心得到了重大发展,这有望在不久的将来使图像创建和编辑变得轻而易举。

 

生成设计备选方案的最佳人工智能工具

Maket

在建筑师们曾经独自一人在迷宫般的多个设计选项中穿行的地方,Maket随时准备成为坚定的伴侣。通过Maket.ai,客户特定需求和空间限制的挑战成为多样化设计探索的机会。建筑师现在可以提供一个视觉盛宴,而不是呈现一个单一的愿景——或者任何数量的时间尺度允许——每种设计方案都像萨维尔街的西装一样精心定制。

然而,Maket的真正魔力在于它承诺解放时间和资源。通过承担生成设计选项的艰巨任务,Maket为建筑师提供了充足的时间,让他们能够更深入地参与创意和客户。

Maket.ai的抵抗力有可能激起建筑惯例的死水。Maket.ai通过产生意想不到的设计选项,将建筑师推向创新设计的未知领域。该工具是创造力的跳板,激励建筑师超越他们的尝试和真实,拥抱未知。

最佳住宅规划人工智能工具

ARCHITEChTURES

https://youtu.be/6NY_O7QtHmw

ARCHITECTURES是一款变革性的人工智能工具,彻底改变了住宅规划。它是为挑剔的建筑师精心设计的,简化了决策并最大限度地提高了效率。

利用人工智能的尖端力量,ARCHITECTURES分析现场条件、气候动态、预算限制和客户愿望。凭借丰富的知识,它推出了一系列设计选项,完美地协调了形式和功能,同时将建筑愿景带到了生活中。

ARCHITECTURES已经是许多建筑师值得信赖的盟友,使他们能够超越局限,释放无与伦比的效率。通过自动化,从平凡的任务中解放出来是现实。使用广泛的设计参数选项板,可以设置边界并设置程序以处理所有可用选项。

从现场规划,ARCHITECTURES在其中导航限制和探索机会,到细致的建筑设计,包括房间大小、窗户位置和可持续的材料选择,ARCHItecTURES能够轻松实现准确性和调整。

最佳方案设计(Schematic Designs)人工智能工具

ARK

https://youtu.be/M-8YT94LaiI

ARK是原理图设计包的答案,对建筑师和开发商来说都是一个福音。智能平台可在一瞬间优化建筑设计,让您快速做出明智的决策。

ARK拥有一个人工智能大脑,可以仔细检查和学习建筑设计的元数据,在考虑美国地方法规和条例的同时产生变化,确保每个项目都是创新的、合规的,支持效率、质量和成本效益。

最佳城市规划人工智能工具

Sidewalk Labs

Sidewalk实验室是Alphabet股份有限公司的创意,现在是谷歌的一部分。随着城市低效率的上升,这位革命性的人工智能特立独行者旨在改变城市规划的格局。

这一切都与数字灵活性有关。Sidewalk Labs将人工智能、机器学习和传感器技术相结合,使您的设计在更智能的同时更努力地工作。Sidewalk实验室已经在全球范围内被采用,它正在多伦多、纽约和新加坡塑造现实,一条街一条街地管理城市拥堵。

想象一下:人工智能将一系列设计选项泼洒在你的画布上,机器学习展示其肌肉以优化建筑性能——我们谈论的是一个具有成本效益的包中的能效、舒适性和安全性。接下来,传感器技术将提供有关交通模式、空气质量和噪音水平的宝贵数据。

人行道实验室绝对是这个街区的新生代,但该项目在重新思考我们的城市景观的竞赛中具有巨大潜力。

3D建模的最佳人工智能工具

Kaedim

Kaedim在人工智能3D建模领域表现突出,得到了游戏行业许多人的支持。它利用机器学习、生成对抗性网络和自然语言处理的变革潜力,将简单的2D设计思想转化为惊人准确的3D模型。

Kaedim是建筑师的动态盟友,减轻了手动创建3D模型的负担。有了Kaedim,建筑师和设计师可以自由探索各种设计概念,迭代它们,并在虚拟空间中完善他们的视觉,然后才能形成有形的形式。

在面向客户的阶段,Kaedim在视觉交流中发挥着关键作用,使建筑师能够呈现与客户想象力产生共鸣的3D模型。它还在施工规划阶段发挥作用,通过详细的3D模型确保准确的文档记录。在一个精度和现实主义至上的行业中,Kaedim成为了一笔至关重要的资产。

Sloyd.AI

三维建模非常耗时。欢迎你,斯洛伊德。AI,基于云的3D建模的开拓者。它不仅是一种工具,而且是一个利用机器学习、生成对抗性网络和自然语言处理的创新平台。它渲染高质量的3D模型,从建筑设计中捕捉复杂的细节,以产生非凡的表现。

Sloyd.AI不仅模仿建筑师的概念,而且扩展了其精度,以高度真实的方式为设计注入活力。它将建筑师从耗时的物理模型创建中解放出来,开辟了一个虚拟探索和设计精细化的游乐场。

Sloyd.AI从项目构思到完成都是无价的。它允许建筑师向客户展示动态3D模型,创造出静态图像无法比拟的身临其境的体验。关于施工规划和文件,斯洛伊德。人工智能的精确性确保了每个规范都能在其生成的3D模型中被捕获。在快节奏的建筑设计世界里,斯洛伊德。人工智能是建筑师保持创造力所需的伴侣。

改造项目最佳人工智能工具

Luma AI

https://youtu.be/JXb_a3ZIGnI

与Kaedim一样,Luma AI是人工智能驱动的3D扫描和建模领域的杰出探路者。该平台承担了创建详细3D模型的艰巨任务,并对其进行了重新构想,部署了先进的人工智能技术,如计算机视觉、深度学习和生成对抗性网络。它从照片中制作出准确、逼真的3D模型,可以为建筑师提供物体的全面视角,无论是建筑、家具还是复杂的建筑元素。

Luma.AI 不仅仅是一个三维建模器;它是一位数字转世专家。卢玛真正的天才。人工智能出现在翻新和修复项目中,它可以以惊人的精度捕捉现有结构,并创建虚拟双胞胎。它弥合了有形和虚拟之间的差距,使建筑师能够在第一块砖铺设之前就将翻新后的结构可视化。

它的威力还不止于此。关于设计可视化,Luma.AI 确保新提出的修改与现有结构兼容,并增强其美学和功能吸引力。创建的3D模型还可以用于交互式虚拟现实或增强现实演示,将客户和利益相关者的参与提升到新的高度。

最佳人工智能建筑信息建模工具(BIM)

BricsCAD

BricsCAD是人工智能和BIM融合的工具,可实现无缝、高效的建筑设计过程。BIM将建筑的建筑、工程和施工封装在三维模型中,实现项目的整体视图。BricsCAD BIM通过引入人工智能来增强BIM的能力,创造创新与实用的纽带。

BricsCAD不仅仅是一种工具,它还是一种高效的助手,可以不知疲倦地工作,自动化绘图尺寸和注释等重复任务。它利用人工智能将二维草图转化为详细的三维模型,同时提供实时可视化,使建筑师能够与他们的设计互动,并将其调整到完美。

BricsCAD的功能超越了美观。该程序使建筑师能够识别和纠正错误,提高最终输出的质量,并最大限度地减少施工后的问题。实时可视化的提供使建筑师能够做出明智的设计决策,可视化每次修改的影响。

然而,BricsCAD的魅力在于其有效协作的能力。它确保架构师、工程师和构建者同步,提供一个共享平台,让每个人都站在同一页上。这种协作简化了设计过程,减少了冗余,并确保所有相关方对项目的一致理解。

BricsCAD的生成设计能力是另一个关键优势——它可以根据用户定义的参数(如楼层数量、建筑尺寸和要使用的材料)来概念化3D建筑模型。这鼓励了探索,为建筑师提供了大量符合设定约束的设计选项。

最佳AI渲染工具

ArkoAI

ArkoAI通过在几分钟内提供高质量、逼真的渲染,作为一种有前景的人工智能渲染服务进入建筑场景。通过人工智能的力量和基于云的平台的便利性,Arko.AI将3D模型转化为反映现实的令人惊叹的视觉杰作。

Arko.ai吸引人的关键在于它可以增强建筑师的设计过程。首先,它为建筑师提供了一个强大的媒介来可视化他们的设计,因为它为2D草图和模型注入了生命,将它们转化为逼真的渲染图,让建筑师在现实世界中一窥他们的创作。

此外,Arko.ai节省了时间,接管了劳动密集型的渲染任务,让建筑师能够专注于设计的创造性方面。

与SketchUp®、Revit®和Rhinoceros®兼容。Arko.ai是建筑师工具箱中一个很有前途的补充,它提供了逼真的设计可视化效果,并节省了时间。

Veras

https://youtu.be/Nd2WEpDL3JQ

最近宣布在SketchUp®中提供的Veras by EvolveLAB是一种人工智能可视化工具,利用3D模型几何来激发和促进创造力。建筑师可以求助于Veras,使用文本提示创建其设计的照片级真实感渲染图,从而凸显人工智能在建筑可视化中的力量。

归根结底,Veras的优势在于它的多功能性和速度。它比传统方法更快地生成令人惊叹的渲染图,为建筑师和设计师提供了更多的时间来专注于更复杂的设计方面。它允许设计师快速探索变化,以便在没有成本或时间影响的情况下做出明智的设计决策。

可持续设计的最佳人工智能工具

Autodesk Forma

Autodesk Forma作为一种包罗万象的人工智能规划工具,为建筑师和城市规划者提供了更高精度设计可持续宜居城市的能力。

在基于云的平台上操作,Autodesk Forma可以从任何位置轻松访问,并与AutoCAD和Revit协同工作。

Autodesk的新增功能利用人工智能的力量,模拟不同设计决策对关键因素(如能源消耗、交通流量和空气质量)的影响,旨在帮助设计师做出更明智和可持续的设计选择,同时提高项目的可持续性和宜居性。Autodesk Forma还可以在实施前帮助识别潜在的设计缺陷,从而避免未来昂贵的整改。

从本质上讲,即使在早期阶段,Autodesk Forma也是一个全面的建筑人工智能工具,支持建筑师设计更周到、更可持续的城市。它促进了知情的设计选择,提高了时间和成本效率,并鼓励创造可持续的设计,从而重新定义了城市规划和建筑的景观。

最佳项目管理人工智能工具

ClickUp

ClickUp是一种项目管理工具,已被许多不同的行业所采用。它已经成为一种秘密武器,通过为提高工作流程效率而定制的功能,彻底改变了项目管理。这个基于云的应用程序无缝地组织和跟踪项目。

ClickUp在一个简单的平台中协调任务、截止日期和团队分配,确保项目从设计到施工的进展,避免错过截止日期并保持势头。

ClickUp的文档管理便于轻松协作。

有效的沟通是关键,ClickUp提供了这一点。聊天、视频会议和文件共享工具可与团队成员和客户同步工作。

在ClickUp的虚拟领域中,实时协作可以用于集体改进设计,而ClickUp的报告工具提供了宝贵的见解,可以确定改进领域并微调工作流程。分析和可视化提供全景项目视图。

3D草图的最佳人工智能工具

SketchUp

SketchUp将于2023年6月宣布两项新的人工智能功能的测试版,这两项功能都有助于加速和简化设计工作流程,使建筑师可以花更多的时间进行设计,而不用花更少的时间完成乏味的任务。我们正在密切关注他们的宣布。

本文地址
https://architect.pub/15-top-ai-tools-architects-and-designers
SEO Title
15 Top AI Tools for Architects and Designers

【设计工具】2022 年 13 种最佳草图替代品(适用于 Windows、Web 和 Mac)

Chinese, Simplified

如果您想构建和设计自己的网站,您将需要正确的工具来实现这一目标。

UI 和 UX 设计师可以使用无数的工具来简化网站和应用程序的创建过程。

十多年来,Sketch 一直是其中最受欢迎的一种。 但就像鲍勃·迪伦所说:“时代在变。” 自 ± 2016 年以来,Sketch 一直在失去其市场主导地位,这主要是由于出现了更新、更先进的数字设计工具。

您是否正在寻找有价值的 Sketch 替代品? 🤔 如果是这样,您已经登陆了正确的页面。

让我们深入了解一些我们的最爱。

  • 什么是草图? 🧐
  • 最佳素描替代品📝

什么是草图? 🧐



Sketch 是一种众所周知且越来越流行的矢量图形设计软件,它具有各种有用的 UI 设计和原型制作工具,使该过程更易于管理。

Sketch 于 2010 年 9 月首次发布,后来在 2012 年获得了 Apple 设计奖。这恰逢(对 Sketch 来说很好)Adobe 停止了当时领先的 UI 设计软件 Adob​​e Fireworks。随着 Adob​​e Fireworks 的消失,所有的 UI 和 UX 设计师开始转向 Sketch en-masse。

Sketch 允许设计师使用其页面系统和“符号”来创建定制的数字设计和原型。

它可用于广泛的应用程序——从设计网站到创建移动应用程序,再到创建图标和制作横幅等常规图形设计工作。

优点

  • 专为 UI / 数字设计(与图形设计相比)而设计
  • Sketch 支持大量插件——超过 1,000 个
  • 高级矢量编辑工具
  • 借助符号轻松创建设计系统
  • 能够以多种格式和尺寸导出
  • 优秀的用户界面

缺点

  • 仅在 MacOS 操作系统上可用(一个很大的缺点!)
  • 对矢量编辑、手柄、曲线和点的控制有限
  • 没有功能齐全的网络版本(您可以浏览项目并检查设计,但不能从头开始创建任何东西)
  • 有限的动画和原型功能
  • 碎片化的工作流程(由于插件)

价钱



Sketch 有一个标准计划,每位编辑每月花费 9 美元。或者,您可以每年为每位编辑支付 99 美元。

谁应该使用草图?



寻求高级集成的数字设计师,例如屏幕镜像、位图编辑、符号和从草图导入。

最佳素描替代品📝



幸运的是,Sketch 有很多替代品,其中一些可以在各种平台、设备和系统上使用。

让我们来看看当今市场上 13 种最好的 Sketch 替代品。

重要披露:我们为本指南中提到的一些工具感到自豪。如果您点击会员链接并随后进行购买,我们将免费为您赚取少量佣金(您无需支付任何额外费用)。



其中,您应该能够找到至少一个适合您的风格和需求的。

1.无花果(Figma

Figma 是一个备受喜爱和推崇的 UI 和 UX 工具,被认为是 Sketch 的主要竞争对手(和替代品)。它于 2016 年推出,通过引入允许用户之间实时协作的基于 Web 的数字设计软件,彻底改变了设计世界。

Figma 修复了损坏的设计工作流程(还记得将 Sketch 文件上传到 Dropbox 吗?)并彻底改变了数字设计师和开发人员的日常工作。

优点

  • 基于网络和跨平台
  • 轻松共享、存储和管理文档
  • 易于使用且功能强大的矢量设计工具
  • 轻松导出为多种格式
  • 非常适合与他人合作

缺点

  • 缺乏先进的矢量和位图编辑工具
  • 您需要付费订阅才能充分利用 Figma 的优势

价钱



这款多合一设计工具分为三个主要包,因此您可以选择最适合您的一个。

  • 免费套餐:有些有限
  • 专业人士:每月 12 美元
  • 组织包:每位编辑每月 45 美元



谁应该使用 Figma?

 

  • Figma 是目前最好的设计平台之一,其背后的团队正在以闪电般的速度开发新功能。
  • Figma 允许进行高级且用户友好的数字设计创建。



与草图相比



使用 Sketch 而不是 Figma 的主要好处是价格标签,这是必不可少的,特别是对于自由职业者和学生,这些应用程序的两个主要用户。

但是,使用 Figma,您可以获得一个一体化套件,而不必集成一堆不同的程序来使 Sketch 工作。此外,使用 Figma,您不一定需要拥有一台新的闪亮的 Macbook,而 PC 就可以。

Figma 在云中的使用速度也更快,协作也更容易,使其成为企业业务、国际团队和初创公司的更好选择。

2.矢量发生器(Vectornator

Vectornator 是一款顶级的图形设计应用程序和出色的 Sketch 替代品,但它的受欢迎程度真的说明了它的力量和目的吗?

在这种情况下,我们认为是这样。 Vectornator 为免费服务提供高级功能。

与许多其他应用程序不同,Vectornator 提供了很多免费计划,并且不会将基本服务隐藏在付费墙后面。



优点

  • 免费使用
  • 简单的学习曲线
  • 现代直观的界面
  • 非常适合数字和图形设计
  • 带有教程的内置资源库
  • 与 Adob​​e Illustrator 兼容
  • 非常适合 Apple Pencil
  • 庞大的图片库
  • 丰富的模板库

缺点

  • 如果您一次做太多事情,该应用程序有时会出现延迟

价钱

 

  • Vectornator 完全免费使用。

谁应该使用 Vectornator?



初学者和注重价格的用户会喜欢这个创作工具。 Vectornator 的初学者友好型编辑器可以随意创建和编辑矢量,设计用户界面,并执行广泛的类似功能。

与草图相比



与 Sketch 相比,Vectornator 最显着的缺陷可能是它缺乏 Sketch 所具有的 UI 设计功能(如符号和原型制作工具)。

然而,从好的方面来说,它在界面和免费平台的卓越价值方面胜出。它具有出色的图层支持、简单直观的绘图以及大量可供选择的功能。

您可以使用他们的免费计划创建无限的项目。他们的钢笔工具、自定义字体、自动跟踪功能和手势控制使其成为一体化解决方案。

3. 视觉(InVision

InVision 通过其 Craft 插件与 Sketch 集成,但随后它构建了自己的名为 InVision Studio 的软件来与设计师们​​讨厌的 Sketch 竞争。

InVision Studio 被概念化为设计师为设计师创建的原型工具。不幸的是,设计师并不喜欢这个软件。

但不要完全取消 InVision。它仍然是 Sketch 的一个很好的替代品,因为它允许轻松协作和开发人员交接。

此外,InVision 简化了设计演示的过程,并且比使用 PDF 格式发送文件更有效。

优点

 

  • 简单易用的界面
  • 有利于协作
  • 简单的内容审核
  • 强大的原型设计能力
  • 档案设计文物
  • 与草图集成
  • 第三方插件



缺点

 

  • 难学
  • 原型相当原始
  • 有限的客户支持



价钱



InVision 有三个计划:

  • 免费计划:功能有限
  • 专业计划:7.95 美元
  • 企业计划:联系 InVision 了解定价



谁应该使用 InVision?



设计师正在寻找具有团队协作和无缝开发人员交接的设计软件。

与草图相比



Sketch 比 InVision 有更好的网站模型和线框图工具。

但是,InVision 提供功能有限的免费计划,因此那些希望在不支付太多费用的情况下完成简单项目的人可能更喜欢 InVision。另外,Sketch 没有 Windows 支持,也没有 Linux 版本。

它还与 Photoshop 和 Illustrator 的兼容性有限。

另一方面,Sketch 确实有一些 InVision 不提供的出色工具,例如内置网格系统以及轻松将图层与智能参考线对齐的能力。

4. 成帧器( Framer

Framer 是一款功能齐全的数字设计软件应用程序,非常适合可以在 React 中编码的技术设计师。

Framer 旨在使设计师和开发人员之间的协作工作流程尽可能顺畅。

它有很棒的矢量编辑、协作和线框图工具。此外,Framer 允许数据链接、演示工具和简单的原型创建。

他们最近还发布了一个网络版本,这使得 Framer 成为 Figma 和 Sketch 的主要竞争对手。

优点

 

  • 广泛的原型设计功能
  • 对原型设计能力的高度控制
  • 强大的矢量编辑工具
  • 基于代码
  • 免费试用
  • 转换原型以做出反应
  • 易于共享原型
  • 良好的协作工作流程



缺点

 

  • 过度依赖插件
  • 没有导出到 Sketch 的选项
  • 与其他选项相比,有限的设计工具



价钱



Framer 在基于订阅的模型上运行,每月 19 美元。

谁应该使用成帧器?

知道如何在 React 中编码并正在寻找基于订阅计划的选项的设计师。

与草图相比



Framer 非常适合原型设计,这也是开发人员可能会考虑使用 Framer 而不是 Sketch 的主要原因。

另一方面,Sketch 在某种程度上依赖于集成,并且仅在 MacOS 操作系统上可用。

总体而言,Framer 已成为设计师喜欢使用的 Sketch 的一个非常令人印象深刻的替代品。

5.Adobe XD

在 Adob​​e 杀死 Adob​​e Fireworks 后,许多 UI 和数字设计师转而使用 Sketch,导致 Adob​​e 损失数百万美元。哎哟😬

Adobe 花了几年时间才醒来并重新加入竞争……你好? 👋

然后,他们构建了 Adob​​e XD。一开始很简单,但现在很酷。

该工具提供了 UI 或 UX 设计师可能需要的几乎所有东西,并且适用于任何规模的企业。

Adobe XD 提供了一套令人印象深刻的功能,例如自动动画、重复网格和响应式调整大小。设计师需要的几乎所有工具。

它与其他 Adob​​e 应用程序集成,这对于已经使用 Adob​​e Creative Cloud 产品套件的人来说是一个优势。

优点

 

  • 与其他 Adob​​e 应用程序集成
  • 能够在您的移动设备上测试原型
  • 自动动画
  • 非常适合网站模型
  • 简单、灵活的线框图
  • 重复网格
  • 如果您熟悉 Adob​​e 产品,则易于使用
  • 响应式调整大小

缺点

 

  • 界面学习略复杂
  • 没有动态 gif

价钱



Adobe XD 基于订阅模式,每月收费 9.99 美元。

谁应该使用 Adob​​e XD?

使用 Adob​​e Creative Cloud 并正在寻找替代 Sketch 的综合工具的设计师。

与草图相比



总体而言,Adobe XD 和 Sketch 相当。需要注意的是 Sketch 更依赖插件。

一些关键的区别是 Adob​​e XD 提供了更多的原生功能,而且 Sketch 仅适用于 Mac 用户,而 Adob​​e XD 可以在 Windows 和 Mac 上使用。

此外,Adobe XD 的画板使设计专业人士可以非常轻松地创建一系列页面。从本质上讲,Adobe XD 是 Sketch 的可靠替代品,专为从头开始的数字设计而构建。

6. Adob​​e 插画家(Adobe Illustrator

一些人认为,由 Adob​​e Inc 创建的 Adob​​e Illustrator 是同类软件中最好的。如果您正在寻找 Sketch 的替代品,无疑是您需要考虑的。

是的 — Adob​​e Illustrator 最初并不是为数字设计师而构建的。但是,它的工具包绝对可以用于创建出色的应用程序和网站设计,这完全取决于您和您的技能。

Adobe 的 Creative Cloud 是 Adob​​e Illustrator 成为 Sketch 完美替代品的另一个原因。

在 AI 中创建的所有设计都可以自动上传到云端,并在 Photoshop 或 Adob​​e XD 等其他应用程序中使用。

优点

  • 伟大的矢量设计选项
  • 触控类型
  • 非常适合高级用户和经验丰富的设计师
  • 自由变换工具
  • 非常有效和大量的高级功能

缺点

  • 陡峭的学习曲线
  • 需要按月订阅,没有持续许可的选项

价钱



如上所述,您不能购买永久许可证,而必须选择每月订阅,即每月 20 美元。

但是,使用这个先进的设计平台,您确实物有所值。

谁应该使用 Adob​​e Illustrator?



需要创建具有高级功能的复杂设计的高级设计师会喜欢 Illustrator。 Adobe Creative Cloud 让您每次都能完全控制您的图形图像。

与草图相比



Illustrator 在插件方面缺乏,这是 Sketch 擅长的。

Sketch 的用户界面更加直观。

但是,使用 Adob​​e Illustrator,您确实可以更好地直接集成,包括其他 Adob​​e 套件应用程序。

此外,Illustrator 适用于所有平台,包括 Mac 和 PC,而 Sketch 仅适用于 Mac。

👉🏼 查看我们的 Illustrator 替代品列表。

7. 斯纳帕(Snappa

Snappa 是一种流行的设计工具,它宣传自己是一种为没有经验的人设计图形和矢量的快速方法。

它的易用性使其成为此列表中最引人注目的替代品之一。

使用 Snappa 创建设计项目很简单。

优点

  • 经济实惠,物有所值
  • 非常容易使用
  • 图片无需额外费用
  • 内置免费模板库 - 超过 6,000 个
  • 以其出色的客户支持而闻名

缺点

 

  • 缺乏高级功能,即使是高级照片修饰等基本功能
  • 无法离线访问
  • 过度使用模板

价钱



Snappa 提供三个计划选项:

开始订阅:每月 0 美元,但仅限一位用户,您每月只能下载 3 次

专业级:每月 10 美元,提供相同的服务,但无限下载和自定义字体上传

团队套餐:以上所有费用每月 20 美元,外加团队协作

谁应该使用 Snappa?

正在为小型企业和个人寻求技术插图和图像开发平台的矢量图形设计师。

与草图相比



您需要至少升级到 Pro 级别才能使用 Snappa 访问基本工具。当然,这足以让一些人望而却步。

但是,团队计划中包含的协作功能非常适合为您的设计团队实现顺畅的团队协作。

使用 Snappa,您将获得一个非常可靠的整体图像改进工具。另外,它必须是初学者的最佳选择之一,并且比 Sketch 更容易学习。

8. 亲和设计师(Affinity Designer

Affinity Designer 在专业 UI 设计师中备受推崇,并以其对概念艺术和排版的可用性而闻名。

优点

  • 简单的学习曲线
  • 适合专业和个人使用
  • Adobe Illustrator 的许多功能,但物有所值

缺点

  • 偶尔的崩溃——当你在做某事时远非理想
  • 不具备其他 UI 设计应用程序的所有功能
  • 刚开始习惯的界面有点棘手

价钱



这里的好消息是 Affinity Designer 不需要订阅,这确实使它与许多其他同类产品区分开来。

取而代之的是,他们采用老式的方式,将其简单地一次性购买——目前售价为 24.99 美元,但不打折时为 50 美元。

谁应该使用 Affinity Designer?



这种基于矢量的工具非常适合那些需要混合像素和矢量设计的人 - 在这些情况下,它的多功能性将非常方便。

使用 Affinity 设计器创建矢量插图简单易学。



与草图相比



老实说,Affinity Designer 并不能真正提供同样的 UI 设计体验。

在功能方面,Affinity Designer 与 Adob​​e Illustrator 相当,但缺少 Sketch 或 Figma 所具有的符号和原型设计等功能。

👉🏼 另一方面,关于 Affinity 的许多优点是 Sketch 不能说的。

总的来说,它更容易使用,有更好的 UI,感觉更像 Adob​​e Illustrator。它也有更好的出口选择。

9. 墨景(Inkscape

Inkscape 有很多很棒的功能,是许多其他选项的绝佳替代品,尤其是 Illustrator。

优点

  • 完全免费使用
  • 非常适合初学者
  • 跨平台
  • 将几个强大的功能合二为一
  • 开源
  • 简单的界面

缺点

  • 没有 UI 设计功能
  • Mac 版本有一些小错误
  • 设计有些过时
  • 文本工具可能会更好、更健壮

价钱



Inkscape 完全免费且开源。

谁应该使用 Inkscape?

热衷于数字设计但没有强大计算机的初学者将在 Inkscape 上茁壮成长。如果您在较旧的操作系统或较弱的 PC 设备上工作,您仍然可以从这个平台中获得很多。

与草图相比



Sketch 总体上具有更好的功能和特性,尤其是在功能更强大的一端。

有经验的设计师在第一次使用 Inkscape 时可能会注意到一些功能缺失。

然而,对于初学者的平面设计师来说,Inkscape 在很多方面都比 Sketch 更胜一筹。

可以说,它的主要卖点之一是它是免费的——尽管它的成本很低,但它提供了一些很酷的功能。

👉🏼 查看我们的 Inkscape 替代品列表。

10. CorelDraw

CorelDraw 似乎被设计为适合尽可能多类型的用户。

这显然是一个巨大的好处,这也是它随着时间的推移变得越来越受欢迎的原因之一。

优点

  • 易于在任何平台上使用
  • 功能齐全
  • 适用于其他应用程序
  • 适合任何级别的人的价格

缺点

  • 与 Sketch 和许多其他替代品相比,它相当昂贵
  • 在 Mac 上,使用起来可能会很慢

价钱



最新的 2022 年版 CorelDraw 每年将为您节省 299 美元的个人费用。我们知道,这非常昂贵!

这不适合个体创业者或自由职业者。但是,也有定制计划,因此您可以检查是否可以找到适合您预算的价格。

谁应该使用 CorelDraw?



一位设计师正在寻找一个完整的软件,该软件具有您可能希望以高昂的价格获得的几乎所有功能。

您可以将 CorelDraw 视为功能强大的一体化工具。如果您的设备上有此选项,您将很少需要使用其他选项。



与草图相比



CorelDraw 对 Sketch 的主要缺点是价格标签,正如我们所看到的,价格很高。这可能足以让很多人望而却步,对于许多年轻企业来说,这可能会破坏交易。

但是你得到了很多钱,并且凭借它们提供的功能,以这种方式定价确实是有道理的。

您拥有一个功能齐全的 CorelDraw 软件,包含各种功能,它在大多数机器上运行得非常好,并且非常直观且易于使用。

11. 向量(Vectr

Vectr 是一个非常强大和有价值的矢量图形程序,免费提供。

无论您处于何种经验水平,该软件都可以轻松创建矢量。



优点

  • 各种工具:笔、形状、排列元素等。
  • 良好的渐变选项
  • 自由
  • 轻松导入和编辑 SVG
  • 团队协作的绝佳选择

缺点

  • 没有 UI 设计功能
  • 基于在线 - 无法完全离线使用,这对某些人来说是个问题
  • 在某些操作系统和机器上运行有点笨拙

价钱

 

  • Vectr 完全免费。

谁应该使用 Vectr?

 

  • 想要尝试提高自己能力的初学者设计师将使用 Vectr 茁壮成长。使用 Vectr,可以快速训练自己进行矢量设计。

与草图相比



老实说:像 Vectr 这样的免费工具永远不会拥有 Sketch 的所有功能。

👉🏼 然而,使用 Vectr 而不是 Sketch 有很多很好的理由。一方面,它是免费的。

此外,它还有探路者、填充和笔触,远远超过 Sketch 中提供的任何东西。此外,它还与 WordPress 和 Slack 集成。

12.重力设计师( Gravit Designer

Gravit Designer 带有一整套工具和功能,但特别值得注意的是用于营销工具的图形及其用于概念艺术和动画的工具。

优点

  • 自由
  • 跨平台
  • 高级仪表板
  • 易于使用,但必要时具有高级功能

缺点

  • 没有电子邮件或电话支持,只有实时聊天
  • 缺乏设计师可能需要的一些基本工具

价钱



Gravit Designer 可在所有级别免费使用。

谁应该使用 Gravit Designer?

希望快速整合设计、不同类型的动画或营销材料的设计师会喜欢使用 Gravit Designer。对于初学者设计师来说,这是一个特别好的工具。

与草图相比



Sketch 将为您提供更大的灵活性,并让您能够完成许多更复杂的任务,如果您只使用 Gravit Designer,您可能会错过这些任务。

话虽如此,Gravit Designer 更小​​,更易于处理程序,如果您需要执行一些更直接的任务,您将能够从中获得很多。

另外,由于 Gravit Designer 是免费的,因此您可以从价格标签中获得很多好处。

13. 画板(Drawpad)

最后,让我们看看 Drawpad,它通过先进且易于使用的界面提供出色的基于矢量的图形设计。

优点

  • 好的文字工具和效果
  • 完整的剪贴画库
  • 广告设计和徽标的理想选择
  • 许多先进的绘画和绘图工具

缺点

  • 没有电子邮件支持
  • 无法提供全方位的载体服务

价钱



Drawpad 每月花费 29.99 美元——对于你所得到的东西来说相当昂贵。

谁应该使用绘图板?



希望创建广告、徽标和营销材料等附属品的设计师会发现 Drawpad 是一个很好的资源。

与草图相比



Drawpad 的全套绘图工具无法与 Sketch 相提并论;正因为如此,你可能觉得它不值得这个价格标签。

但是使用 Drawpad,您将能够轻松地创建徽标和广告。

总结💁🏼‍♀️



希望此列表可以帮助您缩小 Sketch 的最佳替代方案。

根据您具体需要做什么,这里有许多选项将以各种方式提供帮助。

保持您的选择余地,并确保考虑您或您的公司的特定需求。

无论您最终选择哪种选择,我们相信您会得到很好的帮助。

原文:https://marketsplash.com/sketch-alternatives/

本文:https://jiagoushi.pro/node/1966

SEO Title
13 Best Sketch Alternatives In 2022 (For Windows, Web, and Mac)

分布式平台

Chinese, Simplified
SEO Title
distributed platform

【Distriuted platform】使用Helix任务框架管理分布式任务

Chinese, Simplified

无状态任务被广泛用于服务大规模数据处理系统。许多请求都是由依赖Apache Helix的系统提出的,因为无状态任务管理功能将被添加到Apache Helix中。最近,我们的团队决定探索管理无状态任务的新方法,以及我们正在进行的支持Helix的工作。这些努力的结果是Helix Task Framework,一个为无状态任务的分布式执行提供动力的引擎。在这篇文章中,我们将介绍Helix任务框架,它在Helix中作为高级功能提供。

关于Helix



Apache Helix是一种通用的集群管理框架,用于自动管理托管在节点集群上的分区和复制分布式系统。在节点故障恢复,群集扩展和重新配置的情况下,Helix会自动调整和替换分区及其副本。

Helix通过声明状态机表示应用程序的生命周期,将集群管理与应用程序逻辑分开。 Apache Helix网站详细描述了Helix的体系结构以及如何使用它来管理分布式系统。还有一些公开的博客文章提供了Helix内部的演练。

Helix最初是在LinkedIn开发的,目前管理关键基础设施,如Espresso(No-SQL数据存储),Brooklin(搜索即服务系统),Venice(派生数据服务平台)以及离线数据基础设施存储和处理。有关这些系统的更多信息,请点击此处。

任务框架上的分布式任务



任务框架



Helix Task Framework支持短期运行和长期运行任务的分布式执行。任务框架将作业划分为任务并安排它们在集群中的Helix Participants(节点)上执行。实际调度是通过将任务分配给可用的参与者节点来完成的,并且这些任务经历执行阶段并且相应地用Helix Task StateModel中的相应状态标记。

任务框架随后可以并行地触发任务的执行或调度任务。 Helix Controller监控集群中的所有任务执行,避免裂脑问题,并通过Helix定义的有限状态机和约束启用故障恢复。

概念



任务有三个抽象级别:工作流,工作和任务。工作流由一个或多个作业组成。作业由一个或多个任务组成。任务被定义为最小的,相互独立的可执行工作单元,其逻辑由用户实现。以下小节深入研究了这些抽象的实际用例。

helixtask2

工作流程



有两种类型的工作流:通用工作流和作业队列。

通用工作流是作业之间依赖关系的有向无环图(DAG)表示。 这些依赖关系明确定义了必须运行作业的顺序。 根据DAG,可能存在多种可能的排序。

作业队列是一种特殊类型的工作流。 作业队列与常规工作流程的不同之处在于作业之间的依赖关系是线性的。 因此,在队列中的所有其他作业运行并成功完成之前,不会安排作业。 但是,请注意,任务框架允许用户更改此行为 - 例如,通过修改配置参数,您可以允许作业运行,即使在依赖关系链中的某个位置之前存在失败的作业。

helixtask3

任务框架还允许工作流程是一次性的或经常性的。上面描述的通用工作流默认是一次性的,并且在完成时将从Task Framework的元数据存储中丢弃。但是,循环工作流或作业队列适用于需要定期运行业务逻辑的用例。要创建循环工作流,用户必须创建所谓的“模板”。此模板包含用于创建工作流的一次性实例的信息和参数(例如频率,开始时间,任务逻辑等)。然后,任务框架将按照给定模板的定义自动创建和提交工作流,从而消除了用户使用其他调度工具(例如cron)的需要。

工作



作业是任务框架中的下一级抽象。工作可以有许多相同或不相同的任务。工作是否成功完成取决于其任务的状态;例如,如果其任务未在超时阈值内完成或因任何原因失败,则作业将被标记为超时或失败。只有在所有任务成功完成后,作业才会标记为已完成。

任务框架中支持两种类型的作业:通用作业和目标作业。默认情况下,作业是通用作业。它由一个或多个任务组成,每个任务由Helix Controller生成的分配分布在多个节点上。但是,目标作业绑定到“目标”,它是非任务Helix资源的分区(此处的“Helix资源”表示由Helix管理的实体,例如数据库分区)。假设在Helix上运行的分布式数据库系统想要运行备份作业。这意味着必须在“目标”数据库分区所在的节点上安排并精确运行备份任务。有针对性的工作完全实现了这一点;它有一个“目标”资源(本例中为分布式数据库),其任务将在为该目标资源的分区提供服务的所有计算机上运行。也可以指定目标的状态(由Helix的StateModel定义),这意味着目标任务将仅在指定目标分区的副本处于目标状态的机器上运行。

helixtask4

任务



任务是最小的独立工作单元,其逻辑由用户实现。 在内部,每个单独的任务都遵循Helix定义的Task StateModel。 任务框架中的分配和调度以任务粒度进行。 以下是Task接口的代码片段:

helixtask5

强大分布式系统:任务框架的应用



在Espresso中管理分布式数据库作业



Espresso曾经有一种传统的备份方法,每个节点在本地运行备份调度程序,备份它托管的每个分区。这种方法有以下两个限制。

  • 缺乏集中,协调的调度程序:由于备份是在每个节点上独立调度的,并且每个节点都不知道其他节点正在备份,因此对于分区的每个副本,存在大量相同分区的重复备份。虽然节点彼此发送异步消息以跟踪正在备份的分区,但由于竞争条件,这是不可靠的。更糟糕的是,有时候我们看不到分区的备份了!
  • 缺少任务进度监控:备份调度程序将消息发送到存储节点以触发备份任务。但是,此消息仅启动备份任务 - 我们需要一种方法来跟踪其进度。为了跟踪,我们经常向Helix发送getStatus消息,Helix在Zookeeper中创建了一个新节点。然而,这种方法很快就被证明是有问题的,因为它产生的大量消息试图备份数百个分区。

Espresso现在在Task Framework上运行其备份作业。这很有用,因为Espresso已经在其数据库分区中使用了Helix的通用资源管理功能。 Helix Controller了解数据库分区周围发生的状态变化,因此能够轻松确定哪些任务需要绑定到哪些数据库分区。此外,Helix Controller充当集中式调度程序,可以控制并发任务的数量并确定何时应运行备份任务(以避免高峰时段)。以下部分提供了更详细的演练。

Espresso如何在Task Framework上运行备份任务



任务框架要求用户实现两个Java接口:Task和TaskFactory。 Helix将使用TaskFactory在运行时生成Task的实例。下一步是告诉Espresso的节点(由Espresso称为存储节点,Helix称为Participants),我们将在其上运行任务。这是通过将TaskFactory注册到StateMachineEngine(通过HelixManager访问)来完成的。然后,Espresso的中央控制器/调度程序已准备好使用TaskDriver中的一组API创建和提交任务。 TaskDriver提供了一组易于使用的API,允许用户创建,运行,停止和删除工作流。此外,用户可以通过TaskDriver检索每个工作流的状态信息。

helixtask6

监测和操作



为了增强可操作性和用户体验,Helix提供轻量级REST服务Helix REST 2.0和Helix UI。 Helix UI与Helix REST交谈以掌握所有配置并跟踪任务框架状态。

helixtask7

如上所述,Espresso使用目标作业进行备份。 Helix UI对于发现作业执行中的任何异常非常有用。用户可以轻松访问Helix UI以监控现有工作流和作业的状态并执行简单操作。此外,Helix UI支持身份验证,操作授权和审计日志记录,这为使用Helix构建的分布式应用程序添加了一层安全性。

最近的性能和稳定性改进



最小化冗余ZNode创建



IdealState和ExternalView是反映Helix定义的资源的未来状态和当前状态的元数据信息。在较旧的Task Framework实现中,作业被视为Helix资源,例如DB分区。这意味着在创建时为每个作业生成IdealState ZNode和ExternalView ZNode。这是有问题的,因为Task Framework作业和通用Helix资源本质上是不同的:作业往往是短暂的,经常创建和删除的瞬态实体,但是通用Helix资源往往是持久且继续为请求提供服务的持久实体。因此,创建和删除如此多的ZNode被证明是昂贵的,不再适合工作。这些ZNode将保留在ZooKeeper中,直到指定的数据到期时间(通常为一天或更长时间)。对于循环作业来说更糟糕的是 - 正在为原始作业模板创建一组IdealState / ExternalView ZNode,并且将为作业的每个计划运行创建另一组IdealState / ExternalView ZNode。进行了一项改进,以便作业的IdealState ZNode仅在计划运行时生成,并在作业完成后立即删除。实际上,每个工作流程应该只有少数作业同时运行,因此在任何给定时间每个工作流程只会存在少量的IdealState ZNode。此外,默认情况下将不再创建作业的ExternalView ZNode。

安排重复工作的问题



我们发现在从循环工作流调度重复作业时,计时器不稳定。这主要是因为我们为每个作业添加到周期性作业队列时设置了一个计时器,并且因为为所有当前和未来的作业维护大量计时器容易出错。此外,在Helix Controller的领导交接期间,这些计时器未被正确转移到新的领导者控制器。通过使任务框架为每个工作流而不是作业设置计时器来解决这个问题。现在Helix需要跟踪的定时器要少得多,而且在Helix Controller的领导交接过程中,新的领导者Controller将扫描所有现有的工作流程并适当地重置定时器。

任务元数据累积



我们观察到,当Task Framework负载繁重时,任务元数据(ZNodes)很快就会堆积在ZooKeeper中,不断将任务分配给节点。这会影响性能和可扩展性。提出并实施了两个修复:定期清除作业ZNode和批量读取元数据。删除终端状态中的作业会定期有效地缩短元数据保留周期,从而减少任何给定执行点上存在的任务元数据的数量。批量读取有效地减少了读取流量的数量和频率,解决了Zookeeper冗余读取的开销问题。

任务框架的后续步骤



重构ZooKeeper中的元数据层次结构



正如本文前面部分所讨论的,任务框架的性能直接受ZooKeeper中存在的Zookeeper存储结构(ZNodes)数量的影响。 Helix将工作流和作业配置以及上下文(工作流/作业的当前状态)的ZNode存储在一个展平目录中。这意味着理论上每次数据更改都会触发目录中所有ZNode的读取,当目录下的ZNode数量很高时,这可能会导致灾难性的减速。尽管批量读取等小改进缓解了这个问题,但我们发现问题的根源在于存储ZNode的方式。在不久的将来,将向Helix引入新的ZNode结构,以便任务框架ZNode将反映工作流,作业和任务的层次结构特性。这将大大减少ZooKeeper的读写延迟,使Task Framework能够更快地执行更多任务。

更先进的分配算法和策略



任务框架使用Consistent Hashing来计算可用节点的任务分配。有两种方法可以改进任务分配。首先,Helix Controller当前计算其管道的每次运行中的任务分配。请注意,此管道在Helix的通用资源管理中共享,这意味着管道的某些运行可能与任务框架无关,导致Helix Controller计算任务分配无效。换句话说,我们观察到了相当多的冗余计算。此外,Consistent Hashing可能不是任务的适当分配策略。直观地说,将任务与节点匹配应该很简单:只要节点能够承担任务,它就应该尽快完成。使用Consistent Hashing,您可能会看到一些节点忙于执行任务,而其他节点将处于空闲状态。

已经确定生产者 - 消费者模式是用于在一组节点上分配任务的更合适的模型 - 生产者是Controller,并且可用节点的集合是消费者。我们相信这种新的分发策略将极大地提高任务框架的可扩展性。

任务框架作为一个独立的框架



Helix最初是作为通用资源/集群管理的框架,而任务框架是通过将作业作为具有自己的状态模型的特殊资源来开发的。但是,我们现在只有LinkedIn用户使用Helix的任务框架功能。任务框架已经看到了其增长份额,为了满足用户不断增长的可扩展性需求,我们决定将其与通用资源管理分离是不可避免的。

分离工作有三个方面:1)减少资源竞争; 2)删除不必要的冗余; 3)删除部署依赖项。任务框架和通用资源管理框架的工作由单个中央调度程序:Helix Controller管理。这意味着单个Controller在一个JVM中运行而没有隔离,我们无法阻止资源管理的减速影响任务的分配和调度,反之亦然。换句话说,两个实体之间存在资源竞争。从这个意义上讲,我们需要将一个Helix控制器分成两个独立运行的独立控制器 - 一个Helix控制器和一个Task Framework Controller。

这种分离自然解决了管道中出现冗余计算的问题,如上一节所述。通用资源的更改将不再触发任务框架控制器中不必要的管道运行。此外,我们计划将此分离扩展到部署/存储库级别,以便新部署/回滚不会相互影响。我们相信这不仅可以提高两个组件的整体性能,还可以改善开发人员的体验。

结论



在这篇文章中,我们探讨了Task Framework,它是Apache Helix中不断增长的组件,可帮助您管理分布式任务。我们还讨论了系统的当前局限性以及我们正在进行的改进,以便将Helix的任务框架定位为LinkedIn以及开源社区中其他人的可靠分布式基础架构。

致谢



我们要感谢我们的工程师Jiajun Wang和Harry Zhang以及我们的SRE,Eric Blumenau。另外,感谢Yun Sun,Wei Song,Hung Tran,Kuai Yu以及来自LinkedIn数据基础架构的其他开发人员和SRE,感谢他们对Helix的宝贵意见和反馈。此外,我们要感谢Kishore Gopalakrishna,Apache Helix社区的其他提交者,以及校友Eric Kim,Weihan Kong和Vivo Xu的贡献。最后,我们要感谢雷管,Ivo Dimitrov和Swee Lim的管理层的不断鼓励和支持。

 

 

SEO Title
Managing Distributed Tasks with Helix Task Framework

【分布式平台】Helix提供支持的公司

Chinese, Simplified

公司



LinkedIn:

Helix在LinkedIn上广泛用于管理后端系统,例如Espresso(分布式NoSQL数据存储),Databus(变更数据捕获系统),Seas(搜索服务),Pinot(实时分析系统)

雅虎:

https://github.com/yahoo/Pistachio。 Pistachio被用作雅虎大规模广告服务产品的用户档案存储。

Uber:

Uber的流数据传输系统Streamio使用Helix提供高可用性,因为它可以跨Kafka,数据库,HBase和HDFS移动数据。

Box:

Box Notes  - 使用Helix来分区我们的笔记并充当分布式锁管理器。我们从Helix获得的一些好处是它在故障期间自动重新平衡分区并改变容量。

Pinterest:

我们使用Helix在HDFS / Hadoop之上为我们的KV商店进行集群管理。 Helix可以轻松实现容量扩展/减少和故障恢复的自动化。

Redhat:

在jBPM中进行聚类。 http://planet.jboss.org/post/clustering_in_jbpm_v6

Instagram:

Instagram直接消息

Airbnb:

Turn:

我们正在使用Helix来管理我们的高性能键值存储。该商店每秒可以看到大约1.7MM的查找请求和相当数量的写入,从而使高可用性和快速可扩展性对项目至关重要。我们使用Helix将连续块中的密钥空间分配给不同的服务器计算机(Dynamo样式的固定存储桶分区),管理这些分区并在从集群中添加和删除新计算机时自动执行迁移过程

X15:

X15是一个并行机器数据管理平台,能够摄取,索引,搜索和查询大量机器数据(即日志数据)。 X15使用Helix来实现分区表的容错和负载平衡,以及系统中控制模块的领导者选择。

原文: https://cwiki.apache.org/confluence/display/HELIX/Powered+By+Helix

 

SEO Title
Powered By Helix

【分布式计算】Helix: 基于配额的任务调度

Chinese, Simplified

介绍

Intro

基于配额的任务调度是Helix任务框架的一项功能添加,它使任务框架的用户能够在分布式任务管理中应用类别的概念。

目的



随着Helix Task Framework在其他开源框架(如Apache Gobblin和Apache Pinot)中的使用,它也看到了它所管理的分布式任务类型的多样性。 Helix也有明确的功能请求,通过创建相应的配额来区分不同类型的任务。

基于配额的任务调度旨在通过允许用户定义由配额类型及其相应配额组成的配额配置文件来满足这些请求。此功能的目标有三个:

  • 1)用户将能够优先考虑一种类型的工作流/作业/任务,
  • 2)实现任务类型之间的隔离;
  • 3)通过跟踪分布状态使监控更容易按类型执行。

词汇表和定义

  • 任务框架:Apache Helix的一个组件。用户可以以分布式方式定义和运行工作流,作业和任务的框架。
  • 工作流程:任务框架中最大的工作单元。工作流由一个或多个作业组成。有两种类型的工作流程:

                    通用工作流:通用工作流是由用于一般目的的作业(作业DAG)组成的工作流。如果过期或超时,可以删除通用工作流程。

                   作业队列:作业队列是一种特殊类型的工作流,由往往具有线性依赖关系的作业组成(但这种依赖关系是可配置的)。作业队列没有到期 - 它一直存在直到被删除。

  • 工作:任务框架中的第二大工作单元。作业由一个或多个相互独立的任务组成。有两种类型的工作:

                通用作业:通用作业是由一个或多个任务组成的作业。

                目标作业:目标作业与通用作业的不同之处在于,这些作业必须具有目标资源,属于此类作业的任务将与目标资源的分区一起安排。为了说明,Task Framework的Espresso用户可能希望在他们的一个名为MemberDataDB的DB上安排备份作业。此DB将分为多个分区(_MemberDataDB_1,_MemberDataDB2,... MemberDataDBN),并假设已提交目标作业,以使其任务与每个分区配对。这种“配对”是必要的,因为此任务是一个备份任务,需要与任务备份的那些分区位于同一物理机器上。

  • 任务:任务框架中最小的工作单元。任务是一个独立的工作单元。
  • 配额资源类型:表示特定类型的资源。示例可以是JVM线程计数,内存,CPU资源等。通常,在Helix Participant(= instance,worker,node)上运行的每个任务都占用一定量的资源。请注意,只有JVM线程计数是Task Framework当前支持的唯一配额资源类型,每个任务占用每个Helix Participant(实例)可用的40个线程中的1个线程。
  • 配额类型:表示给定作业及其基础任务应归类为哪个类别。例如,您可以使用两种配额类型定义配额配置,键入“备份”,然后键入“聚合”和默认类型“DEFAULT”。您可以通过为备份类型提供更高的配额比例(例如20:10:10)来确定备份类型的优先级。当有提交的作业流时,您可以预期每个参与者(假设它总共有40个JVM线程)将具有20个“备份”任务,10个“聚合”任务和10个“默认”任务。配额类型在作业级别定义和应用,这意味着属于具有配额类型的特定作业的所有任务都将具有该配额类型。请注意,如果为工作流设置了配额类型,则属于该工作流的所有作业都将从工作​​流继承该类型。
  • 配额:一个数字,指的是确定给定资源的哪一部分应分配给特定配额类型的相对比率。

例如,TYPE_0:40,TYPE_1:20,...,默认值:40

  • 配额配置:一组字符串整数映射,指示配额资源类型,配额类型和相应的配额。任务框架将配额配置存储在ClusterConfig中。

架构

 

  • AssignableInstance

AssignableInstance是一个抽象,表示能够从Controller接受任务的每个实时参与者。每个AssignableInstance将缓存它运行的任务以及基于配额的容量计算中的剩余任务计数。

  • AssignableInstanceManager

AssignableInstanceManager管理所有AssignableInstances。它还充当Controller和每个AssignableInstance之间的连接层。 AssignableInstanceManager还提供了一组接口,允许Controller轻松确定AssignableInstance是否能够承担更多任务。

  • TaskAssigner

TaskAssigner接口提供基本API方法,涉及基于配额约束的任务分配。 目前,任务框架仅涉及参与者端JVM线程的数量,每个线程对应于活动任务。

  • RuntimeJobDag(JobDagIterator)

这个新组件充当Controller的JobDAG的迭代器。 以前,任务分配要求Controller迭代所有作业及其基础任务,以确定是否有任何需要分配和调度的任务。 事实证明这是低效的,并且随着我们对Task Framework的负担越来越大而无法扩展。 每个RuntimeJobDag记录状态,也就是说,它知道需要向Controller提供哪些任务以进行调度。 每次通过Task管道的TaskSchedulingStage时,这都会为Controller节省冗余计算。

Architecture

 

用户手册



这个怎么运作



基于配额的任务调度的工作原理如下。 如果设置了配额类型,则任务框架将计算与每个配额类型的所有配额配置数之和的比率。 然后,它将应用该比率来查找分配给每个配额类型的实际资源量。 以下是一个示例:假设配额配置如下:

 

"QUOTA_TYPES":{
  "A":"2"
  ,"B":"1"
  ,"DEFAULT":"1"
}

基于这些原始数据,任务框架将计算比率。 使用这些比率,任务框架将应用它们来查找每个配额类型的实际资源量。 下表总结了这些计算,假设每个实例有40个JVM线程:

Quota Type Quota Config Ratio Actual Resource Allotted (# of JVM Threads)
A 2 50% 20
B 1 25% 10
DEFAULT 1 25% 10

每个实例(节点)都将具有如下所示的配额配置文件。这有一些影响。首先,这允许通过将更多资源分配给相应的配额类型来对某些作业进行优先级排序。从这个意义上讲,您可以将配额配置号/比率视为用户定义的优先级值。更具体地说,在上面的示例中采用配额配置文件。在这种情况下,当为每种配额类型提交100个作业时,类型A的作业将更快完成;换句话说,由于配额比率是其他配额类型的两倍,配额类型A在连续的工作流时会看到两倍的吞吐量。

基于配额的任务调度还允许在调度作业中进行隔离/划分。假设有两类工作,第一类是紧急工作,这些工作是短暂的,但需要立即运行。另一方面,假设第二类工作往往需要更长时间,但它们并不那么紧迫,可以花时间运行。以前,这两种类型的工作将被分配,计划和运行,确实难以确保第一类工作以紧急方式处理。基于配额的调度通过允许用户创建具有不同特征和要求的“类别”模型的配额类型来解决此问题。

如何使用



在ClusterConfig中设置配额配置

要使用基于配额的任务计划,您必须首先建立配额配置。这是一次性操作,一旦您确认您的ClusterConfig具有配额配置集,就不需要再次设置它。请参阅以下代码段,例如:

ClusterConfig clusterConfig = _manager.getConfigAccessor().getClusterConfig(CLUSTER_NAME); // Retrieve ClusterConfig
clusterConfig.resetTaskQuotaRatioMap(); // Optional: you may want to reset the quota config before creating a new quota config
clusterConfig.setTaskQuotaRatio(DEFAULT_QUOTA_TYPE, 10); // Define the default quota (DEFAULT_QUOTA_TYPE = "DEFAULT")
clusterConfig.setTaskQuotaRatio("A", 20); // Define quota type A
clusterConfig.setTaskQuotaRatio("B", 10); // Define quota type B
_manager.getConfigAccessor().setClusterConfig(CLUSTER_NAME, clusterConfig); // Set the new ClusterConfig

需要注意的是 - 如果设置了配额配置,则必须始终定义默认配额类型(使用“DEFAULT”键)。 否则,将不再安排和运行没有类型信息的作业。 如果您在基于配额的计划开始之前一直使用任务框架,那么您可能具有其作业没有任何类型集的重复工作流。 如果您忽略包含默认配额类型,则这些重复工作流将无法正确执行。

在ClusterConfig中设置配额配置后,您将在JK格式的ZooKeeper集群配置ZNode中看到更新的字段。 请参阅以下示例:

{
  "id":"Example_Cluster"
  ,"simpleFields":{
    "allowParticipantAutoJoin":"true"
  }
  ,"listFields":{
  }
  ,"mapFields":{
    "QUOTA_TYPES":{
      "A":"20"
      ,"B":"10"
      ,"DEFAULT":"10"
    }
  }
}

 

为工作流和作业设置配额类型Workders for WorkflowConfig和JobConfig提供了一种设置作业的配额类型的方法。请参阅以下内容:

jobBuilderA = new JobConfig.Builder().setCommand(JOB_COMMAND).setJobCommandConfigMap(_jobCommandMap) .addTaskConfigs(taskConfigsA).setNumConcurrentTasksPerInstance(50).setJobType("A"); // Setting the job quota type as "A" workflowBuilder.addJob("JOB_A", jobBuilderA);

 



常问问题

 

  • 如果我没有在ClusterConfig中设置配额配置会怎么样?

如果在ClusterConfig中未找到配额配置,则任务框架会将所有传入作业视为默认值,并将100%的配额资源提供给默认类型。

  • 如果我的工作没有设置配额类型会怎样?

如果任务框架遇到没有配额类型的作业(即,缺少quotaType字段,是空字符串或文字“null”),则该作业将被视为DEFAULT作业。

  • 如果在ClusterConfig中的配额配置中存在配额类型不存在的工作流/作业,该怎么办?

任务框架将无法找到正确的配额类型,因此它会将其视为DEFAULT类型,并将使用DEFAULT类型的配额进行相应的分配和计划。

目标工作怎么样?

配额也将应用于目标作业,目标作业的每个任务占用预设资源量(当前每个任务占用1个JVM线程)。

  • 工作队列怎么样?

基于配额的计划适用于所有类型的工作流 - 通用工作流和作业队列。对用户要注意的是要小心并始终验证是否已正确设置作业的配额类型。任务框架不会自动删除或通知用户因配额类型无效而卡住的作业,因此我们提醒所有用户通过在ClusterConfig中查询其设置来确保配额类型存在。



下来的步骤



基于配额的任务调度已在LinkedIn内部进行了测试,并已集成到Apache Gobblin中,使Helix Task Framework和Gobblin的Job Launcher用户能够定义类别和相应的配额值。有一些即时待办事项可以改善此功能的可用性:

  • 更细粒度的配额文件

目前,配额配置文件适用于整个群集;也就是说,ClusterConfig中定义的一个配额配置文件将全局适用于所有参与者。但是,某些用例可能要求每个参与者具有不同的配额配置文件。

  • 使参与者的最大JVM线程容量可配置

Helix Task Framework的最大任务线程数设置为40.使这个可配置将允许一些用户根据执行此类任务的持续时间来增加任务的吞吐量。

  • 向配额资源类型添加更多维度

目前,每个Participant的JVM线程数是Helix Task Framework定义配额的唯一维度。但是,如前面部分所述,这可以扩展到常用的约束,如CPU使用率,内存使用率或磁盘使用率。随着新维度的添加,需要额外实现TaskAssigner接口,该接口根据约束生成任务分配。

原文 : https://helix.apache.org/0.8.4-docs/quota_scheduling.html

 

 

SEO Title
Helix:Quota-based Task Scheduling

【分布式计算平台】用于分区和复制的分布式资源的集群管理框架

Chinese, Simplified

架构



Helix旨在为分布式系统提供以下功能:

  1. 自动管理托管分区,复制资源的集群
  2. 软硬故障检测和处理
  3. 通过基于服务器容量和资源配置文件(分区大小,访问模式等)在服务器(节点)上智能放置资源来实现自动负载平衡
  4. 集中配置管理和自我发现,无需修改每个节点上的配置
  5. 群集扩展期间的容错和优化的重新平衡
  6. 管理节点的整个运营生命周期。无需停机即可添加,启动,停止,启用和禁用
  7. 监控群集运行状况并警告SLA违规
  8. 用于路由请求的服务发现机制

要构建这样的系统,我们需要一种机制来协调系统中不同节点和其他组件。这种机制可以通过软件来实现,该软件可以对集群中的任何变化做出反应,并提供一组使集群处于稳定状态所需的任务。该组任务将分配给群集中的一个或多个节点。 Helix用于管理群集中的各种组件。

Helix Design

分布式系统组件



通常,任何分布式系统集群都将具有以下组件和属性:

  1. 一组节点也称为实例
  2. 一组资源,可以是数据库,lucene索引或任务
  3. 将每个资源细分为一个或多个分区
  4. 每个资源的副本称为副本
  5. 每个副本的状态,例如 主人,奴隶,领袖,待命,在线,离线等



角色

并非分布式系统中的所有节点都将执行类似的功能。例如,一些节点可能正在处理请求,一些节点可能正在发送请求,而一些其他节点可能正在控制集群中的节点。因此,Helix按照系统中的特定角色对节点进行分类。

Helix根据职责将节点划分为3个逻辑组件:

  1. 参与者:实际托管分布式资源的节点
  2. 观察者:简单地观察每个参与者的当前状态并相应地路由请求的节点。例如,路由器需要知道托管分区的实例及其状态,以便将请求路由到适当的端点
  3. 控制器:观察和控制参与者节点的节点。它负责协调集群中的所有转换,并确保满足状态约束,同时保持集群稳定性

这些只是逻辑组件,可以根据系统要求进行部署。例如,控制器:

  1. 可以作为单独的服务部署
  2. 可以与参与者一起部署,但在任何给定时间只有一个控制器处于活动状态。

两者都有利有弊,稍后将对此进行讨论,并且可以根据系统需要选择部署模式。

群集状态元数据存储



我们需要一个分布式存储来维护集群的状态,并且需要一个通知系统来通知集群状态是否有任何变化。 Helix使用Apache ZooKeeper来实现此功能。

Zookeeper提供:

  1. 一种表示PERSISTENT状态的方法,直到删除为止
  2. 表示当创建状态的进程死亡时消失的TRANSIENT / EPHEMERAL状态的方法
  3. 当PERSISTENT和EPHEMERAL状态发生变化时的通知机制

ZooKeeper提供的命名空间非常类似于标准文件系统。名称是由斜杠(/)分隔的路径元素序列。 ZooKeeper命名空间中的每个节点(ZNode)都由路径标识。

有关Zookeeper的更多信息,请访问http://zookeeper.apache.org

状态机和约束



尽管资源,分区和副本的概念对于大多数分布式系统是通用的,但是将一个分布式系统与另一个分布式系统区分开来的一个方面是为每个分区分配状态的方式以及每个状态的约束。

例如:

  • 如果系统提供只读数据,那么所有分区的副本都是等效的,它们可以是ONLINE或OFFLINE。
  • 如果系统同时进行读取和写入,但必须确保写入仅通过一个分区,则状态将为MASTER,SLAVE和OFFLINE。写入通过MASTER并复制到SLAVE。可选地,读取可以通过SLAVE。

除了为每个分区定义状态之外,状态之间的转换路径可以是特定于应用程序的。例如,为了成为MASTER,可能需要首先成为SLAVE。这确保了如果SLAVE没有将数据作为OFFLINE-SLAVE转换的一部分,它可以从系统中的其他节点引导数据。

Helix提供了一种配置特定于应用程序的状态机以及每个状态的约束的方法。除了对STATE的约束外,Helix还提供了一种指定转换约束的方法。 (稍后会详细介绍。)

 OFFLINE  | SLAVE  |  MASTER
         _____________________________
        |          |        |         |
OFFLINE |   N/A    | SLAVE  | SLAVE   |
        |__________|________|_________|
        |          |        |         |
SLAVE   |  OFFLINE |   N/A  | MASTER  |
        |__________|________|_________|
        |          |        |         |
MASTER  | SLAVE    | SLAVE  |   N/A   |
        |__________|________|_________|

Helix Design

概念



Helix中使用以下术语来模拟状态机之后的资源。

  • IdealState:如果所有节点都已启动并运行,我们需要群集进入的状态。换句话说,满足所有状态约束。
  • CurrentState:集群中每个节点的实际当前状态
  • ExternalView:所有节点的CurrentState的组合视图。

Helix的目标始终是使系统的CurrentState(以及扩展名为ExternalView)与IdealState相同。有些情况可能并非如此:

  • 部分或全部节点已关闭
  • 一个或多个节点失败
  • 添加了新节点,需要重新分配分区

 

IdealState



Helix允许应用程序为每个资源定义IdealState。它包括:

分区列表,例如64

每个分区的副本数量,例如3

为每个副本分配的节点和状态

例:

  • Partition-1,replica-1:Master,Node-1
  • Partition-1,replica-2:Slave,Node-2
  • Partition-1,replica-3:Slave,Node-3
  • ... ..
  • ... ..
  • Partition-p,replica-r:Slave,Node-n

Helix附带了各种算法来自动将分区分配给节点。默认算法最小化将新节点添加到系统时发生的混洗次数。

当前状态



群集中的每个参与者都托管资源的一个或多个分区。每个分区都具有与之关联的状态。

Example Node-1

  • Partition-1, Master
  • Partition-2, Slave
  • ….
  • ….
  • Partition-p, Slave



ExternalView



外部客户端需要知道群集中每个分区的状态以及托管该分区的节点。 Helix为Spectators提供了一个系统视图作为ExternalView。 ExternalView只是所有节点CurrentStates的聚合。

  • Partition-1, replica-1, Master, Node-1
  • Partition-1, replica-2, Slave, Node-2
  • Partition-1, replica-3, Slave, Node-3
  • …..
  • …..
  • Partition-p, replica-3, Slave, Node-n



流程/工作流程



集群中的操作模式

节点进程可以是以下之一:

  • 参与者:进程在集群中注册自身,并对其队列中收到的消息进行操作并更新当前状态。示例:分布式数据库中的存储节点
  • 观众:该过程只对ExternalView中的变化感兴趣。
  • 控制器:此过程通过响应群集状态的更改并向参与者发送状态转换消息来主动控制群集。

参与者节点过程

 

  • 当参与者启动时,它会在LiveInstances下注册
  • 注册后,它会等待消息队列中的新消息
  • 当它收到消息时,它将执行消息中指示的所需任务
  • 任务完成后,根据任务结果更新CurrentState



控制器流程

 

  • 观看IdealState
  • 当参与者出现故障,出现,添加或被删除时通知。观看群集中每个参与者的短暂LiveInstance ZNode和CurrentState
  • 通过向参与者发送消息来触发适当的状态转换



观众过程

 

  • 当进程启动时,它会要求Helix代理通知ExternalView中的更改
  • 每当收到通知时,它都会读取ExternalView并执行所需的任务

 

控制器,参与者和观众之间的互动

Helix Architecture

核心控制器算法

 

  • 从ZooKeeper获取活动存储节点的IdealState和CurrentState
  • 计算所有Participant节点上每个分区副本的IdealState和CurrentState之间的增量
  • 对于基于状态机表的每个分区计算任务。可以在状态转换上配置优先级。例如,在MasterSlave的情况下:
  1.                    如果可能,尝试主控权转移而不违反约束
  2.                   分区添加
  3.                   分区下降
  • 如果可能,将并行转换任务添加到每个存储节点的相应队列中(如果添加的任务相互独立)
  • 如果转换任务依赖于正在完成的另一个任务,请不要添加该任务
  • 在参与者完成任何任务后,控制器会收到更改通知,并重新运行算法,直到CurrentState与IdealState匹配。



Helix ZNode布局



Helix以多个级别在群集名称下组织ZNodes。

顶级(在群集名称下)ZNodes都是Helix定义的,大写:

  • PROPERTYSTORE: application property store
  • STATEMODELDEFES: state model definitions
  • INSTANCES: instance runtime information including current state and messages
  • CONFIGS: configurations
  • IDEALSTATES: ideal states
  • EXTERNALVIEW: external views
  • LIVEINSTANCES: live instances
  • CONTROLLER: cluster controller runtime information

在INSTANCES下,每个实例都有运行时ZNode。一个实例按如下方式组织ZNodes:

  • CURRENTSTATES
    • sessionId
    • resourceName
  • ERRORS
  • STATUSUPDATES
  • MESSAGES
  • HEALTHREPORT

在CONFIGS下,有不同的配置范围:

  • RESOURCE: contains resource scope configurations
  • CLUSTER: contains cluster scope configurations
  • PARTICIPANT: contains participant scope configurations



下图显示了名为“test-cluster”的集群的Helix ZNode布局示例:

  Helix znode layout

 

原文 :https://helix.apache.org/Architecture.html

讨论: 请加知识星球【首席架构师圈】

 

 

SEO Title
A cluster management framework for partitioned and replicated distributed resources

大数据平台

Chinese, Simplified
SEO Title
big data platform

「大数据」Apache大数据项目目录

Chinese, Simplified

在使用BigData大约8年以上之后,我遇到了大量的项目。 Esp Apache的运动对于BigData域非常强大。每个人都会提出一个针对特定解决方案的项目。但是,由于有这么多项目出现,我找不到一个可以查看它们的地方。所以,这就是这个页面背后的灵感。一站式,查看所有Apache BigData项目。当然,这个页面需要不断更新。如果您发现任何项目缺失,请发表评论

我同意一个大的列表(43个以上的项目),但这就是能够进行BigData处理的项目的范围。此外,可能有多个项目符合您的要求。关键是要确定哪些最适合您的要求与给定的硬件。

注意:如果您遇到一些Apache BigData项目但未在此处提及的项目,请发表评论。我将检查并将它们添加到此列表中。

1 Apache Airavata

Apache Airavata是一个框架,支持在基于网格的系统,远程集群和基于云的系统中执行和管理计算科学应用程序和工作流。 Airavata的主要重点是在基于网格的系统中提交和管理应用程序和工作流程。 Airavata的架构也可扩展,以支持其他底层资源。传统的科学应用程序为用户提供了一个门户,可以提交和管理被称为科学网关的科学应用程序。 Airavata可以被科学网关开发人员用作他们的中间件层。他们可以直接调用airavata API,以便与基于网格的系统进行通信。

2 Apache Airflow(Incubating)

Airflow是一个以编程方式创作,安排和监控工作流程的平台。

使用气流将工作流作为任务的有向非循环图(DAG)。气流调度程序在遵循指定的依赖关系的同时在一组工作程序上执行您的任务。

3 Apache Ambari

Apache Ambari是一个用于配置,管理和监控Apache Hadoop集群的工具。 Ambari包含一组RESTful API和基于浏览器的管理界面。

4 Apache Apex

Apache Apex是一个用于大数据流和批处理的统一平台。用例包括摄取,ETL,实时分析,警报和实时操作。 Apex是Hadoop本地YARN实现,默认使用HDFS。它通过缩短上市时间简化了Hadoop应用程序的开发和产品化。主要功能包括具有容错的企业级可操作性,状态管理,事件处理保证,无数据丢失,内存中性能和可伸缩性以及本机窗口支持。

5 Apache Avro

Apache Avro™是一种数据序列化系统。

Avro提供:

丰富的数据结构。

紧凑,快速的二进制数据格式。

容器文件,用于存储持久数据。

远程过程调用(RPC)。

与动态语言的简单集成。不需要代码生成来读取或写入数据文件,也不需要使用或实现RPC协议。代码生成作为可选优化,仅值得为静态类型语言实现。

6 Apache Arrow

为列式内存分析提供支持。它是一种新格式,可以在BigData生态系统中以统一的方式使用。利用最新的硬件(如SIMD)以及软件(柱状)增强功能,并在整个生态系统中提供统一的标准

7 Apache Beam

Apache Beam是一种用于批处理和流数据处理的统一编程模型,可以跨多种分布式执行引擎高效执行,并提供可扩展点,以连接到不同的技术和用户社区。

8 Apache Bigtop

Bigtop是一个用于开发Apache Hadoop生态系统的打包和测试的项目。 Bigtop的主要目标是围绕Hadoop相关项目的打包和互操作性测试构建社区。这包括在社区开发的各个级别(包装,平台,运行时,升级等)进行测试,重点是整个系统,而不是单个项目。简而言之,我们努力为Hadoop提供Debian对Linux的支持。

9 Apache BookKeeper

BookKeeper是一种可靠的复制日志服务。它可用于将任何独立服务转换为高可用性复制服务。 BookKeeper具有高可用性(无单点故障),并且随着更多存储节点的添加而水平扩展。

10 Apache Calcite

Calcite是一个用于编写数据管理系统的框架。它使用可插入的查询转换规则将在关系代数中表示的查询转换为高效的可执行形式。有一个可选的SQL解析器和JDBC驱动程序。 Calcite不存储数据或具有首选执行引擎。数据格式,执行算法,规划规则,运算符类型,元数据和成本模型在运行时作为插件添加。

11 Apache Chukwa

Chukwa是一个用于监控大型分布式系统的开源数据收集系统。 Chukwa构建于Hadoop分布式文件系统(HDFS)和Map / Reduce框架之上,并继承了Hadoop的可扩展性和健壮性。 Chukwa还包括一个灵活而强大的工具包,用于显示,监控和分析结果,以充分利用收集的数据。

12 Apache CouchDB

Apache CouchDB是一个完全包含Web的数据库。使用JSON文档存储数据。使用Web浏览器通过HTTP访问您的文档。使用JavaScript查询,组合和转换文档。 Apache CouchDB适用于现代Web和移动应用程序。您甚至可以直接从Apache CouchDB中提供Web应用程序。您可以使用Apache CouchDB的增量复制有效地分发您的数据或应用程序。 Apache CouchDB支持具有自动冲突检测的主 - 主设置。

13 Apache Crunch

Apache Crunch Java库提供了一个用于编写,测试和运行MapReduce管道的框架。它的目标是使由许多用户定义函数组成的流水线易于编写,易于测试和高效运行。

Apache Crunch™库运行在Hadoop MapReduce和Apache Spark之上,是一个简单的Java API,用于加入和数据聚合等在平面MapReduce上实现繁琐的任务。在处理不适合关系模型的数据时,API尤其有用,例如时间序列,序列化对象格式(如协议缓冲区或Avro记录)以及HBase行和列。对于Scala用户,有Scrunch API,它基于Java API构建,并包含用于创建MapReduce管道的REPL(读取 - 评估 - 打印循环)。

14 Apache DataFu(孵化)

Apache DataFu由两个库组成:Apache DataFu Pig是Apache Pig中用于数据分析的有用的用户定义函数的集合。

Apache DataFu Hourglass是一个使用Apache Hadoop MapReduce逐步处理数据的库。该库的灵感来自于对日常跟踪数据的滑动窗口计算的预测。诸如这些的计算通常以规则的间隔(例如,每天,每周)发生,因此计算的滑动性质意味着大部分工作被不必要地重复。创建DataFu的沙漏是为了使这些计算更有效,有时可以减少50-95%的计算资源。

15 Apache DirectMemory(在Attic中)

Apache DirectMemory是Java虚拟机的堆外缓存

16 Apache Drill

Apache Drill是一个分布式MPP查询层,支持针对NoSQL和Hadoop数据存储系统的SQL和替代查询语言。它的灵感部分来自谷歌的Dremel。

17 Apache Edgent(孵化)

Apache Edgent是一种编程模型和微内核样式运行时,可嵌入网关和小型边缘设备中,实现对来自设备,车辆,系统的连续数据流的本地实时分析,各种器具,设备和传感器(例如,覆盆子Pis或智能手机)。 Apache Edgent与集中分析系统配合使用,可在整个物联网生态系统中提供高效,及时的分析:从中心到边缘。

18 Apache Falcon

Apache Falcon是Hadoop的数据处理和管理解决方案,专为数据移动,数据管道协调,生命周期管理和数据发现而设计。 Falcon使最终消费者能够在Hadoop集群上快速加载其数据及其相关的处理和管理任务。

19 Apache Flink

Flink是一个用于表达,声明,快速和高效数据分析的开源系统。它将分布式MapReduce类平台的可扩展性和编程灵活性与并行数据库中的效率,核外执行和查询优化功能相结合。

20 Apache Flume

Apache Flume是一个分布式,可靠且可用的系统,用于有效地从许多不同的源收集,聚合和移动大量日志数据到集中式数据存储

21 Apache Giraph

Apache Giraph是一个为高可扩展性而构建的迭代图形处理系统。例如,它目前在Facebook上用于分析用户及其连接形成的社交图。

22 Apache Hadoop

Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件。

23 Apache Hama

Apache Hama是一种高效且可扩展的通用BSP计算引擎,可用于加速各种计算密集型分析应用程序。

24 Apache HAWQ

Apache HAWQ是一个Hadoop本机SQL查询引擎,它结合了MPP数据库的关键技术优势和Hadoop的可扩展性和便利性。

25 Apache Helix

Apache Helix是一个通用的集群管理框架,用于自动管理节点集群上托管的分区,复制和分布式资源。 Helix在面对节点故障和恢复,集群扩展和重新配置时自动重新分配资源。

26 Apache Ignite

Apache Ignite内存数据结构旨在为从高性能计算到业界最先进的数据网格,内存中SQL,内存文件系统的各种内存计算用例提供无与伦比的性能,流式传输等。

27 Apache Kafka

单个Kafka代理可以处理来自数千个客户端的每秒数百兆字节的读写操作。 Kafka旨在允许单个群集充当大型组织的中央数据主干。它可以弹性和透明地扩展,无需停机。数据流被分区并分布在一组机器上,以允许数据流大于任何一台机器的能力,并允许协调的消费者群集。 Kafka采用现代以集群为中心的设计,提供强大的耐用性和容错保证。消息将保留在磁盘上并在群集中进行复制,以防止数据丢失。每个代理都可以处理数TB的消息,而不会影响性能。

28 Apache Knox

Apache Knox Gateway是一个REST API网关,用于与Hadoop集群进行交互。

Knox Gateway为所有与Hadoop集群的REST交互提供单一访问点。

在这种能力下,诺克斯网关能够提供有价值的功能来帮助控制,

集成,监控和自动化企业的关键管理和分析需求。

身份验证(LDAP和Active Directory身份验证提供程序)联合/ SSO(基于HTTP标头的身份联合)授权(服务级别授权)审核虽然不安全的Hadoop群集有许多好处,

Knox Gateway也很好地补充了kerberos安全集群。

加上Kerberos安全Hadoop集群的正确网络隔离,

Knox Gateway为企业提供以下解决方案:

与企业身份管理解决方案完美集成保护Hadoop集群部署的详细信息(主机和端口对最终用户隐藏)简化客户端与之交互所需的服务数量

29 Apache Kudu

Kudu提供快速插入/更新和高效柱状扫描的组合,可在单个存储层上实现多个实时分析工作负载。

30 Apache Lens

Lens提供统一分析界面。 Lens旨在通过提供跨多个分层数据存储的单一数据视图和分析查询的最佳执行环境来削减数据分析孤岛。它将Hadoop与传统数据仓库无缝集成,看起来就像一个。

31 Apache MetaModel

使用MetaModel,您可以获得许多非常不同的数据存储类型的统一连接器和查询API,包括:关系(JDBC)数据库,CSV文件,Excel电子表格,XML文件,JSON文件,固定宽度文件,MongoDB,Apache CouchDB,Apache HBase,Apache Cassandra,ElasticSearch,OpenOffice.org数据库,Salesforce.com,SugarCRM甚至普通旧Java对象(PO​​JO)的集合。

MetaModel不是数据映射框架。相反,它强调元数据的抽象和在运行时添加数据源的能力,使MetaModel非常适用于通用数据处理应用程序,对于围绕特定域建模的应用程序则更少。

32 Apache Metron

Apache Metron提供可扩展的高级安全分析框架,该框架使用从Cisco OpenSOC项目演变而来的Hadoop社区构建。一种网络安全应用程序框架,使组织能够检测网络异常并使组织能够快速响应已识别的异常情况。

33 Apache Oozie

Oozie是一个用于管理Apache Hadoop作业的工作流程调度程序系统。 Oozie与Hadoop堆栈的其余部分集成,支持多种类型的Hadoop作业(例如Java map-reduce,Streaming map-reduce,Pig,Hive,Sqoop和Distcp)以及系统特定的工作(例如Java程序和shell脚本)。

34 Apache ORC

ORC是一种自描述类型感知的列式文件格式,专为Hadoop工作负载而设计。它针对大型流式读取进行了优化,但具有快速查找所需行的集成支持。以列式格式存储数据使读者只能读取,解压缩和处理当前查询所需的值。

35 Apache Parquet

Apache Parquet是一种通用的列式存储格式,专为Hadoop而构建,可与任何数据处理框架,数据模型或编程语言一起使用。

36 Apache Phoenix

Apache Phoenix通过提供利用Apache HBase作为其后备存储的关系数据库层,为Apache Hadoop提供OLTP和运营分析。它包括与Apache Spark,Pig,Flume,Map Reduce以及Hadoop生态系统中的其他产品的集成。它作为JDBC驱动程序访问,并允许通过标准SQL查询,更新和管理HBase表。

37 Apache REEF

Apache REEF(可保留评估程序执行框架)是一个开发框架,它提供了一个控制平面,用于调度和协调从资源管理器获取的集群资源的任务级(数据平面)工作。 REEF提供了促进数据缓存资源重用的机制,以及状态管理抽象,极大地简化了支持Resource Manager服务的云平台上弹性数据处理工作流的开发。

38 Apache Samza

Apache Samza提供了一个系统,用于处理来自Apache Kafka等发布 - 订阅系统的流数据。开发人员编写流处理任务,并将其作为Samza作业执行。然后,Samza在流处理任务和消息所针对的发布 - 订阅系统之间路由消息。

39 Apache Spark

Apache Spark是一种用于大规模数据处理的快速通用引擎。它提供Java,Scala和Python中的高级API以及丰富的库,包括流处理,机器学习和图形分析。

40 Apache Sqoop

Apache Sqoop(TM)是一种工具,用于在Apache Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据。

41 Apache Storm

Apache Storm是一个分布式实时计算系统。类似于Hadoop如何提供一组用于进行批处理的通用基元,Storm提供了一组用于进行实时计算的通用基元。

42 Apache Tajo

Apache Tajo项目的主要目标是在Hadoop中构建一个高级开源数据仓库系统,用于处理Web规模的数据集。基本上,Tajo提供SQL标准作为查询语言。 Tajo专为存储在HDFS和其他数据源上的数据集进行交互式和批量查询而设计。在不损害查询响应时间的情况下,Tajo提供了容错和动态负载平衡,这是长时间运行查询所必需的。 Tajo采用基于成本的渐进式查询优化技术来重新优化运行查询,以避免最糟糕的查询计划。

43 Apache Tez

Apache Tez致力于开发通用应用程序框架,该框架可用于处理数据处理任务的任意复杂的有向无环图(DAG),以及可用于可重用的一组数据处理原语。通过其他项目。它目前在Apache Hadoop YARN上面构建。

44 Apache VXQuery

Apache VXQuery将是一个用Java实现的符合标准的XML查询处理器。重点是评估对大量XML数据的查询。具体而言,目标是评估大型相对较小的XML文档集合上的查询。为了实现此目的,将在无共享机器的集群上评估查询。

45 Apache Zeppelin

Zeppelin是一个基于Web的现代工具,供数据科学家在大规模数据探索和可视化项目上进行协作。

SEO Title
Big Data Apache Big Data Project Directory

【大数据平台】大数据平台 HDP2.5.3遇到的坑:配置篇

Chinese, Simplified

Kafka

大数据平台 HDP2.5.3遇到的坑:配置篇

大数据平台 HDP2.5.3遇到的坑:配置篇

Flume:

sourceAgent.channels = logCh kafkaCh

sourceAgent.sources = sourceDataSource

sourceAgent.sinks = logSink kafkaSink

sourceAgent.channels.kafkaCh.type = memory

sourceAgent.channels.kafkaCh.capacity = 1000000

sourceAgent.channels.kafkaCh.transactionCapacity = 1000000

sourceAgent.channels.kafkaCh.keep-alive = 10

sourceAgent.channels.logCh.type = memory

sourceAgent.channels.logCh.capacity = 1000000

sourceAgent.channels.logCh.transactionCapacity = 1000000

sourceAgent.channels.logCh.keep-alive = 10

sourceAgent.sources.sourceDataSource.type = org.apache.flume.source.http.HTTPSource

sourceAgent.sources.sourceDataSource.bind= 172.21.9.74

sourceAgent.sources.sourceDataSource.port = 30001

sourceAgent.sources.sourceDataSource.channels = logCh kafkaCh

sourceAgent.sinks.logSink.channel = logCh

sourceAgent.sinks.logSink.type = logger

sourceAgent.sinks.kafkaSink.channel = kafkaCh

sourceAgent.sinks.kafkaSink.type = org.apache.flume.sink.kafka.KafkaSink

sourceAgent.sinks.kafkaSink.topic = icestone-gateway-event-topic

sourceAgent.sinks.kafkaSink.brokerList =172.21.9.70:6667,172.21.9.72:6667,172.21.9.73:6667,172.21.9.74:6667

sourceAgent.sinks.kafkaSink.flumeBatchSize = 20

sourceAgent.sinks.kafkaSink.producer.acks = 1

sourceAgent.sinks.kafkaSink.producer.linger.ms = 1

sourceAgent.sinks.kafkaSink.producer.compression.type = none

HDFS

大数据平台 HDP2.5.3遇到的坑:配置篇

YARN

大数据平台 HDP2.5.3遇到的坑:配置篇

大数据平台 HDP2.5.3遇到的坑:配置篇

大数据平台 HDP2.5.3遇到的坑:配置篇

Hbase

大数据平台 HDP2.5.3遇到的坑:配置篇

大数据平台 HDP2.5.3遇到的坑:配置篇

Oozie

大数据平台 HDP2.5.3遇到的坑:配置篇

大数据平台 HDP2.5.3遇到的坑:配置篇

Spark

大数据平台 HDP2.5.3遇到的坑:配置篇

MR2

大数据平台 HDP2.5.3遇到的坑:配置篇

SEO Title
Big data platform HDP2.5.3 encountered pit: configuration articles

【大数据系列】:Apache Hive 分布式数据仓库项目介绍

Chinese, Simplified

「大数据系列」:Apache Hive 分布式数据仓库项目介绍

 

Apache Hive™数据仓库软件有助于读取,编写和管理驻留在分布式存储中的大型数据集并进行查询

使用SQL语法。

Hive 特性

Hive构建于Apache Hadoop™之上,提供以下功能:

  • 通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析。
  • 一种在各种数据格式上强加结构的机制
  • 访问直接存储在Apache HDFS™或其他数据存储系统(如Apache HBase™)中的文件
  • 通过Apache Tez™,Apache Spark™或MapReduce执行查询
  • 使用HPL-SQL的过程语言
  • 通过Hive LLAP,Apache YARN和Apache Slider进行亚秒级查询检索。

Hive提供标准的SQL功能,包括许多后来的SQL:2003和SQL:2011分析功能。

Hive的SQL也可以通过用户定义的函数(UDF),用户定义的聚合(UDAF)和用户定义的表来扩展用户代码

函数(UDTF)。

没有唯一的“Hive格式”存储数据。 Hive附带内置连接器,用于逗号和制表符分隔值(CSV/ TSV)文本文件,Apache Parquet™,Apache ORC™和其他格式。

用户可以使用其他格式的连接器扩展Hive。有关详细信息,请参阅开发人员指南中的File Formats和Hive SerDe。

Hive不适用于联机事务处理(OLTP)工作负载。它最适用于传统的数据仓库任务。

Hive旨在最大限度地提高可伸缩性(通过向Hadoop集群动态添加更多计算机来扩展),性能,可扩展性,容错,与输入格式松散耦合。

Hive的组件包括HCatalog和WebHCat。

HCatalog是Hive的一个组件。它是Hadoop的表和存储管理层,使用户可以使用不同的数据

  • 处理工具 - 包括Pig和MapReduce - 可以更轻松地在网格上读写数据。
  • WebHCat提供的服务可用于运行Hadoop MapReduce(或YARN),Pig,Hive作业或执行Hive元数据使用HTTP(REST样式)接口的操作。

Hive 使用

Hive SQL语言手册:命令,CLI,数据类型,

DDL(创建/删除/更改/截断/显示/描述),统计(分析),索引,存档,

DML(加载/插入/更新/删除/合并,导入/导出,解释计划),

查询(选择),运算符和UDF,锁,授权

文件格式和压缩:RCFile,Avro,ORC,Parquet; 压缩,LZO

程序语言:Hive HPL / SQL

Hive配置属性

HIve 客户端

  • Hive客户端(JDBC,ODBC,Thrift)
  • HiveServer2:HiveServer2客户端和直线,Hive指标

Hive Web界面

Hive SerDes:Avro SerDe,Parquet SerDe,CSV SerDe,JSON SerDe

Hive Accumulo集成

Hive HBase集成

Druid整合

Hive Transactions,Streaming Data Ingest和Streaming Mutation API

Hive 计数器

Hive 管理

安装Hive

配置Hive

设置Metastore

Hive Schema Tool

设置Hive Web界面

设置Hive服务器(JDBC,ODBC,Thrift,HiveServer2)

Hive复制

Hive on Amazon Web Services

Amazon Elastic MapReduce上的Hive

Hive on Spark

SEO Title
Big Data Series: Introduction to the Apache Hive Distributed Data Warehouse Project

【大数据系列】:Apache zeppelin 多目标笔记本

Chinese, Simplified

多功能笔记本

笔记本是满足您所有需求的地方

  • 数据摄取
  • 数据发现
  • 数据分析
  • 数据可视化与协作

「大数据系列」:Apache zeppelin 多目标笔记本

 

支持多语言后端

Apache Zeppelin解释器概念允许将任何语言/数据处理后端插入Zeppelin。 目前Apache Zeppelin支持许多解释器,如Apache Spark,Python,JDBC,Markdown和Shell。

添加新的语言后端非常简单。 了解如何创建自己的解释器。

「大数据系列」:Apache zeppelin 多目标笔记本

 

Apache Spark集成

特别是,Apache Zeppelin提供内置的Apache Spark集成。 您不需要为它构建单独的模块,插件或库。

Apache Zeppelin与Spark集成提供

  • 自动SparkContext和SQLContext注入
  • 从本地文件系统或maven存储库加载运行时jar依赖项。 详细了解依赖加载器。
  • 取消作业并显示其进度

有关Apache Zeppelin中Apache Spark的更多信息,请参阅Apache Zeppelin的Spark解释器。

数据可视化

Apache Zeppelin中已包含一些基本图表。 可视化不仅限于Spark SQL查询,任何语言后端的任何输出都可以被识别和可视化。

数据透视图

Apache Zeppelin聚合值并通过简单的拖放将其显示在数据透视表中。 您可以轻松创建包含多个聚合值的图表,包括总和,计数,平均值,最小值,最大值。

「大数据系列」:Apache zeppelin 多目标笔记本

 

了解有关Apache Zeppelin中显示系统的更多信息。

动态表格

Apache Zeppelin可以在笔记本中动态创建一些输入表单。

「大数据系列」:Apache zeppelin 多目标笔记本

 

详细了解动态表单。

通过分享您的笔记本和段落进行协作

您的笔记本网址可以在协作者之间共享。 然后,Apache Zeppelin将实时广播任何变化,就像Google文档中的协作一样。

「大数据系列」:Apache zeppelin 多目标笔记本

 

Apache Zeppelin提供了一个仅显示结果的URL,该页面不包含笔记本内的任何菜单和按钮。 您可以通过这种方式轻松地将其作为iframe嵌入到您的网站中。 如果您想了解有关此功能的更多信息,请访问此页面。

100%开源

Apache Zeppelin是Apache2 Licensed软件。 请查看源存储库以及如何贡献。 Apache Zeppelin拥有一个非常活跃的开发社区。 加入我们的邮件列表并报告有关Jira Issue跟踪器的问题。

SEO Title
Big Data Series: Apache zeppelin multi-target notebook

【大数据系列】Apache NIFI:大数据处理和分发系统

Chinese, Simplified

「大数据系列」Apache NIFI:大数据处理和分发系统

 

什么是Apache NiFi?

简单地说,NiFi就是为了实现系统间数据流的自动化而构建的。虽然术语“数据流”用于各种上下文,但我们在此处使用它来表示系统之间的自动和管理信息流。这个问题空间一直存在,因为企业有多个系统,其中一些系统创建数据,一些系统消耗数据。已经讨论并广泛阐述了出现的问题和解决方案模式。企业集成模式[eip]中提供了一个全面且易于使用的表单。

数据流的一些高级别挑战包括:

系统失败

网络故障,磁盘故障,软件崩溃,人们犯错误。

数据访问超出了消耗能力

有时,给定的数据源可能会超过处理链或交付链的某些部分 - 只需要一个弱链接就会出现问题。

边界条件仅仅是建议

您将总是获得太大,太小,太快,太慢,损坏,错误或格式错误的数据。

噪音有一天成为下一个信号

组织的优先事项 - 迅速改变。启用新流程和更改现有流程必须快速。

系统以不同的速度发展

给定系统使用的协议和格式可以随时改变,而不管它们周围的系统如何。存在数据流以连接本质上是大规模分布的组件系统,这些组件松散地或根本不设计为一起工作。

合规性和安全性

法律,法规和政策发生变化。企业对企业协议的变化。系统到系统和系统到用户的交互必须是安全的,可信的,负责任的。

生产中持续改进

通常不可能在实验室中复制生产环境。

多年来,数据流一直是架构中必不可少的证据之一。现在虽然有许多活跃且快速发展的运动,但数据流更有趣,对于特定企业的成功更为重要。这些包括:面向服务的体系结构[soa],API [api] [api2],物联网[iot]和大数据[bigdata]的兴起。此外,合规性,隐私性和安全性所需的严格程度也在不断提高。即使仍然存在所有这些新概念,数据流的模式和需求仍然大致相同。然后,主要区别在于复杂性的范围,适应所需的变化率,以及大规模边缘情况变得普遍。 NiFi旨在帮助解决这些现代数据流挑战。

特征

Apache NiFi支持强大且可扩展的数据路由,转换和系统中介逻辑的有向图。 Apache NiFi的一些高级功能和目标包括:

基于Web的用户界面

  • 设计,控制,反馈和监控之间的无缝体验

高度可配置

  • 容忍损失与保证交付
  • 低延迟与高吞吐量
  • 动态优先级
  • 可以在运行时修改流程
  • 背压

数据来源

  • 从头到尾跟踪数据流

专为扩展而设计

  • 构建自己的处理器等等
  • 实现快速开发和有效测试

安全

  • SSL,SSH,HTTPS,加密内容等......
  • 多租户授权和内部授权/策略管理

NiFi的核心概念

NiFi的基本设计概念与基于流程编程的主要思想密切相关[fbp]。以下是一些主要的NiFi概念以及它们如何映射到FBP:

「大数据系列」Apache NIFI:大数据处理和分发系统

 

此设计模型也类似于[seda],提供了许多有益的结果,有助于NiFi成为构建功能强大且可扩展的数据流的非常有效的平台。其中一些好处包括:

  • 适用于处理器有向图的可视化创建和管理
  • 本质上是异步的,即使在处理和流量波动时也允许非常高的吞吐量和自然缓冲
  • 提供高度并发的模型,而开发人员不必担心并发的典型复杂性
  • 促进内聚和松散耦合组件的开发,然后可以在其他环境中重复使用并促进可测试单元
  • 资源受限的连接使得背压和压力释放等关键功能非常自然和直观
  • 错误处理变得像快乐路径一样自然而不是粗粒度的全部捕获
  • 数据进入和退出系统的点以及它如何流过的点很容易理解和轻松跟踪

NiFi架构

「大数据系列」Apache NIFI:大数据处理和分发系统

 

NiFi在主机操作系统上的JVM内执行。 JVM上NiFi的主要组件如下:

网络服务器

Web服务器的目的是托管NiFi基于HTTP的命令和控制API。

流量控制器

流量控制器是操作的大脑。它为扩展程序提供运行的线程,并管理扩展程序何时接收要执行的资源的计划。

扩展

在其他文献中描述了各种类型的NiFi扩展。这里的关键点是扩展在JVM中运行和执行。

FlowFile存储库

FlowFile存储库是NiFi跟踪其对流中当前活动的给定FlowFile的了解状态的地方。存储库的实现是可插入的。默认方法是位于指定磁盘分区上的持久性预写日志。

内容存储库

内容存储库是给定FlowFile的实际内容字节的实时位置。存储库的实现是可插入的。默认方法是一种相当简单的机制,它将数据块存储在文件系统中。可以指定多个文件系统存储位置,以便获得不同的物理分区以减少任何单个卷上的争用。

来源库

Provenance Repository是存储所有起源事件数据的地方。存储库构造是可插入的,默认实现是使用一个或多个物理磁盘卷。在每个位置内,事件数据被索引和搜索。

NiFi也能够在集群内运行。

「大数据系列」Apache NIFI:大数据处理和分发系统

 

从NiFi 1.0版本开始,采用了Zero-Master Clustering范例。 NiFi群集中的每个节点对数据执行相同的任务,但每个节点都在不同的数据集上运行。 Apache ZooKeeper选择单个节点作为集群协调器,ZooKeeper自动处理故障转移。 所有群集节点都会向群集协调器报告心跳和状态信息。 群集协调器负责断开和连接节点。 此外,每个群集都有一个主节点,也由ZooKeeper选举。 作为DataFlow管理器,您可以通过任何节点的用户界面(UI)与NiFi群集进行交互。 您所做的任何更改都将复制到群集中的所有节点,从而允许多个入口点。

NiFi的性能期望和特性

NiFi旨在充分利用其运行的底层主机系统的功能。在CPU和磁盘方面,这种资源的最大化特别强大。有关其他详细信息,请参阅“管理指南”中的最佳做法和配置提示。

对于IO

可以预期的吞吐量或延迟会有很大差异,具体取决于系统的配置方式。鉴于大多数主要NiFi子系统都有可插拔的方法,性能取决于实施。但是,对于具体且广泛适用的内容,请考虑开箱即用的默认实现。这些都是持久的保证传递,并使用本地磁盘这样做。因此保守一点,假设典型服务器中的适度磁盘或RAID卷上的读取/写入速率大约为每秒50 MB。然后,对于大类数据流的NiFi应该能够有效地达到每秒100 MB或更高的吞吐量。这是因为预期每个物理分区和添加到NiFi的内容存储库都会线性增长。这将在FlowFile存储库和originance存储库的某个点上出现瓶颈。我们计划提供一个基准测试和性能测试模板,以包含在构建中,允许用户轻松测试他们的系统并确定瓶颈在哪里,以及它们可能成为一个因素。此模板还应使系统管理员可以轻松进行更改并验证其影响。

对于CPU

流控制器充当引擎,指示特定处理器何时被赋予执行线程。编写处理器以在执行任务后立即返回线程。可以为Flow Controller提供一个配置值,指示它维护的各个线程池的可用线程。理想的线程数取决于主机系统资源的核心数量,系统是否正在运行其他服务,以及流程中处理的性质。对于典型的IO大流量,可以使许多线程可用。

对于RAM

NiFi存在于JVM中,因此仅限于JVM提供的内存空间。 JVM垃圾收集成为限制总实际堆大小以及优化应用程序运行时间的一个非常重要的因素。定期阅读相同内容时,NiFi作业可能是I / O密集型的。配置足够大的磁盘以优化性能。

关键NiFi功能的高级概述

这部分提供了20,000英尺的NiFi基石基础视图,让您可以了解Apache NiFi的大图,以及一些最有趣的功能。主要功能类别包括流量管理,易用性,安全性,可扩展架构和灵活的扩展模型。

流量管理

  • 保证交货

NiFi的核心理念是即使在非常高的规模下,保证交付也是必须的。这是通过有效使用专用的持久性预写日志和内容存储库来实现的。它们的设计可以实现非常高的事务处理速率,有效的负载分散,写入时复制以及发挥传统磁盘读/写的优势。

  • 具有背压和压力释放的数据缓冲

NiFi支持缓冲所有排队数据,以及在这些队列达到指定限制时提供背压或在数据达到指定年龄(其值已经消失)时使数据老化的能力。

  • 优先排队

NiFi允许设置一个或多个优先级方案,用于如何从队列中检索数据。默认值是最早的,但有时应先将数据拉到最新,最大的数据或其他一些自定义方案。

  • 流特定QoS(延迟v吞吐量,容量损失等)

有一些数据流点,数据绝对是关键的,而且是不容忍的。有时候必须在几秒钟内处理和交付它才能具有任何价值。 NiFi可以实现这些问题的细粒度流量特定配置。

使用方便

  • 可视化指挥与控制

数据流可能变得非常复杂。能够可视化这些流并在视觉上表达它们可以极大地帮助降低复杂性并确定需要简化的区域。 NiFi不仅可以实现数据流的可视化建立,而且可以实时实现。而不是“设计和部署”,它更像是塑造粘土。如果对数据流进行更改,则更改会立即生效。变更细粒度并与受影响的组件隔离。您不需要为了进行某些特定修改而停止整个流程或流程集。

  • 流程模板

数据流往往是高度模式化的,虽然通常有许多不同的方法来解决问题,但是能够分享这些最佳实践有很大帮助。模板允许主题专家构建和发布他们的流程设计,并让其他人受益并协作。

  • 数据来源

当对象流过系统时,NiFi会自动记录,索引并提供可用的起源数据,即使是扇入,扇出,转换等。此信息对于支持合规性,故障排除,优化和其他方案至关重要。

  • 恢复/记录细粒度历史记录的滚动缓冲区

NiFi的内容存储库旨在充当历史的滚动缓冲区。数据仅在内容存储库老化或需要空间时才会被删除。这与数据出处能力相结合,为对象的生命周期中的特定点提供了点击内容,内容下载和重放的极其有用的基础,甚至可以跨越几代人。

安全

  • 系统到系统

数据流只有安全性才好。数据流中每个点的NiFi都通过使用加密协议(如双向SSL)提供安全交换。此外,NiFi使流程能够加密和解密内容,并在发送方/接收方方程式的任何一侧使用共享密钥或其他机制。

  • 用户到系统

NiFi支持双向SSL身份验证,并提供可插拔授权,以便能够正确控制用户的访问权限和特定级别(只读,数据流管理器,管理员)。如果用户在流程中输入密码等敏感属性,则会立即对服务器端进行加密,即使以加密形式也不会再次暴露在客户端。

  • 多租户授权

给定数据流的权限级别适用于每个组件,允许管理员用户具有细粒度的访问控制级别。这意味着每个NiFi集群都能够满足一个或多个组织的要求。与隔离拓扑相比,多租户授权支持数据流管理的自助服务模型,允许每个团队或组织在完全了解流程的其余部分的情况下管理流程,而这些流程是他们无法访问的流程。

可扩展的架构

  • 扩展

NiFi的核心是为扩展而构建的,因此它是一个数据流进程可以以可预测和可重复的方式执行和交互的平台。扩展点包括:处理器,控制器服务,报告任务,优先级排序器和客户用户界面。

  • 类加载器隔离

对于任何基于组件的系统,可能会很快发生依赖性问题。 NiFi通过提供自定义类加载器模型来解决这个问题,确保每个扩展束都暴露于非常有限的依赖关系。因此,可以构建扩展而几乎不关心它们是否可能与另一个扩展冲突。这些扩展包的概念称为“NiFi Archives”,在开发人员指南中有更详细的讨论。

  • 站点到站点通信协议

NiFi实例之间的首选通信协议是NiFi站点到站点(S2S)协议。 S2S可以轻松,高效,安全地将数据从一个NiFi实例传输到另一个实例。 NiFi客户端库可以轻松构建并捆绑到其他应用程序或设备中,以通过S2S与NiFi进行通信。 S2S中支持基于套接字的协议和HTTP(S)协议作为底层传输协议,使得可以将代理服务器嵌入到S2S通信中。

灵活的可扩展模型

  • 横向扩展(群集)

如上所述,NiFi旨在通过使用将许多节点聚类在一起来向外扩展。如果配置单个节点并将其配置为每秒处理数百MB,则可以将适度的群集配置为每秒处理GB。这就带来了NiFi与其获取数据的系统之间的负载平衡和故障转移的有趣挑战。使用基于异步排队的协议(如消息服务,Kafka等)可以提供帮助。使用NiFi的“站点到站点”功能也非常有效,因为它是一种协议,允许NiFi和客户端(包括另一个NiFi群集)相互通信,共享有关加载的信息,以及交换特定授权的数据端口。

  • 放大和缩小

NiFi还可以非常灵活地扩展和缩小。从NiFi框架的角度来看,在增加吞吐量方面,可以在配置时增加Scheduling选项卡下处理器上的并发任务数。这允许更多进程同时执行,从而提供更高的吞吐量。另一方面,您可以完美地将NiFi缩小到适合在边缘设备上运行,因为硬件资源有限,所需的占用空间很小。要专门解决第一英里数据收集挑战和边缘使用案例,您可以在此处找到更多详细信息:https://cwiki.apache.org/confluence/display/NIFI/MiNiFi,关于Apache NiFi,MiNiFi的子项目工作(发音为“缩小”,[min-uh-fahy])。

SEO Title
"Big Data Series" Apache NIFI: Big Data Processing and Distribution System

【大数据系列】Ignite:基于内存分布式数据库和缓存和处理平台

Chinese, Simplified

Ignite™是一个以内存为中心的分布式数据库,缓存和处理平台事务性,分析性和流式工作负载,以PB级的速度提供内存速度.

「大数据系列」Ignite:基于内存分布式数据库和缓存和处理平台

 

主要好处

  • Ignite 使用者包括 ING, Sberbank, HomeAway, Wellington, FSB, The Glue, 24 Hour Fitness, JacTravel等
  • 保留你的数据库. 使用Ignite™内存数据网格和缓存功能加速现有的Relational和NoSQL数据库
  • NoSQL Scale的SQL .使用Ignite™分布式SQL实现水平可伸缩性,强一致性和高可用性

主要特点

  • 以内存为中心的存储.在内存和磁盘上存储和处理分布式数据
  • 分布式SQL.分布式以内存为中心的SQL数据库,支持连接
  • 分布式键值. 使用最快的键值数据网格和缓存进行读取,写入和事务处理
  • ACID交易. 跨分布式数据集实施完全ACID合规性
  • 并置处理.通过向群集节点发送计算来避免数据噪声
  • 机器学习.培训和部署分布式机器学习模型

IGNITE和其他软件比较

「大数据系列」Ignite:基于内存分布式数据库和缓存和处理平台

 

产品功能

Apache Ignite以内存为中心的数据库和缓存平台包含以下一组组件:

主要特点

  • 分布式SQL
  • 分布式键值
  • ACID交易
  • 并置处理
  • 机器学习
  • 多语言

扩展功能

  • 服务网格
  • RDBMS集成
  • 数据结构
  • 消息和事件
  • GA(Genetic Algorithms)网格

架构

  • 集群和部署
  • 以内存为中心的存储
  • 持久化

Hadoop和Spark支持

  • 用于Spark的内存存储
  • 内存文件系统
  • 内存中的MapReduce

Apache Ignite用例

作为一个平台,Apache Ignite用于各种用例,其中一些用例如下所示:

数据库

  • 分布数据库
  • 内存数据库
  • 内存数据网格
  • 键值存储

对照

  • Ignite NoSQL用户
  • Ignite RDBMS用户

内存缓存

  • 数据库缓存
  • JCache提供程序
  • Hibernate L2 Cache
  • Web会话群集

Spark&Hadoop

  • Spark共享RDD
  • 加速Sql for Spark
  • IGFS作为HDFS缓存
  • 加速MapReduce
SEO Title
"Big Data Series" Ignite: Memory Based Distributed Database and Cache and Processing Platform

应用中间件

Chinese, Simplified
SEO Title
application middleware

【BPM 产品】顶级免费和开源BPM软件

Chinese, Simplified

[BPM 架构]顶级免费和开源BPM软件

 

业务流程管理软件主要用于为人们提供设计,构建,分析,修改和测试各种业务流程的平台。它有助于有效模拟业务流程生命周期的各个阶段,从而实现高度准确的实施。然后分析在流程执行期间创建的日志的潜在模式的瓶颈,漏洞和其他低效率。

虽然专有BPM软件产品通常作为独立解决方案存在,需要对每个业务逻辑开发生命周期流程进行独立维护,但开源软件产品与持续集成和交付管道的兼容性更高,可实现有效的IT资产管理。

业务流程管理软件对您业务的重要性

由于其不断发展和高效的BPM技术解决方案,业务流程管理软件是现有IT行业的一种创新解决方案。 BPM软件提供广泛的流程自动化,提高生产力并确保合规性。此外,与专有BPM软件供应商相比,开源BPM软件提供了更可靠且极具成本效益的替代方案,从而为更好的业务解决方案创造了空间。

10个最佳免费和开源BPM软件:

1.Bonitasoft

[BPM 架构]顶级免费和开源BPM软件

 

这个特殊的平台被广泛称为Bonita BPM,可以为各种DevOps团队提供持续的业务改进。 它有助于简单有效地交付应用程序,这表明在实时环境中对业务标准的变化具有极大的兼容性。

此外,Bonitasoft非常轻量级,并且实现了模块化体系结构,该体系结构由超过12000个成员的开源社区的大本营支持,可满足各种查询解析要求。

2.Red Hat JBoss BPM suite

[BPM 架构]顶级免费和开源BPM软件

 

该套件在单个BPM平台上集成了业务流程管理,资源规划,事件处理和规则管理的功能。 它还可以有效地用于捕获各种业务策略和过程,并促进各种业务操作和活动的自动化。

该软件部署在物理,虚拟,云等不同环境中,最适合不同的企业组织和IT服务公司。

3.Alfresco By Activiti

[BPM 架构]顶级免费和开源BPM软件

 

Activiti是专为商业组织和开发人员设计的最佳开源BPM软件和工作流引擎平台之一。 它是轻量级的,并且包含一个用于Java的超快速BPMN 2.0流程引擎。

此外,Activiti还针对技术和非技术方面进行了大量优化,即分析,建模,业务流程兼容性生成以及软件创建和支持。

4.Adobe LiveCycle

[BPM 架构]顶级免费和开源BPM软件

 

Adobe LiveCycle的企业套件4是高端BPM软件,它集成了表单平台和企业文档的概念。 使用该软件的目的包括处理信息,提供个性化通信和有效保护敏感信息。

使用该软件,用户可以通过连接和自动化关键业务流程来降低总体拥有成本,从而提高生产力。 它还有助于创建简约形式,以便有效地捕获数据并处理获得的信息。

5.ProcessMaker

[BPM 架构]顶级免费和开源BPM软件

 

ProcessMaker是一款直观,易用且创新的BPM软件,适用于各种规模的组织。 它具有可在Web上访问的工具箱,用于创建数字表单以映射工作流程。 它声称拥有所有BPM软件中最低的开销之一,我们对此毫不怀疑。

其创新的BPMN 2.0功能提供了拖放式样式建模工具,可以轻松调整大小或移动和重新标记流程元素。 响应式DynaForm Designer可帮助您创建表单,而无需编写任何代码。 它也可以在iOS和Android上使用,使其更轻巧,更高效。

6.Modelio

[BPM 架构]顶级免费和开源BPM软件

 

Modelio是一个开源建模环境,支持UML,HTML,脚本语言支持和BPMN支持以及UML集成等。 它拥有20年的历史,为软件开发人员,系统架构师,分析师等提供高端功能。

Modelio非常灵活。 您可以配置自己的模块,软件将根据您的需求进行调整。 它已经拥有各种预先存在的模块,例如Java Designer,WSDL Designer,Togaf Architect和UML Testing配置文件。 可以在平台上毫不费力地执行模型扩展和添加。

7.Camunda

[BPM 架构]顶级免费和开源BPM软件

 

Camunda执行BPMN 2.0,非常轻量级,并提供广泛的可扩展性。 该平台最适合JAVA EE和spring,并提供强大的REST API和脚本语言支持解决方案。

它还可以用作Tomcat,JBoss等中的容器服务,用于多个应用程序,而无需关闭处理引擎。 这是全球最大的公司之一,也是全球市场上极具主导性的BPM解决方案提供商。

8.RunaWFE

[BPM 架构]顶级免费和开源BPM软件

 

RunaWFE是BPM的跨平台最终用户解决方案。 它具有Web界面,可以轻松与区域数据库集成。 它为portlet提供支持,并与企业应用程序和LDAP / MS Active Directory集成。 它还可以与Alfresco集成。 它可以在多种语言和多种平台上使用,例如Windows,Linux,FreeBSD和Solaris操作系统。

9.Orchestra

[BPM 架构]顶级免费和开源BPM软件

 

它针对长期面向服务的流程进行了优化,提供了处理复杂业务流程的功能。 它基于OASIS标准BPEL,并提供广泛的服务集成,以提高生产力水平。

Orchestra是一个完全开源的业务流程管理软件,可以在LGPL许可下轻松下载。

10.jBPM

jBPM是一个开源的BPM软件和工作流引擎,可以弥合业务分析师和开发人员之间的差距。

它是用Java编写的,可以使用BPMN 2.0规范简化流程执行。它可以在任何Java环境中运行,并且可以轻松嵌入以部署到各种应用程序中。

结论

BPM软件解决方案在最新市场趋势方面具有改善各种竞争行业的业务和财务标准的良好记录。它们包含高端工具和实用程序,可有效管理各种业务流程,最终为创造更好的商业机会而努力。因此,在任何特定业务中加入BPM软件套件对于在相应的经济前沿中获得最大利润和更好的业务水平极为重要。

这些是我们遇到的一些最好的免费和开源BPM工具。如果您有其他喜欢的,请在下面的评论中告诉我们。

SEO Title
Top free and open source BPM software

【中间件】What Is NGINX Plus?

Chinese, Simplified

NGINX Plus是一个基于开源NGINX构建的软件负载均衡器,Web服务器和内容缓存。 NGINX Plus具有独特的企业级功能,超出了开源产品的功能,包括会话持久性,通过API配置和主动健康检查。 使用NGINX Plus代替硬件负载均衡器,在不受基础设施约束的情况下获得创新自由。

 

为何选择NGINX Plus?

Cost icon

Cost Effective

与硬件ADC相比,节省80%以上,而不会牺牲性能或功能。

Circle with 4 arrows pointing outwards from circle

Flexible and Portable

在任何地方部署:公共云,私有云,裸机,虚拟机和容器

Automation gear icon

Automated

通过内置的NGINX Plus API执行常见任务,节省时间

 

特征

NGINX Load Balancer

负载均衡器



使用软件扩展传统的负载平衡:

  1. HTTP,TCP和UDP负载平衡
  2. 使用URI,cookie,args等进行第7层请求路由
  3. 基于cookie的会话持久性*
  4. 状态代码和响应正文的主动健康检查*
  5. 使用DNS *进行服务发现

Learn more

NGINX Content Cache

内容缓存



使用为世界上最大的CDN提供支持的相同缓存:

  1. 缓存静态和动态内容
  2. 通过微缓存(microcaching)提高动态内容性能
  3. 在后台重新验证时提供“陈旧”内容以提高性能
  4. 覆盖或设置Cache-Control标头
  5. 使用缓存清除API轻松管理缓存*

Learn more

NGINX Web Server

Web Server

以无与伦比的速度和效率交付静态资产:

  1. 同时处理数十万客户端
  2. 使用比其他Web服务器少90%的内存
  3. 反向代理多个协议:HTTP,gRPC,memcached,PHP-FPM,SCGI,uwsgi
  4. 流HTTP视频:FLV,HDS,HLS,MP4
  5. 支持HTTP / 2服务器推送的HTTP / 2网关

NGINX Security

安全控制



保护您的应用:

  1. 请求和连接限制
  2. 双栈RSA / ECC SSL / TLS卸载
  3. TLS 1.3支持
  4. 动态证书加载
  5. 基于IP地址的访问控制列表(ACL)
  6. API的JWT身份验证和OpenID Connect单点登录(SSO)*
  7. NGINX WAF动态模块*

NGINX Modules

动态模块



动态插入其他功能:

  1. NGINX JavaScript模块在请求处理期间运行JavaScript代码
  2. GeoIP模块按IP地址定位用户(需要MaxMind GeoIP数据库)
  3. 用于编译自己的自定义模块的构建工具
  4. SSO模块:ForgeRock,IDF Connect和Ping Identity *
  5. 动态模块库*

Learn more

NGINX live activity monitoring

监控



诊断和调试复杂的应用程序体系结构:

  1. 使用NGINX Amplify监控NGINX指标并验证配置
  2. 适用于AppDynamics,Datadog和Dynatrace的插件
  3. 具有超过90个唯一指标的扩展状态*
  4. 内置实时图形仪表板*
  5. 用于与自定义监视工具集成的JSON和HTML输出*

Learn more

NGINX HA High Availability

高可用性(HA)*



可扩展且可靠的HA部署:

  1. 主动 - 主动和主动 - 被动HA模式
  2. 群集中NGINX Plus服务器之间的配置同步
  3. 状态共享功能包括Sticky-Learn会话持久性,速率限制和键值存储
  4. 使用内置脚本轻松安装

Learn more

Kubernetes Ingress控制器



使用NGINX Plus创建Kubernetes应用程序:

  1. 使用SSL / TLS终止进行负载平衡
  2. WebSocket和HTTP / 2支持
  3. 请求之前的URI重写被转发到应用程序
  4. 普罗米修斯出口商进行监测
  5. 会话持久性和健康检查*
  6. JWT认证*

Learn more

NGINX Programmability

可编程



动态部署自定义体系结构:

  1. 用于脚本和高级配置的NGINX JavaScript模块
  2. Lua脚本语言
  3. Ansible,Chef和Puppet集成
  4. 用于管理上游服务器,键值存储和实时指标的API *
  5. 无需重新加载的动态重新配置*

流媒体



Scalably提供流媒体:

  1. 直播:RTMP,Apple HTTP直播(HLS),HTTP上的动态自适应流媒体(DASH)
  2. VOD:Flash(flv),MP4
  3. 自适应比特率VOD:HLS,Adobe HTTP动态流(HDS)*
  4. MP4流媒体的带宽控制*

原文:https://www.nginx.com/products/nginx/

本文:http://pub.intelligentx.net/what-nginx-plus

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
What Is NGINX Plus?

【应用中间件】NGINX作为WebSocket代理

Chinese, Simplified

WebSocket协议提供了一种创建支持客户端和服务器之间实时双向通信的web应用程序的方法。作为HTML5的一部分,WebSocket使开发这些类型的应用程序比以前可用的方法容易得多。大多数现代浏览器都支持WebSocket,包括Chrome、Firefox、Internet Explorer、Opera和Safari,现在越来越多的服务器应用程序框架也支持WebSocket。

对于需要多个WebSocket服务器来实现性能和高可用性的企业生产使用,需要一个理解WebSocket协议的负载均衡层,NGINX从1.3版开始就支持WebSocket,可以作为反向代理,对WebSocket应用程序进行负载均衡。(NGINX Plus的所有版本都支持WebSocket。)

查看最近关于NGINX的可伸缩性的性能测试,以平衡WebSocket连接的负载。

WebSocket协议与HTTP协议不同,但是WebSocket握手与HTTP兼容,使用HTTP升级工具将连接从HTTP升级到WebSocket。这使得WebSocket应用程序更容易地适应现有的基础设施。例如,WebSocket应用程序可以使用标准的HTTP端口80和443,从而允许使用现有的防火墙规则。

WebSocket应用程序在客户机和服务器之间保持长时间运行的连接,从而促进实时应用程序的开发。用于将连接从HTTP升级到WebSocket的HTTP升级机制使用升级和连接头。反向代理服务器在支持WebSocket方面面临一些挑战。一个是WebSocket是一个逐跳协议,因此当代理服务器拦截来自客户机的升级请求时,它需要将自己的升级请求发送到后端服务器,包括适当的头文件。此外,由于WebSocket连接是长寿命的,与HTTP使用的典型短寿命连接相反,反向代理需要允许这些连接保持打开状态,而不是因为它们看起来是空闲的而关闭它们。

NGINX支持WebSocket,允许在客户机和后端服务器之间建立隧道。NGINX要将升级请求从客户端发送到后端服务器,必须显式设置升级和连接头,如下例所示:

location /wsapp/ {
    proxy_pass http://wsbackend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
}

完成此操作后,NGINX将其作为WebSocket连接处理。

NGINX Websocket例子

下面是一个活生生的例子,展示NGINX作为WebSocket代理的工作方式。本例使用ws,这是一个基于Node.js的WebSocket实现。NGINX使用ws和Node.js作为一个简单WebSocket应用程序的反向代理。这些说明已经在Ubuntu 13.10和CentOS 6.5中测试过,但可能需要针对其他操作系统和版本进行调整。在本例中,WebSocket服务器的IP地址是192.168.100.10,NGINX服务器的IP地址是192.168.100.20。

如果尚未安装Node.js和npm,请运行以下命令:

Debian和Ubuntu:

$ sudo apt-get install nodejs npm

 

对于RHEL和CentOS:

$ sudo yum install nodejs npm

Node.js在Ubuntu上安装为nodejs,在CentOS上安装为node。这个例子使用了node,所以在Ubuntu上我们需要创建一个从nodejs到node的符号链接:

$ ln -s /usr/bin/nodejs /usr/local/bin/node

要安装ws,请运行以下命令:

$ sudo npm install ws

注意:如果您得到错误消息:“error: failed to fetch from registry: ws”,运行以下命令来修复问题:

sudo npm config set registry http://registry.npmjs.org/

然后再次运行sudo npm install ws命令。

ws附带了将用于客户机的程序/root/node_modules/ws/bin/wscat,但是我们需要创建一个程序来充当服务器。创建一个名为server.js的文件,包含以下内容:

console.log("Server started");

var Msg = '';

var WebSocketServer = require('ws').Server

    , wss = new WebSocketServer({port: 8010});

    wss.on('connection', function(ws) {

        ws.on('message', function(message) {

        console.log('Received from client: %s', message);

        ws.send('Server received from client: ' + message);

    });

 });

 

要执行服务器程序,请运行以下命令:

$ node server.js

服务器打印一个初始的“server started”消息,然后监听端口8010,等待客户机连接到它。当它接收到客户端请求时,它会对其进行回显,并向客户端发送包含它接收到的消息的消息。要有NGINX代理这些请求,我们创建以下配置:

http {
    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
 
    upstream websocket {
        server 192.168.100.10:8010;
    }
 
    server {
        listen 8020;
        location / {
            proxy_pass http://websocket;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }
}

NGINX监听端口8020并将请求代理到后端WebSocket服务器。proxy_set_header指令使NGINX能够正确处理WebSocket协议。

为了测试服务器,我们运行wscat作为我们的客户端:

$ /root/node_modules/ws/bin/wscat --connect ws://192.168.100.20:8020

wscat通过NGINX代理连接到WebSocket服务器。当您键入一条wscat要发送到服务器的消息时,您将看到它在服务器上发出回显,然后来自服务器的一条消息出现在客户机上。下面是一个互动的例子:

Server: Client:
$ node server.js 

Server started
 

 
 

 

 
wscat --connect ws://192.168.100.20:8020

Connected (press CTRL+C to quit)

> Hello
Received from client: Hello  
  < Server received from client: Hello

这里我们看到客户机和服务器能够通过NGINX进行通信,NGINX充当代理,消息可以继续来回发送,直到客户机或服务器断开连接。要使NGINX正确处理WebSocket,所需要做的就是正确地设置头文件,以处理将连接从HTTP升级到WebSocket的升级请求。

 

原文:https://www.nginx.com/blog/websocket-nginx/

本文:https://pub.intelligentx.net/nginx-websocket-proxy

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
NGINX as a WebSocket Proxy

【应用交付控制器】NGINX由Gartner在最新的应用交付控制器研究中命名

Chinese, Simplified

自成立以来,NGINX一直专注于构建软件,以帮助下一代数字业务以最高的性能,可靠性,安全性和规模开发和部署他们的应用程序,并在广大开源用户社区的支持下完成。我们很自豪地宣布,Gartner已经认可了NGINX在其Gartner应用交付控制器魔力象限1和Gartner应用交付控制器关键能力2 2016年报告方面的优势。

据Gartner称,“应用交付控制器是企业和云数据中心的关键组件,可提高应用程序可用性,性能和安全性然而,市场处于不稳定状态,传统I&O和以应用为中心的人员之间的差异越来越大“。组织需要发展其能力,这进一步推动了这一进程。 “这种变化和分叉是Gartner所称的”双峰“工作方式的缩影,它结合了IT的传统功能以及响应不确定性水平和数字化转型所需灵活性的能力。

凭借使用NGINX的1.7亿多个站点和应用程序,我们处于行业转变的最前沿。我们的用户正在从硬件和传统方法转向针对现代应用的灵活且可扩展的解决方案,其中许多解决方案部署在云或混合环境中。我们在这个不断变化的环境中帮助最具创新性的公司取得成功的经验使我们能够创建复杂且快速部署的软件,以最好地满足现代网络的需求。我们的产品是根据数百万用户的反馈以及数百名NGINX Plus客户的直接反馈而开发的。 NGINX Plus通过先进的功能和屡获殊荣的支持,进一步扩展了开源NGINX功能,为真正的企业级解决方案提供支持。

在我们首次进入Gartner Magic Quadrant时,我们很高兴能够获得模式2应用开发和模式1 /模式2混合ADC用例的关键功能报告中的最高分。我们将“模式2”解释为创新且快速变化的应用程序,这些应用程序通常是开发人员领导,而我们将“模式1”称为可预测的,不变的部署,例如现成的企业应用程序。

NGINX ranked as the top Application Delivery Controller vendor in both of the modern use cases in the Critical Capabilities report; Mode 2 Application Development, and Mode 1/Mode 2 Hybrid Application Delivery Controller

随着组织抓住机会过渡到现代网络,向现代模式2应用程序开发的不断增长的转变正在成为企业的主流。 开发过程中的这种演变不可避免地有利于那些提供基于软件和应用程序本地负载平衡工具(如NGINX)的公司。

NGINX ranked as the top Application Delivery Controller vendor in both of the modern use cases in the Critical Capabilities report; Mode 2 Application Development, and Mode 1/Mode 2 Hybrid Application Delivery Controller

 

此外,Gartner在关键能力报告中的主要发现之一表明,“到2019年,混合模式1 /模式2用例将变得更加重要,因为企业寻求弥合这两种工作方式之间的要求”。开源供应商在推动现代应用程序的性能,可靠性,安全性和规模方面发挥着至关重要的作用。 ADC市场是开源的另一个很好的例子,它通过为负载平衡工具提供更集中和精益的解决方案来获得巨大的影响力和市场份额。更快地进行创新并提供更灵活的产品的能力正在扰乱ADC市场,并帮助其与当今的数字业务一起成长。

NGINX Plus与硬件ADC的性能和最流行的功能相匹配,与传统竞争对手相比,成本节省高达75%。通过迁移到NGINX Plus的基于软件的ADC,客户还可以释放硬件设备无法提供的灵活性,因为NGINX可以在任何地方运行:私有数据中心,公共云或私有云以及容器中的裸机

NGINX Plus客户认识到,这种新方法对于实现将新服务推向市场所需的速度和灵活性是必要的。根据IgnitionOne运营副总裁AJ Wilson的说法,“因为我们正在处理来自微软,Facebook和谷歌等数据的大量数据,我们需要提出一个不同的解决方案来处理这些流量。传统的硬件负载平衡器价格昂贵,缺乏我们所需的灵活性和规模。我们之所以选择NGINX Plus,是因为它可以扩展到足以应对我们所讨论的负载,让我们相信我们可以提供解决方案。使用NGINX Plus,我们能够使用我们的硬件负载平衡器处理过去处理量的四到五倍。“

我们非常自豪能够成为模式2应用开发和模式1 /模式2混合ADC用例的顶级供应商,并且是魔力象限的关键参与者。我们相信这使我们成为现代环境中灵活,高性能负载平衡器不断增长的应用交付趋势的最前沿。我们期待在今年的年度用户大会nginx.conf 2016上与我们的团队以及现有和未来的NGINX用户一起庆祝我们的持续成功,该大会将于明天9月7日在奥斯汀开幕。

[1] Gartner“[应用交付控制器的魔力象限]”由[Andrew Lerner,Joe Skorupa,Danilo Ciscato],[2016年8月29日]。

[2] Gartner“[应用交付控制器的关键功能]”由[Mark Fabbi,Danilo Ciscato,Andrew Lerner],[2016年8月29日]。

此图由Gartner,Inc。作为更大的研究文档的一部分发布,应在整个文档的上下文中进行评估。 Gartner文件可根据NGINX,Inc。的要求提供。

Gartner不认可其研究出版物中描述的任何供应商,产品或服务,也不建议技术用户仅选择具有最高评级或其他名称的供应商。 Gartner研究出版物包含Gartner研究组织的意见,不应被视为事实陈述。 Gartner对本研究不承担任何明示或暗示的担保,包括任何适销性或适用于特定用途的担保。

原文:https://www.nginx.com/blog/nginx-named-by-gartner-top-application-delivery-controller-for-modern-day-application-delivery/

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
NGINX Named by Gartner in Latest Application Delivery Controller Research

【应用架构】高可扩展性工作流引擎Zeebe已准备就绪

Chinese, Simplified

Zeebe是Camunda的工作流引擎,旨在满足在云原生软件架构上运行的高性能应用程序的可扩展性要求,并支持跨低延迟,高吞吐量场景中跨多个微服务的工作流。 Zeebe可以通过支持消息事件在事件驱动架构(EDA)中运行。 Zeebe的新版本0.20.0刚刚作为免费社区版本发布,并被认为是生产就绪。

根据Camunda产品经理Michael Winters的说法,生产就绪意味着新版本可以可靠地处理编排用例。将发布标记为生产就绪的要求包括:

  1. 通过BPMN元素支持业务逻辑,用于大多数微服务编排用例
  2. 可以在Kubernetes集群上水平扩展
  3. 是容错的;如果节点发生故障,则不会丢失任何数据,并且会在发生此类故障时进行恢复
  4. 适用于Docker,Kubernetes和Apache Kafka等云原生组件
  5. 提供用于监控,故障排除和审核的工作流数据

传统上,工作流引擎将工作流实例的当前状态存储在数据库中。 Zeebe使用事件源并将所有状态更改作为不可变事件存储在仅附加事件日志中使用RocksDB将工作流的当前状态的投影存储为快照。日志和快照都存储在磁盘上,这是目前唯一的选择。讨论了其他选项,但目前没有一个在路线图上。

为了实现所需的容错性,弹性和水平可伸缩性,Zeebe构建为没有任何中央组件或数据库的分布式系统。可以在对等集群中设置多个Zeebe代理,该集群使用Gossip协议在集群内路由数据。对于事件日志的复制,使用Raft一致性算法。要向外扩展,可以使用单独的事件日志对每个分区使用分区。

Zeebe在Java虚拟机(JVM)上作为单独的实例运行,这是一种远程引擎方法,应用程序通过网络与Zeebe进行通信。为了保持性能,使用流式传输到客户端和二进制协议(gRPC)。这种方法为Zeebe创建了一个定义的设置和环境,并提供了与应用程序代码的隔离,

Zeebe没有实现任何ACID事务协议。为了缓解这种情况并处理执行工作流中的任务时可能发生的故障,有两种选择。通过在工作完成后通知Zeebe,至少实现一次 -  Zeebe将意识到故障并再次执行任务。通过在工作完成之前通知Zeebe,最多只能实现一次 -  Zeebe不知道任何故障,任务将不会再次执行。在事件驱动的体系结构中,工作流可以订阅外部消息,Zeebe在处理这些消息时只支持一次。

由于Zeebe使用事件源,因此无法轻松处理查询以查找(例如工作流实例)存在问题。相反,使用导出和CQRS的概念。导出器可以访问事件流并创建数据投影,Operate使用此技术,这是Zeebe附带的工具,用于监视和排除工作流故障。

最近,讨论了开源和源可用许可,开源软件背后的公司限制其许可,以防止服务提供商提供托管服务。 Zeebe是根据Zeebe社区许可证发布的,这是一种类似的源可用许可证,不允许使用Zeebe的工作流服务的商业产品。 Operate工具仍处于预览状态,并附带开发人员许可证,可免费使用。也可以为这两种产品获得企业支持。

最后一个开发人员预览版本0.18.0已经完成了功能,但是Zeebe背后的团队知道将要从即将到来的生产部署中学到很多东西。为了区分生产就绪和完成,他们因此决定调用新版本0.20.0而不是1.0.0。

在两篇博客文章中,Camunda的联合创始人兼首席技术专家BerndRücker描述了Zeebe的基础知识和主要概念,以及他们如何构建高度可扩展的分布式状态机。

为了帮助理解Zeebe的主要概念并启动并运行工作流,可以使用入门教程。

原文:https://www.infoq.com/news/2019/07/workflow-engine-zeebe-ga-release

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
High Scalability Workflow Engine Zeebe is Production Ready

开发工具

视频号

微信公众号

知识星球

Chinese, Simplified
本文地址
https://architect.pub/developmenttools
SEO Title
/development_tools

【Node.js精选】令人愉快的Node.js包和资源

Chinese, Simplified

Delightful Node.js packages and resources https://node.cool

 

Contents

Packages

Mad science

  • webtorrent - Streaming torrent client for Node.js and the browser.
  • peerflix - Streaming torrent client.
  • dat - Real-time replication and versioning for data sets.
  • ipfs - Distributed file system that seeks to connect all computing devices with the same system of files.
  • stackgl - Open software ecosystem for WebGL, built on top of browserify and npm.
  • peerwiki - All of Wikipedia on BitTorrent.
  • peercast - Stream a torrent video to Chromecast.
  • BitcoinJS - Clean, readable, proven Bitcoin library.
  • Bitcore - Pure and powerful Bitcoin library.
  • PDFKit - PDF generation library.
  • turf - Modular geospatial processing and analysis engine.
  • webcat - p2p pipe across the web using WebRTC that uses your GitHub private/public key for authentication.
  • NodeOS - The first operating system powered by npm.
  • YodaOS - AI operating system.
  • Brain.js - Machine-learning framework.
  • Cytoscape.js - Graph theory (a.k.a. network) modeling and analysis.
  • Kadence - Kademlia distributed hash table.
  • seedshot - Temporary P2P screenshot sharing from your browser.
  • js-git - JavaScript implementation of Git.
  • skale - High performance distributed data processing engine.
  • xlsx - Pure JS Excel spreadsheet reader and writer.
  • isomorphic-git - Pure JavaScript implementation of Git.

Command-line apps

  • np - Better npm publish.
  • npm-name - Check a package name's availability on npm.
  • gh-home - Open the GitHub page of the repo in the current directory.
  • npm-home - Open the npm page of a package.
  • trash - Safer alternative to rm.
  • speed-test - Test your internet connection speed and ping.
  • emoj - Find relevant emoji from text on the command-line.
  • pageres - Capture website screenshots.
  • cpy - Copy files.
  • vtop - More better top, with nice charts.
  • empty-trash - Empty the trash.
  • is-up - Check whether a website is up or down.
  • is-online - Check if the internet connection is up.
  • public-ip - Get your public IP address.
  • clipboard-cli - Copy & paste on the terminal.
  • XO - Enforce strict code style using the JavaScript happiness style.
  • Standard - JavaScript Standard Style — One style to rule them all.
  • ESLint - The pluggable linting utility for JavaScript.
  • dev-time - Get the current local time of a GitHub user.
  • David - Tells you when your package npm dependencies are out of date.
  • http-server - Simple, zero-config command-line HTTP server.
  • Live Server - Development HTTP-server with livereload capability.
  • bcat - Pipe command output to web browsers.
  • normit - Google Translate with speech synthesis in your terminal.
  • fkill - Fabulously kill processes. Cross-platform.
  • pjs - Pipeable JavaScript. Quickly filter, map, and reduce from the terminal.
  • license-checker - Check licenses of your app's dependencies.
  • browser-run - Easily run code in a browser environment.
  • tmpin - Adds stdin support to any CLI app that accepts file input.
  • wifi-password - Get the current wifi password.
  • wallpaper - Change the desktop wallpaper.
  • brightness - Change the screen brightness.
  • torrent - Download torrents.
  • kill-tabs - Kill all Chrome tabs to improve performance, decrease battery usage, and save memory.
  • alex - Catch insensitive, inconsiderate writing.
  • pen - Live Markdown preview in the browser from your favorite editor.
  • subdownloader - Subtitle downloader for movies and TV series.
  • dark-mode - Toggle the macOS Dark Mode.
  • iponmap - IP location finder.
  • Jsome - Pretty prints JSON with configurable colors and indentation.
  • itunes-remote - Interactively control iTunes.
  • mobicon - Mobile app icon generator.
  • mobisplash - Mobile app splash screen generator.
  • diff2html-cli - Pretty git diff to HTML generator.
  • Cash - Cross-platform Unix shell commands in pure JavaScript.
  • trymodule - Try out npm packages in the terminal.
  • jscpd - Copy/paste detector for source code.
  • atmo - Server-side API mocking.
  • auto-install - Auto installs dependencies as you code.
  • lessmd - Markdown in the terminal.
  • cost-of-modules - Find out which dependencies are slowing you down.
  • localtunnel - Expose your localhost to the world.
  • svg-term-cli - Share terminal sessions via SVG.
  • gtop - System monitoring dashboard for the terminal.
  • themer - Generate themes for your editor, terminal, wallpaper, Slack, and more.
  • carbon-now-cli - Beautiful images of your code — from right inside your terminal.
  • cash-cli - Convert between 170 currencies.
  • taskbook - Tasks, boards & notes for the command-line habitat.
  • discharge - Easily deploy static websites to Amazon S3.

Functional programming

  • lodash - Utility library delivering consistency, customization, performance, & extras. A better and faster Underscore.js.
  • immutable - Immutable data collections.
  • Ramda - Utility library with a focus on flexible functional composition enabled by automatic currying and reversed argument order. Avoids mutating data.
  • Folktale - Suite of libraries for generic functional programming in JavaScript that allows you to write elegant, modular applications with fewer bugs, and more reuse.
  • Mout - Utility library with the biggest difference between other existing solutions is that you can choose to load only the modules/functions that you need, no extra overhead.
  • Bacon.js - Functional reactive programming.
  • RxJS - Functional reactive library for transforming, composing, and querying various kinds of data.
  • Lazy.js - Utility library similar to lodash/Underscore but with lazy evaluation, which can translate to superior performance in many cases.
  • Kefir.js - Reactive library with focus on high performance and low memory usage.

HTTP

  • got - Nicer interface to the built-in http module.
  • gh-got - Convenience wrapper for got to interact with the GitHub API.
  • axios - Promise based HTTP client (works in the browser too).
  • request - Simplified HTTP request client.
  • wreck - HTTP Client Utilities.
  • download - Download and extract files effortlessly.
  • http-proxy - HTTP proxy.
  • superagent - HTTP request library.
  • node-fetch - window.fetch for Node.js.
  • flashheart - REST client.
  • http-fake-backend - Build a fake backend by providing the content of JSON files or JavaScript objects through configurable routes.
  • cacheable-request - Wrap native HTTP requests with RFC compliant cache support.
  • gotql - GraphQL request library built on got.
  • global-agent – Global HTTP/HTTPS proxy agent that is configurable using environment variables.

Debugging / Profiling

  • ndb - Improved debugging experience, enabled by Chrome DevTools.
  • ironNode - Node.js debugger supporting ES2015 out of the box.
  • node-inspector - Debugger based on Blink Developer Tools.
  • debug - Tiny debugging utility.
  • why-is-node-running - Node.js is running but you don't know why?
  • njsTrace - Instrument and trace your code, see all function calls, arguments, return values, as well as the time spent in each function.
  • vstream - Instrumentable streams mix-ins to inspect a pipeline of streams.
  • stackman - Enhance an error stacktrace with code excerpts and other goodies.
  • locus - Starts a REPL at runtime that has access to all variables.
  • 0x - Flamegraph profiling.
  • ctrace - Well-formatted and improved trace system calls and signals.
  • leakage - Write memory leak tests.
  • llnode - Post-mortem analysis tool which allows you to inspect objects and get insights from a crashed Node.js process.
  • thetool - Capture different CPU, memory, and other profiles for your app in Chrome DevTools friendly format.

Logging

  • pino - Extremely fast logger inspired by Bunyan.
  • winston - Multi-transport async logging library.
  • console-log-level - The most simple logger imaginable with support for log levels and custom prefixes.
  • storyboard - End-to-end, hierarchical, real-time, colorful logs and stories.
  • signale - Hackable console logger with beautiful output.

Command-line utilities

  • chalk - Terminal string styling done right.
  • meow - CLI app helper.
  • yargs - Command-line parser that automatically generates an elegant user-interface.
  • ora - Elegant terminal spinner.
  • get-stdin - Easier stdin.
  • log-update - Log by overwriting the previous output in the terminal. Useful for rendering progress bars, animations, etc.
  • Ink - React for interactive command-line apps.
  • listr - Terminal task list.
  • conf - Simple config handling for your app or module.
  • ansi-escapes - ANSI escape codes for manipulating the terminal.
  • log-symbols - Colored symbols for various log levels.
  • figures - Unicode symbols with Windows CMD fallbacks.
  • boxen - Create boxes in the terminal.
  • terminal-link - Create clickable links in the terminal.
  • terminal-image - Display images in the terminal.
  • string-width - Get the visual width of a string - the number of columns required to display it.
  • cli-truncate - Truncate a string to a specific width in the terminal.
  • first-run - Check if it's the first time the process is run.
  • blessed - Curses-like library.
  • Inquirer.js - Interactive command-line prompt.
  • yn - Parse yes/no like values.
  • cli-table3 - Pretty unicode tables.
  • drawille - Draw on the terminal with unicode braille characters.
  • update-notifier - Update notifications for your CLI app.
  • ascii-charts - ASCII bar chart in the terminal.
  • progress - Flexible ascii progress bar.
  • insight - Helps you understand how your tool is being used by anonymously reporting usage metrics to Google Analytics.
  • cli-cursor - Toggle the CLI cursor.
  • columnify - Create text-based columns suitable for console output. Supports cell wrapping.
  • cli-columns - Columnated unicode and ansi-safe text lists.
  • cfonts - Sexy ASCII fonts for the console.
  • multispinner - Multiple, simultaneous, individually controllable CLI spinners.
  • omelette - Shell autocompletion helper.
  • cross-env - Set environment variables cross-platform.
  • shelljs - Portable Unix shell commands.
  • sudo-block - Block users from running your app with root permissions.
  • loud-rejection - Make unhandled promise rejections fail loudly instead of the default silent fail.
  • sparkly - Generate sparklines ▁▂▃▅▂▇.
  • Bit - Create, maintain, find and use small modules and components across repositories.
  • gradient-string - Beautiful color gradients in terminal output.
  • oclif - CLI framework complete with parser, automatic documentation, testing, and plugins.
  • term-size - Reliably get the terminal window size.
  • Cliffy - Framework for interactive CLIs.

Build tools

  • parcel - Blazing fast, zero config web app bundler.
  • webpack - Packs modules and assets for the browser.
  • rollup - Next-generation ES2015 module bundler.
  • gulp - Streaming and fast build system that favors code over config.
  • Broccoli - Fast, reliable asset pipeline, supporting constant-time rebuilds and compact build definitions.
  • Brunch - Front-end web app build tool with simple declarative config, fast incremental compilation, and an opinionated workflow.
  • Start - Functional task runner with shareable presets.
  • ygor - Promising task runner for when npm run isn't enough and everything else is too much.
  • FuseBox - Fast build system that combines the power of webpack, JSPM and SystemJS, with first-class TypeScript support.
  • pkg - Package your Node.js project into an executable.

Hardware

  • johnny-five - Firmata based Arduino Framework.
  • serialport - Access serial ports for reading and writing.
  • usb - USB library.
  • i2c-bus - I2C serial bus access.
  • onoff - GPIO access and interrupt detection.
  • spi-device - SPI serial bus access.
  • pigpio - Fast GPIO, PWM, servo control, state change notification, and interrupt handling on the Raspberry Pi.
  • gps - NMEA parser for handling GPS receivers.

Templating

  • marko - HTML-based templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags.
  • nunjucks - Templating engine with inheritance, asynchronous control, and more (jinja2 inspired).
  • handlebars.js - Superset of Mustache templates which adds powerful features like helpers and more advanced blocks.
  • EJS - Simple unopinionated templating language.
  • Pug - High-performance template engine heavily influenced by Haml.

Web frameworks

  • Hapi - Framework for building applications and services.
  • Koa - Framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.
  • Express - Web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.
  • Feathers - Microservice framework built in the spirit of Express.
  • LoopBack - Powerful framework for creating REST APIs and easily connecting to backend data sources.
  • Meteor - An ultra-simple, database-everywhere, data-on-the-wire, pure-Javascript web framework. (You might like awesome-meteor)
  • Restify - Enables you to build correct REST web services.
  • ThinkJS - Framework with ES2015+ support, WebSockets, REST API.
  • ActionHero - Framework for making reusable & scalable APIs for TCP sockets, WebSockets, and HTTP clients.
  • MERN - Easily build production-ready universal apps with MongoDB, Express, React, and webpack.
  • Next.js - Minimalistic framework for server-rendered universal JavaScript web apps.
  • Nuxt.js - Minimalistic framework for server-rendered Vue.js apps.
  • seneca - Toolkit for writing microservices.
  • AdonisJs - A true MVC framework for Node.js built on solid foundations of Dependency Injection and IoC container.
  • Hemera - Write reliable and fault-tolerant microservices with NATS.
  • Micro - Minimalistic microservice framework with an async approach.
  • Moleculer - Fast & powerful microservices framework.
  • Fastify - Fast and low overhead web framework.
  • Nest - Angular-inspired framework for building efficient and scalable server-side apps.
  • Zeronode - Minimal building block for reliable and fault-tolerant microservices.
  • TypeGraphQL - Modern framework for creating GraphQL APIs with TypeScript, using classes and decorators.

Documentation

  • documentation.js - API documentation generator with support for ES2015+ and flow annotation.
  • ESDoc - Documentation generator targeting ES2015, attaching test code and measuring documentation coverage.
  • Docco - Documentation generator which produces an HTML document that displays your comments intermingled with your code.
  • JSDoc - API documentation generator similar to JavaDoc or PHPDoc.

Filesystem

  • del - Delete files/folders using globs.
  • globby - Glob files with support for multiple patterns.
  • cpy - Copy files.
  • rimraf - Recursively delete files like rm -rf.
  • make-dir - Recursively create directories like mkdir -p.
  • graceful-fs - Drop-in replacement for the fs module with various improvements.
  • chokidar - Filesystem watcher which stabilizes events from fs.watch and fs.watchFile as well as using native fsevents on macOS.
  • find-up - Find a file by walking up parent directories.
  • proper-lockfile - Inter-process and inter-machine lockfile utility.
  • load-json-file - Read and parse a JSON file.
  • write-json-file - Stringify and write JSON to a file atomically.
  • fs-write-stream-atomic - Like fs.createWriteStream(), but atomic.
  • filenamify - Convert a string to a valid filename.
  • lnfs - Force create symlinks like ln -fs.
  • istextorbinary - Check if a file is text or binary.
  • fs-jetpack - Completely redesigned file system API for convenience in everyday use.
  • fs-extra - Extra methods for the fs module.
  • pkg-dir - Find the root directory of an npm package.
  • filehound - Flexible and fluent interface for searching the file system.
  • move-file - Move a file, even works across devices.
  • tempy - Get a random temporary file or directory path.

Control flow

  • Promises
    • Bluebird - Promise library with focus on innovative features and performance.
    • pify - Promisify a callback-style function.
    • delay - Delay a promise a specified amount of time.
    • promise-memoize - Memoize promise-returning functions, with expire and prefetch.
    • valvelet - Limit the execution rate of a promise-returning function.
    • p-map - Map over promises concurrently.
    • More…
  • Observables
  • Streams
    • Highland.js - Manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
  • Callbacks
    • each-async - Async concurrent iterator like forEach.
    • async - Provides straight-forward, powerful functions for working with asynchronicity.
  • Channels
    • js-csp - Communicating sequential processes for JavaScript (like Clojurescript core.async, or Go).

Streams

  • through2 - Tiny wrapper around streams2 Transform to avoid explicit subclassing noise.
  • from2 - Convenience wrapper for ReadableStream, inspired by through2.
  • get-stream - Get a stream as a string or buffer.
  • into-stream - Convert a buffer/string/array/object into a stream.
  • duplexify - Turn a writeable and readable stream into a single streams2 duplex stream.
  • pumpify - Combine an array of streams into a single duplex stream.
  • peek-stream - Transform stream that lets you peek the first line before deciding how to parse it.
  • binary-split - Newline (or any delimiter) splitter stream.
  • byline - Super-simple line-by-line Stream reader.
  • first-chunk-stream - Transform the first chunk in a stream.
  • pad-stream - Pad each line in a stream.
  • multistream - Combine multiple streams into a single stream.
  • stream-combiner2 - Turn a pipeline into a single stream.
  • readable-stream - Mirror of Streams2 and Streams3 implementations in core.
  • through2-concurrent - Transform object streams concurrently.

Real-time

  • µWebSockets - Highly scalable WebSocket server & client library.
  • Socket.io - Enables real-time bidirectional event-based communication.
  • Faye - Real-time client-server message bus, based on Bayeux protocol.
  • SocketCluster - Scalable HTTP + WebSocket engine which can run on multiple CPU cores.
  • Primus - An abstraction layer for real-time frameworks to prevent module lock-in.
  • deepstream.io - Scalable real-time microservice framework.
  • Kalm - Low-level socket router and middleware framework.
  • MQTT.js - Client for MQTT - Pub-sub based messaging protocol for use on top of TCP/IP.
  • rpc-websockets - JSON-RPC 2.0 implementation over WebSockets.
  • Aedes - Barebone MQTT server that can run on any stream server.

Image

  • sharp - The fastest module for resizing JPEG, PNG, WebP and TIFF images.
  • image-type - Detect the image type of a Buffer/Uint8Array.
  • gm - GraphicsMagick and ImageMagick wrapper.
  • lwip - Lightweight image processor which does not require ImageMagick.
  • pica - High quality & fast resize (lanczos3) in pure JS. Alternative to canvas drawImage(), when no pixelation allowed.
  • jimp - Image processing in pure JavaScript.
  • probe-image-size - Get the size of most image formats without a full download.
  • qrcode - QR code and bar code generator.

Text

  • iconv-lite - Convert character encodings.
  • string-length - Get the real length of a string - by correctly counting astral symbols and ignoring ansi escape codes.
  • camelcase - Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar.
  • escape-string-regexp - Escape RegExp special characters.
  • execall - Find multiple RegExp matches in a string.
  • splice-string - Remove or replace part of a string like Array#splice.
  • indent-string - Indent each line in a string.
  • strip-indent - Strip leading whitespace from every line in a string.
  • detect-indent - Detect the indentation of code.
  • he - HTML entity encoder/decoder.
  • i18n-node - Simple translation module with dynamic JSON storage.
  • babelfish - i18n with very easy syntax for plurals.
  • matcher - Simple wildcard matching.
  • unhomoglyph - Normalize visually similar unicode characters.
  • i18next - Internationalization framework.

Number

  • random-int - Generate a random integer.
  • random-float - Generate a random float.
  • unique-random - Generate random numbers that are consecutively unique.
  • round-to - Round a number to a specific number of decimal places: 1.234 → 1.2.

Math

  • ndarray - Multidimensional arrays.
  • mathjs - An extensive math library.
  • math-clamp - Clamp a number.
  • algebra - Algebraic structures.
  • multimath - Core to create fast image math in WebAssembly and JS.

Date

  • Luxon - Library for working with dates and times.
  • date-fns - Modern date utility.
  • Moment.js - Parse, validate, manipulate, and display dates.
  • Day.js - Immutable date library alternative to Moment.js.
  • dateformat - Date formatting.
  • tz-format - Format a date with timezone: 2015-11-30T10:40:35+01:00.
  • cctz - Fast parsing, formatting, and timezone conversation for dates.

URL

Data validation

  • joi - Object schema description language and validator for JavaScript objects.
  • is-my-json-valid - JSON Schema validator that uses code generation to be extremely fast.
  • property-validator - Easy property validation for Express.
  • schema-inspector - JSON API sanitization and validation.
  • ajv - The fastest JSON Schema validator. Supports v5, v6 and v7 proposals.

Parsing

  • remark - Markdown processor powered by plugins.
  • markdown-it - Markdown parser with 100% CommonMark support, extensions and syntax plugins.
  • parse5 - Fast full-featured spec compliant HTML parser.
  • strip-json-comments - Strip comments from JSON.
  • strip-css-comments - Strip comments from CSS.
  • parse-json - Parse JSON with more helpful errors.
  • URI.js - URL mutation.
  • PostCSS - CSS parser / stringifier.
  • JSONStream - Streaming JSON.parse and stringify.
  • neat-csv - Fast CSV parser. Callback interface for the above.
  • csv-parser - Streaming CSV parser that aims to be faster than everyone else.
  • PEG.js - Simple parser generator that produces fast parsers with excellent error reporting.
  • x-ray - Web scraping utility.
  • nearley - Simple, fast, powerful parsing for JavaScript.
  • binary-extract - Extract a value from a buffer of JSON without parsing the whole thing.
  • Stylecow - Parse, manipulate and convert modern CSS to make it compatible with all browsers. Extensible with plugins.
  • js-yaml - Very fast YAML parser.
  • xml2js - XML to JavaScript object converter.
  • Jison - Friendly JavaScript parser generator. It shares genes with Bison, Yacc and family.
  • google-libphonenumber - Parse, format, store and validate phone numbers.
  • ref - Read/write structured binary data in Buffers.
  • xlsx-populate - Read/write Excel XLSX.
  • Chevrotain - Very fast and feature rich parser building toolkit for JavaScript.
  • fast-xml-parser - Validate and parse XML.

Humanize

  • pretty-bytes - Convert bytes to a human readable string: 1337 → 1.34 kB.
  • pretty-ms - Convert milliseconds to a human readable string: 1337000000 → 15d 11h 23m 20s.
  • ms - Tiny millisecond conversion utility.
  • pretty-error - Errors with less clutter.
  • read-art - Extract readable content from any page.

Compression

  • yazl - Zip.
  • yauzl - Unzip.
  • Archiver - Streaming interface for archive generation, supporting ZIP and TAR.
  • pako - High speed zlib port to pure js (deflate, inflate, gzip).
  • tar-stream - Streaming tar parser and generator. Also see tar-fs.
  • decompress - Decompression module with support for tartar.gz and zip files out of the box.

Network

  • get-port - Get an available port.
  • ipify - Get your public IP address.
  • getmac - Get the computer MAC address.
  • DHCP - DHCP client and server.
  • netcat - Netcat port in pure JS.

Database

  • Drivers
  • ODM / ORM
    • Sequelize - Multi-dialect ORM. Supports PostgreSQL, SQLite, MySQL.
    • Bookshelf - ORM for PostgreSQL, MySQL and SQLite3 in the style of Backbone.js.
    • Massive - PostgreSQL data access tool.
    • Mongoose - Elegant MongoDB object modeling.
    • Waterline - Datastore-agnostic tool that dramatically simplifies interaction with one or more databases.
    • OpenRecord - ORM for PostgreSQL, MySQL, SQLite3 and RESTful datastores. Similar to ActiveRecord.
    • pg-promise - PostgreSQL framework for native SQL using promises.
    • slonik - PostgreSQL client with strict types, detailed logging and assertions.
    • Objection.js - Lightweight ORM built on the SQL query builder Knex.
    • TypeORM - ORM for PostgreSQL, MariaDB, MySQL, SQLite, and more.
  • Query builder
    • Knex - Query builder for PostgreSQL, MySQL and SQLite3, designed to be flexible, portable, and fun to use.
  • Other
    • NeDB - Embedded persistent database written in JavaScript.
    • Lowdb - Small JavaScript database powered by Lodash.
    • Keyv - Simple key-value storage with support for multiple backends.
    • Finale - RESTful endpoint generator for your Sequelize models.
    • database-js - Wrapper for multiple databases with a JDBC-like connection.
    • Mongo Seeding - Populate MongoDB databases with JavaScript and JSON files.

Testing

  • AVA - Futuristic test runner.
  • Mocha - Feature-rich test framework making asynchronous testing simple and fun.
  • nyc - Code coverage tool built on istanbul that works with subprocesses.
  • tap - TAP test framework.
  • tape - TAP-producing test harness.
  • power-assert - Provides descriptive assertion messages through the standard assert interface.
  • Mochify - TDD with Browserify, Mocha, PhantomJS and WebDriver.
  • trevor - Run tests against multiple versions of Node.js without switching versions manually or pushing to Travis CI.
  • loadtest - Run load tests for your web application, with an API for automation.
  • Sinon.JS - Test spies, stubs and mocks.
  • navit - PhantomJS / SlimerJS wrapper to simplify browser test scripting.
  • Nock - HTTP mocking and expectations.
  • intern - Code testing stack.
  • toxy - Hackable HTTP proxy to simulate failure scenarios and network conditions.
  • hook-std - Hook and modify stdout/stderr.
  • testen - Run tests for multiple versions of Node.js locally with NVM.
  • Nightwatch - Automated UI testing framework based on Selenium WebDriver.
  • WebdriverIO - Automated testing based on the WebDriver protocol.
  • Jest - Painless JavaScript testing.
  • TestCafe - Automated browser testing.
  • abstruse - Continuous Integration server.
  • CodeceptJS - End-to-end testing.

Security

  • upash - Unified API for all password hashing algorithms.
  • themis - Multilanguage framework for making typical encryption schemes easy to use: data at rest, authenticated data exchange, transport protection, authentication, and so on.
  • GuardRails - GitHub app that provides security feedback in pull requests.
  • rate-limiter-flexible - Brute-force and DDoS attack protection.
  • crypto-hash - Async non-blocking hashing.

Benchmarking

  • Benchmark.js - Benchmarking library that supports high-resolution timers and returns statistically significant results.
  • matcha - Simplistic approach to benchmarking.

Minifiers

Authentication

  • Passport - Simple, unobtrusive authentication.
  • Grant - OAuth middleware for Express, Koa, and Hapi.
  • CloudRail - Unified API for social authentication (Facebook, Twitter, Slack, Instagram, …).

Authorization

  • CASL - Isomorphic authorization for UI and API.
  • node-casbin - Authorization library that supports access control models like ACL, RBAC and ABAC.

Email

  • Nodemailer - The fastest way to handle email.
  • emailjs - Send text/HTML emails with attachments to any SMTP server.
  • email-templates - Create, preview, and send custom email templates.

Job queues

  • bull - Persistent job and message queue.
  • agenda - MongoDB-backed job scheduling.
  • idoit - Redis-backed job queue engine with advanced job control.
  • node-resque - Redis-backed job queue.
  • rsmq - Redis-backed message queue.
  • bee-queue - High-performance Redis-backed job queue.
  • RedisSMQ - Simple high-performance Redis message queue with real-time monitoring.
  • sqs-consumer - Build Amazon Simple Queue Service (SQS) based apps without the boilerplate.
  • better-queue - Simple and efficient job queue when you cannot use Redis.

Node.js management

  • n - Node.js version management.
  • nave - Virtual Environments for Node.js.
  • nodeenv - Node.js virtual environment compatible to Python's virtualenv.
  • nvm for Windows - Version management for Windows.
  • nodenv - Version manager that is similar to Ruby's rbenv. It supports auto version switching.

Natural language processing

  • retext - An extensible natural language system.
  • franc - Detect the language of text.
  • leven - Measure the difference between two strings using the Levenshtein distance algorithm.
  • natural - Natural language facility.
  • nlp.js - Building bots, with entity extraction, sentiment analysis, automatic language identify, and more.

Process management

  • PM2 - Advanced Process Manager.
  • nodemon - Monitor for changes in your app and automatically restart the server.
  • node-mac - Run scripts as a native Mac daemon and log to the console app.
  • node-linux - Run scripts as native system service and log to syslog.
  • node-windows - Run scripts as a native Windows service and log to the Event viewer.
  • supervisor - Restart scripts when they crash or restart when a *.js file changes.
  • Phusion Passenger - Friendly process manager that integrates directly into Nginx.

Automation

  • robotjs - Desktop Automation: control the mouse, keyboard and read the screen.

AST

  • Acorn - Tiny, fast JavaScript parser.
  • babel-parser - JavaScript parser used in Babel.
  • cherow - JavaScript parser with focus on performance and stability.

Static site generators

  • Wintersmith - Flexible, minimalistic, multi-platform static site generator.
  • Assemble - Static site generator for Node.js, Grunt.js, and Yeoman.
  • DocPad - Static site generator with dynamic abilities and huge plugin ecosystem.
  • Phenomic - Modern static website generator based on the React and Webpack ecosystem.
  • docsify - Markdown documentation site generator with no statically built HTML files.

Content management systems

  • KeystoneJS - CMS and web application platform built on Express and MongoDB.
  • ApostropheCMS - Content management system with an emphasis on intuitive front end content editing and administration built on Express and MongoDB.
  • Strapi - Content Management Framework (headless-CMS) to build powerful APIs.
  • Tipe - Developer-first content management system with GraphQL and REST API from a schema file.

Forum

  • nodeBB - Forum platform for the modern web.

Blogging

  • Ghost - Simple, powerful publishing platform.
  • Hexo - Fast, simple and powerful blogging framework.

Weird

Serialization

  • snappy - Native bindings for Google's Snappy compression library.
  • protobuf - Implementation of Protocol Buffers.
  • compactr - Implementation of the Compactr protocol.

Miscellaneous

  • execa - Better child_process.
  • cheerio - Fast, flexible, and lean implementation of core jQuery designed specifically for the server.
  • Electron - Build cross platform desktop apps with web technologies. (You might like awesome-electron)
  • open - Opens stuff like websites, files, executables.
  • hasha - Hashing made simple. Get the hash of a buffer/string/stream/file.
  • dot-prop - Get a property from a nested object using a dot path.
  • onetime - Only run a function once.
  • mem - Memoize functions - an optimization technique used to speed up consecutive function calls by caching the result of calls with identical input.
  • import-fresh - Import a module while bypassing the cache.
  • strip-bom - Strip UTF-8 byte order mark (BOM) from a string/buffer/stream.
  • os-locale - Get the system locale.
  • ssh2 - SSH2 client and server module.
  • adit - SSH tunneling made simple.
  • import-lazy - Import a module lazily.
  • file-type - Detect the file type of a Buffer.
  • Bottleneck - Rate limiter that makes throttling easy.
  • ow - Function argument validation for humans.
  • webworker-threads - Lightweight Web Worker API implementation with native threads.
  • clipboardy - Access the system clipboard (copy/paste).
  • node-pre-gyp - Makes it easy to publish and install Node.js C++ addons from binaries.
  • opencv - Bindings for OpenCV. The defacto computer vision library.
  • dotenv - Load environment variables from .env file.
  • remote-git-tags - Get tags from a remote git repo.
  • semver - Semantic version parser.
  • Faker.js - Generate massive amounts of fake data.
  • nodegit - Native bindings to Git.
  • json-strictify - Safely serialize a value to JSON without data loss or going into an infinite loop.
  • resolve-from - Resolve the path of a module like require.resolve() but from a given path.
  • simplecrawler - Event driven web crawler.
  • jsdom - JavaScript implementation of HTML and the DOM.
  • hypernova - Server-side rendering your JavaScript views.
  • @sindresorhus/is - Type check values.
  • env-dot-prop - Get, set, or delete nested properties of process.env using a dot path.
  • emittery - Simple and modern async event emitter.
  • node-video-lib - Pure JavaScript library for working with MP4 and FLV video files and creating MPEG-TS chunks for HLS streaming.
  • basic-ftp – FTP/FTPS client.

Resources

Tutorials

  • Node.js Best Practices - Summary and curation of the top-ranked content on Node.js best practices, available in multiple languages.
  • Nodeschool - Learn Node.js with interactive lessons.
  • The Art of Node - An introduction to Node.js.
  • stream-handbook - How to write Node.js programs with streams.
  • module-best-practices - Some good practices when writing new npm modules.
  • The Node Way - An entire philosophy of Node.js best practices and guiding principles exists for writing maintainable modules, scalable applications, and code that is actually pleasant to read.
  • You Don't Know Node.js - Introduction to Node.js core features and asynchronous JavaScript.
  • Portable Node.js guide - Practical guide on how to write portable/cross-platform Node.js code.

Discovery

Articles

Newsletters

Videos

Books

Blogs

  • Node.js blog
  • webapplog.com - Blog posts on Node.js and JavaScript from the author of Practical Node.js and Pro Express.js Azat Mardan.

Courses

Cheatsheets

  • Express.js
  • Stream FAQs - Answering common questions about streams, covering pagination, events, and more.
  • Strong Node.js - Checklist for source code security analysis of a Node.js web service.

Tools

  • OctoLinker - Chrome extension that linkifies dependencies in package.json, .js, .jsx, .coffee and .md files on GitHub.
  • npm-hub - Chrome extension to display npm dependencies at the bottom of a repo's readme.
  • RunKit - Embed a Node.js environment on any website.
  • RequireBin - Shareable JavaScript programs powered by npm and browserify.
  • github-npm-stats - Chrome extension that displays npm download stats on GitHub.
  • npm semver calculator - Visually explore what versions of a package a semver range matches.

Community

Miscellaneous

Related lists

 

 

原文:

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
Delightful Node.js packages and resources

【PHP精选】精选的PHP库,资源和闪亮的东西的精选列表。

Chinese, Simplified

A curated list of amazingly awesome PHP libraries, resources and shiny things.

Contributing and Collaborating

Please see CONTRIBUTINGCODE-OF-CONDUCT and COLLABORATING for details.

Table of Contents

Composer Repositories

Composer Repositories.

Dependency Management

Libraries for dependency and package management.

  • Composer Installers - A multi framework Composer library installer.
  • Composer - A package and dependency manager.
  • Melody - A tool to build one file Composer scripts.
  • Pickle - A PHP extension installer.

Dependency Management Extras

Extras related to dependency management.

  • Composed - A library to parse your project's Composer environment at runtime.
  • Composer Merge Plugin - A composer plugin to merge several composer.json files.
  • Prestissimo - A composer plugin which enables parallel install process.
  • Satis - A static Composer repository generator.
  • tooly - A library to manage PHAR files in project using Composer.
  • Toran Proxy - A static Composer repository and proxy.

Frameworks

Web development frameworks.

  • Aura Framework - A framework built from independent components.
  • CakePHP - A rapid application development framework (CP).
  • Laravel 5 - Another PHP framework (L5).
  • Nette - Another framework comprised of individual components.
  • Phalcon - A framework implemented as a C extension.
  • PPI Framework 2 - An interoperability framework.
  • Symfony - A framework comprised of individual components (SF).
  • Yii2 - Another PHP framework.
  • Zend Framework 3 - A framework comprised of individual components (ZF3).
  • Ice - Another simple and fast PHP framework delivered as C-extension.

Framework Extras

Extras related to web development frameworks.

  • CakePHP CRUD - A Rapid Application Development (RAD) plugin for CakePHP.
  • Knp RAD Components - A set of Rapid Application Development (RAD) components for Symfony.
  • Symfony CMF - A Content Management Framework to create custom CMS.

Content Management Systems (CMS)

Tools for managing digital content.

  • Backdrop - A CMS targeting small-to-medium sized business and non-profits (a fork of Drupal).
  • Concrete5 - A CMS targering users with a minimum of technical skills.
  • Drupal - An enterprise level CMS.
  • Grav - A modern flat-file CMS.
  • Joomla - Another leading CMS.
  • WordPress A blogging platform and CMS.

Components

Standalone components from web development frameworks and development groups.

Micro Frameworks

Micro frameworks and routers.

  • Bullet PHP - A micro framework for building REST APIs.
  • Lumen - A micro-framework by Laravel.
  • Radar - An Action-Domain-Responder implementation for PHP.
  • Slim - Another simple micro framework.
  • Expressive - A micro-framework by Zend.

Micro Framework Extras

Extras related to micro frameworks and routers.

Routers

Libraries for handling application routing.

  • Aura.Router - A full-featured routing library.
  • Fast Route - A fast routing library.
  • Klein - A flexible router.
  • Pux - Another fast routing library.
  • Route - A routing library built on top of Fast Route.

Templating

Libraries and tools for templating and lexing.

  • Aura.View - Provides TemplateView and TwoStepView using PHP as the tempting language, with support for partials, sections, and helpers.
  • Foil - Another native PHP templating library.
  • MtHaml - A PHP implementation of the HAML template language.
  • Mustache - A PHP implementation of the Mustache template language.
  • PHPTAL - A PHP implementation of the TAL templating language.
  • Plates - A native PHP templating library.
  • Smarty - A template engine to complement PHP.
  • Twig - A comprehensive templating language.
  • Tale Jade - A PHP implementation of the Jade template language.

Static Site Generators

Tools for pre-processing content to generate web pages.

  • Couscous - Couscous turns Markdown documentation into beautiful websites. It's GitHub Pages on steroids.
  • Sculpin - A tool that converts Markdown and Twig into static HTML.
  • Spress - An extensible tool that converts Markdown and Twig into HTML.

HTTP

Libraries for working with HTTP.

  • Buzz - Another HTTP client.
  • Guzzle - A comprehensive HTTP client.
  • HTTPlug - An HTTP client abstraction without binding to a specific implementation.
  • PHP VCR - A library for recording and replaying HTTP requests.
  • Requests - A simple HTTP library.
  • Retrofit - A library to ease creation of REST API clients.
  • Symfony HTTP Client - A component to fetch HTTP resources synchronously or asynchronously.
  • zend-diactoros - PSR-7 HTTP Message implementation.

Scraping

Libraries for scraping websites.

  • Embed - An information extractor from any web service or page.
  • Goutte - A simple web scraper.
  • Symfony Panther - A browser testing and web crawling library for PHP and Symfony.
  • PHP Spider - A configurable and extensible PHP web spider.

Middlewares

Libraries for building application using middlewares.

  • Expressive - PSR-7 Middleware framework from Zend.
  • PSR7-Middlewares - Inspiring collection of handy middlewares.
  • Relay - A PHP 5.5 PSR-7 middleware dispatcher.
  • Stack - A library of stackable middleware for Silex/Symfony.
  • zend-stratigility - Middleware for PHP built on top of PSR-7.

URL

Libraries for parsing URLs.

  • PHP Domain Parser - A domain suffix parser library.
  • Purl - A URL manipulation library.
  • sabre/uri - A functional URI manipulation library.
  • Uri - Another URL manipulation library.

Email

Libraries for sending and parsing email.

Files

Libraries for file manipulation and MIME type detection.

  • CSV - A CSV data manipulation library.
  • Flysystem - Another filesystem abstraction layer.
  • Gaufrette - A filesystem abstraction layer.
  • Hoa Mime - Another MIME detection library.
  • PHP FFmpeg - A wrapper for the FFmpeg video library.
  • UnifiedArchive - A unified reader and writer of compressed archives.

Streams

Libraries for working with streams.

  • Streamer - A simple object-orientated stream wrapper library.

Dependency Injection

Libraries that implement the dependency injection design pattern.

  • Aura.Di - A serializable dependency injection container with constructor and setter injection, interface and trait awareness, configuration inheritance, and much more.
  • Acclimate - A common interface to dependency injection containers and service locators.
  • Auryn - A recursive dependency injector.
  • Container - Another flexible dependency injection container.
  • Disco - A PSR-11 compatible, annotation-based dependency injection container.
  • PHP-DI - A dependency injection container that supports autowiring.
  • Pimple - A tiny dependency injection container.
  • Symfony DI - A dependency injection container component (SF).

Imagery

Libraries for manipulating images.

Testing

Libraries for testing codebases and generating test data.

  • Alice - An expressive fixture generation library.
  • AspectMock - A mocking framework for PHPUnit/Codeception.
  • Atoum - A simple testing library.
  • Behat - A behaviour driven development (BDD) testing framework.
  • Codeception - A full stack testing framework.
  • Faker - A fake data generator library.
  • HTTP Mock - A library for mocking HTTP requests in unit tests.
  • Kahlan - Full stack Unit/BDD testing framework with built-in stub, mock and code-coverage support.
  • Mink - Web acceptance testing.
  • Mockery - A mock object library for testing.
  • ParaTest - A parallel testing library for PHPUnit.
  • Peridot - An event driven test framework.
  • Phake - Another mock object library for testing.
  • Pho - Another behaviour driven development testing framework.
  • PHP-Mock - A mock library for built-in PHP functions (e.g. time()).
  • PHPSpec - A design by specification unit testing library.
  • PHPT - A test tool used by PHP itself.
  • PHPUnit - A unit testing framework.
  • Prophecy - A highly opinionated mocking framework.
  • VFS Stream - A virtual filesystem stream wrapper for testing.

Continuous Integration

Libraries and applications for continuous integration.

  • CircleCI - A continuous integration platform.
  • GitlabCi - Let GitLab CI test, build, deploy your code. TravisCi like.
  • Jenkins - A continuous integration platform with PHP support.
  • JoliCi - A continuous integration client written in PHP and powered by Docker.
  • PHPCI - An open source continuous integration platform for PHP.
  • SemaphoreCI - A continuous integration platform for open source and private projects.
  • Shippable - A Docker based continious integration platform for open source and private projects.
  • Travis CI - A continuous integration platform.

Documentation

Libraries for generating project documentation.

  • APIGen - Another API documentation generator.
  • daux.io - A documentation generator which uses Markdown files.
  • PHP Documentor 2 - A documentation generator.
  • phpDox - A documentation generator for PHP projects (that is not limited to API documentation).
  • Sami - An API documentation generator.

Security

Libraries for generating secure random numbers, encrypting data and scanning for vulnerabilities.

  • Halite - A simple library for encryption using libsodium.
  • HTML Purifier - A standards compliant HTML filter.
  • IniScan - A tool that scans PHP INI files for security.
  • Optimus - Id obfuscation based on Knuth's multiplicative hashing method.
  • PHP Encryption - Secure PHP Encryption Library.
  • PHP SSH - An experimental object orientated SSH wrapper library.
  • PHPSecLib - A pure PHP secure communications library.
  • random_compat - PHP 5.x support for random_bytes() and random_int()
  • RandomLib - A library for generating random numbers and strings.
  • Symfony Security Monitoring - A web tool to check your Composer dependencies for security advisories, previously known as "SensioLabs Security Check".
  • TCrypto - A simple encrypted key-value storage library.
  • VAddy - A continuous security testing platform for web applications.
  • Zed - An integrated penetration testing tool for web applications.

Passwords

Libraries and tools for working with and storing passwords.

  • GenPhrase - A library for generating secure random passphrases.
  • Password Compat - A compatibility library for the new PHP 5.5 password functions.
  • Password Policy - A password policy library for PHP and JavaScript.
  • Password Validator - A library for validating and upgrading password hashes.
  • Password-Generator - PHP library to generate random passwords.
  • PHP Password Lib - A library for generating and validating passwords.
  • phpass - A portable password hashing framework.
  • Zxcvbn PHP - A realistic PHP password strength estimate library based on Zxcvbn JS.

Code Analysis

Libraries and tools for analysing, parsing and manipulating codebases.

Code Quality

Libraries for managing code quality, formatting and linting.

  • PHP CodeSniffer - A library that detects PHP, CSS and JS coding standard violations.
  • PHP CS Fixer - A coding standards fixer library.
  • PHP Mess Detector - A library that scans code for bugs, sub-optimal code, unused parameters and more.
  • PHPCheckstyle - A tool to help adhere to certain coding conventions.
  • PHPCPD - A library that detects copied and pasted code.

Static Analysis

Libraries for performing static analysis of PHP code.

  • Exakat - A static analysis engine for PHP.
  • Mondrian - A code analysis tool using Graph Theory.
  • phan - A static analyzer based on PHP 7+ and the php-ast extension.
  • PHPCompatibility - A PHP compatibility checker for PHP CodeSniffer.
  • PhpDependencyAnalysis - A tool to create customisable dependency graphs.
  • PHP Metrics - A static metric library.
  • PHP Migration - A static analyzer for PHP version migration.
  • PHPStan - A PHP Static Analysis Tool.
  • Psalm - A static analysis tool for finding errors in PHP applications.

Architectural

Libraries related to design patterns, programming approaches and ways to organize code.

  • Design Patterns PHP - A repository of software patterns implemented in PHP.
  • Finite - A simple PHP finite state machine.
  • Functional PHP - A functional programming library.
  • Iter - A library that provides iteration primitives using generators.
  • Patchwork - A library for redefining userland functions.
  • Pipeline - A pipeline pattern implementation.
  • RulerZ - A powerful rule engine and implementation of the Specification pattern.

Debugging and Profiling

Libraries and tools for debugging and profiling code.

  • APM - Monitoring extension collecting errors and statistics into SQLite/MySQL/StatsD.
  • Barbushin PHP Console - Another web debugging console using Google Chrome.
  • Blackfire.io - A low-overhead code profiler.
  • Kint - A debugging and profiling tool.
  • PHP Console - A web debugging console.
  • PHP Debug Bar - A debugging toolbar.
  • PHPBench - A benchmarking Framework.
  • PHPSpy - A low-overhead sampling profiler.
  • Tideways.io - Monitoring and profiling tool.
  • Tracy - A simple error detection, logging and time measuring library.
  • xDebug - A debug and profile tool for PHP.
  • XHProf - A profiling tool originally developed by Facebook.
  • Z-Ray - A debug and profile tool for Zend Server.

Build Tools

Project build and automation tools.

  • Box - A utility to build PHAR files.
  • Construct - A PHP project/micro-package generator.
  • Phing - A PHP project build system inspired by Apache Ant.

Task Runners

Libraries for automating and running tasks.

  • Bldr - A PHP Task runner built on Symfony components.
  • Jobby - A PHP cron job manager without modifying crontab.
  • Robo - A PHP Task runner with object-orientated configurations.
  • Task - A pure PHP task runner inspired by Grunt and Gulp.

Navigation

Tools for building navigation structures.

Asset Management

Tools for managing, compressing and minifying website assets.

  • JShrink - A JavaScript minifier library.
  • Munee - An asset optimiser library.
  • Puli - A library for determining assets absolute paths.
  • BowerPHP - A PHP implementation of Bower. A package manager for the web

Geolocation

Libraries for geocoding addresses and working with latitudes and longitudes.

  • GeoCoder - A geocoding library.
  • GeoJSON - A GeoJSON implementation.
  • GeoTools - A library of geo-related tools.
  • PHPGeo - A simple geo library.

Date and Time

Libraries for working with dates and times.

  • CalendR - A calendar management library.
  • Carbon - A simple DateTime API extension.
  • Chronos - A DateTime API extension supporting both mutable and immutable date/time.
  • Moment.php - Moment.js inspired PHP DateTime handler with i18n support.
  • Yasumi - An library to help you calculate the dates and names of holidays.

Event

Libraries that are event-driven or implement non-blocking event loops.

  • Amp - An event driven non-blocking I/O library.
  • Broadway - An event source and CQRS library.
  • Cake Event - An event dispatcher library (CP).
  • Elephant.io - Yet another web socket library.
  • Evenement - An event dispatcher library.
  • Event - An event library with a focus on domain events.
  • Hoa EventSource - An event source library.
  • Hoa WebSocket - Another web socket library.
  • Prooph Event Store - An event source component to persist event messages
  • Ratchet - A web socket library.
  • React - An event driven non-blocking I/O library.
  • RxPHP - A reactive extension library.
  • Swoole - An event-driven asynchronous and concurrent networking communication framework with high performance for PHP written in C.
  • Workerman - An event driven non-blocking I/O library.

Logging

Libraries for generating and working with log files.

  • Monolog - A comprehensive logger.

E-commerce

Libraries and applications for taking payments and building online e-commerce stores.

  • Money - A PHP implementation of Fowler's money pattern.
  • OmniPay - A framework agnostic multi-gateway payment processing library.
  • Payum - A payment abstraction library.
  • Shopware - Highly customizable e-commerce software
  • Swap - An exchange rates library.
  • Sylius - An open source e-commerce solution.

PDF

Libraries and software for working with PDF files.

  • Dompdf - A HTML to PDF converter.
  • PHPPdf - A library for generating PDFs and images from XML.
  • Snappy - A PDF and image generation library.
  • WKHTMLToPDF - A tool to convert HTML to PDF.

Office

Libraries for working with office suite documents.

  • PHPPowerPoint - A library for working with Microsoft PowerPoint Presentations.
  • PHPWord - A library for working with Microsoft Word documents.
  • PHPSpreadsheet - A pure PHP library for reading and writing spreadsheet files (successor of PHPExcel).
  • Spout - Read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way .

Database

Libraries for interacting with databases using object-relational mapping (ORM) or datamapping techniques.

  • Atlas.Orm - A data mapper implementation for your persistence model in PHP.
  • Aura.Sql - Provides an extension to the native PDO along with a profiler and connection locator.
  • Aura.SqlQuery - Independent query builders for MySQL, PostgreSQL, SQLite, and Microsoft SQL Server.
  • Baum - A nested set implementation for Eloquent.
  • Cake ORM - Object-Relational Mapper, implemented using the DataMapper pattern (CP).
  • Doctrine Extensions - A collection of Doctrine behavioural extensions.
  • Doctrine - A comprehensive DBAL and ORM.
  • Eloquent - A simple ORM (L5).
  • Pomm - An Object Model Manager for PostgreSQL.
  • ProxyManager - A set of utilities to generate proxy objects for data mappers.
  • RedBean - A lightweight, configuration-less ORM.
  • Spot2 - A MySQL datamapper ORM.

Migrations

Libraries to help manage database schemas and migrations.

  • Doctrine Migrations - A migration library for Doctrine.
  • Migrations - A migration management library.
  • Phinx - Another database migration library.
  • PHPMig - Another migration management library.
  • Ruckusing - Database migrations for PHP ala ActiveRecord Migrations with support for MySQL, Postgres, SQLite.

NoSQL

Libraries for working with "NoSQL" backends.

  • PHPMongo - A MongoDB ORM.
  • Predis - A feature complete Redis library.

Queue

Libraries for working with event and task queues.

  • Bernard - A multibackend abstraction library.
  • BunnyPHP - A performant pure-PHP AMQP (RabbitMQ) sync and also async (ReactPHP) library.
  • Pheanstalk - A Beanstalkd client library.
  • PHP AMQP - A pure PHP AMQP library.
  • Tarantool Queue - PHP bindings for Tarantool Queue.
  • Thumper - A RabbitMQ pattern library.

Search

Libraries and software for indexing and performing search queries on data.

Command Line

Libraries related to the command line.

  • Aura.Cli - Provides the equivalent of request ( Context ) and response ( Stdio ) objects for the command line interface, including Getopt support, and an independent Help object for describing commands.
  • Boris - A tiny PHP REPL.
  • Cilex - A micro framework for building command line tools.
  • CLI Menu - A library for building CLI menus.
  • CLIFramework - A command-line framework supports zsh/bash completion generation, subcommands and option constraints. It also powers phpbrew.
  • CLImate - A library for outputting colours and special formatting.
  • Commando - Another simple command line opt parser.
  • Cron Expression - A library to calculate cron run dates.
  • GetOpt - A command line opt parser.
  • GetOptionKit - Another command line opt parser.
  • Hoa Console - Another command line library.
  • PsySH - Another PHP REPL.
  • ShellWrap - A simple command line wrapper library.

Authentication and Authorization

Libraries for implementing user authentication and authorization.

  • Aura.Auth - Provides authentication functionality and session tracking using various adapters.
  • SocialConnect Auth - An open source social sign (OAuth1\OAuth2\OpenID\OpenIDConnect).
  • Json Web Token - Json Tokens to authenticate and transmit information.
  • OAuth 1.0 Client - An OAuth 1.0 client library.
  • OAuth 2.0 Client - An OAuth 2.0 client library.
  • OAuth2 Server - Another OAuth2 server implementation.
  • OAuth2 Server - An OAuth2 authentication server, resource server and client library.
  • Opauth - A multi-provider authentication framework.
  • PHP oAuthLib - Another OAuth library.
  • Sentinel Social - A library for social network authentication.
  • Sentinel - A framework agnostic authentication & authorisation library.
  • TwitterOAuth - A Twitter OAuth library.

Markup

Libraries for working with markup.

Strings

Libraries for parsing and manipulating strings.

  • Agent - A PHP desktop/mobile user agent parser, based on Mobiledetect.
  • ANSI to HTML5 - An ANSI to HTML5 converter library.
  • Color Jizz - A library for manipulating and converting colours.
  • Device Detector - Another library for parsing user agent strings.
  • Hoa String - Another UTF-8 string library.
  • Jieba-PHP - A PHP port of Python's jieba. Chinese text segmentation for natural language processing.
  • Mobile-Detect - A lightweight PHP class for detecting mobile devices (including tablets).
  • Patchwork UTF-8 - A portable library for working with UTF-8 strings.
  • Slugify - A library to convert strings to slugs.
  • SQL Formatter - A library for formatting SQL statements.
  • Stringy - A string manipulation library with multibyte support.
  • UA Parser - A library for parsing user agent strings.
  • URLify - A PHP port of Django's URLify.js.
  • UUID - A library for generating UUIDs.

Numbers

Libraries for working with numbers.

  • ByteUnits - A library to parse, format and convert byte units in binary and metric systems.
  • LibPhoneNumber for PHP - A PHP implementation of Google's phone number handling library.
  • PHP Conversion - Another library for converting between units of measure.
  • PHP Units of Measure - A library for converting between units of measure.

Filtering and Validation

Libraries for filtering and validating data.

  • Assert - A validation library with a rich set of assertions. Supports assertion chaining and lazy assertions.
  • Aura.Filter - Provides tools to validate and sanitize objects and arrays.
  • Cake Validation - Another validation library (CP).
  • Filterus - A simple PHP filtering library.
  • ISO-codes - A library for validating inputs according standards from ISO, International Finance, Public Administrations, GS1, Book Industry, Phone numbers & Zipcodes for many countries.
  • JSON Schema - A JSON Schema validation library.
  • MetaYaml - A schema validation library that supports YAML, JSON and XML.
  • Respect Validation - A simple validation library.
  • Upload - A library for handling file uploads and validation.
  • Valitron - Another validation library.
  • Volan - Another simplified validation library.

API

Libraries and web tools for developing APIs.

  • API Platform - Expose in minutes an hypermedia REST API that embraces JSON-LD, Hydra format.
  • Apigility - An API builder built with Zend Framework 2.
  • Drest - A library for exposing Doctrine entities as REST resource endpoints.
  • HAL - A Hypertext Application Language (HAL) builder library.
  • Hateoas - A HATEOAS REST web service library.
  • Negotiation - A content negotiation library.
  • Restler - A lightweight framework to expose PHP methods as RESTful web API.
  • wsdl2phpgenerator - A tool to generate PHP classes from SOAP WSDL files.

Caching

Libraries for caching data.

  • Alternative PHP Cache (APC) - Open opcode cache for PHP.
  • APIx Cache - A thin PSR-6 cache wrapper to various caching backends emphasising cache tagging and indexing.
  • CacheTool - A tool to clear APC/opcode caches from the command line.
  • Cake Cache - A caching library (CP).
  • Doctrine Cache - A caching library.
  • Metaphore - Cache slam defense using a semaphore to prevent dogpile effect.
  • Stash - Another library for caching.
  • Zend Cache - Another caching library (ZF2).

Data Structure and Storage

Libraries that implement data structure or storage techniques.

  • Cake Collection - A simple collections library (CP).
  • Fractal - A library for converting complex data structures to JSON output.
  • Ginq - Another PHP library based on .NET's LINQ.
  • JsonMapper - A library that maps nested JSON structures onto PHP classes.
  • Knapsack - Collection library inspired by Clojure's sequences.
  • msgpack.php - A pure PHP implementation of the MessagePack serialization format.
  • PINQ - A PHP library based on .NET's LINQ (Language Integrated Query).
  • Porter - Data import abstraction framework.
  • Serializer - A library for serialising and de-serialising data.
  • YaLinqo - Yet Another LINQ to Objects for PHP.
  • Zend Serializer - Another library for serialising and de-serialising data (ZF2).

Notifications

Libraries for working with notification software.

  • JoliNotif - A cross-platform library for desktop notification (support for Growl, notify-send, toaster, etc)
  • Notification Pusher - A standalone library for device push notifications.
  • Notificato - A library for handling push notifications.
  • Notificator - A lightweight notification library.
  • Php-pushwoosh - A PHP Library to easily send push notifications with the Pushwoosh REST Web Services.

Deployment

Libraries for project deployment.

  • Deployer - A deployment tool.
  • Envoy - A tool to run SSH tasks with PHP.
  • Rocketeer - A fast and easy deployer for the PHP world.

Internationalisation and Localisation

Libraries for Internationalization (I18n) and Localization (L10n).

  • Aura.Intl - Provides internationalization (I18N) tools, specifically package-oriented per-locale message translation.
  • Cake I18n - Message translation and localization for dates and numbers (CP)

Serverless

Libraries and tools to help build serverless web applications.

  • Bref - Serverless PHP on AWS Lambda.
  • OpenWhisk - An open source serverless cloud platform.
  • Serverless Framework - An open source framework for building serverless applications.

Configuration

Libraries and tools for configuration.*

  • PHP Dotenv - Parse and load environment variables from .env files.
  • Symfony Dotenv- Parse and load environment variables from .env files.

Third Party APIs

Libraries for accessing third party APIs.

Extensions

Libraries to help build PHP extensions.

  • PHP CPP - A C++ library for developing PHP extensions.
  • Zephir - A compiled language between PHP and C++ for developing PHP extensions.

Miscellaneous

Useful libraries or tools that don't fit in the categories above.

  • Annotations - An annotations library (part of Doctrine).
  • BotMan - A framework agnostic PHP library to build cross-platform chat bots.
  • Cake Utility - Utility classes such as Inflector, String, Hash, Security and Xml (CP).
  • Chief - A command bus library.
  • ClassPreloader - A library for optimising autoloading.
  • Country List - A list of all countries with names and ISO 3166-1 codes.
  • Embera - An Oembed consumer library.
  • Essence - A library for extracting web media.
  • Graphviz - A Graphviz library.
  • Hprose-PHP - A very newbility RPC Library, support 25+ languages now.
  • JSON Lint - A JSON lint utility.
  • JSONPCallbackValidator - A library for validating JSONP callbacks.
  • Metrics - A simple metrics API library.
  • noCAPTCHA - Helper for Google's noCAPTCHA (reCAPTCHA).
  • Nmap - A PHP wrapper around Nmap.
  • Pagerfanta - A pagination library.
  • PHP PassBook - A PHP library for iOS PassBook.
  • PHP-ML - A library for Machine Learning in PHP.
  • PHPCR - A PHP port of the Java Content Repository (JCR).
  • PHPStack - A TCP/IP stack proof of concept written in PHP.
  • print_o - An object graph visualizer.
  • Procrastinator - A library for running time consuming tasks.
  • Prooph Service Bus - Lightweight message bus supporting CQRS and Micro Services
  • RMT - A library for versioning and releasing software.
  • sabre/vobject - A library for parsing VCard and iCalendar objects.
  • Slimdump - An easy dumper tool for MySQL.
  • Spork - A process forking library.
  • SuperClosure - A library that allows Closures to be serialized.
  • Symfony VarDumper - A variable dumper component (SF).
  • Underscore - A PHP port of the Underscore JS library.
  • Whoops - A pretty error handling library.

Software

Software for creating a development environment.

PHP Installation

Tools to help install and manage PHP on your computer.

  • HomeBrew - A package manager for OSX.
  • Brew PHP Switcher - Brew PHP switcher.
  • PHP Brew - A PHP version manager and installer.
  • PHP Build - Another PHP version installer.
  • PHP OSX - A PHP installer for OSX.
  • VirtPHP - A tool for creating and managing isolated PHP environments.

Development Environment

Software and tools for creating a sandboxed development environment.

  • Ansible - A radically simple orchestration framework.
  • Phansible - A web tool for building PHP development virtual machines with Ansible.
  • Protobox - Another web tool for building PHP development virtual machines.
  • PuPHPet - A web tool for building PHP development virtual machines.
  • Puppet - A server automation framework and application.
  • Vagrant - A portable development environment utility.
  • Docker - A containerization platform.

Virtual Machines

Alternative PHP virtual machines.

  • Hack - A programming language for HHVM.
  • HHVM - A Virtual Machine, Runtime and JIT for PHP by Facebook.

Text Editors and IDEs

Text Editors and Integrated Development Environments (IDE) with support for PHP.

Web Applications

Web-based applications and tools.

  • 3V4L - An online PHP & HHVM shell.
  • DBV - A database version control application.
  • PHP Queue - An application for managing queueing backends.
  • MailCatcher - A web tool for capturing and viewing emails.
  • Cachet - The open source status page system.
  • phpRedisAdmin - A simple web interface to manage Redis databases.
  • phpMyAdmin - A web interface for MySQL/MariaDB.
  • Adminer - Database management in a single PHP file.
  • Lychee - An easy to use and great looking photo-management-system.

Infrastructure

Infrastructure for providing PHP applications and services.

  • appserver.io - A multithreaded application server for PHP, written in PHP.
  • php-pm - A process manager, supercharger and load balancer for PHP applications.

Resources

Various resources, such as books, websites and articles, for improving your PHP development skills and knowledge.

PHP Websites

Useful PHP-related websites.

Other Websites

Useful websites related to web development.

PHP Books

Fantastic PHP-related books.

Other Books

Books related to general computing and web development.

PHP Videos

Fantastic PHP-related videos.

PHP Podcasts

Podcasts with a focus on PHP topics.

  • PHP Town Hall - A casual PHP podcast by Ben Edmunds and Phil Sturgeon.
  • Voices of the ElePHPant Interviews with the people that make the PHP community special.
  • PHP Roundtable - The PHP Roundtable is a casual gathering of developers discussing topics that PHP nerds care about.

PHP Reading

PHP-releated reading materials.

PHP Internals Reading

Reading materials related to the PHP internals or performance.

PHP Magazines

Fantastic PHP-related magazines.

 

 

原文:

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of amazingly awesome PHP libraries, resources and shiny things.

【Python框架】精选的Python框架,库,软件和资源的精选列表

Chinese, Simplified

A curated list of awesome Python frameworks, libraries, software and resources https://awesome-python.com/

 

A curated list of awesome Python frameworks, libraries, software and resources.

Inspired by awesome-php.

Admin Panels

Libraries for administrative interfaces.

  • ajenti - The admin panel your servers deserve.
  • django-grappelli - A jazzy skin for the Django Admin-Interface.
  • django-jet - Modern responsive template for the Django admin interface with improved functionality.
  • django-suit - Alternative Django Admin-Interface (free only for Non-commercial use).
  • django-xadmin - Drop-in replacement of Django admin comes with lots of goodies.
  • flask-admin - Simple and extensible administrative interface framework for Flask.
  • flower - Real-time monitor and web admin for Celery.
  • wooey - A Django app which creates automatic web UIs for Python scripts.

Algorithms and Design Patterns

Python implementation of algorithms and design patterns.

  • algorithms - Minimal examples of data structures and algorithms in Python.
  • PyPattyrn - A simple yet effective library for implementing common design patterns.
  • python-patterns - A collection of design patterns in Python.
  • sortedcontainers - Fast, pure-Python implementation of SortedList, SortedDict, and SortedSet types.

Audio

Libraries for manipulating audio and its metadata.

  • Audio
    • audioread - Cross-library (GStreamer + Core Audio + MAD + FFmpeg) audio decoding.
    • dejavu - Audio fingerprinting and recognition.
    • mingus - An advanced music theory and notation package with MIDI file and playback support.
    • pyAudioAnalysis - Audio feature extraction, classification, segmentation and applications.
    • pydub - Manipulate audio with a simple and easy high level interface.
    • TimeSide - Open web audio processing framework.
  • Metadata
    • beets - A music library manager and MusicBrainz tagger.
    • eyeD3 - A tool for working with audio files, specifically MP3 files containing ID3 metadata.
    • mutagen - A Python module to handle audio metadata.
    • tinytag - A library for reading music meta data of MP3, OGG, FLAC and Wave files.

Authentication

Libraries for implementing authentications schemes.

  • OAuth
    • authlib - JavaScript Object Signing and Encryption draft implementation.
    • django-allauth - Authentication app for Django that "just works."
    • django-oauth-toolkit - OAuth 2 goodies for Django.
    • oauthlib - A generic and thorough implementation of the OAuth request-signing logic.
    • python-oauth2 - A fully tested, abstract interface to creating OAuth clients and servers.
    • python-social-auth - An easy-to-setup social authentication mechanism.
  • JWT
    • pyjwt - JSON Web Token implementation in Python.
    • python-jose - A JOSE implementation in Python.
    • python-jwt - A module for generating and verifying JSON Web Tokens.

Build Tools

Compile software from source code.

  • BitBake - A make-like build tool for embedded Linux.
  • buildout - A build system for creating, assembling and deploying applications from multiple parts.
  • PlatformIO - A console tool to build code with different development platforms.
  • pybuilder - A continuous build tool written in pure Python.
  • SCons - A software construction tool.

Built-in Classes Enhancement

Libraries for enhancing Python built-in classes.

  • dataclasses - (Python standard library) Data classes.
  • attrs - Replacement for __init____eq____repr__, etc. boilerplate in class definitions.
  • bidict - Efficient, Pythonic bidirectional map data structures and related functionality..
  • Box - Python dictionaries with advanced dot notation access.
  • DottedDict - A library that provides a method of accessing lists and dicts with a dotted path notation.

CMS

Content Management Systems.

  • wagtail - A Django content management system.
  • django-cms - An Open source enterprise CMS based on the Django.
  • feincms - One of the most advanced Content Management Systems built on Django.
  • Kotti - A high-level, Pythonic web application framework built on Pyramid.
  • mezzanine - A powerful, consistent, and flexible content management platform.
  • plone - A CMS built on top of the open source application server Zope.
  • quokka - Flexible, extensible, small CMS powered by Flask and MongoDB.

Caching

Libraries for caching data.

  • beaker - A WSGI middleware for sessions and caching.
  • django-cache-machine - Automatic caching and invalidation for Django models.
  • django-cacheops - A slick ORM cache with automatic granular event-driven invalidation.
  • dogpile.cache - dogpile.cache is next generation replacement for Beaker made by same authors.
  • HermesCache - Python caching library with tag-based invalidation and dogpile effect prevention.
  • pylibmc - A Python wrapper around the libmemcached interface.
  • python-diskcache - SQLite and file backed cache backend with faster lookups than memcached and redis.

ChatOps Tools

Libraries for chatbot development.

  • errbot - The easiest and most popular chatbot to implement ChatOps.

Code Analysis

Tools of static analysis, linters and code quality checkers. Also see awesome-static-analysis.

  • Code Analysis
    • coala - Language independent and easily extendable code analysis application.
    • code2flow - Turn your Python and JavaScript code into DOT flowcharts.
    • prospector - A tool to analyse Python code.
    • pycallgraph - A library that visualises the flow (call graph) of your Python application.
  • Code Linters
  • Code Formatters
    • black - The uncompromising Python code formatter.
    • yapf - Yet another Python code formatter from Google.
  • Static Type Checkers
    • mypy - Check variable types during compile time.
    • pyre-check - Performant type checking.
  • Static Type Annotations Generators
    • MonkeyType - A system for Python that generates static type annotations by collecting runtime types

Command-line Interface Development

Libraries for building command-line applications.

  • Command-line Application Development
    • cement - CLI Application Framework for Python.
    • click - A package for creating beautiful command line interfaces in a composable way.
    • cliff - A framework for creating command-line programs with multi-level commands.
    • clint - Python Command-line Application Tools.
    • docopt - Pythonic command line arguments parser.
    • python-fire - A library for creating command line interfaces from absolutely any Python object.
    • python-prompt-toolkit - A library for building powerful interactive command lines.
  • Terminal Rendering
    • asciimatics - A package to create full-screen text UIs (from interactive forms to ASCII animations).
    • bashplotlib - Making basic plots in the terminal.
    • colorama - Cross-platform colored terminal text.
    • tqdm - Fast, extensible progress bar for loops and CLI.

Command-line Tools

Useful CLI-based tools for productivity.

  • Productivity Tools
    • cookiecutter - A command-line utility that creates projects from cookiecutters (project templates).
    • doitlive - A tool for live presentations in the terminal.
    • howdoi - Instant coding answers via the command line.
    • PathPicker - Select files out of bash output.
    • percol - Adds flavor of interactive selection to the traditional pipe concept on UNIX.
    • thefuck - Correcting your previous console command.
    • tmuxp - A tmux session manager.
    • try - A dead simple CLI to try out python packages - it's never been easier.
  • CLI Enhancements
    • httpie - A command line HTTP client, a user-friendly cURL replacement.
    • kube-shell - An integrated shell for working with the Kubernetes CLI.
    • mycli - A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.
    • pgcli - Postgres CLI with autocompletion and syntax highlighting.
    • saws - A Supercharged aws-cli.

Compatibility

Libraries for migrating from Python 2 to 3.

  • python-future - The missing compatibility layer between Python 2 and Python 3.
  • python-modernize - Modernizes Python code for eventual Python 3 migration.
  • six - Python 2 and 3 compatibility utilities.

Computer Vision

Libraries for computer vision.

Concurrency and Parallelism

Libraries for concurrent and parallel execution. Also see awesome-asyncio.

  • concurrent.futures - (Python standard library) A high-level interface for asynchronously executing callables.
  • multiprocessing - (Python standard library) Process-based parallelism.
  • eventlet - Asynchronous framework with WSGI support.
  • gevent - A coroutine-based Python networking library that uses greenlet.
  • uvloop - Ultra fast implementation of asyncio event loop on top of libuv.
  • scoop - Scalable Concurrent Operations in Python.

Configuration

Libraries for storing and parsing configuration options.

  • configobj - INI file parser with validation.
  • configparser - (Python standard library) INI file parser.
  • profig - Config from multiple formats with value conversion.
  • python-decouple - Strict separation of settings from code.

Cryptography

  • cryptography - A package designed to expose cryptographic primitives and recipes to Python developers.
  • paramiko - The leading native Python SSHv2 protocol library.
  • passlib - Secure password storage/hashing library, very high level.
  • pynacl - Python binding to the Networking and Cryptography (NaCl) library.

Data Analysis

Libraries for data analyzing.

  • Blaze - NumPy and Pandas interface to Big Data.
  • Open Mining - Business Intelligence (BI) in Pandas interface.
  • Orange - Data mining, data visualization, analysis and machine learning through visual programming or scripts.
  • Pandas - A library providing high-performance, easy-to-use data structures and data analysis tools.
  • Optimus - Agile Data Science Workflows made easy with PySpark.

Data Validation

Libraries for validating data. Used for forms in many cases.

  • Cerberus - A lightweight and extensible data validation library.
  • colander - Validating and deserializing data obtained via XML, JSON, an HTML form post.
  • jsonschema - An implementation of JSON Schema for Python.
  • schema - A library for validating Python data structures.
  • Schematics - Data Structure Validation.
  • valideer - Lightweight extensible data validation and adaptation library.
  • voluptuous - A Python data validation library.

Data Visualization

Libraries for visualizing data. Also see awesome-javascript.

  • Altair - Declarative statistical visualization library for Python.
  • Bokeh - Interactive Web Plotting for Python.
  • bqplot - Interactive Plotting Library for the Jupyter Notebook
  • Dash - Built on top of Flask, React and Plotly aimed at analytical web applications.
  • plotnine - A grammar of graphics for Python based on ggplot2.
  • Matplotlib - A Python 2D plotting library.
  • Pygal - A Python SVG Charts Creator.
  • PyGraphviz - Python interface to Graphviz.
  • PyQtGraph - Interactive and realtime 2D/3D/Image plotting and science/engineering widgets.
  • Seaborn - Statistical data visualization using Matplotlib.
  • VisPy - High-performance scientific visualization based on OpenGL.

Database

Databases implemented in Python.

  • pickleDB - A simple and lightweight key-value store for Python.
  • tinydb - A tiny, document-oriented database.
  • ZODB - A native object database for Python. A key-value and object graph database.

Database Drivers

Libraries for connecting and operating databases.

  • MySQL - awesome-mysql
  • PostgreSQL - awesome-postgres
    • psycopg2 - The most popular PostgreSQL adapter for Python.
    • queries - A wrapper of the psycopg2 library for interacting with PostgreSQL.
  • Other Relational Databases
    • pymssql - A simple database interface to Microsoft SQL Server.
  • NoSQL Databases
    • cassandra-driver - The Python Driver for Apache Cassandra.
    • happybase - A developer-friendly library for Apache HBase.
    • kafka-python - The Python client for Apache Kafka.
    • py2neo - Python wrapper client for Neo4j's restful interface.
    • pymongo - The official Python client for MongoDB.
    • redis-py - The Python client for Redis.
  • Asynchronous Clients
    • motor - The async Python driver for MongoDB.
    • Telephus - Twisted based client for Cassandra.
    • txpostgres - Twisted based asynchronous driver for PostgreSQL.
    • txRedis - Twisted based client for Redis.

Date and Time

Libraries for working with dates and times.

  • Chronyk - A Python 3 library for parsing human-written times and dates.
  • dateutil - Extensions to the standard Python datetime module.
  • delorean - A library for clearing up the inconvenient truths that arise dealing with datetimes.
  • moment - A Python library for dealing with dates/times. Inspired by Moment.js.
  • Pendulum - Python datetimes made easy.
  • PyTime - An easy-to-use Python module which aims to operate date/time/datetime by string.
  • pytz - World timezone definitions, modern and historical. Brings the tz database into Python.
  • when.py - Providing user-friendly functions to help perform common date and time actions.
  • maya - Datetimes for Humans.

Debugging Tools

Libraries for debugging code.

  • pdb-like Debugger
    • ipdb - IPython-enabled pdb.
    • pdb++ - Another drop-in replacement for pdb.
    • pudb - A full-screen, console-based Python debugger.
    • wdb - An improbable web debugger through WebSockets.
  • Tracing
    • lptrace - strace for Python programs.
    • manhole - Debugging UNIX socket connections and present the stacktraces for all threads and an interactive prompt.
    • pyringe - Debugger capable of attaching to and injecting code into Python processes.
    • python-hunter - A flexible code tracing toolkit.
  • Profiler
    • line_profiler - Line-by-line profiling.
    • memory_profiler - Monitor Memory usage of Python code.
    • profiling - An interactive Python profiler.
    • py-spy - A sampling profiler for Python programs. Written in Rust.
    • pyflame - A ptracing profiler For Python.
    • vprof - Visual Python profiler.
  • Others
    • icecream - Inspect variables, expressions, and program execution with a single, simple function call.
    • django-debug-toolbar - Display various debug information for Django.
    • django-devserver - A drop-in replacement for Django's runserver.
    • flask-debugtoolbar - A port of the django-debug-toolbar to flask.
    • pyelftools - Parsing and analyzing ELF files and DWARF debugging information.

Deep Learning

Frameworks for Neural Networks and Deep Learning. Also see awesome-deep-learning.

  • caffe - A fast open framework for deep learning..
  • keras - A high-level neural networks library and capable of running on top of either TensorFlow or Theano.
  • mxnet - A deep learning framework designed for both efficiency and flexibility.
  • pytorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration.
  • SerpentAI - Game agent framework. Use any video game as a deep learning sandbox.
  • tensorflow - The most popular Deep Learning framework created by Google.
  • Theano - A library for fast numerical computation.

DevOps Tools

Software and libraries for DevOps.

  • ansible - A radically simple IT automation platform.
  • cloudinit - A multi-distribution package that handles early initialization of a cloud instance.
  • cuisine - Chef-like functionality for Fabric.
  • docker-compose - Fast, isolated development environments using Docker.
  • fabric - A simple, Pythonic tool for remote execution and deployment.
  • fabtools - Tools for writing awesome Fabric files.
  • honcho - A Python clone of Foreman, for managing Procfile-based applications.
  • OpenStack - Open source software for building private and public clouds.
  • pexpect - Controlling interactive programs in a pseudo-terminal like GNU expect.
  • psutil - A cross-platform process and system utilities module.
  • saltstack - Infrastructure automation and management system.
  • supervisor - Supervisor process control system for UNIX.

Distributed Computing

Frameworks and libraries for Distributed Computing.

  • Batch Processing
    • PySpark - Apache Spark Python API.
    • dask - A flexible parallel computing library for analytic computing.
    • luigi - A module that helps you build complex pipelines of batch jobs.
    • mrjob - Run MapReduce jobs on Hadoop or Amazon Web Services.
    • Ray - A system for parallel and distributed Python that unifies the machine learning ecosystem.
  • Stream Processing

Distribution

Libraries to create packaged executables for release distribution.

  • dh-virtualenv - Build and distribute a virtualenv as a Debian package.
  • Nuitka - Compile scripts, modules, packages to an executable or extension module.
  • py2app - Freezes Python scripts (Mac OS X).
  • py2exe - Freezes Python scripts (Windows).
  • PyInstaller - Converts Python programs into stand-alone executables (cross-platform).
  • pynsist - A tool to build Windows installers, installers bundle Python itself.

Documentation

Libraries for generating project documentation.

  • sphinx - Python Documentation generator.
  • pdoc - Epydoc replacement to auto generate API documentation for Python libraries.
  • pycco - The literate-programming-style documentation generator.

Downloader

Libraries for downloading.

  • s3cmd - A command line tool for managing Amazon S3 and CloudFront.
  • s4cmd - Super S3 command line tool, good for higher performance.
  • you-get - A YouTube/Youku/Niconico video downloader written in Python 3.
  • youtube-dl - A small command-line program to download videos from YouTube.

E-commerce

Frameworks and libraries for e-commerce and payments.

  • alipay - Unofficial Alipay API for Python.
  • Cartridge - A shopping cart app built using the Mezzanine.
  • django-oscar - An open-source e-commerce framework for Django.
  • django-shop - A Django based shop system.
  • merchant - A Django app to accept payments from various payment processors.
  • money - Money class with optional CLDR-backed locale-aware formatting and an extensible currency exchange.
  • python-currencies - Display money format and its filthy currencies.
  • forex-python - Foreign exchange rates, Bitcoin price index and currency conversion.
  • saleor - An e-commerce storefront for Django.
  • shoop - An open source E-Commerce platform based on Django.

Editor Plugins and IDEs

  • Emacs
    • elpy - Emacs Python Development Environment.
  • Sublime Text
    • anaconda - Anaconda turns your Sublime Text 3 in a full featured Python development IDE.
    • SublimeJEDI - A Sublime Text plugin to the awesome auto-complete library Jedi.
  • Vim
    • jedi-vim - Vim bindings for the Jedi auto-completion library for Python.
    • python-mode - An all in one plugin for turning Vim into a Python IDE.
    • YouCompleteMe - Includes Jedi-based completion engine for Python.
  • Visual Studio
    • PTVS - Python Tools for Visual Studio.
  • Visual Studio Code
    • Python - The official VSCode extension with rich support for Python.
  • IDE
    • PyCharm - Commercial Python IDE by JetBrains. Has free community edition available.
    • spyder - Open Source Python IDE.

Email

Libraries for sending and parsing email.

  • envelopes - Mailing for human beings.
  • flanker - An email address and Mime parsing library.
  • imbox - Python IMAP for Humans.
  • inbox.py - Python SMTP Server for Humans.
  • lamson - Pythonic SMTP Application Server.
  • Marrow Mailer - High-performance extensible mail delivery framework.
  • modoboa - A mail hosting and management platform including a modern and simplified Web UI.
  • Nylas Sync Engine - Providing a RESTful API on top of a powerful email sync platform.
  • yagmail - Yet another Gmail/SMTP client.

Environment Management

Libraries for Python version and virtual environment management.

  • pyenv - Simple Python version management.
  • pipenv - Python Development Workflow for Humans.
  • poetry - Python dependency management and packaging made easy.
  • virtualenv - A tool to create isolated Python environments.

Files

Libraries for file manipulation and MIME type detection.

  • mimetypes - (Python standard library) Map filenames to MIME types.
  • path.py - A module wrapper for os.path.
  • pathlib - (Python standard library) An cross-platform, object-oriented path library.
  • PyFilesystem2 - Python's filesystem abstraction layer.
  • python-magic - A Python interface to the libmagic file type identification library.
  • Unipath - An object-oriented approach to file/directory operations.
  • watchdog - API and shell utilities to monitor file system events.

Foreign Function Interface

Libraries for providing foreign function interface.

  • cffi - Foreign Function Interface for Python calling C code.
  • ctypes - (Python standard library) Foreign Function Interface for Python calling C code.
  • PyCUDA - A Python wrapper for Nvidia's CUDA API.
  • SWIG - Simplified Wrapper and Interface Generator.

Forms

Libraries for working with forms.

  • Deform - Python HTML form generation library influenced by the formish form generation library.
  • django-bootstrap3 - Bootstrap 3 integration with Django.
  • django-bootstrap4 - Bootstrap 4 integration with Django.
  • django-crispy-forms - A Django app which lets you create beautiful forms in a very elegant and DRY way.
  • django-remote-forms - A platform independent Django form serializer.
  • WTForms - A flexible forms validation and rendering library.

Functional Programming

Functional Programming with Python.

  • Coconut - Coconut is a variant of Python built for simple, elegant, Pythonic functional programming.
  • CyToolz - Cython implementation of Toolz: High performance functional utilities.
  • fn.py - Functional programming in Python: implementation of missing features to enjoy FP.
  • funcy - A fancy and practical functional tools.
  • Toolz - A collection of functional utilities for iterators, functions, and dictionaries.

GUI Development

Libraries for working with graphical user interface applications.

  • curses - Built-in wrapper for ncurses used to create terminal GUI applications.
  • Eel - A library for making simple Electron-like offline HTML/JS GUI apps.
  • enaml - Creating beautiful user-interfaces with Declaratic Syntax like QML.
  • Flexx - Flexx is a pure Python toolkit for creating GUI's, that uses web technology for its rendering.
  • Gooey - Turn command line programs into a full GUI application with one line.
  • kivy - A library for creating NUI applications, running on Windows, Linux, Mac OS X, Android and iOS.
  • pyglet - A cross-platform windowing and multimedia library for Python.
  • PyGObject - Python Bindings for GLib/GObject/GIO/GTK+ (GTK+3).
  • PyQt - Python bindings for the Qt cross-platform application and UI framework.
  • PySimpleGUI - Wrapper for tkinter, Qt, WxPython and Remi.
  • pywebview - A lightweight cross-platform native wrapper around a webview component.
  • Tkinter - Tkinter is Python's de-facto standard GUI package.
  • Toga - A Python native, OS native GUI toolkit.
  • urwid - A library for creating terminal GUI applications with strong support for widgets, events, rich colors, etc.
  • wxPython - A blending of the wxWidgets C++ class library with the Python.

Game Development

Awesome game development libraries.

  • Cocos2d - cocos2d is a framework for building 2D games, demos, and other graphical/interactive applications.
  • Harfang3D - Python framework for 3D, VR and game development.
  • Panda3D - 3D game engine developed by Disney.
  • Pygame - Pygame is a set of Python modules designed for writing games.
  • PyOgre - Python bindings for the Ogre 3D render engine, can be used for games, simulations, anything 3D.
  • PyOpenGL - Python ctypes bindings for OpenGL and it's related APIs.
  • PySDL2 - A ctypes based wrapper for the SDL2 library.
  • RenPy - A Visual Novel engine.

Geolocation

Libraries for geocoding addresses and working with latitudes and longitudes.

  • django-countries - A Django app that provides a country field for models and forms.
  • GeoDjango - A world-class geographic web framework.
  • GeoIP - Python API for MaxMind GeoIP Legacy Database.
  • geojson - Python bindings and utilities for GeoJSON.
  • geopy - Python Geocoding Toolbox.
  • pygeoip - Pure Python GeoIP API.

HTML Manipulation

Libraries for working with HTML and XML.

  • BeautifulSoup - Providing Pythonic idioms for iterating, searching, and modifying HTML or XML.
  • bleach - A whitelist-based HTML sanitization and text linkification library.
  • cssutils - A CSS library for Python.
  • html5lib - A standards-compliant library for parsing and serializing HTML documents and fragments.
  • lxml - A very fast, easy-to-use and versatile library for handling HTML and XML.
  • MarkupSafe - Implements a XML/HTML/XHTML Markup safe string for Python.
  • pyquery - A jQuery-like library for parsing HTML.
  • untangle - Converts XML documents to Python objects for easy access.
  • WeasyPrint - A visual rendering engine for HTML and CSS that can export to PDF.
  • xmldataset - Simple XML Parsing.
  • xmltodict - Working with XML feel like you are working with JSON.

HTTP Clients

Libraries for working with HTTP.

  • grequests - requests + gevent for asynchronous HTTP requests.
  • httplib2 - Comprehensive HTTP client library.
  • requests - HTTP Requests for Humans™.
  • treq - Python requests like API built on top of Twisted's HTTP client.
  • urllib3 - A HTTP library with thread-safe connection pooling, file post support, sanity friendly.

Hardware

Libraries for programming with hardware.

  • ino - Command line toolkit for working with Arduino.
  • keyboard - Hook and simulate global keyboard events on Windows and Linux.
  • mouse - Hook and simulate global mouse events on Windows and Linux.
  • Pingo - Pingo provides a uniform API to program devices like the Raspberry Pi, pcDuino, Intel Galileo, etc.
  • PyUserInput - A module for cross-platform control of the mouse and keyboard.
  • scapy - A brilliant packet manipulation library.
  • wifi - A Python library and command line tool for working with WiFi on Linux.

Image Processing

Libraries for manipulating images.

  • hmap - Image histogram remapping.
  • imgSeek - A project for searching a collection of images using visual similarity.
  • nude.py - Nudity detection.
  • pagan - Retro identicon (Avatar) generation based on input string and hash.
  • pillow - Pillow is the friendly PIL fork.
  • pyBarcode - Create barcodes in Python without needing PIL.
  • pygram - Instagram-like image filters.
  • python-qrcode - A pure Python QR Code generator.
  • Quads - Computer art based on quadtrees.
  • scikit-image - A Python library for (scientific) image processing.
  • thumbor - A smart imaging service. It enables on-demand crop, re-sizing and flipping of images.
  • wand - Python bindings for MagickWand, C API for ImageMagick.

Implementations

Implementations of Python.

  • CPython - Default, most widely used implementation of the Python programming language written in C.
  • Cython - Optimizing Static Compiler for Python.
  • CLPython - Implementation of the Python programming language written in Common Lisp.
  • Grumpy - More compiler than interpreter as more powerful CPython2.7 replacement (alpha).
  • IronPython - Implementation of the Python programming language written in C#.
  • Jython - Implementation of Python programming language written in Java for the JVM.
  • MicroPython - A lean and efficient Python programming language implementation.
  • Numba - Python JIT compiler to LLVM aimed at scientific Python.
  • PeachPy - x86-64 assembler embedded in Python.
  • Pyjion - A JIT for Python based upon CoreCLR.
  • PyPy - A very fast and compliant implementation of the Python language.
  • Pyston - A Python implementation using JIT techniques.
  • Stackless Python - An enhanced version of the Python programming language.

Interactive Interpreter

Interactive Python interpreters (REPL).

Internationalization

Libraries for working with i18n.

  • Babel - An internationalization library for Python.
  • PyICU - A wrapper of International Components for Unicode C++ library (ICU).

Job Scheduler

Libraries for scheduling jobs.

  • APScheduler - A light but powerful in-process task scheduler that lets you schedule functions.
  • django-schedule - A calendaring app for Django.
  • doit - A task runner and build tool.
  • gunnery - Multipurpose task execution tool for distributed systems with web-based interface.
  • Joblib - A set of tools to provide lightweight pipelining in Python.
  • Plan - Writing crontab file in Python like a charm.
  • schedule - Python job scheduling for humans.
  • Spiff - A powerful workflow engine implemented in pure Python.
  • TaskFlow - A Python library that helps to make task execution easy, consistent and reliable.
  • Airflow - Airflow is a platform to programmatically author, schedule and monitor workflows.

Logging

Libraries for generating and working with logs.

  • Eliot - Logging for complex & distributed systems.
  • logbook - Logging replacement for Python.
  • logging - (Python standard library) Logging facility for Python.
  • raven - Python client for Sentry, a log/error tracking, crash reporting and aggregation platform for web applications.

Machine Learning

Libraries for Machine Learning. Also see awesome-machine-learning.

  • H2O - Open Source Fast Scalable Machine Learning Platform.
  • Metrics - Machine learning evaluation metrics.
  • NuPIC - Numenta Platform for Intelligent Computing.
  • scikit-learn - The most popular Python library for Machine Learning.
  • Spark ML - Apache Spark's scalable Machine Learning library.
  • vowpal_porpoise - A lightweight Python wrapper for Vowpal Wabbit.
  • xgboost - A scalable, portable, and distributed gradient boosting library.

Microsoft Windows

Python programming on Microsoft Windows.

  • Python(x,y) - Scientific-applications-oriented Python Distribution based on Qt and Spyder.
  • pythonlibs - Unofficial Windows binaries for Python extension packages.
  • PythonNet - Python Integration with the .NET Common Language Runtime (CLR).
  • PyWin32 - Python Extensions for Windows.
  • WinPython - Portable development environment for Windows 7/8.

Miscellaneous

Useful libraries or tools that don't fit in the categories above.

  • blinker - A fast Python in-process signal/event dispatching system.
  • boltons - A set of pure-Python utilities.
  • itsdangerous - Various helpers to pass trusted data to untrusted environments.
  • pluginbase - A simple but flexible plugin system for Python.
  • tryton - A general purpose business framework.

Natural Language Processing

Libraries for working with human languages.

  • General
    • gensim - Topic Modelling for Humans.
    • langid.py - Stand-alone language identification system.
    • nltk - A leading platform for building Python programs to work with human language data.
    • pattern - A web mining module for the Python.
    • polyglot - Natural language pipeline supporting hundreds of languages.
    • pytext - A natural language modeling framework based on PyTorch.
    • PyTorch-NLP - A toolkit enabling rapid deep learning NLP prototyping for research.
    • spacy - A library for industrial-strength natural language processing in Python and Cython.
    • stanfordnlp - The Stanford NLP Group's official Python library, supporting 50+ languages.
  • Chinese
    • jieba - The most popular Chinese text segmentation library.
    • pkuseg-python - A toolkit for Chinese word segmentation in various domains.
    • snownlp - A library for processing Chinese text.
    • funNLP - A collection of tools and datasets for Chinese NLP.

Network Virtualization

Tools and libraries for Virtual Networking and SDN (Software Defined Networking).

  • mininet - A popular network emulator and API written in Python.
  • pox - A Python-based SDN control applications, such as OpenFlow SDN controllers.

Networking

Libraries for networking programming.

  • asyncio - (Python standard library) Asynchronous I/O, event loop, coroutines and tasks.
  • pulsar - Event-driven concurrent framework for Python.
  • pyzmq - A Python wrapper for the ZeroMQ message library.
  • Twisted - An event-driven networking engine.
  • napalm - Cross-vendor API to manipulate network devices.

News Feed

Libraries for building user's activities.

ORM

Libraries that implement Object-Relational Mapping or data mapping techniques.

  • Relational Databases
    • Django Models - A part of Django.
    • SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper.
    • dataset - Store Python dicts in a database - works with SQLite, MySQL, and PostgreSQL.
    • orator - The Orator ORM provides a simple yet beautiful ActiveRecord implementation.
    • peewee - A small, expressive ORM.
    • pony - ORM that provides a generator-oriented interface to SQL.
    • pydal - A pure Python Database Abstraction Layer.
  • NoSQL Databases
    • hot-redis - Rich Python data types for Redis.
    • mongoengine - A Python Object-Document-Mapper for working with MongoDB.
    • PynamoDB - A Pythonic interface for Amazon DynamoDB.
    • redisco - A Python Library for Simple Models and Containers Persisted in Redis.

Package Management

Libraries for package and dependency management.

  • pip - The Python package and dependency manager.
    • PyPI
    • pip-tools - A set of tools to keep your pinned Python dependencies fresh.
  • conda - Cross-platform, Python-agnostic binary package manager.

Package Repositories

Local PyPI repository server and proxies.

  • warehouse - Next generation Python Package Repository (PyPI).
  • bandersnatch - PyPI mirroring tool provided by Python Packaging Authority (PyPA).
  • devpi - PyPI server and packaging/testing/release tool.
  • localshop - Local PyPI server (custom packages and auto-mirroring of pypi).

Permissions

Libraries that allow or deny users access to data or functionality.

  • django-guardian - Implementation of per object permissions for Django 1.2+
  • django-rules - A tiny but powerful app providing object-level permissions to Django, without requiring a database.

Processes

Libraries for starting and communicating with OS processes.

Queue

Libraries for working with event and task queues.

  • celery - An asynchronous task queue/job queue based on distributed message passing.
  • huey - Little multi-threaded task queue.
  • mrq - Mr. Queue - A distributed worker task queue in Python using Redis & gevent.
  • rq - Simple job queues for Python.

Recommender Systems

Libraries for building recommender systems.

  • annoy - Approximate Nearest Neighbors in C++/Python optimized for memory usage.
  • fastFM - A library for Factorization Machines.
  • implicit - A fast Python implementation of collaborative filtering for implicit datasets.
  • libffm - A library for Field-aware Factorization Machine (FFM).
  • lightfm - A Python implementation of a number of popular recommendation algorithms.
  • spotlight - Deep recommender models using PyTorch.
  • Surprise - A scikit for building and analyzing recommender systems.
  • tensorrec - A Recommendation Engine Framework in TensorFlow.

RESTful API

Libraries for developing RESTful APIs.

  • Django
  • Flask
    • eve - REST API framework powered by Flask, MongoDB and good intentions.
    • flask-api-utils - Taking care of API representation and authentication for Flask.
    • flask-api - Browsable Web APIs for Flask.
    • flask-restful - Quickly building REST APIs for Flask.
    • flask-restless - Generating RESTful APIs for database models defined with SQLAlchemy.
  • Pyramid
    • cornice - A RESTful framework for Pyramid.
  • Framework agnostic
    • apistar - A smart Web API framework, designed for Python 3.
    • falcon - A high-performance framework for building cloud APIs and web app backends.
    • hug - A Python 3 framework for cleanly exposing APIs.
    • restless - Framework agnostic REST framework based on lessons learned from Tastypie.
    • ripozo - Quickly creating REST/HATEOAS/Hypermedia APIs.
    • sandman - Automated REST APIs for existing database-driven systems.

Robotics

Libraries for robotics.

  • PythonRobotics - This is a compilation of various robotics algorithms with visualizations.
  • rospy - This is a library for ROS (Robot Operating System).

RPC Servers

RPC-compatible servers.

Science

Libraries for scientific computing. Also see Python-for-Scientists

  • astropy - A community Python library for Astronomy.
  • bcbio-nextgen - Providing best-practice pipelines for fully automated high throughput sequencing analysis.
  • bccb - Collection of useful code related to biological analysis.
  • Biopython - Biopython is a set of freely available tools for biological computation.
  • cclib - A library for parsing and interpreting the results of computational chemistry packages.
  • Colour - Implementing a comprehensive number of colour theory transformations and algorithms.
  • NetworkX - A high-productivity software for complex networks.
  • NIPY - A collection of neuroimaging toolkits.
  • NumPy - A fundamental package for scientific computing with Python.
  • Open Babel - A chemical toolbox designed to speak the many languages of chemical data.
  • ObsPy - A Python toolbox for seismology.
  • PyDy - Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion.
  • PyMC - Markov Chain Monte Carlo sampling toolkit.
  • QuTiP - Quantum Toolbox in Python.
  • RDKit - Cheminformatics and Machine Learning Software.
  • SciPy - A Python-based ecosystem of open-source software for mathematics, science, and engineering.
  • statsmodels - Statistical modeling and econometrics in Python.
  • SymPy - A Python library for symbolic mathematics.
  • Zipline - A Pythonic algorithmic trading library.
  • SimPy - A process-based discrete-event simulation framework.

Search

Libraries and software for indexing and performing search queries on data.

Serialization

Libraries for serializing complex data types

Serverless Frameworks

Frameworks for developing serverless Python code.

  • python-lambda - A toolkit for developing and deploying Python code in AWS Lambda.
  • Zappa - A tool for deploying WSGI applications on AWS Lambda and API Gateway.

Specific Formats Processing

Libraries for parsing and manipulating specific text formats.

  • General
    • tablib - A module for Tabular Datasets in XLS, CSV, JSON, YAML.
  • Office
    • openpyxl - A library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files.
    • pyexcel - Providing one API for reading, manipulating and writing csv, ods, xls, xlsx and xlsm files.
    • python-docx - Reads, queries and modifies Microsoft Word 2007/2008 docx files.
    • python-pptx - Python library for creating and updating PowerPoint (.pptx) files.
    • unoconv - Convert between any document format supported by LibreOffice/OpenOffice.
    • XlsxWriter - A Python module for creating Excel .xlsx files.
    • xlwings - A BSD-licensed library that makes it easy to call Python from Excel and vice versa.
    • xlwt / xlrd - Writing and reading data and formatting information from Excel files.
  • PDF
    • PDFMiner - A tool for extracting information from PDF documents.
    • PyPDF2 - A library capable of splitting, merging and transforming PDF pages.
    • ReportLab - Allowing Rapid creation of rich PDF documents.
  • Markdown
    • Mistune - Fastest and full featured pure Python parsers of Markdown.
    • Python-Markdown - A Python implementation of John Gruber’s Markdown.
  • YAML
    • PyYAML - YAML implementations for Python.
  • CSV
    • csvkit - Utilities for converting to and working with CSV.
  • Archive
    • unp - A command line tool that can unpack archives easily.

Static Site Generator

Static site generator is a software that takes some text + templates as input and produces HTML files on the output.

  • mkdocs - Markdown friendly documentation generator.
  • pelican - Static site generator that supports Markdown and reST syntax.
  • lektor - An easy to use static CMS and blog engine.
  • nikola - A static website and blog generator.

Tagging

Libraries for tagging items.

Template Engine

Libraries and tools for templating and lexing.

  • Jinja2 - A modern and designer friendly templating language.
  • Genshi - Python templating toolkit for generation of web-aware output.
  • Mako - Hyperfast and lightweight templating for the Python platform.

Testing

Libraries for testing codebases and generating test data.

  • Testing Frameworks
    • pytest - A mature full-featured Python testing tool.
    • hypothesis - Hypothesis is an advanced Quickcheck style property based testing library.
    • nose2 - The successor to nose, based on `unittest2.
    • Robot Framework - A generic test automation framework.
    • unittest - (Python standard library) Unit testing framework.
  • Test Runners
    • green - A clean, colorful test runner.
    • mamba - The definitive testing tool for Python. Born under the banner of BDD.
    • tox - Auto builds and tests distributions in multiple Python versions
  • GUI / Web Testing
    • locust - Scalable user load testing tool written in Python.
    • PyAutoGUI - PyAutoGUI is a cross-platform GUI automation Python module for human beings.
    • Selenium - Python bindings for Selenium WebDriver.
    • sixpack - A language-agnostic A/B Testing framework.
    • splinter - Open source tool for testing web applications.
  • Mock
    • mock - (Python standard library) A mocking and patching library.
    • doublex - Powerful test doubles framework for Python.
    • freezegun - Travel through time by mocking the datetime module.
    • httmock - A mocking library for requests for Python 2.6+ and 3.2+.
    • httpretty - HTTP request mock tool for Python.
    • mocket - A socket mock framework with gevent/asyncio/SSL support.
    • responses - A utility library for mocking out the requests Python library.
    • VCR.py - Record and replay HTTP interactions on your tests.
  • Object Factories
    • factory_boy - A test fixtures replacement for Python.
    • mixer - Another fixtures replacement. Supported Django, Flask, SQLAlchemy, Peewee and etc.
    • model_mommy - Creating random fixtures for testing in Django.
  • Code Coverage
    • coverage - Code coverage measurement.
  • Fake Data
    • mimesis - is a Python library that help you generate fake data.
    • fake2db - Fake database generator.
    • faker - A Python package that generates fake data.
    • radar - Generate random datetime / time.

Text Processing

Libraries for parsing and manipulating plain texts.

  • General
    • chardet - Python 2/3 compatible character encoding detector.
    • difflib - (Python standard library) Helpers for computing deltas.
    • ftfy - Makes Unicode text less broken and more consistent automagically.
    • fuzzywuzzy - Fuzzy String Matching.
    • Levenshtein - Fast computation of Levenshtein distance and string similarity.
    • pangu.py - Paranoid text spacing.
    • pyfiglet - An implementation of figlet written in Python.
    • pypinyin - Convert Chinese hanzi (漢字) to pinyin (拼音).
    • textdistance - Compute distance between sequences with 30+ algorithms.
    • unidecode - ASCII transliterations of Unicode text.
  • Slugify
    • awesome-slugify - A Python slugify library that can preserve unicode.
    • python-slugify - A Python slugify library that translates unicode to ASCII.
    • unicode-slugify - A slugifier that generates unicode slugs with Django as a dependency.
  • Unique identifiers
    • hashids - Implementation of hashids in Python.
    • shortuuid - A generator library for concise, unambiguous and URL-safe UUIDs.
  • Parser
    • ply - Implementation of lex and yacc parsing tools for Python.
    • pygments - A generic syntax highlighter.
    • pyparsing - A general purpose framework for generating parsers.
    • python-nameparser - Parsing human names into their individual components.
    • python-phonenumbers - Parsing, formatting, storing and validating international phone numbers.
    • python-user-agents - Browser user agent parser.
    • sqlparse - A non-validating SQL parser.

Third-party APIs

Libraries for accessing third party services APIs. Also see List of Python API Wrappers and Libraries.

URL Manipulation

Libraries for parsing URLs.

  • furl - A small Python library that makes parsing and manipulating URLs easy.
  • purl - A simple, immutable URL class with a clean API for interrogation and manipulation.
  • pyshorteners - A pure Python URL shortening lib.
  • webargs - A friendly library for parsing HTTP request arguments with built-in support for popular web frameworks.

Video

Libraries for manipulating video and GIFs.

  • moviepy - A module for script-based movie editing with many formats, including animated GIFs.
  • scikit-video - Video processing routines for SciPy.

WSGI Servers

WSGI-compatible web servers.

  • bjoern - Asynchronous, very fast and written in C.
  • gunicorn - Pre-forked, partly written in C.
  • uWSGI - A project aims at developing a full stack for building hosting services, written in C.
  • waitress - Multi-threaded, powers Pyramid.
  • werkzeug - A WSGI utility library for Python that powers Flask and can easily be embedded into your own projects.

Web Asset Management

Tools for managing, compressing and minifying website assets.

  • django-compressor - Compresses linked and inline JavaScript or CSS into a single cached file.
  • django-pipeline - An asset packaging library for Django.
  • django-storages - A collection of custom storage back ends for Django.
  • fanstatic - Packages, optimizes, and serves static file dependencies as Python packages.
  • fileconveyor - A daemon to detect and sync files to CDNs, S3 and FTP.
  • flask-assets - Helps you integrate webassets into your Flask app.
  • webassets - Bundles, optimizes, and manages unique cache-busting URLs for static resources.

Web Content Extracting

Libraries for extracting web contents.

  • html2text - Convert HTML to Markdown-formatted text.
  • lassie - Web Content Retrieval for Humans.
  • micawber - A small library for extracting rich content from URLs.
  • newspaper - News extraction, article extraction and content curation in Python.
  • python-readability - Fast Python port of arc90's readability tool.
  • requests-html - Pythonic HTML Parsing for Humans.
  • sumy - A module for automatic summarization of text documents and HTML pages.
  • textract - Extract text from any document, Word, PowerPoint, PDFs, etc.
  • toapi - Every web site provides APIs.

Web Crawling

Libraries to automate web scraping.

  • cola - A distributed crawling framework.
  • feedparser - Universal feed parser.
  • grab - Site scraping framework.
  • MechanicalSoup - A Python library for automating interaction with websites.
  • pyspider - A powerful spider system.
  • robobrowser - A simple, Pythonic library for browsing the web without a standalone web browser.
  • scrapy - A fast high-level screen scraping and web crawling framework.
  • portia - Visual scraping for Scrapy.

Web Frameworks

Full stack web frameworks.

  • Django - The most popular web framework in Python.
  • Flask - A microframework for Python.
  • Masonite - The modern and developer centric Python web framework.
  • Pyramid - A small, fast, down-to-earth, open source Python web framework.
  • Sanic - Web server that's written to go fast.
  • Vibora - Fast, efficient and asynchronous Web framework inspired by Flask.
  • Tornado - A Web framework and asynchronous networking library.

WebSocket

Libraries for working with WebSocket.

Services

Online tools and APIs to simplify development.

Continuous Integration

Also see awesome-CIandCD.

  • CircleCI - A CI service that can run very fast parallel testing.
  • Travis CI - A popular CI service for your open source and private projects. (GitHub only)
  • Vexor CI - A continuous integration tool for private apps with pay-per-minute billing model.
  • Wercker - A Docker-based platform for building and deploying applications and microservices.

Code Quality

  • Codacy - Automated Code Review to ship better code, faster.
  • Codecov - Code coverage dashboard.
  • CodeFactor - Automated Code Review for Git.
  • Landscape - Hosted continuous Python code metrics.
  • PEP 8 Speaks - GitHub integration to review code style.

Resources

Where to discover new Python libraries.

 

原文:https://github.com/vinta/awesome-python

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of awesome Python frameworks, libraries, software and resources 

【iOS精选】精选iOS生态系统的精选列表,包括Objective-C和Swift Projects

Chinese, Simplified

Content

Courses

Getting Started

Courses, tutorials and guides

Accessibility

Frameworks that help to support accessibility features and enable people with disabilities to use your app

  • Capable - Track accessibility features to improve your app for people with certain disabilities.

Alexa

Frameworks that help to support writing custom alexa skills in swift

Analytics

Analytics platforms, SDK's, error tracking and real-time answers about your app

  • Instabug - In-app feedback, Bug and Crash reporting, Fix Bugs Faster through user-steps, video recordings, screen annotation, network requests logging.
  • Mixpanel - Advanced analytics platform.
  • Localytics - Brings app marketing and analytics together.
  • Answers by Fabric - Answers gives you real-time insight into people’s experience in your app.
  • GTrack - Lightweight Objective-C wrapper around the Google Analytics for iOS SDK with some extra goodies.
  • ARAnalytics - Analytics abstraction library offering a sane API for tracking events and user data.
  • Segment - The hassle-free way to integrate analytics into any iOS application.
  • MOCA Analytics - Paid cross-platform analytics backend.
  • Countly - Open source, mobile & web analytics, crash reports and push notifications platform for iOS & Android.
  • Abbi - A Simple SDK for developers to manage and maximise conversions of all in-app promotions.
  • devtodev - Comprehensive analytics service that improves your project and saves time for product development.
  • Bugsnag - Error tracking with a free tier. Error reports include data on device, release, user, and allows arbitrary data.
  • Inapptics - Helps analyze and visualize user behavior in mobile apps. Provides visual user journeys, heatmaps and crash replays.
  • Matomo - The MatomoTracker is an iOS, tvOS and macOS SDK for sending app analytics to a Matomo server.

App Routing

Elegant URL routing, navigation frameworks, deep links and more

  • WAAppRouting - iOS routing done right. Handles both URL recognition and controller displaying with parsed parameters. All in one line, controller stack preserved automatically!
  • DeepLinkKit - A splendid route-matching, block-based way to handle your deep links.
  • IntentKit - An easier way to handle third-party URL schemes in iOS apps.
  • JLRoutes - URL routing library for iOS with a simple block-based API.
  • IKRouter - URLScheme router than supports auto creation of UIViewControllers for associated url parameters to allow creation of navigation stacks
  • Appz - Easily launch and deeplink into external applications, falling back to web if not installed.
  • URLNavigator - ⛵️ Elegant URL Routing for Swift
  • Marshroute - Marshroute is an iOS Library for making your Routers simple but extremely powerful.
  • SwiftRouter - A URL Router for iOS.
  • Router - ? Simple Navigation for iOS.
  • ApplicationCoordinator - Coordinator is an object that handles navigation flow and shares flow’s handling for the next coordinator after switching on the next chain.
  • RxFlow - Navigation framework for iOS applications based on a Reactive Flow Coordinator pattern.
  • Linker - Lightweight way to handle internal and external deeplinks for iOS.
  • CoreNavigation - ?? Navigate between view controllers with ease.
  • DZURLRoute - Universal route engine for iOS app, it can handle URLScheme between applications and page route between UIViewController.
  • Crossroad - Crossroad is an URL router focused on handling Custom URL Schemes. Using this, you can route multiple URL schemes and fetch arguments and parameters easily.
  • ZIKRouter - An interface-oriented router for discovering modules and injecting dependencies with protocol in OC & Swift, iOS & macOS. Handles route in a type safe way.
  • RouteComposer - Library that helps to handle view controllers composition, routing and deeplinking tasks.
  • LightRoute - Easy transition between VIPER modules, implemented on pure Swift.

Apple TV

tvOS view controllers, wrappers, template managers and video players.

  • Voucher - A simple library to make authenticating tvOS apps easy via their iOS counterparts.
  • XCDYouTubeKit - YouTube video player for iOS, tvOS and macOS
  • TVMLKitchen - Swifty TVML template manager with or without client-server
  • BrowserTV - Turn your TV into a dashboard displaying any webpage!
  • Swift-GA-Tracker-for-Apple-tvOS - Google Analytics tracker for Apple tvOS provides an easy integration of Google Analytics’ measurement protocol for Apple TV.
  • ParallaxView - iOS controls and extensions that add parallax effect to your application.
  • TvOSTextViewer - Light and scrollable view controller for tvOS to present blocks of text
  • FocusTvButton - Light wrapper of UIButton that allows extra customization for tvOS
  • TvOSMoreButton - A basic tvOS button which truncates long text with '... More'.
  • TvOSPinKeyboard - PIN keyboard for tvOS
  • TvOSScribble - Handwriting numbers recognizer for Siri Remote
  • TvOSCustomizableTableViewCell - Light wrapper of UITableViewCell that allows extra customization for tvOS
  • TvOSSlider - TvOSSlider is an implementation of UISlider for tvOS

Architecture Patterns

Clean architecture, Viper, MVVM, Reactive... choose your weapon.

  • SwiftyVIPER - Makes implementing VIPER architecture much easier and cleaner.
  • CleanArchitectureRxSwift - Example of Clean Architecture of iOS app using RxSwift.
  • Viperit - Viper Framework for iOS. Develop an app following VIPER architecture in an easy way. Written and tested in Swift.
  • Reactant - Reactant is a reactive architecture for iOS
  • YARCH - More clean alternative to VIPER with unidirectional data flow (flux-like).
  • iOS-Viper-Architecture - This repository contains a detailed sample app that implements VIPER architecture in iOS using libraries and frameworks like Alamofire, AlamofireImage, PKHUD, CoreData etc.
  • Tempura - A holistic approach to iOS development, inspired by Redux and MVVM.
  • VIPER Module Generator - A Clean VIPER Modules Generator with comments and predfined functions.
  • MMVMi - A Validation Model for MVC and MVVM Design Patterns in iOS Applications.
  • ios-architecture - A collection of iOS architectures - MVC, MVVM, MVVM+RxSwift, VIPER, RIBs and many others

ARKit

Library and tools to help you build unparalleled augmented reality experiences

  • ARKit-CoreLocation -Combines the high accuracy of AR with the scale of GPS data.
  • Virtual Objects - Placing Virtual Objects in Augmented Reality.
  • ARVideoKit - Record and capture ARKit videos ?, photos ?, Live Photos ?, and GIFs ?.
  • ARKitEnvironmentMapper - A library that allows you to generate and update environment maps in real-time using the camera feed and ARKit's tracking capabilities.
  • SmileToUnlock - This library uses ARKit Face Tracking in order to catch a user's smile.
  • Placenote - A library that makes ARKit sessions persistent to a location using advanced computer vision
  • Poly - Unofficial Google Poly SDK – search and display 3D models
  • ARKit Emperor - The Emperor give you the most practical ARKit samples ever.

Authentication

Oauth and Oauth2 libraries, social logins and captcha tools.

  • Heimdallr.swift - Easy to use OAuth 2 library for iOS, written in Swift.
  • OhMyAuth - Simple OAuth2 library with a support of multiple services.
  • AuthenticationViewController - A simple to use, standard interface for authenticating to oauth 2.0 protected endpoints via SFSafariViewController.
  • OAuth2 - OAuth2 framework for macOS and iOS, written in Swift.
  • OAuthSwift - Swift based OAuth library for iOS
  • SimpleAuth - Simple social authentication for iOS.
  • AlamofireOauth2 - A swift implementation of OAuth2
  • SwiftyOAuth - A simple OAuth library for iOS with a built-in set of providers
  • Simplicity - A simple way to implement Facebook and Google login in your iOS and macOS apps.
  • InstagramAuthViewController - A ViewController for Instagram authentication.
  • InstagramSimpleOAuth - A quick and simple way to authenticate an Instagram user in your iPhone or iPad app.
  • DropboxSimpleOAuth - A quick and simple way to authenticate a Dropbox user in your iPhone or iPad app.
  • BoxSimpleOAuth - A quick and simple way to authenticate a Box user in your iPhone or iPad app.
  • InstagramLogin - A simple way to authenticate Instagram accounts on iOS.
  • ReCaptcha - [In]visible ReCaptcha for iOS.
  • LinkedInSignIn - Simple view controller to login and retrieve access token from LinkedIn.

Blockchain

Tool for smart contract interactions. Bitcoin protocol implementations and Frameworks for interacting with cryptocurrencies.

  • Web3.swift - Web3 library for interacting with the Ethereum blockchain.
  • web3swift - Elegant Web3js functionality in Swift. Native ABI parsing and smart contract interactions.
  • EthereumKit - EthereumKit is a free, open-source Swift framework for easily interacting with the Ethereum.
  • BitcoinKit - Bitcoin protocol toolkit for Swift, BitcoinKit implements Bitcoin protocol in Swift. It is an implementation of the Bitcoin SPV protocol written (almost) entirely in swift.
  • EtherWalletKit - Ethereum Wallet Toolkit for iOS - You can implement Ethereum wallet without a server and blockchain knowledge.
  • CoinpaprikaAPI - Coinpaprika API client with free & frequently updated market data from the world of crypto: coin prices, volumes, market caps, ATHs, return rates and more.
  • Bitcoin-Swift-Kit - Full Bitcoin library written on Swift. Complete SPV wallet implementation for Bitcoin, Bitcoin Cash and Dash blockchains.

Bridging

Sharing code between Objective-C and Swift, iOS and macOS, Javascript and Objective-C.

  • RubyMotion - RubyMotion is a revolutionary toolchain that lets you quickly develop and test native iOS and macOS applications for iPhone, iPad and Mac, all using the Ruby language.
  • JSPatch - JSPatch bridge Objective-C and Javascript using the Objective-C runtime. You can call any Objective-C class and method in JavaScript by just including a small engine. JSPatch is generally use for hotfix iOS App.
  • WebViewJavascriptBridge - An iOS/macOS bridge for sending messages between Obj-C and JavaScript in UIWebViews/WebViews.
  • MAIKit - A framework for sharing code between iOS and macOS.

Cache

Thread safe, offline and high performance cache libs and frameworks.

  • Awesome Cache - Delightful on-disk cache (written in Swift)
  • mattress - iOS Offline Caching for Web Content
  • Carlos - A simple but flexible cache
  • HanekeSwift - A lightweight generic cache for iOS written in Swift with extra love for images.
  • YYCache - High performance cache framework for iOS.
  • Cache - Nothing but Cache.
  • MGCacheManager - A delightful iOS Networking Cache Managing Class.
  • SPTPersistentCache - Everyone tries to implement a cache at some point in their iOS app’s lifecycle, and this is ours. By Spotify
  • Track - Track is a thread safe cache write by Swift. Composed of DiskCache and MemoryCache which support LRU.
  • UITableView Cache - UITableView cell cache that cures scroll-lags on a cell instantiating.
  • RocketData - A caching and consistency solution for immutable models.
  • PINCache - Fast, non-deadlocking parallel object cache for iOS and macOS
  • Johnny - Melodic Caching for Swift
  • Disk - Delightful framework for iOS to easily persist structs, images, and data.
  • Cachyr - A small key-value data cache for iOS, macOS and tvOS, written in Swift
  • Cache - Swift caching library.
  • MemoryCache - MemoryCache is type-safe memory cache.

Charts

Beautiful, Easy and Fully customized charts

  • Charts - A powerful chart / graph framework, the iOS equivalent to MPAndroidChart.
  • PNChart - A simple and beautiful chart lib used in Piner and CoinsMan for iOS
  • XJYChart - A Beautiful chart for iOS. Support animation, click, slide, area highlight.
  • BEMSimpleLineGraph - Elegant Line Graphs for iOS (charting library).
  • JBChartView - iOS-based charting library for both line and bar graphs.
  • XYPieChart - A simple and animated Pie Chart for your iOS app.
  • TEAChart - Simple and intuitive iOS chart library. Contribution graph, clock chart, and bar chart.
  • EChart - iOS/iPhone/iPad Chart, Graph. Event handling and animation supported.
  • FSLineChart - A line chart library for iOS.
  • chartee - a charting library for mobile platforms.
  • ANDLineChartView - ANDLineChartView is easy to use view-based class for displaying animated line chart.
  • TWRCharts - An iOS wrapper for ChartJS. Easily build animated charts by leveraging the power of native Obj-C code.
  • SwiftCharts - Easy to use and highly customizable charts library for iOS.
  • FlowerChart - Flower-shaped chart with custom appearance animation, fully vector.
  • Scrollable-GraphView - An adaptive scrollable graph view for iOS to visualise simple discrete datasets. Written in Swift.
  • Dr-Charts - Dr-Charts is a highly customisable, easy to use and interactive chart / graph framework in Objective-C.
  • Graphs - Light weight charts view generator for iOS.
  • FSInteractiveMap - A charting library to visualize and interact with a vector map on iOS. It's like Geochart but for iOS!
  • JYRadarChart - An iOS open source Radar Chart implementation.
  • TKRadarChart - A customizable radar chart in Swift
  • MagicPie - Awesome layer based pie chart. Fantastically fast and fully customizable. Amazing animations available with MagicPie!!1 ? ✨✨✨✨✨
  • PieCharts - Easy to use and highly customizable pie charts library for iOS.
  • CSPieChart - iOS PieChart Opensource. This is very easy to use and customizable.
  • DDSpiderChart - Easy to use and customizable Spider (Radar) Chart library for iOS written in Swift.
  • core-plot - a 2D plotting lib which is highly customizable and capable of drawing many types of plots.
  • ChartProgressBar - Draw a chart with progress bar style.
  • SMDiagramViewSwift - Meet cute and very flexibility library for iOS application for different data view in one circle diagram.
  • Swift LineChart - Line Chart library for iOS written in Swift.
  • SwiftChart - Line and area chart library for iOS.
  • EatFit - Eat fit is a component for attractive data representation inspired by Google Fit.
  • CoreCharts - CoreCharts is a simple powerful yet Charts library for apple products.

Code Quality

Quality always matters. Code checkers, memory vigilants, syntastic sugars and more.

  • Bootstrap - iOS project bootstrap aimed at high quality coding.
  • KZAsserts - Set of custom assertions that automatically generate NSError's, allow for both Assertions in Debug and Error handling in Release builds, with beautiful DSL.
  • PSPDFUIKitMainThreadGuard - Simple snippet generating assertions when UIKit is used on background threads.
  • ocstyle - Objective-C style checker.
  • spacecommander - Commit fully-formatted Objective-C code as a team without even trying.
  • DWURecyclingAlert - Optimizing UITableViewCell For Fast Scrolling.
  • Tailor - Cross-platform static analyzer for Swift that helps you to write cleaner code and avoid bugs.
  • SwiftCop - SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations.
  • Trackable - Trackable is a simple analytics integration helper library. It’s especially designed for easy and comfortable integration with existing projects.
  • MLeaksFinder - Find memory leaks in your iOS app at develop time.
  • HeapInspector-for-iOS - Find memory issues & leaks in your iOS app without instruments
  • FBMemoryProfiler - iOS tool that helps with profiling iOS Memory usage.
  • FBRetainCycleDetector - iOS library to help detecting retain cycles in runtime.
  • Buglife - Awesome bug reporting for iOS apps
  • Warnings-xcconfig - An xcconfig (Xcode configuration) file for easily turning on a boatload of warnings in your project or its targets.
  • Aardvark - Aardvark is a library that makes it dead simple to create actionable bug reports.
  • Stats - In-app memory usage monitoring.
  • GlueKit - A type-safe observer framework for Swift.
  • SwiftFormat - A code library and command-line formatting tool for reformatting Swift code.
  • PSTModernizer - Makes it easier to support older versions of iOS by fixing things and adding missing methods.
  • Bugsee - In-app bug and crash reporting with video, logs, network traffic and traces.
  • Fallback - Syntactic sugar for nested do-try-catch.
  • ODUIThreadGuard - A guard to help you check if you make UI changes not in main thread.
  • IBAnalyzer - Find common xib and storyboard-related problems without running your app or writing unit tests.
  • DecouplingKit - decoupling between modules in your iOS Project.
  • Clue - Flexible bug report framework for iOS with screencast, networking, interactions and view structure.
  • WeakableSelf - A Swift micro-framework to encapsulate [weak self] and guard statements within closures.

Linter

Static code analyzers to enforce style and conventions.

  • OCLint - Static code analysis tool for improving quality and reducing defects.
  • Taylor - Measure Swift code metrics and get reports in Xcode, Jenkins and other CI platforms.
  • Swiftlint - A tool to enforce Swift style and conventions.
  • IBLinter - A linter tool for Interface Builder.
  • SwiftLinter - Share lint rules between projects and lint changed files with SwiftLint.

Color

Hex color extensions, theming, color pickers and other awesome color tools.

  • DynamicColor - Yet another extension to manipulate colors easily in Swift. [e]
  • SwiftHEXColors - HEX color handling as an extension for UIColor. [e]
  • Colours - A beautiful set of predefined colors and a set of color methods to make your iOS/macOS development life easier.
  • UIColor-Hex-Swift - Convenience method for creating autoreleased color using RGBA hex string.
  • Hue - Hue is the all-in-one coloring utility that you'll ever need.
  • FlatUIColors - Flat UI color palette helpers written in Swift.
  • RandomColorSwift - An attractive color generator for Swift. Ported from randomColor.js.
  • PFColorHash - Generate color based on the given string.
  • BCColor - A lightweight but powerful color kit (Swift)
  • DKNightVersion - Manage Colors, Integrate Night/Multiple Themes
  • PrettyColors - PrettyColors is a Swift library for styling and coloring text in the Terminal. The library outputs ANSI escape codes and conforms to ECMA Standard 48.
  • TFTColor - Simple Extension for RGB and CMKY Hex Strings and Hex Values (ObjC & Swift).
  • CostumeKit - Base types for theming an app.
  • CSS3ColorsSwift - A UIColor extension with CSS3 Colors name.
  • Colorify - Simple, yet powerful color library that includes latest and most trendy colors from 2017.
  • ChromaColorPicker - An intuitive iOS color picker built in Swift.
  • Lorikeet - A lightweight Swift framework for aesthetically pleasing color-scheme generation and CIE color-difference calculation.
  • Gestalt - An unintrusive & light-weight iOS app-theming library with support for animated theme switching.

Command Line

Smart, beauftil and elegant tools to help you create command line applications.

  • Swiftline - Swiftline is a set of tools to help you create command line applications.
  • Commander - Compose beautiful command line interfaces in Swift
  • ColorizeSwift - Terminal string styling for Swift.
  • Guaka - The smartest and most beautiful (POSIX compliant) Command line framework for Swift
  • Marathon - Marathon makes it easy to write, run and manage your Swift scripts
  • CommandCougar - An elegant pure Swift library for building command line applications.
  • Crayon - Terminal string styling with expressive api and 256/TrueColor support.
  • SwiftShell - A Swift framework for shell scripting and running shell commands.
  • SourceDocs - Command Line Tool that generates Markdown documentation from inline source code comments.

Concurrency

Job schedulers, Coroutines, Asynchronous and Type safe threads libs and frameworks written in Swift

  • Venice - CSP (Coroutines, Channels, Select) for Swift.
  • Concurrent - Functional Concurrency Primitives.
  • Flow - Operation Oriented Programming in Swift.
  • Brisk - A Swift DSL that allows concise and effective concurrency manipulation.
  • Aojet - An actor model library for swift.
  • Overdrive - Fast async task based Swift framework with focus on type safety, concurrency and multi threading.
  • AsyncNinja - A complete set of concurrency and reactive programming primitives.
  • Kommander - Kommander is a Swift library to manage the task execution in different threads. Through the definition a simple but powerful concept, Kommand.
  • Threadly - Type-safe thread-local storage in Swift
  • Flow-iOS - Make your logic flow and data flow clean and human readable
  • Queuer - A queue manager, built on top of OperationQueue and Dispatch (aka GCD).
  • SwiftQueue - Job Scheduler with Concurrent run, failure/retry, persistence, repeat, delay and more.
  • GroupWork - Easy concurrent, asynchronous tasks in Swift.
  • StickyLocking - A general purpose embedded hierarchical lock manager used to build highly concurrent applications of all types. Built with Swift and runs on iOS, OSX, and Linux.

Core Data

Core data Frameworks, wrappers, generators and boilerplates.

  • Ensembles - A synchronization framework for Core Data.
  • Mogenerator - Automatic Core Data code generation.
  • MagicalRecord - Super Awesome Easy Fetching for Core Data.
  • CoreStore - Powerful Core Data framework for Incremental Migrations, Fetching, Observering, etc.
  • Core Data Query Interface A type-safe, fluent query framework for Core Data.
  • Graph - An elegant data-driven framework for CoreData in Swift.
  • CoreDataDandy - A feature-light wrapper around Core Data that simplifies common database operations.
  • Sync - ? Modern Swift JSON synchronization to Core Data
  • AlecrimCoreData - A powerful and simple Core Data wrapper framework written in Swift.
  • AERecord - Super awesome Core Data wrapper in Swift.
  • CoreDataStack - The Big Nerd Ranch Core Data Stack
  • JSQCoreDataKit - A swifter Core Data stack
  • Skopelos - A minimalistic, thread safe, non-boilerplate and super easy to use version of Active Record on Core Data. Simply all you need for doing Core Data. Swift flavour.
  • Cadmium - A complete swift framework that wraps CoreData and helps facilitate best practices.
  • DataKernel - Simple CoreData wrapper to ease operations.
  • DATAStack - 100% Swift Simple Boilerplate Free Core Data Stack. NSPersistentContainer.
  • JustPersist - JustPersist is the easiest and safest way to do persistence on iOS with Core Data support out of the box.
  • PrediKit - An NSPredicate DSL for iOS, macOS, tvOS, & watchOS. Inspired by SnapKit and lovingly written in Swift.
  • Records - In just a few minutes, setup a fully functioning CoreData implementation that embraces the static, type-safe nature of Swift.
  • PredicateFlow - Write amazing, strong-typed and easy-to-read NSPredicate, allowing you to write flowable NSPredicate, without guessing attribution names, predicate operation or writing wrong arguments type.

Database

Wrappers, clients, Parse alternatives and safe tools to deal with ephemeral and persistent data.

  • Realm - The alternative to CoreData and SQLite: Simple, modern and fast.
  • YapDatabase - YapDatabase is an extensible database for iOS & Mac.
  • Couchbase Mobile - Couchbase document store for mobile with cloud sync.
  • FMDB - A Cocoa / Objective-C wrapper around SQLite.
  • FCModel - An alternative to Core Data for people who like having direct SQL access.
  • Zephyr - Effortlessly synchronize NSUserDefaults over iCloud.
  • Prephirences - Prephirences is a Swift library that provides useful protocols and convenience methods to manage application preferences, configurations and app-state.
  • Storez - Safe, statically-typed, store-agnostic key-value storage (with namespace support).
  • SwiftyUserDefaults - Statically-typed NSUserDefaults.
  • SugarRecord - Data persistence management library.
  • SQLite.swift - A type-safe, Swift-language layer over SQLite3.
  • GRDB.swift - A versatile SQLite toolkit for Swift, with WAL mode support
  • Fluent - Simple ActiveRecord implementation for working with your database in Swift.
  • ParseAlternatives - A collaborative list of Parse alternative backend service providers.
  • TypedDefaults - TypedDefaults is a utility library to type-safely use NSUserDefaults.
  • realm-cocoa-converter - A library that provides the ability to import/export Realm files from a variety of data container formats.
  • YapDatabaseExtensions - YapDatabase extensions for use with Swift
  • RealmGeoQueries - RealmGeoQueries simplifies spatial queries with Realm Cocoa. In the absence of and official functions, this library provide the possibility to do proximity search. [e]
  • SwiftMongoDB - A MongoDB interface for Swift
  • ObjectiveRocks - An Objective-C wrapper of Facebook's RocksDB - A Persistent Key-Value Store for Flash and RAM Storage.
  • OHMySQL - An Objective-C wrapper of MySQL C API.
  • SwiftStore - Key-Value store for Swift backed by LevelDB
  • OneStore - A single value proxy for NSUserDefaults, with clean API.
  • MongoDB - A Swift wrapper around the mongo-c client library, enabling access to MongoDB servers.
  • MySQL - A Swift wrapper around the MySQL client library, enabling access to MySQL servers.
  • Redis - A Swift wrapper around the Redis client library, enabling access to Redis.
  • PostgreSQL - A Swift wrapper around the libpq client library, enabling access to PostgreSQL servers.
  • FileMaker - A Swift wrapper around the FileMaker XML Web publishing interface, enabling access to FileMaker servers.
  • Nora - Nora is a Firebase abstraction layer for working with FirebaseDatabase and FirebaseStorage.
  • PersistentStorageSerializable - Swift library that makes easier to serialize the user's preferences (app's settings) with system User Defaults or Property List file on disk.
  • WCDB - WCDB is an efficient, complete, easy-to-use mobile database framework for iOS, macOS.
  • StorageKit - Your Data Storage Troubleshooter ?
  • UserDefaults - Simple, Strongly Typed UserDefaults for iOS, macOS and tvOS
  • Default - Modern interface to UserDefaults + Codable support
  • IceCream - Sync Realm Database with CloudKit
  • FirebaseHelper - Safe and easy wrappers for common Firebase Realtime Database functions.
  • Shallows - Your lightweight persistence toolbox.
  • StorageManager - Safe and easy way to use FileManager as Database.
  • RealmWrapper - Safe and easy wrappers for RealmSwift.
  • UserDefaultsStore - An easy and very light way to store and retrieve -reasonable amount- of Codable objects, in a couple lines of code!
  • PropertyKit - Protocol-First, Type and Key-Safe Swift Property for iOS, macOS and tvOS
  • PersistenceKit - Store and retrieve Codable objects to various persistence layers, in a couple lines of code!
  • ModelAssistant - Elegant library to manage the interactions between view and model in Swift.
  • MMKV - An efficient, small mobile key-value storage framework developed by WeChat. Works on iOS, Android, macOS and Windows.
  • Defaults - Swifty and modern UserDefaults.
  • MongoKitten - A pure Swift MongoDB client implementation with support for embedded databases.
  • SecureDefaults - A lightweight wrapper over UserDefaults/NSUserDefaults with an extra AES-256 encryption layer.
  • Unrealm - Unrealm enables you to easily store Swift native Classes, Structs and Enums into Realm

Data Structures / Algorithms

Diffs, keypaths, sorted lists and other amazing data structures wrappers and libraries.

  • Changeset - Minimal edits from one collection to another
  • BTree - Fast ordered collections for Swift using in-memory B-trees
  • SwiftStructures - Examples of commonly used data structures and algorithms in Swift.
  • diff - Simple diff library in pure Swift
  • Brick - ? A generic view model for both basic and complex scenarios
  • Algorithm - Algorithm is a collection of data structures that are empowered by a probability toolset.
  • AnyObjectConvertible - Convert your own struct/enum to AnyObject easily.
  • Dollar - A functional tool-belt for Swift Language similar to Lo-Dash or Underscore.js in Javascript https://www.dollarswift.org/.
  • Result - Swift type modeling the success/failure of arbitrary operations.
  • EKAlgorithms - Some well known CS algorithms & data structures in Objective-C.
  • Monaka - Convert custom struct and fundamental values to NSData.
  • Buffer - Swift μ-framework for efficient array diffs, collection observation and cell configuration.
  • SwiftGraph - Graph data structure and utility functions in pure Swift.
  • SwiftPriorityQueue - A priority queue with a classic binary heap implementation in pure Swift.
  • Pencil - Write values to file and read it more easily.
  • HeckelDiff - A fast Swift diffing library.
  • Dekoter - NSCoding's counterpart for Swift structs.
  • swift-algorithm-club - Algorithms and data structures in Swift, with explanations!
  • Impeller - A Distributed Value Store in Swift
  • Dispatch - Multi-store Flux implementation in Swift
  • DeepDiff - Diff in Swift
  • Differ - Swift library to generate differences and patches between collections.
  • Probably - A Swift probability and statistics library.
  • RandMyMod - RandMyMod base on your own struct or class create one or a set of randomized instance.
  • KeyPathKit - KeyPathKit provides a seamless syntax to manipulate data using typed keypaths.
  • Differific - A fast and convenient diffing framework.
  • OneWaySynchronizer - The simplest abstraction to synchronize local data with remote source.
  • DifferenceKit - ? A fast and flexible O(n) difference algorithm framework for Swift collection.

Date & Time

Time and NSCalendar libraries. Also contains Sunrise and Sunset time generators, time pickers and NSTimer interfaces.

  • Timepiece - Intuitive NSDate extensions in Swift
  • SwiftDate - The best way to manage Dates and Timezones in Swift.
  • SwiftMoment - A time and calendar manipulation library.
  • DateTools - Dates and times made easy in Objective-C
  • SwiftyTimer - Swifty API for NSTimer
  • DateHelper - Convenience extension for NSDate in Swift
  • iso-8601-date-formatter - A Cocoa NSFormatter subclass to convert dates to and from ISO-8601-formatted strings. Supports calendar, week, and ordinal formats.
  • EmojiTimeFormatter - Format your dates/times as emojis.
  • Kronos - Elegant NTP date library in Swift
  • TrueTime - Get the true current time impervious to device clock time changes. (NTP library for Swift) .
  • 10Clock - This Control is a beautiful time-of-day picker heavily inspired by the iOS 10 "Bedtime" timer.
  • NSDate-TimeAgo - A "time ago", "time since", "relative date", or "fuzzy date" category for NSDate and iOS, Objective-C, Cocoa Touch, iPhone, iPad.
  • AnyDate - Swifty Date & Time API inspired from Java 8 DateTime API.
  • TimeZonePicker - A TimeZonePicker UIViewController similar to the iOS Settings app.
  • Time - Type-safe time calculations in Swift, powered by generics. [e]
  • Chronology - Building a better date/time library
  • Solar - A Swift micro library for generating Sunrise and Sunset times.
  • TimePicker - Configurable time picker component based on a pan gesture and its velocity.
  • LFTimePicker - Custom Time Picker ViewController with Selection of start and end times in Swift
  • NVDate - Swift4 Date extension library
  • Schedule - ⏳ A missing lightweight task scheduler for Swift with an incredibly human-friendly syntax.

Debugging

Debugging tools, crash reports, logs and console UI's.

  • Xniffer - A swift network profiler built on top of URLSession.
  • Netfox - A lightweight, one line setup, iOS / macOS network debugging library!
  • PonyDebugger - Remote network and data debugging for your native iOS app using Chrome Developer Tools.
  • DBDebugToolkit - Set of easy to use debugging tools for iOS developers & QA engineers.
  • Flex - An in-app debugging and exploration tool for iOS.
  • chisel - Collection of LLDB commands to assist debugging iOS apps.
  • Alpha - Next generation debugging framework for iOS.
  • AEConsole - Customizable Console UI overlay with debug log on top of your iOS App.
  • GodEye - Automatically display Log,Crash,Network,ANR,Leak,CPU,RAM,FPS,NetFlow,Folder and etc with one line of code based on Swift.
  • NetworkEye - a iOS network debug library, It can monitor HTTP requests within the App and displays information related to the request.
  • Dotzu - iOS app debugger while using the app. Crash report, logs, network.
  • Hyperion - In-app design review tool to inspect measurements, attributes, and animations.
  • Httper-iOS - App for developers to test REST API.
  • Droar - Droar is a modular, single-line installation debugging window
  • Wormholy - iOS network debugging, like a wizard
  • AppSpector - Remote iOS and Android debugging and data collection service. You can debug networking, logs, CoreData, SQLite, NSNotificationCenter and mock device's geo location.
  • Woodpecker - View sandbox files, UserDefaults, network request from Mac.
  • LayoutInspector - Debug app layouts directly on iOS device: inspect layers in 3D and debug each visible view attributes
  • MTHawkeye - Profiling / Debugging assist tools for iOS, include tools: UITimeProfiler, Memory Allocations, Living ObjC Objects Sniffer, Network Transaction Waterfall, etc.

EventBus

Promises and Futures libraries to help you write better async code in Swift.

  • SwiftEventBus - A publish/subscribe event bus optimized for iOS.
  • PromiseKit - Promises for iOS and macOS.
  • Bolts - Bolts is a collection of low-level libraries designed to make developing mobile apps easier, including tasks (promises) and app links (deep links).
  • SwiftTask - Promise + progress + pause + cancel + retry for Swift.
  • When - A lightweight implementation of Promises in Swift.
  • then? - Elegant Async code in Swift.
  • Bolts-Swift - Bolts is a collection of low-level libraries designed to make developing mobile apps easier.
  • RWPromiseKit - A light-weighted Promise library for Objective-C
  • FutureLib - FutureLib is a pure Swift 2 library implementing Futures & Promises inspired by Scala.
  • SwiftNotificationCenter - A Protocol-Oriented NotificationCenter which is type safe, thread safe and with memory safety
  • FutureKit - A Swift based Future/Promises Library for iOS and macOS.
  • signals-ios - Typeful eventing
  • BrightFutures - Write great asynchronous code in Swift using futures and promises.
  • NoticeObserveKit - NoticeObserveKit is type-safe NotificationCenter wrapper that associates notice type with info type.
  • Hydra - Promises & Await - Write better async code in Swift
  • Promis - The easiest Future and Promises framework in Swift. No magic. No boilerplate.
  • Bluebird.swift - Promise/A+, Bluebird inspired, implementation in Swift 4.
  • Promise - A Promise library for Swift, based partially on Javascript's A+ spec.
  • promises - Google provides a synchronization construct for Objective-C and Swift to facilitate writing asynchronous code.
  • Continuum - NotificationCenter based Lightweight UI / AnyObject binder.
  • Futures - Lightweight promises for iOS, macOS, tvOS, watchOS, and server-side Swift.
  • EasyFutures - ? Swift Futures & Promises. Easy to use. Highly combinable.
  • TopicEventBus - Publish–subscribe design pattern implementation framework, with ability to publish events by topic. (NotificationCenter extended alternative)

Files

File management, file browser, zip handling and file observers.

  • FileKit - Simple and expressive file management in Swift.
  • Zip - Swift framework for zipping and unzipping files.
  • FileBrowser - Powerful Swift file browser for iOS.
  • Ares - Zero-setup P2P file transfer between Macs and iOS devices
  • FileProvider - FileManager replacement for Local, iCloud and Remote (WebDAV/FTP/Dropbox/OneDrive/SMB2) files on iOS/tvOS and macOS.
  • KZFileWatchers - A micro-framework for observing file changes, both local and remote. Helpful in building developer tools.
  • ZipArchive - ZipArchive is a simple utility class for zipping and unzipping files on iOS and Mac.
  • FileExplorer - Powerful file browser for iOS that allows its users to choose and remove files and/or directories.
  • ZIPFoundation - Effortless ZIP Handling in Swift
  • AppFolder - AppFolder is a lightweight framework that lets you design a friendly, strongly-typed representation of a directories inside your app's container.
  • ZipZap - zip file I/O library for iOS, macOS and tvOS.
  • AMSMB2 - Swift framework to connect SMB 2/3 shares for iOS.

Functional Programming

Collection of Swift functional programming tools.

  • Forbind - Functional chaining and promises in Swift.
  • Funky - Functional programming tools and experiments in Swift.
  • LlamaKit - Collection of must-have functional Swift tools.
  • Oriole - A functional utility belt implemented as Swift protocol extensions. [e]
  • Prelude - Swift µframework of simple functional programming tools.
  • Swiftx - Functional data types and functions for any project.
  • Swiftz - Functional programming in Swift.
  • OptionalExtensions - Swift µframework with extensions for the Optional Type. [e]
  • Argo - Functional JSON parsing library for Swift
  • Runes - Infix operators for monadic functions in Swift.
  • Bow - Typed Functional Programming companion library for Swift.

Games

  • Sage - A cross-platform chess library for Swift.
  • ShogibanKit - ShogibanKit is a framework for implementing complex Japanese Chess (Shogii) in Swift. No UI, nor AI.
  • SKTiled - Swift framework for working with Tiled assets in SpriteKit
  • CollectionNode - A swift framework for a collectionView in SpriteKit
  • AssetImportKit - Swifty cross platform library (macOS, iOS) that converts Assimp supported models to SceneKit scenes.
  • glide engine - SpriteKit and GameplayKit based engine for making 2d games, with practical examples and tutorials.

GCD

Grand Central Dispatch syntax sugars, tools and timers.

  • GCDKit - Grand Central Dispatch simplified with Swift.
  • Async - Syntactic sugar in Swift for asynchronous dispatches in Grand Central Dispatch
  • SwiftSafe - Thread synchronization made easy
  • YYDispatchQueuePool - iOS utility class to manage global dispatch queue.
  • AlecrimAsyncKit - Bringing async and await to Swift world with some flavouring.
  • GrandSugarDispatch - Syntactic sugar for Grand Central Dispatch (GCD)
  • Threader - Pretty GCD calls and easier code execution.
  • Dispatch - Just a tiny library to make using GCD easier and intuitive
  • GCDTimer - Well tested Grand Central Dispatch (GCD) Timer in Swift.
  • Chronos-Swift - ⌛️ Grand Central Dispatch Utilities
  • Me - A super slim solution to the nested asynchronous computations.
  • SwiftyTask - An extreme queuing system with high performance for managing all task in app with closure.

Gesture

Libraries and tools to handle gestures.

Graphics

CoreGraphics, CoreAnimation, SVG, CGContext libraries, helpers and tools.

  • Graphicz - Light-weight, operator-overloading-free complements to CoreGraphics!
  • PKCoreTechniques - The code for my CoreGraphics+CoreAnimation talk, held during the 2012 iOS Game Design Seminar at the Technical University Munich.
  • MPWDrawingContext - An Objective-C wrapper for CoreGraphics CGContext
  • DePict - A simple, declarative, functional drawing framework, in Swift!
  • SwiftSVG - A single pass SVG parser with multiple interface options (String, NS/UIBezierPath, CAShapeLayer, and NS/UIView).
  • InkKit - Write-Once, Draw-Everywhere for iOS and macOS -- Now in Swift!
  • YYAsyncLayer - iOS utility classes for asynchronous rendering and display.
  • NXDrawKit - NXDrawKit is a simple and easy but useful drawing kit for iPhone
  • jot - An iOS framework for easily adding drawings and text to images.
  • SVGKit - Display and interact with SVG Images on iOS / macOS, using native rendering (CoreAnimation) (currently only supported for iOS - macOS code needs updating).
  • Snowflake - ❄️ SVG in Swift.
  • HxSTLParser - Basic STL loader for SceneKit
  • ProcessingKit - Visual designing library for iOS & OSX
  • EZYGradientView - Create gradients and blur gradients without a single line of code
  • AEConicalGradient - Conical (angular) gradient layer written in Swift.
  • MKGradientView - Core Graphics based gradient view capable of producing Linear (Axial), Radial (Circular), Conical (Angular), Bilinear (Four Point) gradients, written in Swift.
  • EPShapes - Design shapes in Interface Builder.
  • Macaw - Powerful and easy-to-use vector graphics library with SVG support written in Swift.
  • BlockiesSwift - Unique blocky identicons/profile picture generator.
  • Rough - lets you draw in a sketchy, hand-drawn-like, style.
  • GraphLayout - UI controls for graph visualization. It is powered by Graphviz.
  • Drawsana - iOS framework for building raster drawing and image markup views, written in Swift and maintained by Asana

Hardware

Bluetooth

Libraries to deal with nearby devices, BLE tools and MultipeerConnectivity wrappers.

  • Discovery - A very simple library to discover and retrieve data from nearby devices (even if the peer app works at background).
  • LGBluetooth - Simple, block-based, lightweight library over CoreBluetooth. Will clean up your Core Bluetooth related code.
  • PeerKit An open-source Swift framework for building event-driven, zero-config Multipeer Connectivity apps.
  • BluetoothKit - Easily communicate between iOS/macOS devices using BLE.
  • Bluetonium - Bluetooth mapping in Swift
  • BlueCap - iOS Bluetooth LE framework
  • Apple Family - Quickly connect Apple devices together with Bluetooth, wifi, and USB.
  • Bleu - BLE (Bluetooth LE) for U
  • Bluejay - A simple Swift framework for building reliable Bluetooth LE apps.
  • BabyBluetooth - The easiest way to use Bluetooth (BLE) in iOS/MacOS.
  • ExtendaBLE - Simple Blocks-Based BLE Client for iOS/tvOS/watchOS/OSX/Android. Quickly configuration for centrals/peripherals, perform packet based read/write operations, and callbacks for characteristic updates.
  • PeerConnectivity - Functional wrapper for Apple's MultipeerConnectivity framework.
  • AZPeerToPeerConnection - AZPeerToPeerConnectivity is a wrapper on top of Apple iOS Multipeer Connectivity framework. It provides an easier way to create and manage sessions. Easy to integrate.
  • MultiPeer - Multipeer is a wrapper for Apple's MultipeerConnectivity framework for offline data transmission between Apple devices. It makes easy to automatically connect to multiple nearby devices and share information using either bluetooth or wifi.

Camera

Mocks, ImagePickers, and multiple options of customizable camera implementation

  • TGCameraViewController - Custom camera with AVFoundation. Beautiful, light and easy to integrate with iOS projects.
  • PBJVision - iOS camera engine, features touch-to-record video, slow motion video, and photo capture.
  • Cool-iOS-Camera - A fully customisable and modern camera implementation for iOS made with AVFoundation.
  • SCRecorder - Camera engine with Vine-like tap to record, animatable filters, slow motion, segments editing.
  • ALCameraViewController - A camera view controller with custom image picker and image cropping. Written in Swift.
  • CameraManager - Simple Swift class to provide all the configurations you need to create custom camera view in your app.
  • RSBarcodes_Swift - 1D and 2D barcodes reader and generators for iOS 8 with delightful controls. Now Swift.
  • LLSimpleCamera - A simple, customizable camera control - video recorder for iOS.
  • Fusuma - Instagram-like photo browser and a camera feature with a few line of code in Swift.
  • BarcodeScanner - ? Simple and beautiful barcode scanner.
  • HorizonSDK-iOS - State of the art real-time video recording / photo shooting iOS library.
  • FastttCamera - Fasttt and easy camera framework for iOS with customizable filters
  • DKCamera - A lightweight & simple camera framework for iOS. Written in Swift.
  • NextLevel - Next Level is a media capture camera library for iOS.
  • CameraEngine - ?? Camera engine for iOS, written in Swift, above AVFoundation. ?
  • SwiftyCam - A Snapchat Inspired iOS Camera Framework written in Swift.
  • CameraBackground - Show camera layer as a background to any UIView.
  • Lumina - Full service camera that takes photos, videos, streams frames, detects metadata, and streams CoreML predictions :largeorangediamond:
  • RAImagePicker - RAImagePicker is a protocol-oriented framework that provides custom features from the built-in Image Picker Edit.
  • FDTake - Easily take a photo or video or choose from library.
  • YPImagePicker - Instagram-like image picker & filters for iOS
  • MockImagePicker - Mock UIImagePickerController for testing camera based UI in simulator.
  • iOS-Depth-Sampler - A collection of code examples for Depth APIs.
  • TakeASelfie - An iOS framework that uses the front camera, detects your face and takes a selfie.
  • HybridCamera - Video and photo camera for iOS, similar to the SnapChat camera.
  • CameraKit-iOS - Massively increase camera performance and ease of use in your next iOS project.

Force Touch

Quick actions and peek and pop interactions

  • QuickActions - Swift wrapper for iOS Home Screen Quick Actions (App Icon Shortcuts)
  • JustPeek - JustPeek is an iOS Library that adds support for Force Touch-like Peek and Pop interactions on devices that do not natively support this kind of interaction.
  • PeekView - PeekView supports peek, pop and preview actions for iOS devices without 3D Touch capibility.

iBeacon

Device detect libraries and iBeacon helpers

  • Proxitee - Allows developers to create proximity aware applications utilizing iBeacons & geo fences.
  • OWUProximityManager - iBeacons + CoreBluetooth.
  • Vicinity - Vicinity replicates iBeacons (by analyzing RSSI) and supports broadcasting and detecting low-energy Bluetooth devices in the background.
  • BeaconEmitter - Turn your Mac as an iBeacon.
  • MOCA Proximity - Paid proximity marketing platform that lets you add amazing proximity experiences to your app.
  • JMCBeaconManager - An iBeacon Manager class that is responsible for detecting beacons nearby.

Location

Location monitoring, detect motion and geofencing libraries

  • IngeoSDK - Always-On Location monitoring framework for iOS.
  • LocationManager - Provides a block-based asynchronous API to request the current location, either once or continuously.
  • SwiftLocation - Location & Beacon Monitoring in Swift
  • SOMotionDetector - Simple library to detect motion. Based on location updates and acceleration.
  • LocationPicker - A ready for use and fully customizable location picker for your app
  • BBLocationManager - A Location Manager for easily implementing location services & geofencing in iOS.
  • set-simulator-location - CLI for setting location in the iOS simulator.
  • NominatimKit - A Swift wrapper for (reverse) geocoding of OpenStreetMap data.

Other Hardware

  • MotionKit - Get the data from Accelerometer, Gyroscope and Magnetometer in only Two or a few lines of code. CoreMotion now made insanely simple.
  • DarkLightning - Simply the fastest way to transmit data between iOS/tvOS and macOS.
  • Deviice - Simply library to detect the device on which the app is running (and some properties)
  • DeviceKit - DeviceKit is a value-type replacement of UIDevice.
  • Luminous - Luminous is a big framework which can give you a lot of information (more than 50) about the current system.
  • Device - Light weight tool for detecting the current device and screen size written in swift.
  • WatchShaker - WatchShaker is a watchOS helper to get your ⌚️ shake movement written in swift.
  • WatchCon - WatchCon is a tool which enables creating easy connectivity between iOS and WatchOS. ⌚️
  • TapticEngine - TapticEngine generates iOS Device vibrations.
  • UIDeviceComplete - UIDevice extensions that fill in the missing pieces.
  • NFCNDEFParse - NFC Forum Well Known Type Data Parser for iOS11 and Core NFC.
  • Device.swift - Super-lightweight library to detect used device.
  • SDVersion - ? Lightweight Cocoa library for detecting the running device's model and screen size.
  • Haptico - ? Easy to use haptic feedback generator with pattern-play support.

Layout

Auto Layout, UI frameworks and a gorgeous list of tools to simplify layout constructions

  • Masonry - Harness the power of AutoLayout NSLayoutConstraints with a simplified, chainable and expressive syntax.
  • FLKAutoLayout - UIView category which makes it easy to create layout constraints in code.
  • Façade - Programmatic view layout for the rest of us - an autolayout alternative.
  • PureLayout - The ultimate API for iOS & macOS Auto Layout — impressively simple, immensely powerful. Objective-C and Swift compatible.
  • SnapKit - A Swift Autolayout DSL for iOS & macOS.
  • Cartography - A declarative Auto Layout DSL for Swift ??
  • AutoLayoutPlus - A bit of steroids for AutoLayout, powered by Swift.
  • Neon - A powerful Swift programmatic UI layout framework.
  • MisterFusion - A Swift DSL for AutoLayout. It is the extremely clear, but concise syntax, in addition, can be used in both Swift and Objective-C.
  • SwiftBox - Flexbox in Swift, using Facebook's css-layout.
  • ManualLayout - Easy to use and flexible library for manually laying out views and layers for iOS and tvOS. Supports AsyncDisplayKit. [e]
  • Stevia - Elegant view layout for iOS.
  • Manuscript - AutoLayoutKit in pure Swift.
  • FDTemplateLayoutCell - Template auto layout cell for automatically UITableViewCell height calculating
  • SwiftAutoLayout - Tiny Swift DSL for Autolayout
  • FormationLayout - Work with auto layout and size classes easily.
  • SwiftyLayout - Lightweight declarative auto-layout framework for Swift
  • Swiftstraints - Auto Layout In Swift Made Easy
  • SwiftBond - Bond is a Swift binding framework that takes binding concepts to a whole new level. It's simple, powerful, type-safe and multi-paradigm.
  • Restraint - Minimal Auto Layout in Swift
  • EasyPeasy - Auto Layout made easy
  • Auto Layout Magic - Build 1 scene, let Auto Layout Magic generate the constraints for you! Scenes look great across all devices!
  • Anchorman - An autolayout library for the damn fine citizens of San Diego.
  • LayoutKit - LayoutKit is a fast view layout library for iOS.
  • Relayout - Swift microframework for declaring Auto Layout constraints functionally
  • Anchorage - A collection of operators and utilities that simplify iOS layout code.
  • Compose - Compose is a library that helps you compose complex and dynamic views.
  • BrickKit - With BrickKit, you can create complex and responsive layouts in a simple way. It's easy to use and easy to extend. Create your own reusable bricks and behaviors.
  • Framezilla - Elegant library which wraps working with frames with a nice chaining syntax.
  • TinyConstraints - The syntactic sugar that makes Auto Layout sweeter for human use.
  • MyLinearLayout - MyLayout is a powerful iOS UI framework implemented by Objective-C. It integrates the functions with Android Layout,iOS AutoLayout,SizeClass, HTML CSS float and flexbox and bootstrap.
  • SugarAnchor - Same native NSLayoutAnchor & NSLayoutConstraints; but with more natural and easy to read syntactic sugar. Typesafe, concise & readable.
  • Anchors - Declarative, extensible, powerful Auto Layout for iOS 8+ and macOS 10.10+
  • PinLayout - Fast Swift Views layouting without auto layout. No magic, pure code, full control and blazing fast. Concise syntax, intuitive, readable & chainable. [iOS/macOS/tvOS] ?
  • SnapLayout - Concise Auto Layout API to chain programmatic constraints while easily updating existing constraints. [e]
  • Cupcake - An easy way to create and layout UI components for iOS.
  • MiniLayout - Minimal AutoLayout convenience layer. Program constraints succinctly.
  • Bamboo - Bamboo makes Auto Layout (and manual layout) elegant and concise.
  • FlexLayout - FlexLayout gently wraps the highly optimized facebook/yoga flexbox implementation in a concise, intuitive & chainable syntax.
  • Layout - A declarative UI framework for iOS
  • CGLayout - Powerful autolayout framework based on constraints, that can manage UIView(NSView), CALayer and not rendered views. Not Apple Autolayout wrapper.
  • YogaKit - Powerful layout engine which implements Flexbox. Developed and maintained by Facebook.
  • FlightLayout - Balanced medium between manual layout and auto-layout. Great for calculating frames for complex animations.
  • QLayout - AutoLayout Utility for iOS.
  • Layoutless - Minimalistic declarative layout and styling framework built on top of Auto Layout.
  • Yalta - An intuitive and powerful Auto Layout library.
  • SuperLayout - Simplify Auto Layout with super syntactic sugar.
  • QuickLayout - QuickLayout offers a simple way, to easily manage Auto Layout in code.
  • EEStackLayout - A structured vertical stack layout.
  • RKAutoLayout - Simple wrapper over AutoLayout. [iOS] ?

Localization

Tools to manage strings files, translate and enable localization in your apps.

  • Hodor - Simple solution to localize your iOS App.
  • Swifternalization - Localize iOS apps in a smarter way using JSON files. Swift framework.
  • Rubustrings - Check the format and consistency of Localizable.strings files
  • BartyCrouch - Incrementally update/translate your Strings files from Code and Storyboards/XIBs.
  • LocalizationKit - Localization management in realtime from a web portal. Easily manage your texts and translations without redeploy and resubmission.
  • Localize-Swift - Swift 2.0 friendly localization and i18n with in-app language switching
  • LocalizedView - Setting up application specific localized string within Xib file.
  • transai - command line tool help you manage localization string files.
  • Strsync - Automatically translate and synchronize .strings files from base language.
  • IBLocalizable - Localize your views directly in Interface Builder with IBLocalizable
  • nslocalizer - A tool for finding missing and unused NSLocalizedStrings
  • L10n-swift - Localization of an application with ability to change language "on the fly" and support for plural forms in any language.
  • Localize - Easy tool to localize apps using JSON or Strings and of course IBDesignables with extensions for UI components.

Logging

Debugging lives here. Logging tools, frameworks, integrations and more.

  • CleanroomLogger - A configurable and extensible Swift-based logging API that is simple, lightweight and performant.
  • CocoaLumberjack - A fast & simple, yet powerful & flexible logging framework for Mac and iOS.
  • NSLogger - a high performance logging utility which displays traces emitted by client applications running on macOS, iOS and Android.
  • QorumLogs — Swift Logging Utility for Xcode & Google Docs.
  • Log - A logging tool with built-in themes, formatters, and a nice API to define your owns.
  • Rainbow - Delightful console output for Swift developers.
  • SwiftyBeaver - Convenient logging during development & release in Swift 2 & 3
  • SwiftyTextTable - A lightweight tool for generating text tables.
  • Watchdog - Class for logging excessive blocking on the main thread
  • XCGLogger - A debug log framework for use in Swift projects. Allows you to log details to the console (and optionally a file), just like you would have with NSLog or println, but with additional information, such as the date, function name, filename and line number.
  • puree - A log collector for iOS
  • Colors - A pure Swift library for using ANSI codes. Basically makes command-line coloring and styling very easy! [e]
  • Loggerithm - A lightweight Swift logger, uses print in development and NSLog in production. Support colourful and formatted output.
  • AELog - Simple, lightweight and flexible debug logging framework written in Swift.
  • ReflectedStringConvertible - A protocol that allows any class to be printed as if it were a struct.
  • Evergreen - Most natural Swift logging
  • SwiftTrace - Trace Swift and Objective-C method invocations
  • Willow - Willow is a powerful, yet lightweight logging library written in Swift.
  • Bugfender - Cloud storage for your app logs. Track user behaviour to find problems in your mobile apps.
  • LxDBAnything - Automate box any value! Print log without any format control symbol! Change debug habit thoroughly!
  • XLTestLog - Styling and coloring your XCTest logs on Xcode Console
  • XLFacility - Elegant and extensive logging facility for macOS & iOS (includes database, Telnet and HTTP servers)
  • Atlantis - A powerful input-agnostic swift logging framework made to speed up development with maximum readability.
  • StoryTeller - Taking a completely different approach to logging, Story Teller replacing fixed logging levels in It then uses dynamic expressions to control the logging so you only see what is important.
  • LumberMill - Stupidly simple logging for iOS 10 and Swift 3.0
  • TinyConsole - A tiny log console to display information while using your iOS app. Written in Swift 3.
  • Lighty - Easy to use and lightweight logger for iOS, macOS, tvOS, watchOS and Linux with Swift 3.
  • JustLog - Console, file and remote Logstash logging via TCP socket.
  • Twitter Logging Service - Twitter Logging Service is a robust and performant logging framework for iOS clients.
  • Reqres - Network request and response body logger with Alamofire support
  • TraceLog - Dead Simple: logging the way it's meant to be! Runs on ios, osx, and Linux.
  • OkLog - A network logger for iOS and macOS projects.

Machine Learning

A collection of ML Models, deep learning and neural networking libraries

  • Swift-Brain - Artificial Intelligence/Machine Learning data structures and Swift algorithms for future iOS development. Bayes theorem, Neural Networks, and more AI.
  • AIToolbox - A toolbox of AI modules written in Swift: Graphs/Trees, Linear Regression, Support Vector Machines, Neural Networks, PCA, KMeans, Genetic Algorithms, MDP, Mixture of Gaussians.
  • Tensorflow-iOS - The official Google-built powerful neural network library port for iOS.
  • Bender - Easily craft fast Neural Networks. Use TensorFlow models. Metal under the hood.
  • CoreML-samples - Sample code for Core ML using ResNet50 provided by Apple and a custom model generated by coremltools.
  • Revolver - A framework for building fast genetic algorithms in Swift. Comes with modular architecture, pre-implemented operators and loads of examples.
  • CoreML-Models - A collection of unique Core ML Models.
  • Serrano - A deep learning library for iOS and macOS.
  • Swift-AI - The Swift machine learning library.
  • TensorSwift - A lightweight library to calculate tensors in Swift, which has similar APIs to TensorFlow's.

Maps

  • Mapbox GL - An OpenGL renderer for Mapbox Vector Tiles with SDK bindings for iOS.
  • GEOSwift - The Swift Geographic Engine.
  • PXGoogleDirections - Google Directions API helper for iOS, written in Swift
  • Cluster - Easy Map Annotation Clustering.
  • JDSwiftHeatMap - JDSwiftMap is an IOS Native MapKit Library. You can easily make a highly customized HeatMap.
  • ClusterKit - An iOS map clustering framework targeting MapKit, Google Maps and Mapbox.
  • FlyoverKit - FlyoverKit enables you to present stunning 360° flyover views on your MKMapView with zero effort while maintaining full configuration possibilities.
  • MapViewPlus - Use any custom view as custom callout view of your MKMapView with cool animations. Also, easily use any image as annotation view.
  • MSFlightMapView - Add and animate geodesic flights on Google map.

Math

Math frameworks, functions and libraries to custom operations, statistical calculations and more.

  • Euler - Swift Custom Operators for Mathematical Notation
  • SwiftMath - ? A math framework for Swift. Includes: vectors, matrices, complex numbers, quaternions and polynomials.
  • Arithmosophi - A set of protocols for Arithmetic and Logical operations
  • Surge - A Swift library that uses the Accelerate framework to provide high-performance functions for matrix math, digital signal processing, and image manipulation.
  • Upsurge - Swift math
  • Swift-MathEagle - A general math framework to make using math easy. Currently supports function solving and optimisation, matrix and vector algebra, complex numbers, big int and big frac and general handy extensions and functions.
  • iosMath - A library for displaying beautifully rendered math equations. Enables typesetting LaTeX math formulae in iOS.
  • BigInt - Arbitrary-precision arithmetic in pure Swift
  • SigmaSwiftStatistics - A collection of functions for statistical calculation.
  • VectorMath - A Swift library for Mac and iOS that implements common 2D and 3D vector and matrix functions, useful for games or vector-based graphics
  • Expression - A Mac and iOS library for evaluating numeric expressions at runtime
  • Metron - Metron is a comprehensive collection of geometric functions and types that extend the 2D geometric primitives provided by CoreGraphics.
  • NumericAnnex - NumericAnnex supplements the numeric facilities provided in the Swift standard library.

Media

Audio

  • AudioBus - Add Next Generation Live App-to-App Audio Routing.
  • AudioKit - A powerful toolkit for synthesizing, processing, and analyzing sounds.
  • EZAudio - An iOS/macOS audio visualization framework built upon Core Audio useful for anyone doing real-time, low-latency audio processing and visualizations.
  • novocaine - Painless high-performance audio on iOS and macOS.
  • QHSpeechSynthesizerQueue - Queue management system for AVSpeechSynthesizer (iOS Text to Speech).
  • Cephalopod - A sound fader for AVAudioPlayer written in Swift.
  • Chirp - The easiest way to prepare, play, and remove sounds in your Swift app!
  • Beethoven - An audio processing Swift library for pitch detection of musical signals.
  • AudioPlayerSwift - AudioPlayer is a simple class for playing audio in iOS, macOS and tvOS apps.
  • AudioPlayer - AudioPlayer is syntax and feature sugar over AVPlayer. It plays your audio files (local & remote).
  • TuningFork - ? Simple Tuner for iOS
  • MusicKit - A framework for composing and transforming music in Swift
  • SubtleVolume - Replace the system volume popup with a more subtle indicator.
  • NVDSP - iOS/macOS DSP for audio (with Novocaine)
  • SRGMediaPlayer-iOS - The SRG Media Player library for iOS provides a simple way to add a universal audio / video player to any iOS application.
  • IQAudioRecorderController - A drop-in universal library allows to record audio within the app with a nice User Interface.
  • TheAmazingAudioEngine2 - The Amazing Audio Engine is a sophisticated framework for iOS audio applications, built so you don't have to.
  • InteractivePlayerView - Custom iOS music player view
  • ESTMusicIndicator - Cool Animated music indicator view written in Swift
  • QuietModemKit - iOS framework for the Quiet Modem (data over sound)
  • SwiftySound - Super simple library that lets you play sounds with a single line of code (and much more). Written in Swift 3, supports iOS, macOS and tvOS. CocoaPods and Carthage compatible.
  • BPMAnalyser - Fast and simple instrument to get the BPM rate from your audio-files.
  • PandoraPlayer - A lightweight music player for iOS, based on AudioKit and completely written in Swift
  • SonogramView - Audio visualisation of song
  • AudioIndicatorBars - AIB indicates for your app users which audio is playing. Just like the Podcasts app.
  • Porcupine - On-device wake word detection engine for macOS, iOS, and watchOS, powered by deep learning.
  • Voice Overlay - An overlay that gets your user’s voice permission and input as text in a customizable UI.
  • ModernAVPlayer - Persistence player to resume playback after bad network connection even in background mode, manage headphone interactions, system interruptions, now playing informations and remote commands.

GIF

  • YLGIFImage - Async GIF image decoder and Image viewer supporting play GIF images. It just use very less memory.
  • FLAnimatedImage - Performant animated GIF engine for iOS
  • gifu - Highly performant animated GIF support for iOS in Swift
  • AnimatedGIFImageSerialization - Complete Animated GIF Support for iOS, with Functions, NSJSONSerialization-style Class, and (Optional) UIImage Swizzling
  • XAnimatedImage - XAnimatedImage is a performant animated GIF engine for iOS written in Swift based on FLAnimatedImage
  • SwiftGif - ✨ A small UIImage extension with gif support
  • APNGKit - High performance and delightful way to play with APNG format in iOS.
  • YYImage - Image framework for iOS to display/encode/decode animated WebP, APNG, GIF, and more.
  • AImage - A animated GIF&APNG engine for iOS in Swift with low memory & cpu usage.Optimized for Multi-Image case.
  • NSGIF2 - Simplify creation of a GIF from the provided video file url.
  • SwiftyGif - High performance GIF engine

Image

  • GPU Image - An open source iOS framework for GPU-based image and video processing.
  • UIImage DSP - iOS UIImage processing functions using the vDSP/Accelerate framework for speed.
  • AsyncImageView - Simple extension of UIImageView for loading and displaying images asynchronously without lock up the UI.
  • SDWebImage - Asynchronous image downloader with cache support with an UIImageView category.
  • DFImageManager - Modern framework for fetching images from various sources. Zero config yet immense customization and extensibility. Uses NSURLSession.
  • MapleBacon - An image download and caching library for iOS written in Swift.
  • NYTPhotoViewer - Slideshow and image viewer.
  • IDMPhotoBrowser - Photo Browser / Viewer.
  • Concorde - Download and decode progressive JPEGs.
  • TOCropViewController - A view controller that allows users to crop UIImage objects.
  • YXTMotionView - A custom image view that implements device motion scrolling.
  • PINRemoteImage - A thread safe, performant, feature rich image fetcher.
  • SABlurImageView - Easily Adding Animated Blur/Unblur Effects To An Image.
  • FastImageCache - iOS library for quickly displaying images while scrolling.
  • BKAsciiImage - Convert UIImage to ASCII art
  • AlamofireImage - An image component library for Alamofire.
  • Nuke - Image loading, processing, caching and preheating
  • FlagKit - Beautiful flag icons for usage in apps and on the web.
  • YYWebImage - Asynchronous image loading framework (supports WebP, APNG, GIF).
  • RSKImageCropper - An image cropper for iOS like in the Contacts app with support for landscape orientation.
  • Silo - Image loading framework with loaders.
  • Ody - Ody is an easy to use random image generator built with Swift, Perfect for placeholders.
  • Banana - Image slider with very simple interface.
  • JDSwiftAvatarProgress - Easy customizable avatar image asynchronously with progress bar animated
  • Kingfisher - A lightweight and pure Swift implemented library for downloading and caching image from the web.
  • EBPhotoPages - A photo gallery for iOS with a modern feature set. Similar features as the Facebook photo browser.
  • UIImageView-BetterFace-Swift - The Swift version of https://github.com/croath/UIImageView-BetterFace
  • KFSwiftImageLoader - An extremely high-performance, lightweight, and energy-efficient pure Swift async web image loader with memory and disk caching for iOS and  Watch.
  • Toucan - Fabulous Image Processing in Swift
  • ImageLoaderSwift - A lightweight and fast image loader for iOS written in Swift.
  • ImageScout - A Swift implementation of fastimage. Supports PNG, GIF, and JPEG.
  • JLStickerTextView - A UIImageView allow you to add multiple Label (multiple line text support) on it, you can edit, rotate, resize the Label as you want with one finger ,then render the text on Image.
  • Agrume - A lemony fresh iOS image viewer written in Swift.
  • PASImageView - Rounded async imageview downloader lightly cached and written in Swift
  • Navi - Focus on avatar caching.
  • SwiftPhotoGallery - Simple, fullscreen image gallery with tap, swipe, and pinch gestures.
  • MetalAcc - GPU-based Media processing library using Metal written in Swift.
  • MWPhotoBrowser - A simple iOS photo and video browser with grid view, captions and selections.
  • UIImageColors - iTunes style color fetcher for UIImage. [e]
  • CDFlipView - A view that takes a set of images, make transition from one to another by using flipping effects.
  • GPUImage2 - GPUImage 2 is a BSD-licensed Swift framework for GPU-accelerated video and image processing.
  • TGLParallaxCarousel - A lightweight 3D Linear Carousel with parallax effect
  • ImageButter - Makes dealing with images buttery smooth
  • SKPhotoBrowser - Simple PhotoBrowser/Viewer inspired by Facebook, Twitter photo browsers written by swift
  • YUCIHighPassSkinSmoothing - An implementation of High Pass Skin Smoothing using Apple's Core Image Framework
  • CLImageViewPopup - A simple Image full screen pop up
  • APKenBurnsView - Ken Burns effect with face recognition!
  • Moa - An image download extension of the image view for iOS, tvOS and macOS. [e]
  • JMCMarchingAnts - Library that lets you add marching ants (animated) selection to the edges of the images.
  • ImageViewer - An image viewer à la Twitter
  • FaceAware - An extension that gives UIImageView the ability to focus on faces within an image when using AspectFill.
  • SwiftyAvatar - A UiimageView class for creating circular avatar images, IBDesignable to make all changes via storyboard
  • ShinpuruImage - Syntactic Sugar for Accelerate/vImage and Core Image Filters
  • ImagePickerSheetController - ImagePickerSheetController is like the custom photo action sheet in iMessage just without the glitches.
  • ComplimentaryGradientView - Create complementary gradients generated from dominant and prominent colors in supplied image. Inspired by Grade.js.
  • ImageSlideshow - Swift image slideshow with circular scrolling, timer and full screen viewer.
  • Imaginary - ? Remote images, as easy as one, two, three.
  • PPAssetsActionController - Highly customizable Action Sheet Controller with Assets Preview.
  • Vulcan - Multi image downloader with priority in Swift.
  • FacebookImagePicker - Facebook album photo picker written in Swift.
  • Lightbox - A convenient and easy to use image viewer for your iOS app.
  • Ebblink - An iOS SDK for sharing photos that automatically expire and can be deleted at any time.
  • Sharaku - Instagram-like image filter ViewController.
  • CTPanoramaView - Displays spherical or cylindrical panoramas or 360-photos with touch or motion based control options.
  • Twitter Image Pipline - streamlined framework for fetching and storing images in an application.
  • TinyCrayon - A smart and easy-to-use image masking and cutout SDK for mobile apps.
  • FlexibleImage - A simple way to play with image!
  • TLPhotoPicker - Multiple phassets picker for iOS lib. like a facebook.
  • YapImageManager - A high-performance image downloader written in Swift, powered by YapDatabase.
  • PhotoEditorSDK - A fully customizable photo editor for your app.
  • SimpleImageViewer - A snappy image viewer with zoom and interactive dismissal transition.
  • AZImagePreview - A framework that makes image viewing easy.
  • FaceCropper - Crop faces, inside of your image, with iOS 11 Vision api
  • Paparazzo - Custom iOS camera and photo picker with editing capabilities
  • ZImageCropper - A Swift project to crop image in any shape.
  • InitialsImageView - An UIImageView extension that generates letter initials as a placeholder for user profile images, with a randomized background color.
  • DTPhotoViewerController - A fully customizable photo viewer ViewController, inspired by Facebook photo viewer.
  • LetterAvatarKit - A UIImage extension that generates letter-based avatars written in Swift.
  • AXPhotoViewer - An iPhone/iPad photo gallery viewer, useful for viewing a large (or small!) number of photos
  • TJProfileImage - Live rendering of componet’s properties in Interface Builder.
  • Viewer - Image viewer (or Lightbox) with support for local and remote videos and images
  • OverlayComposite - An asynchronous, multithreaded, image compositing framework written in Swift.
  • MCScratchImageView - A custom ImageView that is used to cover the surface of other view like a scratch card, user can swipe the mulch to see the view below
  • MetalPetal - A GPU-accelerated image/video processing framework based on Metal.
  • ShadowImageView - ShadowImageView is a iOS 10 Apple Music style image view, help you create elegent image with shadow.
  • Avatar - Generate random user Avatar images using CoreGraphics and QuartzCore.
  • Serrata - Slide image viewer library similar to Twitter and LINE.
  • StyleArt - Style Art library process images using COREML with a set of pre trained machine learning models and convert them to Art style.
  • greedo-layout-for-ios - Full aspect ratio grid layout for iOS
  • ImageDetect - Detect and crop faces, barcodes and texts inside of your image, with iOS 11 Vision api.
  • THTiledImageView - Provide ultra-high-quality images through tiling techniques
  • GPUImage3 - GPUImage 3 is a BSD-licensed Swift framework for GPU-accelerated video and image processing using Metal.
  • Gallery - Your next favorite image and video picker.
  • ATGMediaBrowser - Image slide-show viewer with multiple predefined transition styles, and ability to create new transitions with ease.
  • Pixel - An image editor and engine using CoreImage.
  • OnlyPictures - A simple and flexible way to add source of overlapping circular pictures.
  • SFSafeSymbols - Safely access Apple's SF Symbols using static typing.

Media Processing

  • SwiftOCR - Fast and simple OCR library written in Swift
  • QR Code Scanner - QR Code implementation.
  • QRCode - A QRCode generator written in Swift.
  • EFQRCode - A better way to operate two-dimensional code in Swift.
  • NSFWDetector - A NSFW (aka porn) detector with CoreML

PDF

  • Reader - PDF Reader Core for iOS.
  • UIView 2 PDF - PDF generator using UIViews or UIViews with an associated XIB
  • FolioReaderKit - A Swift ePub reader and parser framework for iOS.
  • PDFGenerator - A simple Generator of PDF in Swift. Generate PDF from view(s) or image(s).
  • SimplePDF - Create a simple PDF effortlessly.
  • SwiftPDFGenerator - PDF generator using UIViews; Swift Version of 'UIView 2 PDF'.
  • PSPDFKit - Render PDF, add/edit annotations, fill forms, add/edit pages, view/create digital signatures.
  • TPPDF - Generate PDF using commands and automatic layout.
  • FastPdfKit - A Static Library to be embedded on iOS applications to display pdf documents derived from Fast PDF.
  • UIImagePlusPDF - UIImage extensions to simply use PDF files.

Streaming

  • HaishinKit.swift - Camera and Microphone streaming library via RTMP, HLS for iOS, macOS.
  • StreamingKit - A fast and extensible gapless AudioPlayer/AudioStreamer for macOS and iOS.
  • Jukebox - Player for streaming local and remote audio files. Written in Swift.
  • LFLiveKit - H264 and AAC Hard coding,support GPUImage Beauty, rtmp transmission,weak network lost frame,Dynamic switching rate
  • Airstream - A framework for streaming audio between Apple devices using AirPlay.
  • OTAcceleratorCore - A painless way to integrate audio/video(screen sharing) to any iOS applications via Tokbox.
  • webrtc - Provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs.

Video

  • VIMVideoPlayer - A simple wrapper around the AVPlayer and AVPlayerLayer classes.
  • MobilePlayer - A powerful and completely customizable media player for iOS.
  • XCDYouTubeKit - YouTube video player for iOS, tvOS and macOS
  • AVAnimator - An open source iOS native library that makes it easy to implement non-trivial video/audio enabled apps.
  • Periscope VideoViewController - Video view controller with Periscope fast rewind control
  • MHVideoPhotoGallery - A Photo and Video Gallery
  • PlayerView - Player View is a delegated view using AVPlayer of Swift
  • SRGMediaPlayer-iOS - The SRG Media Player library for iOS provides a simple way to add a universal audio / video player to any iOS application.
  • AVPlayerViewController-Subtitles - AVPlayerViewController-Subtitles is a library to display subtitles on iOS. It's built as a Swift extension and it's very easy to integrate. [e]
  • MPMoviePlayerController-Subtitles - MPMoviePlayerController-Subtitles is a library to display subtitles on iOS. It's built as a Swift extension and it's very easy to integrate. [e]
  • ZFPlayer - Based on AVPlayer, support for the horizontal screen, vertical screen (full screen playback can also lock the screen direction), the upper and lower slide to adjust the volume, the screen brightness, or so slide to adjust the playback progress.
  • Player - ▶️ video player in Swift, simple way to play and stream media in your iOS or tvOS app
  • BMPlayer - video player in swift3 and swift2 for iOS, based on AVPlayer, support the horizontal, vertical screen. support adjust volume, brigtness and seek by slide.
  • VideoPager - Paging Video UI, and some control components is available.
  • ios-360-videos - NYT360Video plays 360-degree video streamed from an AVPlayer.
  • swift-360-videos - Pure swift (no SceneKit) 3D library with focus on video and 360.
  • ABMediaView - UIImageView subclass for drop-in image, video, GIF, and audio display, with functionality for fullscreen and minimization to the bottom-right corner.
  • PryntTrimmerView - A set of UI elements to trim, crop and select frames inside a video.
  • VGPlayer - A simple iOS video player in Swift,Support play local and network,Background playback mode.
  • YoutubeKit - A video player that fully supports Youtube IFrame API and YoutubeDataAPI for easily create a Youtube app.
  • Swift-YouTube-Player - Swift library for embedding and controlling YouTube videos in your iOS applications!
  • JDVideoKit - You can easily transfer your video into Three common video type via this framework.
  • VersaPlayer - Versatile AVPlayer implementation for iOS, macOS, and tvOS

Messaging

Also see push notifications

  • LayerKit - iOS SDK for Layer, the easiest way to add in-app messaging (text, photos, videos, data) to any mobile or web application.
  • XMPPFramework - An XMPP Framework in Objective-C for Mac and iOS.
  • Chatto - A lightweight framework to build chat applications, made in Swift
  • MessageKit - Eventually, a Swift re-write of JSQMessagesViewController
  • Atlas - A library of native iOS messaging user interface components for Layer.
  • Messenger - This is a native iOS Messenger app, making realtime chat conversations and audio calls with full offline support.
  • OTTextChatAccelerator - OpenTok Text Chat Accelerator Pack enables text messages between mobile or browser-based devices.
  • chat-sdk-ios - Chat SDK iOS - Open Source Mobile Messenger.
  • AsyncMessagesViewController - A smooth, responsive and flexible messages UI library for iOS.
  • MessageViewController - A SlackTextViewController replacement written in Swift for the iPhone X.
  • SwiftyMessenger - Swift toolkit for passing messages between iOS apps and extensions.
  • Messenger Chat with Firebase - Swift messaging chat app with Firebase Firestore integration.

Networking

  • AFNetworking - A delightful iOS and macOS networking framework.
  • RestKit - RestKit is an Objective-C framework for iOS that aims to make interacting with RESTful web services simple, fast and fun.
  • FSNetworking - Foursquare iOS networking library.
  • ASIHTTPRequest - Easy to use CFNetwork wrapper for HTTP requests, Objective-C, macOS and iPhone.
  • Overcoat - Small but powerful library that makes creating REST clients simple and fun.
  • ROADFramework - Attributed-oriented approach for interacting with web services. The framework has built-in json and xml serialization for requests and responses and can be easily extensible.
  • Alamofire - Alamofire is an HTTP networking library written in Swift, from the creator of AFNetworking.
  • Transporter - A tiny library makes uploading and downloading easier.
  • CDZPinger - Easy-to-use ICMP Ping.
  • NSRails - iOS/Mac OS framework for Rails.
  • NKMultipeer - A testable abstraction over multipeer connectivity.
  • CocoaAsyncSocket - Asynchronous socket networking library for Mac and iOS.
  • Siesta - Elegant abstraction for RESTful resources that untangles stateful messes. An alternative to callback- and delegate-based networking.
  • Reachability.swift - Replacement for Apple's Reachability re-written in Swift with closures
  • OctopusKit - A simplicity but graceful solution for invoke RESTful web service APIs.
  • Moya - Network abstraction layer written in Swift.
  • TWRDownloadManager - A modern download manager based on NSURLSession to deal with asynchronous downloading, management and persistence of multiple files.
  • HappyDns - A Dns library, support custom dns server, dnspod httpdns. Only support A record.
  • Bridge - A simple extensible typed networking library. Intercept and process/alter requests and responses easily.
  • TRON - Lightweight network abstraction layer, written on top of Alamofire
  • EVCloudKitDao - Simplified access to Apple's CloudKit
  • EVURLCache - a NSURLCache subclass for handling all web requests that use NSURLRequest
  • ResponseDetective - Sherlock Holmes of the networking layer.
  • Pitaya - A Swift HTTP / HTTPS networking library just incidentally execute on machines
  • Just - Swift HTTP for Humans
  • agent - Minimalistic Swift HTTP request agent for iOS and macOS
  • Reach - A simple class to check for internet connection availability in Swift.
  • SwiftHTTP - Thin wrapper around NSURLSession in swift. Simplifies HTTP requests.
  • Netdiag - A network diagnosis library. Support Ping/TcpPing/Rtmp/TraceRoute/DNS/external IP/external DNS.
  • AFNetworkingHelper - A custom wrapper over AFNetworking library that we use inside RC extensively
  • NetKit - A Concise HTTP Framework in Swift.
  • RealReachability - We need to observe the REAL reachability of network. That's what RealReachability do.
  • MonkeyKing - MonkeyKing helps you post messages to Chinese Social Networks.
  • NetworkKit - Lightweight Networking and Parsing framework made for iOS, Mac, WatchOS and tvOS.
  • APIKit - A networking library for building type safe web API client in Swift.
  • ws ☁️ - Elegant JSON WebService in Swift.
  • SPTDataLoader - The HTTP library used by the Spotify iOS client.
  • SWNetworking - Powerful high-level iOS, macOS and tvOS networking library.
  • Networking - Simple HTTP Networking in Swift a NSURLSession wrapper with image caching support
  • SOAPEngine - This generic SOAP client allows you to access web services using a your iOS app, macOS app and AppleTV app.
  • Swish - Nothing but Net(working)
  • Malibu - ? Malibu is a networking library built on promises
  • YTKNetwork - YTKNetwork is a high level request util based on AFNetworking.
  • UnboxedAlamofire - Alamofire + Unbox: the easiest way to download and decode JSON into swift objects.
  • MMLanScan - An iOS LAN Network Scanner library
  • Domainer - Manage multi-domain url auto mapping ip address table
  • Restofire - Restofire is a protocol oriented network abstraction layer in swift that is built on top of Alamofire to use services in a declartive way
  • AFNetworking+RetryPolicy - An objective-c category that adds the ability to set the retry logic for requests made with AFNetworking.
  • SwiftyZeroMQ - ZeroMQ Swift Bindings for iOS, macOS, tvOS and watchOS.
  • Nikka - A super simple Networking wrapper that supports many JSON libraries, Futures and Rx
  • XMNetworking - A lightweight but powerful network library with simplified and expressive syntax based on AFNetworking.
  • Merhaba - Bonjour networking for discovery and connection between iOS, macOS and tvOS devices.
  • DBNetworkStack - Resource-oritented networking which is typesafe, extendable, composeable and makes testing a lot easier.
  • EFInternetIndicator - A little swift Internet error status indicator using ReachabilitySwift.
  • AFNetworking-Synchronous - Synchronous requests for AFNetworking 1.x, 2.x, and 3.x.
  • QwikHttp - a robust, yet lightweight and simple to use HTTP networking library designed for RESTful APIs.
  • NetClient - Versatile HTTP networking library written in Swift 3.
  • WANetworkRouting - An iOS library to route API paths to objects on client side with request, mapping, routing and auth layers
  • Reactor - Powering your RAC architecture
  • SWNetworking - Powerful high-level iOS, macOS and tvOS networking library. from the creator of SWNetworking
  • Digger - Digger is a lightweight download framework that requires only one line of code to complete the file download task.
  • Ciao - Publish and discover services using mDNS(Bonjour, Zeroconf).
  • PerfectAPIClient - An API Client based on a network abstraction layer for the Perfect Server-Side Swift Framework
  • Bamboots - Bamboots is a network request framework based on Alamofire, aiming at making network request easier for business development
  • SolarNetwork - Elegant network abstraction layer in Swift.
  • FGRoute - An easy-to-use library that helps developers to get wifi ssid, router and device ip addresses.
  • RxRestClient - Simple REST Client based on RxSwift and Alamofire.
  • TermiNetwork - A networking library written with Swift 4.0 that supports multi-environment configuration, routing and automatic deserialization
  • Dots - Lightweight Concurrent Networking Framework.
  • Gem - An extreme light weight system with high performance for managing all http request with automated parser with modal.
  • RMHttp - Lightweight REST library for iOS and watchOS.
  • AlamoRecord - An elegant yet powerful iOS networking layer inspired by ActiveRecord.
  • MHNetwork - Protocol Oriented Network Layer Aim to avoid having bloated singleton NetworkManager
  • ThunderRequest - A simple URLSession wrapper with a generic protocol based request body approach and easy deserialisation of responses.
  • ReactiveAPI - Write clean, concise and declarative network code relying on URLSession, with the power of RxSwift. Inspired by Retrofit.

Email

  • Mail Core 2 - MailCore 2 provide a simple and asynchronous API to work with e-mail protocols IMAP, POP and SMTP.
  • Postal - A swift framework providing simple access to common email providers.

Representations

  • apollo-ios - A GraphQL client for iOS, written in Swift
  • JSONRPCKit - A JSON-RPC 2.0 library purely written in Swift
  • protobuf-swift - Google ProtocolBuffers for Apple Swift
  • swift-protobuf - Plugin and runtime library for using protobuf with Swift.

Notifications

Push Notifications

  • Orbiter - Push Notification Registration for iOS.
  • PEM - Automatically generate and renew your push notification profiles.
  • Knuff - The debug application for Apple Push Notification Service (APNS).
  • FBNotifications - Facebook Analytics In-App Notifications Framework.
  • NWPusher - macOS and iOS application and framework to play with the Apple Push Notification service (APNs)
  • SimulatorRemoteNotifications - Library to send mock remote notifications to the iOS simulator
  • APNSUtil - Library makes code simple settings and landing for apple push notification service

Push Notification Providers

Most of these are paid services, some have free tiers.

Local Notifications

  • DLLocalNotifications - Easily create Local Notifications in swift - Wrapper of UserNotifications Framework.

Objective-C Runtime

Objective-C Runtime wrappers, libraries and tools.

  • Lumos - A light Swift wrapper around Objective-C Runtime.
  • Swizzlean - An Objective-C Swizzle Helper Class.

Optimization

  • Unreachable - Unreachable code path optimization hint for Swift.

Parsing

CSV

  • CSwiftV - A csv parser written in swift conforming to rfc4180
  • CSV.swift - CSV reading and writing library written in Swift.

JSON

  • JSON-Framework - This framework implements a strict JSON parser and generator in Objective-C.
  • Mantle - Model framework for Cocoa and Cocoa Touch.
  • Groot - Convert JSON dictionaries and arrays to and from Core Data managed objects.
  • PropertyMapper - Data mapping and validation with minimal amount of code.
  • JSONModel - Magical Data Modeling Framework for JSON. Create rapidly powerful, atomic and smart data model classes.
  • SwiftyJSON - The better way to deal with JSON data in Swift.
  • FastEasyMapping - Serialize & deserialize JSON fast.
  • ObjectMapper - A framework written in Swift that makes it easy for you to convert your Model objects (Classes and Structs) to and from JSON.
  • JASON - JSON parsing with outstanding performances and convenient operators.
  • Gloss - A shiny JSON parsing library in Swift.
  • Cereal - Swift object serialization
  • SwiftyJSONAccelerator - Generate Swift 5 model files from JSON with Codeable support.
  • JSONCodable - Hassle-free JSON encoding and decoding in Swift
  • Tailor - A super fast & convenient object mapper tailored for your needs.
  • alexander - An extremely simple JSON helper written in Swift.
  • Freddy - A reusable framework for parsing JSON in Swift.
  • mapper - A JSON deserialization library for Swift
  • AlamofireJsonToObjects - An Alamofire extension which converts JSON response data into swift objects using EVReflection
  • Jay - Pure-Swift JSON parser & formatter. Linux & macOS ready.
  • YYModel - High performance model framework for iOS/macOS.
  • Alembic - Functional JSON parsing, mapping to objects, and serialize to JSON
  • Wrap - The easy to use Swift JSON encoder
  • Arrow ? - Elegant JSON Parsing in Swift.
  • Decodable - Swift 2/3 JSON parsing done (more) right
  • Genome - A simple, type safe, failure driven mapping library for serializing JSON to models in Swift 3.0 (Supports Linux)
  • Unbox - The easy to use Swift JSON decoder
  • JSONJoy-Swift - Convert JSON to Swift objects.
  • LazyObject - Lazily deserialize JSON into strongly typed Swift objects
  • JSONExport - JSONExport is a desktop application for macOS which enables you to export JSON objects as model classes with their associated constructors, utility methods, setters and getters in your favorite language.
  • Elevate - Elevate is a JSON parsing framework that leverages Swift to make parsing simple, reliable and composable.
  • MJExtension - A fast, convenient and nonintrusive conversion between JSON and model. Your model class don't need to extend another base class. You don't need to modify any model file.
  • AlamofireObjectMapper - An Alamofire extension which converts JSON response data into swift objects using ObjectMapper
  • GuardedSwiftyJSON - An add-on to SwiftyJSON to make it easier to create failable initializers for data models.
  • JAYSON - Strict and Scalable JSON library.
  • HandyJSON - A handy swift JSON-object serialization/deserialization library for swift 2.x/3.x.
  • Marshal - Marshaling the typeless wild west of [String: Any] (Protocol based).
  • Motis - Easy JSON to NSObject mapping using Cocoa's key value coding (KVC).
  • NSTEasyJSON - The easiest way to deal with JSON data in Objective-C (similar to SwiftyJSON).
  • Serpent - A protocol to serialize Swift structs and classes for encoding and decoding.
  • MagicMapper - ? Super light and easy automatic JSON to model mapper.
  • FlatBuffersSwift - This project brings FlatBuffers (an efficient cross platform serialization library) to Swift.
  • CodableAlamofire - An extension for Alamofire that converts JSON data into Decodable objects (Swift 4).
  • WAMapping - A library to turn dictionary into object and vice versa for iOS. Designed for speed!
  • json-swift - A basic library for working with JSON in Swift.
  • Himotoki - A type-safe JSON decoding library purely written in Swift.
  • PMHTTP - Swift/Obj-C HTTP framework with a focus on REST and JSON.
  • NativeJSONMapper - Simple Swift 4 encoding & decoding.
  • PMJSON - Pure Swift JSON encoding/decoding library.
  • jsoncafe.com - Online Template driven Model Class Generator from JSON.
  • Mappable - lightweight and powerful JSON object mapping library, specially optimized for immutable properties.

XML & HTML

  • AEXML - Simple and lightweight XML parser written in Swift.
  • Ji - XML/HTML parser for Swift.
  • Ono - A sensible way to deal with XML & HTML for iOS & macOS
  • AlamofireXmlToObjects - Fetch a XML feed and parse it into objects
  • Fuzi - A fast & lightweight XML & HTML parser in Swift with XPath & CSS support
  • Kanna - Kanna(鉋) is an XML/HTML parser for macOS/iOS.
  • SwiftyXMLParser - Simple XML Parser implemented in Swift
  • HTMLKit - An Objective-C framework for your everyday HTML needs.
  • SWXMLHash - Simple XML parsing in Swift
  • SwiftyXML - The most swifty way to deal with XML data in swift 4
  • XMLCoder - Encoder & Decoder for XML using Swift's Codable protocols.

Other Parsing

  • WKZombie - WKZombie is a Swift framework for iOS/macOS to navigate within websites and collect data without the need of User Interface or API, also known as Headless browser. It can be used to run automated tests or manipulate websites using Javascript.
  • URLPreview - An NSURL extension for showing preview info of webpages
  • FeedKit - An RSS and Atom feed parser written in Swift
  • Erik - Erik is an headless browser based on WebKit. An headless browser allow to run functional tests, to access and manipulate webpages using javascript.
  • URLEmbeddedView - Automatically caches the object that is confirmed the Open Graph Protocol, and displays it as URL embedded card.
  • SwiftyConfiguration - Modern Swift API for Plist.
  • JSONFeed - Swift parser for JSON Feed, a format similar to RSS and Atom but in JSON.
  • SwiftCssParser - A Powerful , Extensible CSS Parser written in pure Swift.
  • RLPSwift - Recursive Length Prefix encoding written in Swift.
  • AcknowledgementsPlist - AcknowledgementsPlist manages the licenses of libraries that depend on your iOS app.
  • CoreXLSX - Excel spreadsheet (XLSX) format support in pure Swift.

Passbook

  • passbook - Passbook gem let's you create pkpass for passbook iOS 6+.
  • Dubai - Generate and Preview Passbook Passes.
  • Passkit - Design, Create and validate Passbook Passes.

Payments

  • Caishen - A Payment Card UI & Validator for iOS.
  • Stripe - Payment integration on your app with PAY. Suitable for people with low knowledge on Backend.
  • Braintree - Free payment processing on your first $50k. Requires Backend.
  • Venmo Make and accept payments in your iOS app via Venmo.
  • Moltin - Add eCommerce to your app with a simple SDK, so you can create a store and sell physical products, no backend required.
  • PatronKit - A framework to add patronage to your apps.
  • SwiftyStoreKit - Lightweight In App Purchases Swift framework for iOS 8.0+ and macOS 9.0+
  • InAppFramework - In App Purchase Manager framework for iOS
  • SwiftInAppPurchase - Simply code In App Purchases with this Swift Framework
  • monza - Ruby Gem for Rails - Easy iTunes In-App Purchase Receipt validation, including auto-renewable subscriptions
  • PayPal - Accept payments in your iOS app via PayPal.
  • card.io-iOS-SDK - card.io provides fast, easy credit card scanning in mobile apps
  • SwiftLuhn - Debit/Credit card validation port of the Luhn Algorithm in Swift
  • ObjectiveLuhn - Luhn Credit Card Validation Algorithm
  • RMStore - A lightweight iOS library for In-App Purchases
  • MFCard - Easily integrate Credit Card payments in iOS App / Customisable Card UI
  • TPInAppReceipt - Reading and Validating In App Store Receipt
  • iCard - Bank Card Generator with Swift using SnapKit DSL
  • CreditCardForm-iOS - CreditCardForm is iOS framework that allows developers to create the UI which replicates an actual Credit Card.
  • merchantkit - A modern In-App Purchases management framework for iOS.
  • TipJarViewController - Easy, drop-in tip jar for iOS apps.
  • FramesIos - Payment Form UI and Utilities in Swift.
  • YRPayment - Better payment user experience library with cool animation in Swift.

Permissions

  • Proposer - Make permission request easier (Supports Camera, Photos, Microphone, Contacts, Location).
  • ICanHas - Simplifies iOS user permission requests (Supports location, push notifications, camera, contacts, calendar, photos).
  • VWWPermissionKit - A visual permission manager for iOS.
  • ISHPermissionKit - A unified way for iOS apps to request user permissions.
  • JLPermissions - An iOS pre-permissions utility that lets developers ask users on their own dialog for calendar, contacts, location, photos, reminders, twitter, push notifications and more, before making the system-based permission request.
  • ClusterPrePermissions - Reusable pre-permissions utility that lets developers ask users for access in their own dialog, before making the system-based request.
  • Permission - A unified API to ask for permissions on iOS
  • STLocationRequest - A simple and elegant 3D-Flyover location request screen written Swift.
  • PAPermissions - A unified API to ask for permissions on iOS
  • AREK - AREK is a clean and easy to use wrapper over any kind of iOS permission.
  • SPPermission - Request permissions with dialog. Check state any permissions.

Products

  • Import.io - Instantly Turn Web Pages into Data.
  • Tapglue - Build social products and a activity feed with a few lines of code.
  • OpenShop.io - mobile e-commerce solution connected to Facebook Ads and Google.

Reactive Programming

  • RxSwift - Reactive Programming in Swift
  • RxOptional - RxSwift extensions for Swift optionals and "Occupiable" types
  • ReactiveTask - Flexible, stream-based abstraction for launching processes
  • ReactiveCocoa - Streams of values over time.
  • RxMediaPicker - A reactive wrapper built around UIImagePickerController.
  • ReactiveCoreData - ReactiveCoreData (RCD) is an attempt to bring Core Data into the ReactiveCocoa (RAC) world.
  • ReSwift - Unidirectional Data Flow in Swift - Inspired by Redux
  • ReactiveKit - ReactiveKit is a collection of Swift frameworks for reactive and functional reactive programming.
  • RxPermission - RxSwift bindings for Permissions API in iOS.
  • RxAlamofire - RxSwift wrapper around the elegant HTTP networking in Swift Alamofire
  • RxRealm - Rx wrapper for Realm's collection types
  • RxMultipeer - A testable RxSwift wrapper around MultipeerConnectivity
  • RxBluetoothKit - iOS & macOS Bluetooth library for RxSwift
  • RxGesture - RxSwift reactive wrapper for view gestures
  • NSObject-Rx - Handy RxSwift extensions on NSObject, including rx_disposeBag.
  • RxCoreData - RxSwift extensions for Core Data
  • RxAutomaton - RxSwift + State Machine, inspired by Redux and Elm.
  • ReactiveArray - An array class implemented in Swift that can be observed using ReactiveCocoa's Signals.
  • Interstellar - Simple and lightweight Functional Reactive Coding in Swift for the rest of us.
  • ReduxSwift - Predictable state container for Swift apps too.
  • Aftermath - Stateless message-driven micro-framework in Swift.
  • RxKeyboard - Reactive Keyboard in iOS.
  • JASONETTE-iOS - Native App over HTTP. Create your own native iOS app with nothing but JSON.
  • ReactiveSwift - Streams of values over time by ReactiveCocoa group
  • Listenable - Swift object that provides an observable platform.
  • Reactor - ? Unidirectional Data Flow using idiomatic Swift—inspired by Elm and Redux .
  • Snail - An observables framework for Swift
  • RxWebSocket - Reactive extension over Starscream for websockets
  • ACKReactiveExtensions - Useful extensions for ReactiveCocoa
  • ReactiveLocation - CoreLocation made reactive
  • Hanson - Lightweight observations and bindings in Swift, with support for KVO and NotificationCenter.
  • Observable - The easiest way to observe values in Swift.
  • SimpleApiClient - A configurable api client based on Alamofire4 and RxSwift4 for iOS.
  • VueFlux - Unidirectional Data Flow State Management Architecture for Swift - Inspired by Vuex and Flux
  • RxAnimated - Animated RxCocoa bindings
  • BindKit - Two-way data binding framework for iOS. Only one API to learn.
  • STDevRxExt - STDevRxExt contains some extension functions for RxSwift and RxCocoa which makes our live easy.
  • RxReduce - Lightweight framework that ease the implementation of a state container pattern in a Reactive Programming compliant way.
  • RxCoordinator - Powerful navigation library for iOS based on the coordinator pattern.
  • RxAlamoRecord Combines the power of the AlamoRecord and RxSwift libraries to create a networking layer that makes interacting with API's easier than ever reactively.
  • CwlSignal A Swift framework for reactive programming.
  • LightweightObservable - A lightweight implementation of an observable sequence that you can subscribe to.
  • Bindy - Simple, lightweight swift bindings with KVO support and easy to read syntax.

React-Like

  • Render - Swift and UIKit a la React.
  • Katana - Swift apps a la React and Redux.
  • TemplateKit - React-inspired framework for building component-based user interfaces in Swift.
  • Komponents ? - React-inspired UIKit Components.
  • CoreEvents - Simple library with C#-like events.
  • Tokamak - React-like framework providing a declarative API for building native UI components with easy to use one-way data binding.

Reflection

  • Reflection - Reflection provides an API for advanced reflection at runtime including dynamic construction of types.
  • Reflect - Reflection, Dict2Model, Model2Dict, Archive
  • EVReflection - Reflection based JSON encoding and decoding. Including support for NSDictionary, NSCoding, Printable, Hashable and Equatable
  • JSONNeverDie - Auto reflection tool from JSON to Model, user friendly JSON encoder / decoder, aims to never die
  • SwiftKVC - Key-Value Coding (KVC) for native Swift classes and structs
  • Runtime - A Swift Runtime library for viewing type info, and the dynamic getting and setting of properties.

Regex

  • Regex - A Swift µframework providing an NSRegularExpression-backed Regex type
  • SwiftRegex - Perl-like Regex =~ operator for Swift
  • PySwiftyRegex - Easily deal with Regex in Swift in a Pythonic way
  • Regex - Regular expressions for swift
  • Regex - Regex class for Swift. Wraps NSRegularExpression.

SDK

Official

  • Spotify Spotify iOS SDK.
  • SpotifyLogin Spotify SDK Login in Swift.
  • Facebook Facebook iOS SDK.
  • Facebook Swift Integrate your iOS apps in Swift with Facebook Platform.
  • Google Analytics Google Analytics SDK for iOS
  • Paypal iOS SDK The PayPal Mobile SDKs enable native apps to easily accept PayPal and credit card payments.
  • Pocket SDK for saving stuff to Pocket.
  • Tumblr Library for easily integrating Tumblr data into your iOS or macOS application.
  • Evernote Evernote SDK for iOS.
  • Box iOS + macOS SDK for the Box API.
  • OneDrive Live SDK for iOS.
  • Stripe Stripe bindings for iOS and macOS.
  • Venmo
  • AWS Amazon Web Services Mobile SDK for iOS.
  • Zendesk Zendesk Mobile SDK for iOS.
  • Adobe Creative SDK Adobe creative tools and Creative Cloud SDK.
  • Dropbox SDKs for Drop-ins and Dropbox Core API.
  • Fabric by Twitter Fabric Twitter Kit for iOS.
  • ResearchKit ResearchKit is an open source software framework that makes it easy to create apps for medical research or for other research projects.
  • Primer - Easy SDK for creating personalized landing screens, signup, and login flows on a visual editor with built in a/b/n testing and analytics.
  • Azure - Client library for accessing Azure Storage on an iOS device
  • 1Password - 1Password Extension for iOS Apps
  • CareKit - CareKit is an open source software framework for creating apps that help people better understand and manage their health. By Apple
  • Shopify - Shopify’s Mobile Buy SDK makes it simple to sell physical products inside your mobile app.
  • Pinterest - Pinterest iOS SDK
  • playkit-ios - PlayKit: Kaltura Player SDK for iOS.
  • algoliasearch-client-swift - Algolia Search API Client for Swift
  • twitter-kit-ios - Twitter Kit is a native SDK to include Twitter content inside mobile apps.
  • rides-ios-sdk - Uber Rides iOS SDK (beta).

Unofficial

  • STTwitter A stable, mature and comprehensive Objective-C library for Twitter REST API 1.1
  • FHSTwitterEngine Twitter API for Cocoa developers.
  • Giphy Giphy API client for iOS in Objective-C.
  • UberKit - A simple, easy-to-use Objective-C wrapper for the Uber API.
  • InstagramKit - Instagram iOS SDK.
  • DribbbleSDK - Dribbble iOS SDK.
  • objectiveflickr - ObjectiveFlickr, a Flickr API framework for Objective-C.
  • Easy Social - Twitter & Facebook Integration.
  • das-quadrat - A Swift wrapper for Foursquare API. iOS and macOS.
  • SocialLib - SocialLib handles sharing message to multiple social media.
  • PokemonKit - Pokeapi wrapper, written in Swift
  • TJDropbox - A Dropbox v2 client library written in Objective-C
  • GitHub.swift - :octocat: Unofficial GitHub API client in Swift
  • CloudRail SI - Abstraction layer / unified API for multiple API providers. Interfaces eg for Cloud Storage (Dropbox, Google, ...), Social Networks (Facebook, Twitter, ...) and more.
  • Medium SDK - Swift - Unofficial Medium API SDK in Swift with sample project.
  • Swifter - ? A Twitter framework for iOS & macOS written in Swift.
  • SlackKit - a Slack client library for iOS and macOS written in Swift.
  • RandomUserSwift - Swift Framework to Generate Random Users - An Unofficial SDK for randomuser.me.
  • PPEventRegistryAPI - Swift 3 Framework for Event Registry API (eventregistry.org).
  • UnsplashKit - Swift client for Unsplash.
  • Swiftly Salesforce - An easy-to-use framework for building iOS apps that integrate with Salesforce, using Swift and promises.
  • Spartan - An Elegant Spotify Web API Library Written in Swift for iOS and macOS.
  • BigBoard - An Elegant Financial Markets Library Written in Swift that makes requests to Yahoo Finance API's under the hood.
  • BittrexApiKit - Simple and complete Swift wrapper for Bittrex Exchange API.
  • SwiftyVK Library for easy interact with VK social network API written in Swift.
  • ARKKit - ARK Ecosystem Cryptocurrency API Framework for iOS & macOS, written purely in Swift 4.0.
  • SwiftInstagram - Swift Client for Instagram API.
  • SwiftyArk - A simple, lightweight, fully-asynchronous cryptocurrency framework for the ARK Ecosystem.
  • PerfectSlackAPIClient - A Slack API Client for the Perfect Server-Side Swift Framework.
  • Mothership - Tunes Connect Library inspired by FastLane.
  • SwiftFlyer - An API wrapper for bitFlyer that supports all providing API.
  • waterwheel.swift - The Waterwheel Swift SDK provides classes to natively connect iOS, macOS, tvOS, and watchOS applications to Drupal 7 and 8.
  • ForecastIO - A Swift library for the Forecast.io Dark Sky API.
  • JamfKit - A JSS communication framework written in Swift.

Security

  • cocoapods-keys - A key value store for storing environment and application keys.
  • simple-touch - Very simple swift wrapper for Biometric Authentication Services (Touch ID) on iOS.
  • SwiftPasscodeLock - An iOS passcode lock with TouchID authentication written in Swift.
  • Smile-Lock - A library for make a beautiful Passcode Lock View.
  • zxcvbn-ios - A realistic password strength estimator.
  • TPObfuscatedString - Simple String obfuscation using core Swift.
  • LTHPasscodeViewController - An iOS passcode lockscreen replica (from Settings), with TouchID and simple (variable length) / complex support.
  • iOS-App-Security-Class - Simple class to check if iOS app has been cracked, being debugged or enriched with custom dylib and as well detect jailbroken environment.
  • BiometricAuth - Simple framework for biometric authentication (via TouchID) in your application
  • SAPinViewController - Simple and easy to use default iOS PIN screen. This simple library allows you to draw a fully customisable PIN screen same as the iOS default PIN view. My inspiration to create this library was form THPinViewController, however SAPinViewController is completely implemented in Swift. Also the main purpose of creating this library was to have simple, easy to use and fully customisable PIN screen.
  • TOPasscodeViewController - A modal passcode input and validation view controller for iOS
  • BiometricAuthentication - Use Apple FaceID or TouchID authentication in your app using BiometricAuthentication
  • KKPinCodeTextField - A customizable verification code textField for phone verification codes, passwords etc.
  • ? Vault - Simple and Secure container for passwords and other sensitive data
  • Virgil SWIFT PFS SDK - An SDK that allows developers to add the Perfect Forward Secrecy (PFS) technologies to their digital solutions to protect previously intercepted traffic from being decrypted even if the main Private Key is compromised.
  • Virgil Security Objective-C/Swift SDK - An SDK which allows developers to add full end-to-end security to their existing digital solutions to become HIPAA and GDPR compliant and more using Virgil API.

Encryption

  • AESCrypt-ObjC - A simple and opinionated AES encrypt / decrypt Objective-C class that just works.
  • IDZSwiftCommonCrypto - A wrapper for Apple's Common Crypto library written in Swift.
  • Arcane - ? Lightweight wrapper around CommonCrypto in Swift
  • SwiftMD5 - A pure Swift implementation of MD5
  • SwiftHash - ? Hash in Swift
  • SweetHMAC - A tiny and easy to use Swift class to encrypt strings using HMAC algorithms.
  • SwCrypt - RSA public/private key generation, RSA, AES encryption/decryption, RSA sign/verify in Swift with CommonCrypto in iOS and macOS
  • SwiftSSL - An Elegant crypto toolkit in Swift.
  • SwiftyRSA - RSA public/private key encryption in Swift
  • EnigmaKit - Enigma encryption in Swift
  • Themis - High-level crypto library, providing basic asymmetric encryption, secure messaging with forward secrecy and secure data storage, supports iOS/macOS, Android and different server side platforms.
  • Obfuscator-iOS - Secure your app by obfuscating all the hard-coded security-sensitive strings.
  • swift-sodium - Safe and easy to use crypto for iOS
  • CryptoSwift - Crypto related functions and helpers for Swift implemented in Swift programming language
  • SCrypto - Elegant Swift interface to access the CommonCrypto routines
  • SipHash - Simple and secure hashing in Swift with the SipHash algorithm.
  • RNCryptor - CCCryptor (AES encryption) wrappers for iOS and Mac in Swift. -- For ObjC, see RNCryptor/RNCryptor-objc.
  • CatCrypto - An easy way for hashing and encryption.
  • SecureEnclaveCrypto - Demonstration library for using the Secure Enclave on iOS.
  • RSASwiftGenerator - Util for generation RSA keys on your client and save to keychain or cover into Data ? ?
  • Virgil Security Objective-C/Swift Crypto Library - A high-level cryptographic library that allows to perform all necessary operations for securely storing and transferring data.
  • JOSESwift - A framework for the JOSE standards JWS, JWE, and JWK written in Swift.

Keychain

  • UICKeyChainStore - UICKeyChainStore is a simple wrapper for Keychain on iOS.
  • Valet - Securely store data in the iOS or macOS Keychain without knowing a thing about how the Keychain works.
  • Locksmith - A powerful, protocol-oriented library for working with the keychain in Swift.
  • KeychainAccess - Simple Swift wrapper for Keychain that works on iOS and macOS
  • Keychains - Because you should care... about the security... of your shit.
  • Lockbox - Objective-C utility class for storing data securely in the key chain.
  • SAMKeychain - Simple Objective-C wrapper for the keychain that works on Mac and iOS.
  • SwiftKeychainWrapper - A simple wrapper for the iOS Keychain to allow you to use it in a similar fashion to User Defaults.

Server

Server side projects supporting coroutines, Linux, MacOS, iOS, Apache Modules, Async calls, libuv and more.

  • Perfect - Server-side Swift. The Perfect library, application server, connectors and example apps.
  • Swifter - Tiny http server engine written in Swift programming language.
  • CocoaHTTPServer - A small, lightweight, embeddable HTTP server for macOS or iOS applications.
  • Curassow - Swift HTTP server using the pre-fork worker model.
  • Zewo - Lightweight library for web server applications in Swift on macOS and Linux powered by coroutines.
  • Vapor - Elegant web framework for Swift that works on iOS, macOS, and Ubuntu.
  • swiftra - Sinatra-like DSL for developing web apps in Swift
  • blackfire - A fast HTTP web server based on Node.js and Express written in Swift
  • swift-http - HTTP Implementation for Swift on Linux and macOS
  • Trevi - libuv base Swift web HTTP server framework
  • Express - Swift Express is a simple, yet unopinionated web application server written in Swift
  • Taylor - A lightweight library for writing HTTP web servers with Swift
  • Frank - Frank is a DSL for quickly writing web applications in Swift
  • Kitura - A Swift Web Framework and HTTP Server
  • Swifton - A Ruby on Rails inspired Web Framework for Swift that runs on Linux and macOS
  • Dynamo - High Performance (nearly)100% Swift Web server supporting dynamic content.
  • Redis - Pure-Swift Redis client implemented from the original protocol spec. macOS + Linux compatible.
  • NetworkObjects - Swift backend / server framework (Pure Swift, Supports Linux)
  • Noze.io - Evented I/O streams a.k.a. Node.js for Swift.
  • Lightning - A Swift Multiplatform Web and Networking Framework.
  • SwiftGD - A simple Swift wrapper for libgd.
  • Jobs - A job system for Swift backends.
  • ApacheExpress - Write Apache Modules in Swift!
  • GCDWebServer - Lightweight GCD based HTTP server for macOS & iOS (includes web based uploader & WebDAV server)
  • Embassy - Super lightweight async HTTP server library in pure Swift runs in iOS / MacOS / Linux.
  • smoke-framework - A light-weight server-side service framework written in the Swift programming language.

Text

  • Twitter Text Obj - An Objective-C implementation of Twitter's text processing library.
  • Nimbus - Nimbus is a toolkit for experienced iOS software designers.
  • NSStringEmojize - A category on NSString to convert Emoji Cheat Sheet codes to their equivalent Unicode characters.
  • MMMarkdown - An Objective-C static library for converting Markdown to HTML.
  • DTCoreText - Methods to allow using HTML code with CoreText.
  • DTRichTextEditor - A rich-text editor for iOS.
  • NBEmojiSearchView - A searchable emoji dropdown view.
  • Pluralize.swift - Great Swift String Pluralize Extension
  • RichEditorView - RichEditorView is a simple, modular, drop-in UIView subclass for Rich Text Editing.
  • Money - Swift value types for working with money & currency
  • PhoneNumberKit - A Swift framework for parsing, formatting and validating international phone numbers. Inspired by Google's libphonenumber.
  • YYText - Powerful text framework for iOS to display and edit rich text.
  • Format - A Swift Formatter Kit.
  • Tribute - Programmatic creation of NSAttributedString doesn't have to be a pain
  • EmojiKit - Effortless emoji-querying in Swift
  • Roman - Seamless Roman numeral conversion in Swift.
  • ZSSRichTextEditor - A beautiful rich text WYSIWYG editor for iOS with a syntax highlighted source view.
  • pangu.Objective-C - Paranoid text spacing in Objective-C.
  • SwiftString - A comprehensive, lightweight string extension for Swift
  • Marklight - Markdown syntax highlighter for iOS
  • MarkdownTextView - Rich Markdown editing control for iOS
  • TextAttributes - An easier way to compose attributed strings. [e]
  • Reductio - Automatic summarizer text in Swift
  • SmarkDown - A Pure Swift implementation of the markdown mark-up language
  • SwiftyMarkdown - Converts Markdown files and strings into NSAttributedString
  • SZMentions - Library to help handle mentions
  • SZMentionsSwift - Library to help handle mentions.
  • Heimdall - Heimdall is a wrapper around the Security framework for simple encryption/decryption operations.
  • NoOptionalInterpolation - Get rid of "Optional(...)" and "nil" in string interpolation. Easy pluralization.[e]
  • Smile ? Emoji in Swift
  • ISO8601 Super lightweight ISO8601 Date Formatter in Swift [e]
  • Translucid - Lightweight library to set an Image as text background. Written in swift.
  • FormatterKit - stringWithFormat: for the sophisticated hacker set
  • BonMot - Beautiful, easy attributed strings in Swift
  • SwiftValidators - String validation for iOS developed in Swift. Inspired by validator.js.
  • StringStylizer - Type strict builder class for NSAttributedString.
  • SwiftyAttributes - Swift extensions that make it a breeze to work with attributed strings.
  • MarkdownKit - A simple and customizable Markdown Parser for Swift.
  • CocoaMarkdown - Markdown parsing and rendering for iOS and macOS.
  • Notepad - A fully themeable markdown editor with live syntax highlighting.
  • KKStringValidator - Fast and simple string validation for iOS. With UITextField extension.
  • ISO8859 - ?⚙ Convert ISO8859 1-16 Encoded Text to String in Swift. Supports iOS, tvOS, watchOS and macOS.
  • Emojica - Replace standard emoji in strings with a custom emoji set, such as Twemoji or EmojiOne.
  • SwiftRichString - Elegant & Painless Attributed Strings Management Library in Swift.
  • libPhoneNumber-iOS - iOS port from libphonenumber (Google's phone number handling library).
  • AttributedTextView - Easiest way to create an attributed UITextView with support for multiple links (including hashtags and mentions).
  • StyleDecorator - Design string simply by linking attributes to needed parts
  • Mustard - Mustard is a Swift library for tokenizing strings when splitting by whitespace doesn't cut it.
  • Input Mask - Pattern-based user input formatter, parser and validator for iOS.
  • Attributed - Modern Swift µframework for attributed strings.
  • Atributika - Easily build NSAttributedString by detecting and styling HTML-like tags, hashtags, mentions, RegExp or NSDataDetector patterns.
  • Guitar - A Cross-Platform String Library Written in Swift.
  • RealTimeCurrencyFormatter - An ObjC international currency formatting utility.
  • Down - Blazing fast Markdown rendering in Swift, built upon cmark.
  • Marky Mark - Highly customizable Markdown parsing and native rendering in Swift.
  • MarkdownView - Markdown View for iOS.
  • Highlighter - Highlight whatever you want! Highlighter will magically find UI objects such as UILabel, UITextView, UITexTfield, UIButton in your UITableViewCell or other Class.
  • Sprinter - A library for formatting strings on iOS and macOS
  • Highlightr - An iOS & macOS syntax highlighter, supports 176 languages and comes with 79 styles.
  • fuse-swift - A lightweight fuzzy-search library, with zero dependencies.
  • EFMarkdown - A lightweight Markdown library for iOS.
  • Croc - A lightweight Swift library for Emoji parsing and querying.

Font

  • FontBlaster - Programmatically load custom fonts into your iOS app.
  • GoogleMaterialIconFont - Google Material Design Icons for Swift and ObjC project
  • ios-fontawesome - NSString+FontAwesome.
  • FontAwesome.swift - Use FontAwesome in your Swift projects.
  • SwiftFontName - OS font complements library. Localized font supported
  • SwiftIconFont - Icons fonts for iOS (FontAwesome, Iconic, Ionicon, Octicon, Themify, MapIcon, MaterialIcon)
  • FontAwesomeKit - Icon font library for iOS. Currently supports Font-Awesome, Foundation icons, Zocial, and ionicons.
  • Iconic - Auto-generated icon font library for iOS, watchOS and tvOS
  • GoogleMaterialDesignIcons - Google Material Design Icons Font for iOS.
  • OcticonsKit - Use Octicons as UIImage / UIFont in your projects with Swifty manners.
  • IoniconsKit - Use Ionicons as UIImage / UIFont in your projects with Swifty manners.
  • FontAwesomeKit.Swift - A better choice for iOS Developer to use FontAwesome Icon.
  • UIFontComplete - Font management (System & Custom) for iOS and tvOS
  • Swicon - Use 1600+ icons (and more!) from FontAwesome and Google Material Icons in your swift/iOS project in an easy and space-efficient way!
  • SwiftIcons - A library for using different font icons: dripicons, emoji, font awesome, icofont, ionicons, linear icons, map icons, material icons, open iconic, state, weather. It supports UIImage, UIImageView, UILabel, UIButton, UISegmentedControl, UITabBarItem, UISlider, UIBarButtonItem, UIViewController, UITextfield, UIStepper.
  • Font-Awesome-Swift - Font Awesome swift library for iOS.
  • JQSwiftIcon - Icon Fonts on iOS using string interpolation written in Swift.
  • Money - A precise, type-safe representation of a monetary amount in a given currency.

Testing

TDD / BDD

  • Kiwi - A behavior-driven development library for iOS development.
  • Specta - A light-weight TDD / BDD framework for Objective-C & Cocoa.
  • Quick - A behavior-driven development framework for Swift and Objective-C.
  • XcodeCoverage - Code coverage for Xcode projects.
  • OHHTTPStubs - Stub your network requests easily! Test your apps with fake network data and custom response time, response code and headers!
  • Dixie - Dixie is an open source Objective-C testing framework for altering object behaviours.
  • gh-unit - Test Framework for Objective-C.
  • Nimble - A Matcher Framework for Swift and Objective-C
  • Sleipnir - BDD-style framework for Swift
  • SwiftCheck - QuickCheck for Swift
  • Spry - A Mac and iOS Playgrounds Unit Testing library based on Nimble.
  • swift-corelibs-xctest - The XCTest Project, A Swift core library for providing unit test support.
  • PlaygroundTDD - Small library to easily run your tests directly within a Playground.

A/B Testing

  • Switchboard - Switchboard - easy and super light weight A/B testing for your mobile iPhone or android app. This mobile A/B testing framework allows you with minimal servers to run large amounts of mobile users.
  • SkyLab - Multivariate & A/B Testing for iOS and Mac
  • MSActiveConfig - Remote configuration and A/B Testing framework for iOS
  • ABKit - AB testing framework for iOS

UI Testing

  • appium - Appium is an open source test automation framework for use with native and hybrid mobile apps.
  • robotframework-appiumlibrary - AppiumLibrary is an appium testing library for RobotFramework.
  • Cucumber - Behavior driver development for iOS.
  • Kif - An iOS Functional Testing Framework.
  • Subliminal - An understated approach to iOS integration testing.
  • ios-driver - Test any iOS native, hybrid, or mobile web application using Selenium / WebDriver.
  • Remote - Control your iPhone from inside Xcode for end-to-end testing.
  • LayoutTest-iOS - Write unit tests which test the layout of a view in multiple configurations.
  • EarlGrey - ? iOS UI Automation Test Framework.
  • UI Testing Cheat Sheet - How do I test this with UI Testing?
  • Floater_ - Add a floating fingertip to your app demo
  • Bluepill - Bluepill is a reliable iOS testing tool that runs UI tests using multiple simulators on a single machine
  • Flawless App - tool for visual quality check of mobile app in a real-time. It compares initial design with the actual implementation right inside iOS simulator.
  • TouchVisualizer - Lightweight touch visualization library in Swift. A single line of code and visualize your touches!
  • UITestHelper - UITest helper library for creating readable and maintainable tests

Other Testing

  • NaughtyKeyboard - The Big List of Naughty Strings is a list of strings which have a high probability of causing issues when used as user-input data. This is a keyboard to help you test your app from your iOS device.
  • Fakery - Swift fake data generator.
  • DVR - Network testing for Swift
  • Cuckoo - First boilerplate-free mocking framework for Swift
  • Vinyl - Network testing à la VCR in Swift
  • Mockit - A simple mocking framework for Swift, inspired by the famous Mockito for Java
  • Cribble - Swifty tool for visual testing iPhone and iPad apps
  • second_curtain - Upload failing iOS snapshot tests cases to S3
  • trainer - Convert xcodebuild plist files to JUnit reports
  • Buildasaur - Automatic testing of your Pull Requests on GitHub and BitBucket using Xcode Server. Keep your team productive and safe. Get up and running in minutes. @buildasaur
  • Kakapo - ?Dynamically Mock server behaviors and responses in Swift
  • AcceptanceMark Tool to auto-generate Xcode tests classes from Markdown tables
  • MetovaTestKit - A collection of testing utilities to turn crashing test suites into failing test suites.
  • MirrorDiffKit - Pretty diff between any structs or classes
  • SnappyTestCase - iOS Simulator type agnostic snapshot testing, built on top of the FBSnapshotTestCase.
  • XCTestExtensions - XCTestExtensions is a Swift extension that provides convenient assertions for writing Unit Test.
  • OCMock - Mock objects for Objective-C.
  • Mockingjay - An elegant library for stubbing HTTP requests with ease in Swift.
  • PinpointKit - Let your testers and users send feedback with annotated screenshots and logs using a simple gesture.
  • iOS Snapshot Test Case — Snapshot test your UIViews and CALayers on iOS and tvOS.

UI

  • FlatUIKit - A collection of awesome flat UI components for iOS.
  • Motif - A lightweight and customizable JSON stylesheet framework for iOS.
  • Texture - Smooth asynchronous user interfaces for iOS apps.
  • GaugeKit - Customizable gauges. Easy reproduce Apple's style gauges.
  • SAHistoryNavigationViewController - SAHistoryNavigationViewController realizes iOS task manager like UI in UINavigationContoller,3D Touch Compatible.
  • iCarousel - A simple, highly customisable, data-driven 3D carousel for iOS and Mac OS.
  • tapkulibrary - tap + haiku = tapku, a well crafted open source iOS framework.
  • HorizontalDial - A horizontal scroll dial like Instagram.
  • ComponentKit - A React-Inspired View Framework for iOS, by Facebook.
  • RKNotificationHub - Make any UIView a full fledged notification center.
  • phone-number-picker - A simple and easy to use view controller enabling you to enter a phone number with a country code similar to WhatsApp written in Swift
  • EXTView - Extended UIView for Interface Builder by using IB_DESIGNABLE and IBInspectable.
  • BEMCheckBox - Tasteful Checkbox for iOS. (Check box)
  • MPParallaxView - Apple TV Parallax effect in Swift.
  • Splitflap - A simple split-flap display for your Swift applications
  • EZSwipeController - ? UIPageViewController like Snapchat/Tinder/iOS Main Pages
  • Curry - Curry is a framework built to enhance and compliment Foundation and UIKit.
  • Pages - ? UIPageViewController made simple
  • BothamUI - Model View Presenter Framework written in Swift.
  • APCustomBlurView - A subclass of UIVisualEffectView with customizable blur radius.
  • BAFluidView - UIView that simulates a 2D view of a fluid in motion
  • WZDraggableSwitchHeaderView - ? Showing status for switching between viewControllers
  • SCTrelloNavigation - ? An iOS native implementation of a Trello Animated Navagation.
  • Spots - Spots is a view controller framework that makes your setup and future development blazingly fast.
  • APAddressBook - Easy access to iOS address book
  • AZExpandableIconListView - An expandable/collapsible view component written in Swift.
  • FlourishUI - A highly configurable and out-of-the-box-pretty UI library
  • Navigation Stack - Navigation Stack is a stack-modeled navigation controller.
  • UIView-draggable - UIView category that adds dragging capabilities.
  • PeekPop - Backwards-compatible Peek and Pop.
  • EPSignature - Signature component for iOS in Swift
  • CoreDragon - [iOS] Stop using context menus. Drag and drop instead, even between apps!
  • EVFaceTracker - Calculate the distance and angle of your device with regards to your face.
  • Fashion - Fashion accessories and beauty tools to share and reuse UI styles in a Swifty way.
  • LeeGo - Declarative, configurable & highly reusable UI development as making Lego bricks.
  • MEVHorizontalContacts - An iOS UICollectionViewLayout subclass to show a list of contacts with configurable expandable menu items.
  • Ripple - Remember there's no such thing as a small act of kindness. Every act creates a ripple with no logical end.
  • ScalePicker - Generic scale and a handy float-value picker for any iOS app.
  • VisualEffectView - UIVisualEffectView subclass with tint color.
  • Cacao - Pure Swift Cross-platform UIKit (Cocoa Touch) implementation (Supports Linux)
  • StateView - Views that automatically update themselves.
  • JDFlipNumberView - Representing analog flip numbers like airport/trainstation displays.
  • ISTimeline - Simple timeline view written in Swift 2.2
  • JFCardSelectionViewController - A fancy collection style view controller
  • DCKit - Set of iOS controls, which have useful IBInspectable properties. Written on Swift.
  • BackgroundVideoiOS - A swift and objective-C object that lets you add a background video to iOS views.
  • NightNight - Elegant way to integrate night mode to swift projects
  • SwiftTheme - Powerful theme/skin manager for iOS 7+
  • FDStackView - Use UIStackView directly in iOS6+
  • YangMingShan - YangMingShan is a collection of iOS UI components that we created while building Yahoo apps.
  • nui - Style iOS apps with a stylesheet, similar to CSS
  • RedBeard - It's a complete framework that takes away much of the pain of getting a beautiful, powerful iOS App crafted.
  • Material - Material is an animation and graphics framework that allows developers to easily create beautiful applications.
  • DistancePicker - Custom control to select a distance with a pan gesture, written in Swift.
  • OAStackView - OAStackView tries to port back the stackview to iOS 7+. OAStackView aims at replicating all the features in UIStackView.
  • StyleKit - StyleKit is a microframework that enables you to style your applications using a simple JSON file.
  • PageController - Infinite paging controller, scrolling through contents and title bar scrolls with a delay.
  • StatusProvider - Protocol to handle initial Loadings, Empty Views and Error Handling in a ViewController & views
  • ASBubbleDrag - round icon drag control (made in swift) dock style
  • StackLayout - An alternative to UIStackView for common Auto Layout patterns.
  • NightView - Dazzling Nights on iOS.
  • SwiftVideoBackground - Easy to Use UIView subclass for implementing a video background
  • MRArticleViewController - Easily create UIViewControllers for news articles similar to those in the News app.
  • ConfettiView - Confetti View lets you create a magnificent confetti view in your app
  • BouncyPageViewController - Page view controller with bounce effect
  • LTHRadioButton - A radio button with a pretty fill animation.
  • Macaw-Examples - Various usages of the Macaw library.
  • Reactions - Fully customizable Facebook reactions control
  • Newly - Newly is a drop in solution to add Twitter/Facebook/Linkedin-style new updates/tweets/posts available button
  • CardStackController - iOS custom controller used in Jobandtalent app to present new view controllers as cards
  • Material Components - Google developed UI components that help developers execute Material Design.
  • RKMultiUnitRuler - Simple customizable ruler control that supports multiple units.
  • FAQView - An easy to use FAQ view for iOS written in Swift.
  • OXPatternLock - An iOS pattern lock like Android authentication written in Swift.
  • LMArticleViewController - UIViewController subclass to beautifully present news articles and blog posts
  • FSPagerView - FSPagerView is an elegant Screen Slide Library. It is extremely helpful for making Banner、Product Show、Welcome/Guide Pages、Screen/ViewController Sliders.
  • PanelKit - A UI framework that enables panels on iOS.
  • ElongationPreview - ElongationPreview is an elegant push-pop style view controller with 3D-Touch support and gestures.
  • Pageboy - A simple, highly informative page view controller.
  • IGColorPicker - ? A customizable color picker for iOS in Swift
  • KPActionSheet - A replacement of default action sheet, but has very simple usage.
  • SegmentedProgressBar - Snapchat / Instagram Stories style animated indicator
  • Magnetic - SpriteKit Floating Bubble Picker (inspired by Apple Music).
  • AmazingBubbles - Apple Music like Bubble Picker using Dynamic Animation.
  • Haptica - Easy Haptic Feedback Generator.
  • GDCheckbox - An easy to use custom checkbox/radio button component for iOS, with support of IBDesign Inspector.
  • HamsterUIKit - A simple and elegant UIKit(Chart) for iOS.
  • AZEmptyState - A UIControl subclass that makes it easy to create empty states.
  • URWeatherView - Show the weather effects onto view written in Swift3.
  • LCUIComponents - A framework supports creating transient views on top of other content onscreen such as popover with a data list.
  • ViewComposer - let lbl: UILabel = [.text("Hello"), .textColor(.red)] - Create views using array literal of enum expressing view attributes.
  • BatteryView - Simple battery shaped UIView.
  • ShadowView - Make shadows management easy on UIView
  • Pulley - A library to imitate the iOS 10 Maps UI
  • N8iveKit - A set of frameworks making iOS development more fun.
  • Panda - Create view hierarchies declaratively.
  • NotchKit - A simple way to hide the notch on the iPhone X
  • Overlay - Overlay is a flexible UI framework designed for Swift. It allows you to write CSS like Swift code.
  • SwiftyUI - High performance and lightweight(one class each UI) UIView, UIImage, UIImageView, UIlabel, UIButton, Promise and more.
  • NotchToolkit - A framework for iOS that allow developers use the iPhone X notch in creative ways.
  • PullUpController - Pull up controller with multiple sticky points like in iOS Maps.
  • DrawerKit - DrawerKit lets an UIViewController modally present another UIViewController in a manner similar to the way Apple's Maps app works.
  • Shades - Easily add drop shadows, borders, and round corners to a UIView.
  • ISPageControl - A page control similar to that used in Instagram.
  • Mixin - React.js like Mixin. More powerful Protocol-Oriented Programming.
  • Shiny - Iridescent Effect View (inspired by Apple Pay Cash).
  • StackViewController - A controller that uses a UIStackView and view controller composition to display content in a list
  • UberSignature - Provides an iOS view controller allowing a user to draw their signature with their finger in a realistic style.
  • SwViewCapture - A nice iOS View Capture Swift Library which can capture all content.
  • HGRippleRadarView - A beautiful radar view to show nearby items (users, restaurants, ...) with ripple animation, fully customizable
  • GDGauge - Full Customizable, Beautiful, Easy to use gauge view Edit. ?
  • STAControls - Handy UIControl subclasses. (Think Three20/NimbusKit of UIControls.) Written in Objective-C.
  • ApplyStyleKit - Elegant apply style, using Swift Method Chain.
  • OverlayContainer - A library to develop overlay based interfaces, such as the one presented in the iOS 12 Apple Maps or Stocks apps.
  • ClassicKit - A collection of classic-style UI components for iOS.
  • Sejima - A collection of User Interface components for iOS.
  • UI Fabric by Microsoft - UI framework based on Fluent Design System by Microsoft.

Activity Indicator

  • NVActivityIndicatorView - Collection of nice loading animations.
  • TKRubberIndicator - Rubber Indicator in Swift
  • RPLoadingAnimation - Loading animations ? by using Swift CALayer
  • LiquidLoader - Spinner loader components with liquid animation
  • iOS-CircleProgressView - This control will allow a user to use code instantiated or interface builder to create and render a circle progress view.
  • iOS Circle Progress Bar - iOS Circle Progress Bar
  • LinearProgressBar - Linear Progress Bar (inspired by Google Material Design) for iOS written in Swift 2.0.
  • STLoadingGroup - loading views
  • ALThreeCircleSpinner - A pulsing spinner view written in swift
  • MHRadialProgressView - iOS 7 radial animated progress view.
  • Loader - Amazing animated switch activity indicator written in swift
  • MBProgressHUD - Drop-in class for displays a translucent HUD with an indicator and/or labels while work is being done in a background thread.
  • SVProgressHUD - A clean and lightweight progress HUD for your iOS app.
  • ProgressHUD - ProgressHUD is a lightweight and easy-to-use HUD.
  • M13ProgressSuite - A suite containing many tools to display progress information on iOS.
  • PKHUD - A Swift based reimplementation of the Apple HUD (Volume, Ringer, Rotation,…) for iOS 8 and above.
  • EZLoadingActivity - Lightweight loading activity HUD.
  • FFCircularProgressView - FFCircularProgressView - An iOS 7-inspired blue circular progress view
  • MRProgress - Collection of iOS drop-in components to visualize progress
  • BigBrother - Automatically sets the network activity indicator for any performed request.
  • AlamofireNetworkActivityIndicator - Controls the visibility of the network activity indicator on iOS using Alamofire.
  • KDCircularProgress - A circular progress view with gradients written in Swift
  • DACircularProgress - DACircularProgress is a UIView subclass with circular UIProgressView properties.
  • KYNavigationProgress - Simple extension of UINavigationController to display progress on the UINavigationBar. [e]
  • GearRefreshControl - A custom animation for the UIRefreshControl
  • NJKWebViewProgress - A progress interface library for UIWebView. You can implement progress bar for your in-app browser using this module.
  • MKRingProgressView - A beautiful ring/circular progress view similar to Activity app on Apple Watch, written in Swift.
  • Hexacon - A new way to display content in your app like the Apple Watch SpringBoard, written in Swift.
  • ParticlesLoadingView - A customizable SpriteKit particles animation on the border of a view.
  • RPCircularProgress - (Swift) Circular progress UIView subclass with UIProgressView properties
  • MBCircularProgressBar - A circular, animatable & highly customizable progress bar, editable from the Interface Builder using IBDesignable.
  • WSProgressHUD - This is a beautiful hud view for iPhone & iPad
  • DBMetaballLoading - A metaball loading written in Swift.
  • FillableLoaders - Completely customizable progress based loaders drawn using custom CGPaths written in Swift
  • VHUD Simple HUD.
  • SwiftSpinner - A beautiful activity indicator and modal alert written in Swift using blur effects, translucency, flat and bold design
  • SnapTimer - Implementation of Snapchat's stories timer.
  • LLSpinner - An easy way to create a full screen activity indicator.
  • SVUploader - A beautiful uploader progress view that makes things simple and easy.
  • YLProgressBar - UIProgressView replacement with an highly and fully customizable animated progress bar in pure Core Graphics.
  • FlexibleSteppedProgressBar - A beautiful easily customisable stepped progress bar.
  • GradientLoadingBar - An animated gradient loading bar.
  • DSGradientProgressView - A simple and customizable animated progress bar written in Swift.
  • GradientProgressBar - A gradient progress bar (UIProgressView).
  • BPCircleActivityIndicator - A lightweight and awesome Loading Activity Indicator for your iOS app.
  • DottedProgressBar - Simple and customizable animated progress bar with dots for iOS.
  • RSLoadingView - Awesome loading animations using 3D engine written with Swift.
  • SendIndicator - Yet another task indicator
  • StepProgressView - Step-by-step progress view with labels and shapes. A good replacement for UIActivityIndicatorView and UIProgressView.
  • BPBlockActivityIndicator - A simple and awesome Loading Activity Indicator(with funny block animation) for your iOS app.
  • JDBreaksLoading - You can easily start up a little breaking game indicator by one line.
  • SkeletonView - An elegant way to show users that something is happening and also prepare them to which contents he is waiting.
  • Windless - Windless makes it easy to implement invisible layout loading view.
  • Skeleton - An easy way to create sliding CAGradientLayer animations! Works great for creating skeleton screens for loading content.
  • StatusBarOverlay - Automatically show/hide a "No Internet Connection" bar when your app loses/gains connection. It supports apps which hide the status bar and "The Notch"
  • RetroProgress - Retro looking progress bar straight from the 90s.
  • LinearProgressBar - Material Linear Progress Bar for your iOS apps.
  • MKProgress - A lightweight ProgressHUD written in Swift. Looks similar to /MBProgressHUD/SVProgressHUD/KVNProgressHUD.
  • RHPlaceholder - Simple library which give you possibility to add Facebook like loading state for your views.
  • IHProgressHUD - Simple HUD, thread safe, supports iOS, tvOS and App Extensions.

Animation

  • Pop - An extensible iOS and macOS animation library, useful for physics-based interactions.
  • AnimationEngine - Easily build advanced custom animations on iOS.
  • RZTransitions - A library of custom iOS View Controller Animations and Interactions.
  • DCAnimationKit - A collection of animations for iOS. Simple, just add water animations.
  • Spring - A library to simplify iOS animations in Swift.
  • Canvas - Animate in Xcode without code http://canvaspod.io
  • Fluent - Swift animation made easy
  • Cheetah - Easy animation library on iOS with Swift2.
  • RadialLayer - Animation for clickable elements (similar to Youtube Music).
  • Pop By Example - A project tutorial in how to use Pop animation framework by example.
  • AppAnimations - Collection of iOS animations to inspire your next project
  • EasyAnimation - A Swift library to take the power of UIView.animateWithDuration() to a whole new level - layers, springs, chain-able animations, and mixing view/layer animations together.
  • Animo - SpriteKit-like animation builders for CALayers.
  • CurryFire - A framework for creating unique animations.
  • IBAnimatable - Design and prototype UI, interaction, navigation, transition and animation for App Store ready Apps in Interface Builder with IBAnimatable.
  • CKWaveCollectionViewTransition - Cool wave like transition between two or more UICollectionView
  • DaisyChain - ? Easy animation chaining
  • PulsingHalo - iOS Component for creating a pulsing animation.
  • DKChainableAnimationKit - Chainable animations in Swift
  • JDAnimationKit - Animate easy and with less code with Swift
  • Advance - A powerful animation framework for iOS.
  • UIView-Shake - UIView category that adds shake animation
  • Walker - A new animation engine for your app.
  • Morgan - An animation set for your app.
  • MagicMove - Keynote-style Magic Move transition animations
  • Shimmer - An easy way to add a simple, shimmering effect to any view in an iOS app.
  • SAConfettiView - Confetti! Who doesn't like confetti?
  • CCMRadarView - CCMRadarView uses the IBDesignable tools to make an easy customizable radar view with animation
  • Pulsator - Pulse animation for iOS
  • Interpolate - Swift interpolation for gesture-driven animations
  • ADPuzzleAnimation - Custom animation for UIView inspired by Fabric - Answers animation.
  • Wave - ? Declarative chainable animations in Swift
  • Stellar - A fantastic Physical animation library for swift
  • MotionMachine - A powerful, elegant, and modular animation library for Swift.
  • JRMFloatingAnimation - An Objective-C animation library used to create floating image views.
  • AHKBendableView - UIView subclass that bends its edges when its position changes.
  • FlightAnimator - Advanced Natural Motion Animations, Simple Blocks Based Syntax
  • ZoomTransitioning - A custom transition with image zooming animation.
  • Ubergang - A tweening engine for iOS written in Swift.
  • JHChainableAnimations - Easy to read and write chainable animations in Objective-C
  • Popsicle - Delightful, extensible Swift value interpolation framework
  • WXWaveView - Add a pretty water wave to your view.
  • Twinkle - ✨ Swift and easy way to make elements in your iOS and tvOS app twinkle
  • MotionBlur - MotionBlur allows you to add motion blur effect to iOS animations.
  • RippleEffectView - RippleEffectView - A Neat Rippling View Effect
  • Keyframes - A library for converting Adobe AE shape based animations to a data format and play it back on Android and iOS devices.
  • SwiftyAnimate - Composable animations in Swift.
  • SamuraiTransition - Swift based library providing a collection of ViewController transitions featuring a number of neat “cutting” animations.
  • Lottie - An iOS library for a real time rendering of native vector animations from Adobe After Effects.
  • Overlap - Tiny iOS library to achieve overlap visual effect.
  • anim - An animation library for iOS with custom easings and easy to follow API.
  • AnimatedCollectionViewLayout - A UICollectionViewLayout subclass that adds custom transitions/animations to the UICollectionView.
  • Dance - A radical & elegant animation library built for iOS.
  • AKVideoImageView - UIImageView subclass which allows you to display a looped video as a background.
  • Spruce iOS Animation Library - Swift library for choreographing animations on the screen.
  • CircularRevealKit - UI framework that implements the material design's reveal effect.
  • TweenKit - Animation library for iOS in Swift.
  • Water - Simple calculation to render cheap water effects.
  • Pastel - Gradient animation effect like Instagram.
  • YapAnimator - Your fast and friendly physics-based animation system.
  • Bubble - Fruit Animation
  • Gemini - Gemini is rich scroll based animation framework for iOS, written in Swift
  • WaterDrops - Simple water drops animation for iOS in Swift
  • ViewAnimator - ViewAnimator brings your UI to life with just one line.
  • Ease - Animate everything with Ease.
  • Kinieta - An Animation Engine with Custom Bezier Easing, an Intuitive API and perfect Color Intepolation.
  • LSAnimator - Easy to Read and Write Multi-chain Animations Kit in Objective-C and Swift.
  • YetAnotherAnimationLibrary - Designed for gesture-driven animations. Fast, simple, & extensible!.
  • Anima - Anima is chainable Layer-Based Animation library for Swift4.
  • MotionAnimation - Lightweight animation library for UIKit.
  • AGInterfaceInteraction - library performs interaction with UI interface.
  • PMTween - An elegant and flexible tweening library for iOS.
  • VariousViewsEffects - Animates views nicely with easy to use extensions.
  • TheAnimation - Type-safe CAAnimation wrapper. It makes preventing to set wrong type values.
  • Poi - Poi makes you use card UI like tinder UI .You can use it like tableview method.
  • Sica - Simple Interface Core Animation. Run type-safe animation sequencially or parallelly.
  • fireworks - Fireworks effect for UIView
  • Disintegrate - Disintegration animation inspired by THAT thing Thanos did at the end of Avengers: Infinity War.
  • Wobbly - Wobbly is a Library of predefined, easy to use iOS animations.
  • LoadingShimmer - An easy way to add a shimmering effect to any view with just one line of code. It is useful as an unobtrusive loading indicator.

Transition

  • BlurryModalSegue - A custom modal segue for providing a blurred overlay effect.
  • DAExpandAnimation - A custom modal transition that presents a controller with an expanding effect while sliding out the presenter remnants.
  • BubbleTransition - A custom modal transition that presents and dismiss a controller with an expanding bubble effect.
  • RPModalGestureTransition - You can dismiss modal by using gesture ? ?
  • RMPZoomTransitionAnimator - A custom zooming transition animation for UIViewController
  • ElasticTransition - A UIKit custom transition that simulates an elastic drag. Written in Swift.
  • ElasticTransition-ObjC - A UIKit custom transition that simulates an elastic drag.This is the Objective-C Version of Elastic Transition written in Swift by lkzhao
  • ZFDragableModalTransition - Custom animation transition for present modal view controller
  • ZOZolaZoomTransition - Zoom transition that animates the entire view hierarchy. Used extensively in the Zola iOS application.
  • JTMaterialTransition - An iOS transition for controllers based on material design.
  • AnimatedTransitionGallery - Collection of iOS 7 custom animated transitions using UIViewControllerAnimatedTransitioning protocol.
  • TransitionTreasury - Easier way to push your viewController.
  • Presenter - Screen transition with safe and clean code.
  • Kaeru - Switch viewcontroller like iOS task manager
  • View2ViewTransition - Custom interactive view controller transition from one view to another view.
  • AZTransitions - API to make great custom transitions in one method.
  • Hero - Supercharged transition engine for iOS. Build your custom view transitions with no code at all. Inspired by Keynote's Magic Move.
  • Motion - Seamless animations and transitions in Swift.
  • PresenterKit - Swifty view controller presentation for iOS
  • Transition - Easy interactive interruptible custom ViewController transitions.
  • Gagat - A delightful way to transition between visual styles in your iOS applications.
  • DeckTransition - A library to recreate the iOS Apple Music now playing transition
  • TransitionableTab - TransitionableTab makes it easy to animate when switching between tab
  • AlertTransition - AlertTransition is a extensible library for making view controller transitions, especially for alert transitions.
  • SemiModalViewController - Present view / view controller as bottom-half modal.
  • ImageTransition - ImageTransition is a library for smooth animation of images during transitions.
  • LiquidTransition - removes boilerplate code to perform transition, allows backward animations, custom properties animation and much more!
  • SPStorkController - Very similar to the controllers displayed in Apple Music, Podcasts and Mail Apple's applications.
  • AppstoreTransition - Simulates the appstore card animation transition.

Alert & Action Sheet

  • SweetAlert - Live animated Alert View for iOS written in Swift.
  • NYAlertViewController - Highly configurable iOS Alert Views with custom content views.
  • SCLAlertView-Swift - Beautiful animated Alert View, written in Swift.
  • TTGSnackbar - Show simple message and action button on the bottom of the screen with multi kinds of animation.
  • Swift-Prompts - A Swift library to design custom prompts with a great scope of options to choose from.
  • BRYXBanner - A lightweight dropdown notification for iOS 7+, in Swift.
  • LNRSimpleNotifications - Simple Swift in-app notifications. LNRSimpleNotifications is a simplified Swift port of TSMessages
  • HDNotificationView - Emulates the native Notification Banner UI for any alert.
  • JDStatusBarNotification - Easy, customizable notifications displayed on top of the statusbar.
  • Notie - In-app notification in Swift, with customizable buttons and input text field.
  • EZAlertController - Easy Swift UIAlertController
  • GSMessages - A simple style messages/notifications for iOS 7+.
  • OEANotification - In-app customizable notification views on top of screen for iOS which is written in Swift 2.1.
  • RKDropdownAlert - Extremely simple UIAlertView alternative.
  • TKSwarmAlert - Animated alert library like Swarm app.
  • SimpleAlert - Customizable simple Alert and simple ActionSheet for Swift
  • Hokusai - A Swift library to provide a bouncy action sheet
  • SwiftNotice - SwiftNotice is a GUI library for displaying various popups (HUD) written in pure Swift, fits any scrollview.
  • SwiftOverlays - SwiftOverlays is a Swift GUI library for displaying various popups and notifications
  • SwiftyDrop - SwiftyDrop is a lightweight pure Swift simple and beautiful dropdown message.
  • LKAlertController - An easy to use UIAlertController builder for swift.
  • DOAlertController - Simple Alert View written in Swift, which can be used as a UIAlertController. (AlertController/AlertView/ActionSheet)
  • CustomizableActionSheet - Action sheet allows including your custom views and buttons.
  • Toast-Swift - A Swift extension that adds toast notifications to the UIView object class.
  • PMAlertController - PMAlertController is a great and customizable substitute to UIAlertController.
  • PopupViewController - UIAlertController drop in replacement with much more customization.
  • AlertViewLoveNotification - A simple and attractive AlertView to ask permission to your users for Push Notification.
  • CRToast - A modern iOS toast view that can fit your notification needs
  • JLToast - Toast for iOS with very simple interface.
  • CuckooAlert - Multiple use of presentViewController for UIAlertController.
  • KRAlertController - A colored alert view for your iOS.
  • Dodo - A message bar for iOS written in Swift.
  • MaterialActionSheetController - A Google like action sheet for iOS written in Swift.
  • SwiftMessages - A very flexible message bar for iOS written in Swift.
  • FCAlertView - A Flat Customizable AlertView for iOS. (Swift)
  • FCAlertView - A Flat Customizable AlertView for iOS. (Objective-C)
  • CDAlertView - Highly customizable alert/notification/success/error/alarm popup
  • RMActionController - Present any UIView in an UIAlertController like manner.
  • RMDateSelectionViewController - Select a date using UIDatePicker in a UIAlertController like fashion.
  • RMPickerViewController - Select something using UIPickerView in a UIAlertController like fashion.
  • Jelly - Jelly provides custom view controller transitions with just a few lines of code.
  • Malert - Malert is a simple, easy and custom iOS UIAlertView written in Swift
  • RAlertView - AlertView, iOS popup window, A pop-up framework, Can be simple and convenient to join your project.
  • NoticeBar - ?A simple NoticeBar written by Swift 3, similar with QQ notice view.
  • LIHAlert - Advance animated banner alerts for iOS
  • BPStatusBarAlert - A simple alerts that appear on the status bar and below navigation bar(like Facebook).
  • CFAlertViewController - A library that helps you display and customise alerts and action sheets on iPad and iPhone.
  • NotificationBanner - The easiest way to display highly customizable in app notification banners in iOS.
  • Alertift - Swifty, modern UIAlertController wrapper.
  • PCLBlurEffectAlert - Swift AlertController with UIVisualEffectView.
  • JDropDownAlert - Multi dirction dropdown alert view.
  • BulletinBoard - Generate and Display Bottom Card Interfaces on iOS
  • CFNotify - A customizable framework to create draggable views.
  • StatusAlert - Display Apple system-like self-hiding status alerts without interrupting user flow.
  • Alerts & Pickers - Advanced usage of native UIAlertController with TextField, DatePicker, PickerView, TableView and CollectionView.
  • RMessage - A crisp in-app notification/message banner built in ObjC.
  • InAppNotify - Swift library to manage in-app notification in swift language, like WhatsApp, Telegram, Frind, etc.
  • FloatingActionSheetController - FloatingActionSheetController is a cool design ActionSheetController library written in Swift.
  • TOActionSheet - A custom-designed reimplementation of the UIActionSheet control for iOS
  • XLActionController - Fully customizable and extensible action sheet controller written in Swift.
  • PopMenu - A cool and customizable popup style action sheet ?
  • NotchyAlert - Use the iPhone X notch space to display creative alerts.
  • Sheet - Show a workflow of view controllers as an action sheet. Very light weight. No configuration needed.
  • Sheet - SHEET helps you easily create a wide variety of action sheets with navigation features used in the Flipboard App
  • ALRT - An easier constructor for UIAlertController. Present an alert from anywhere.
  • CatAlertController - Use UIAlertController like a boss.
  • Loaf - A simple framework for easy iOS Toasts.
  • SPAlert - Native popup from Apple Music & Feedback in AppStore. Contains Done & Heart presets.

Badge

  • MIBadgeButton - Notification badge for UIButtons.
  • EasyNotificationBadge - UIView extension that adds a notification badge. [e]
  • Sheriff - Add badges to anything.
  • swift-badge - Badge view for iOS written in swift
  • BadgeHub - Make any UIView a full fledged animated notification center. It is a way to quickly add a notification badge icon to a UIView.

Button

  • SSBouncyButton - iOS7-style bouncy button UI component.
  • DOFavoriteButton - Cute Animated Button written in Swift.
  • VBFPopFlatButton - Flat button with 9 different states animated using Facebook POP.
  • HTPressableButton - Flat design pressable button.
  • LiquidFloatingActionButton - Material Design Floating Action Button in liquid state
  • JTFadingInfoView - An UIButton-based view with fade in/out animation features.
  • Floaty - ❤️ Floating Action Button for iOS
  • TVButton - Recreating the cool parallax icons from Apple TV as iOS UIButtons (in Swift).
  • SwiftyButton - Simple and customizable button in Swift
  • AnimatablePlayButton - Animated Play and Pause Button using CALayer, CAKeyframeAnimation.
  • gbkui-button-progress-view - Inspired by Apple’s download progress buttons in the App Store.
  • ZFRippleButton - Custom UIButton effect inspired by Google Material Design
  • JOEmojiableBtn - Emoji selector like Facebook Reactions.
  • EMEmojiableBtn - Option selector that works similar to Reactions by fb. Objective-c version.
  • WYMaterialButton - Interactive and fully animated Material Design button for iOS developers.
  • DynamicButton - Yet another animated flat buttons in Swift
  • OnOffButton - Custom On/Off Animated UIButton, written in Swift. By Creativedash
  • WCLShineButton - This is a UI lib for iOS. Effects like shining.
  • EasySocialButton - An easy way to create beautiful social authentication buttons.
  • NFDownloadButton - Revamped Download Button.
  • LGButton - A fully customisable subclass of the native UIControl which allows you to create beautiful buttons without writing any line of code.
  • MultiToggleButton - A UIButton subclass that implements tap-to-toggle button text (Like the camera flash and timer buttons).
  • PMSuperButton - A powerful UIButton with super powers, customizable from Storyboard!
  • JSButton - A fully customisable swift subclass on UIButton which allows you to create beautiful buttons without writing any line of code.
  • TransitionButton - UIButton sublass for loading and transition animation
  • ButtonProgressBar-iOS - A small and flexible UIButton subclass with animated loading progress, and completion animation.
  • SpicyButton - Full-featured IBDesignable UIButton class
  • DesignableButton - UIButton subclass with centralised and reusable styles. View styles and customise in InterfaceBuilder in real time!
  • BEMCheckBox - Tasteful Checkbox for iOS. (Check box)
  • ExpandableButton - Customizable and easy to use expandable button in Swift.
  • TORoundedButton - A high-performance button control with rounded corners.

Calendar

  • CVCalendar - A custom visual calendar for iOS 8+ written in Swift (2.0).
  • RSDayFlow - iOS 7+ Calendar with Infinite Scrolling.
  • NWCalendarView - An availability calendar implementation for iOS
  • GLCalendarView - A fully customizable calendar view acting as a date range picker
  • JTCalendar - A customizable calendar view for iOS.
  • JTAppleCalendar - The Unofficial Swift Apple Calendar Library. View. Control. for iOS & tvOS
  • Daysquare - An elegant calendar control for iOS.
  • ASCalendar - A calendar control for iOS written in swift with mvvm pattern
  • Calendar - A set of views and controllers for displaying and scheduling events on iOS
  • Koyomi - Simple customizable calendar component in Swift
  • DateTimePicker - A nicer iOS UI component for picking date and time
  • RCalendarPicker - RCalendarPicker A date picker control.
  • CalendarKit - Fully customizable calendar day view.
  • GDPersianCalendar - Customizable and easy to use Persian Calendar component.
  • MBCalendarKit - A calendar framework for iOS built with customization, and localization in mind.
  • PTEventView - An Event View based on Apple's Event Detail View within Calender.Supports ARC, Autolayout and editing via StoryBoard.
  • KDCalendarView - A calendar component for iOS written in Swift 4.0. It features both vertical and horizontal layout (and scrolling) and the display of native calendar events.
  • CalendarPopUp - CalendarPopUp - JTAppleCalendar library.
  • ios_calendar - It's lightweight and simple control with supporting Locale and CalendarIdentifier. There're samples for iPhone and iPad, and also with using a popover. With supporting Persian calendar
  • FSCalendar - A fully customizable iOS calendar library, compatible with Objective-C and Swift.

Cards

Card based UI's, pan gestures, flip and swipe animations

  • MDCSwipeToChoose - Swipe to "like" or "dislike" any view, just like Tinder.app. Build a flashcard app, a photo viewer, and more, in minutes, not hours!
  • TisprCardStack - Library that allows to have cards UI.
  • CardAnimation - Card flip animation by pan gesture.
  • Koloda - KolodaView is a class designed to simplify the implementation of Tinder like cards on iOS.
  • KVCardSelectionVC - Awesome looking Dial like card selection ViewController.
  • DMSwipeCards - Tinder like card stack that supports lazy loading and generics
  • TimelineCards - Presenting timelines as cards, single or bundled in scrollable feed!.
  • Cards - Awesome iOS 11 AppStore's Card Views.
  • MMCardView - Custom CollectionView like Wallet App
  • CardsLayout - Nice card-designed custom collection view layout.
  • CardParts - A reactive, card-based UI framework built on UIKit.
  • VerticalCardSwiper - A marriage between the Shazam Discover UI and Tinder, built with UICollectionView in Swift.

Form & Settings

Input validators, form helpers and form builders.

  • Form - The most flexible and powerful way to build a form on iOS
  • XLForm - XLForm is the most flexible and powerful iOS library to create dynamic table-view forms. Fully compatible with Swift & Obj-C.
  • Eureka - Elegant iOS form builder in pure Swift.
  • YALField - Custom Field component with validation for creating easier form-like UI from interface builder.
  • Former - Former is a fully customizable Swift2 library for easy creating UITableView based form.
  • SwiftForms - A small and lightweight library written in Swift that allows you to easily create forms.
  • Formalist - Declarative form building framework for iOS
  • SwiftyFORM - SwiftyFORM is a form framework for iOS written in Swift
  • SwiftValidator - A rule-based validation library for Swift
  • GenericPasswordRow - A row for Eureka to implement password validations.
  • formvalidator-swift - A framework to validate inputs of text fields and text views in a convenient way.
  • ValidationToolkit - Lightweight framework for input validation written in Swift.
  • ATGValidator - Rule based validation framework with form and card validation support for iOS.
  • ValidatedPropertyKit - Easily validate your Properties with Property Wrappers.

Keyboard

  • RSKKeyboardAnimationObserver - Showing / dismissing keyboard animation in simple UIViewController category.
  • RFKeyboardToolbar - This is a flexible UIView and UIButton subclass to add customized buttons and toolbars to your UITextFields/UITextViews.
  • IQKeyboardManager - Codeless drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView.
  • NgKeyboardTracker - Objective-C library for tracking keyboard in iOS apps.
  • MMNumberKeyboard - A simple keyboard to use with numbers and, optionally, a decimal point.
  • KeyboardObserver - For less complicated keyboard event handling.
  • TPKeyboardAvoiding - A drop-in universal solution for moving text fields out of the way of the keyboard in iOS
  • YYKeyboardManager - iOS utility class allows you to access keyboard view and track keyboard animation.
  • KeyboardMan - KeyboardMan helps you make keyboard animation.
  • MakemojiSDK - Emoji Keyboard SDK (iOS)
  • Typist - Small, drop-in Swift UIKit keyboard manager for iOS apps-helps manage keyboard's screen presence and behavior without notification center.
  • KeyboardHideManager - Codeless manager to hide keyboard by tapping on views for iOS written in Swift
  • Toolbar - Awesome autolayout Toolbar.
  • IHKeyboardAvoiding - A drop-in universal solution for keeping any UIView visible when the keyboard is being shown - no more UIScrollViews!
  • NumPad - Number Pad (inspired by Square's design).

Label

  • LTMorphingLabel - Graceful morphing effects for UILabel written in Swift.
  • ActiveLabel.swift - UILabel drop-in replacement supporting Hashtags (#), Mentions (@) and URLs (http://) written in Swift
  • MZTimerLabel - A handy class for iOS to use UILabel as a countdown timer or stopwatch just like in Apple Clock App.
  • CountdownLabel - Simple countdown UILabel with morphing animation, and some useful function.
  • IncrementableLabel - Incrementable label for iOS, macOS, and tvOS.
  • TTTAttributedLabel - A drop-in replacement for UILabel that supports attributes, data detectors, links, and more
  • NumberMorphView - A label view for displaying numbers which can transition or animate using a technique called number tweening or number morphing.
  • GlitchLabel - Glitching UILabel for iOS.
  • TOMSMorphingLabel - Configurable morphing transitions between text values of a label.
  • THLabel - UILabel subclass, which additionally allows shadow blur, inner shadow, stroke text and fill gradient.
  • RQShineLabel - Secret app like text animation
  • ZCAnimatedLabel - UILabel replacement with fine-grain appear/disappear animation
  • TriLabelView - A triangle shaped corner label view for iOS written in Swift.
  • Preloader.Ophiuchus - Custom Label to apply animations on whole text or letters.
  • MTLLinkLabel - MTLLinkLabel is linkable UILabel. Written in Swift.
  • UICountingLabel - Adds animated counting support to UILabel.
  • SlidingText - Swift UIView for sliding text with page indicator.
  • NumericAnimatedLabel - Swift UIView for showing numeric label with incremental and decremental step animation while changing value. Useful for scenarios like displaying currency.
  • JSLabel - A simple designable subclass on UILabel with extra IBDesignable and Blinking features.
  • AnimatedMaskLabel - Animated Mask Label is a nice gradient animated label. This is an easy way to add a shimmering effect to any view in your app.
  • STULabel - A label view that's faster than UILabel and supports asynchronous rendering, links with UIDragInteraction, very flexible text truncation, Auto Layout, UIAccessibility and more.

Login

  • LFLoginController - Customizable login screen, written in Swift.
  • LoginKit - LoginKit is a quick and easy way to add a Login/Signup UX to your iOS app.
  • Cely - Plug-n-Play login framework written in Swift.

Menu

  • ENSwiftSideMenu - A simple side menu for iOS 7/8 written in Swift.
  • RESideMenu - iOS 7/8 style side menu with parallax effect inspired by Dribbble shots.
  • SSASideMenu - A Swift implementation of RESideMenu. A iOS 7/8 style side menu with parallax effect.
  • RadialMenu - RadialMenu is a custom control for providing a touch context menu (like iMessage recording in iOS 8) built with Swift & POP
  • cariocamenu - The fastest zero-tap iOS menu.
  • VLDContextSheet - Context menu similar to the one in the Pinterest iOS app
  • GuillotineMenu - Our Guillotine Menu Transitioning Animation implemented in Swift reminds a bit of a notorious killing machine.
  • MediumMenu - A menu based on Medium iOS app.
  • SwiftySideMenu - SwiftySideMenu is a lightweight and easy to use side menu controller to add left menu and center view controllers with scale animation based on Pop framework.
  • LLSlideMenu - This is a spring slide menu for iOS apps
  • Swift-Slide-Menu - A Slide Menu, written in Swift, inspired by Slide Menu Material Design.
  • MenuItemKit - UIMenuItem with image and block(closure)
  • BTNavigationDropdownMenu - The elegant dropdown menu, written in Swift, appears underneath navigation bar to display a list of related items when a user click on the navigation title.
  • ALRadialMenu - A radial/circular menu featuring spring animations. Written in swift
  • AZDropdownMenu - An easy to use dropdown menu that supports images.
  • CircleMenu - An animated, multi-option menu button.
  • SlideMenuControllerSwift - iOS Slide Menu View based on Google+, iQON, Feedly, Ameba iOS app. It is written in pure Swift.
  • SideMenu - Simple side menu control in Swift inspired by Facebook. Right and Left sides. Lots of customization and animation options. Can be implemented in Storyboard with no code.
  • CategorySliderView - slider view for choosing categories. add any UIView type as category item view. Fully customisable
  • MKDropdownMenu - A Dropdown Menu for iOS with many customizable parameters to suit any needs.
  • ExpandingMenu - ExpandingMenu is menu button for iOS written in Swift.
  • PageMenu - A paging menu controller built from other view controllers placed inside a scroll view (like Spotify, Windows Phone, Instagram)
  • XXXRoundMenuButton - A simple circle style menu.
  • IGCMenu - Grid and Circular menu with animation.Easy to customise.
  • EEJSelectMenu - Single selection menu with cool animations, responsive with all screen sizes.
  • IGLDropDownMenu - An iOS drop down menu with pretty animation and easy to customize.
  • Side-Menu.iOS - Animated side menu with customizable UI
  • PopMenu - PopMenu is pop animation menu inspired by Sina weibo / NetEase app.
  • FlowingMenu - Interactive view transition to display menus with flowing and bouncing effects in Swift
  • Persei - Animated top menu for UITableView / UICollectionView / UIScrollView written in Swift
  • DropDown - A Material Design drop down for iOS
  • KYGooeyMenu - A not bad gooey effects menu.
  • SideMenuController - A side menu controller written in Swift
  • Context-Menu.iOS - You can easily add awesome animated context menu to your app.
  • ViewDeck - An implementation of the sliding functionality found in the Path 2.0 or Facebook iOS apps.
  • FrostedSidebar - Hamburger Menu using Swift and iOS 8 API's
  • VHBoomMenuButton - A menu which can ... BOOM!
  • DropDownMenuKit - A simple, modular and highly customizable UIKit menu, that can be attached to the navigation bar or toolbar, written in Swift.
  • RevealMenuController - Expandable item groups, custom position and appearance animation. Similar to ActionSheet style.
  • RHSideButtons - Library provides easy to implement variation of Android (Material Design) Floating Action Button for iOS. You can use it as your app small side menu.
  • Swift-CircleMenu - Rotating circle menu written in Swift 3.
  • AKSideMenu - Beautiful iOS side menu library with parallax effect.
  • InteractiveSideMenu - Customizable iOS Interactive Side Menu written in Swift 3.
  • YNDropDownMenu - Adorable iOS drop down menu with Swift3.
  • KWDrawerController - Drawer view controller that easy to use!
  • JNDropDownMenu - Easy to use tableview style drop down menu with multi-column support written in Swift3.
  • FanMenu - Menu with a circular layout based on Macaw.
  • AirBar - UIScrollView driven expandable menu written in Swift 3.
  • FAPanels - FAPanels for transition
  • SwipeMenuViewController - Swipable tab and menu View and ViewController.
  • DTPagerController - A fully customizable container view controller to display set of ViewControllers in horizontal scroller
  • PagingKit - PagingKit provides customizable menu UI It has more flexible layout and design than the other libraries.
  • Dropdowns - ? Dropdown in Swift
  • Parchment - A paging view controller with a highly customizable menu. Built on UICollectionView, with support for custom layouts and infinite data sources.
  • ContextMenu - An iOS context menu UI inspired by Things 3.
  • Panels - Panels is a framework to easily add sliding panels to your application.
  • UIMenuScroll - Creating the horizontal swiping navigation how on Facebook Messenger.
  • CircleBar - ? A fun, easy-to-use tab bar navigation controller for iOS.
  • SPLarkController - Settings screen with buttons and switches.

Navigation Bar

  • HidingNavigationBar - Easily hide and show a view controller's navigation bar (and tab bar) as a user scrolls
  • KMNavigationBarTransition - A drop-in universal library helps you to manage the navigation bar styles and makes transition animations smooth between different navigation bar styles while pushing or popping a view controller for all orientations.
  • LTNavigationBar - UINavigationBar Category which allows you to change its appearance dynamically
  • BusyNavigationBar - A UINavigationBar extension to show loading effects
  • KDInteractiveNavigationController - A UINavigationController subclass that support pop interactive UINavigationbar with hidden or show.
  • AMScrollingNavbar - Scrollable UINavigationBar that follows the scrolling of a UIScrollView
  • NavKit - Simple and integrated way to customize navigation bar experience on iOS app.
  • RainbowNavigation - An easy way to change backgroundColor of UINavigationBar when Push & Pop
  • TONavigationBar - A simple subclass that adds the ability to set the navigation bar background to 'clear' and gradually transition it visibly back in, similar to the effect in the iOS Music app.

PickerView

  • ActionSheetPicker-3.0 - Quickly reproduce the dropdown UIPickerView / ActionSheet functionality on iOS.
  • PickerView - A customizable alternative to UIPickerView in Swift.
  • DatePickerDialog - Date picker dialog for iOS
  • CZPicker - A picker view shown as a popup for iOS.
  • AIDatePickerController - ? UIDatePicker modally presented with iOS 7 custom transitions.
  • CountryPicker - ? UIPickerView with Country names flags and phoneCodes
  • McPicker - A customizable, closure driven UIPickerView drop-in solution with animations that is rotation ready.
  • Mandoline - An iOS picker view to serve all your "picking" needs
  • D2PDatePicker - Elegant and Easy-to-Use iOS Swift Date Picker
  • CountryPickerView- A simple, customizable view for efficiently collecting country information in iOS apps
  • planet - A country picker
  • MICountryPicker - Swift country picker with search option.
  • ADDatePicker - A fully customizable iOS Horizontal PickerView library, written in pure swift.

Popup

  • PopupKit - A simple and flexible class for presenting custom views as a popup in iOS and tvOS, maintained from KLCPopup.
  • MMPopupView - Pop-up based view(e.g. alert sheet), can easily customize.
  • STPopup - STPopup provides a UINavigationController in popup style, for both iPhone and iPad.
  • NMPopUpView - Simple iOS class for showing nice popup windows. Swift and Objective-C versions available.
  • PopupController - A customizable controller for showing temporary popup view.
  • SubscriptionPrompt - Subscription View Controller like the Tinder uses
  • Presentr - Wrapper for custom ViewController presentations in iOS 8+
  • PopupDialog - A simple, customizable popup dialog for iOS written in Swift. Replaces UIAlertControllers alert style.
  • SelectionDialog - Simple selection dialog.
  • AZDialogViewController - A highly customizable alert dialog controller that mimics Snapchat's alert dialog.
  • MIBlurPopup - MIBlurPopup let you create amazing popups with a blurred background.
  • LNPopupController - a framework for presenting view controllers as popups of other view controllers, much like the Apple Music and Podcasts apps.
  • PopupWindow - PopupWindow is a simple Popup using another UIWindow in Swift.
  • SHPopup - SHPopup is a simple lightweight library for popup view.
  • Popover - Popover is a balloon library like Facebook app. It is written in pure swift.
  • SwiftEntryKit - A highly customizable popups, alerts and banners presenter for iOS. It offers various presets and is written in pure Swift.
  • FFPopup - ⛩FFPopup is a lightweight library for presenting custom views as a popup.

ProgressView

Pull to Refresh

Rating Stars

  • FloatRatingView - Whole, half or floating point ratings control written in Swift
  • TTGEmojiRate - An emoji-liked rating view for iOS, implemented in Swift.
  • StarryStars - StarryStars is iOS GUI library for displaying and editing ratings
  • Cosmos - A star rating control for iOS / Swift
  • HCSStarRatingView - Simple star rating view for iOS written in Objective-C
  • MBRateApp - A groovy app rate stars screen for iOS written in Swift
  • RPInteraction - Review page interaction - handy and pretty way to ask for review.

ScrollView

  • ScrollingFollowView - ScrollingFollowView is a simple view which follows UIScrollView scrolling.
  • UIScrollView-InfiniteScroll - UIScrollView infinite scroll category.
  • GoAutoSlideView - GoAutoSlideView extends UIScrollView by featuring infinitely and automatically slide.
  • AppStoreStyleHorizontalScrollView - App store style horizontal scroll view.
  • PullToDismiss - You can dismiss modal viewcontroller by pulling scrollview or navigationbar in Swift.
  • SpreadsheetView - Full configurable spreadsheet view user interfaces for iOS applications. With this framework, you can easily create complex layouts like schedule, gantt chart or timetable as if you are using Excel.
  • VegaScroll - VegaScroll is a lightweight animation flowlayout for UICollectionView completely written in Swift 4, compatible with iOS 11 and Xcode 9
  • ShelfView-iOS - iOS custom view to display books on shelf
  • SlideController - SlideController is simple and flexible UI component completely written in Swift. It is a nice alternative for UIPageViewController built using power of generic types.
  • CrownControl - Inspired by the Apple Watch Digital Crown, CrownControl is a tiny accessory view that enables scrolling through scrollable content without lifting your thumb.
  • SegementSlide - Multi-tier UIScrollView nested scrolling solution.

Segmented Control

  • BetterSegmentedControl - An easy to use, customizable replacement for UISegmentedControl & UISwitch.
  • LUNSegmentedControl - Customizable segmented control with interactive animation.
  • AKASegmentedControl - ? Fully customizable Segmented Control for iOS.
  • TwicketSegmentedControl - Custom UISegmentedControl replacement for iOS, written in Swift.
  • SJFluidSegmentedControl - A segmented control with custom appearance and interactive animations. Written in Swift 3.0.
  • HMSegmentedControl - A drop-in replacement for UISegmentedControl mimicking the style of the segmented control used in Google Currents and various other Google products.
  • YUSegment - A customizable segmented control for iOS. Supports both text and image.
  • MultiSelectSegmentedControl - adds Multiple-Selection to the standard UISegmentedControl.
  • DynamicMaskSegmentSwitch - A segment switcher with dynamic text mask effect
  • PinterestSegment - A Pinterest-like segment control with masking animation.
  • Rotary - A customisable rotary wheel composed of selectable segments.

Slider

  • VolumeControl - Custom volume control for iPhone featuring a well-designed round slider.
  • WESlider - Simple and light weight slider with chapter management
  • IntervalSlider - IntervalSlider is a slider library like ReutersTV app. written in pure swift.
  • RangeSlider - A simple range slider made in Swift
  • CircleSlider - CircleSlider is a Circular slider library. written in pure Swift.
  • MARKRangeSlider - A custom reusable slider control with 2 thumbs (range slider).
  • ASValueTrackingSlider - A UISlider subclass that displays the slider value in a popup view
  • TTRangeSlider - A slider, similar in style to UISlider, but which allows you to pick a minimum and maximum range.
  • MMSegmentSlider - Customizable animated slider for iOS.
  • StepSlider - StepSlider its custom implementation of slider such as UISlider for preset integer values.
  • JDSlider - An iOS Slider written in Swift.
  • SnappingSlider - A beautiful slider control for iOS built purely upon Swift
  • MTCircularSlider - A feature-rich circular slider control.
  • VerticalSlider - VerticalSlider is a vertical implementation of the UISlider slider control.
  • CircularSlider - A powerful Circular Slider. It's written in Swift, it's 100% IBDesignable and all parameters are IBInspectable.
  • HGCircularSlider - A custom reusable circular slider control for iOS application.
  • RangeSeekSlider - A customizable range slider for iOS.
  • SectionedSlider - Control Center Slider.
  • MultiSlider - UISlider clone with multiple thumbs and values, optional snap intervals, optional value labels.
  • AGCircularPicker - AGCircularPicker is helpful component for creating a controller aimed to manage any calculated parameter.
  • Fluid Slider - A slider widget with a popup bubble displaying the precise value selected.

Splash View

  • CBZSplashView - Twitter style Splash Screen View. Grows to reveal the Initial view behind.
  • SKSplashView - Create custom animated splash views similar to the ones in the Twitter, Uber and Ping iOS app.
  • RevealingSplashView - A Splash view that animates and reveals its content, inspired by Twitter splash

Status Bar

  • Bartinter - Status bar tint depending on content behind, updates dynamically.

Stepper

  • PFStepper - May be the most elegant stepper you have ever had!
  • ValueStepper - A Stepper object that displays its value.
  • GMStepper - A stepper with a sliding label in the middle.
  • barceloneta - The right way to increment/decrement values with a simple gesture on iOS.
  • SnappingStepper - An elegant alternative to the UIStepper written in Swift
  • SMNumberWheel - A custom control written in Swift, which is ideal for picking numbers very fast but yet very accurate using a rotating wheel

Switch

  • AnimatedSwitch - UISwitch which paints over the parent view with the color in Swift.
  • ViralSwitch - A UISwitch that infects its superview with its tint color.
  • JTMaterialSwitch - A customizable switch UI with ripple effect and bounce animations, inspired from Google's Material Design.
  • TKSwitcherCollection - An animate switch collection
  • SevenSwitch - iOS7 style drop in replacement for UISwitch.
  • DGRunkeeperSwitch - Runkeeper design switch control (two part segment control)
  • PMZSwitch - Yet another animated toggle
  • Switcher - Swift - Custom UISwitcher with animation when change status
  • RAMPaperSwitch - RAMPaperSwitch is a Swift module which paints over the parent view when the switch is turned on.
  • AIFlatSwitch - A flat component alternative to UISwitch on iOS
  • Switch - An iOS switch control implemented in Swift with full Interface Builder support.

Tab Bar

  • ESTabBarController - A tab bar controller for iOS that allows highlighting buttons and setting custom actions to them.
  • GooeyTabbar - A gooey effect tabbar
  • animated-tab-bar - RAMAnimatedTabBarController is a Swift module for adding animation to tabbar items.
  • FoldingTabBar.iOS - Folding Tab Bar and Tab Bar Controller
  • GGTabBar - Another UITabBar & UITabBarController (iOS Tab Bar) replacement, but uses Auto Layout for arranging it's views hierarchy.
  • adaptive-tab-bar - AdaptiveController is a 'Progressive Reduction' Swift module for adding custom states to Native or Custom iOS UI elements
  • Pager - Easily create sliding tabs with Pager
  • XLPagerTabStrip - Android PagerTabStrip for iOS.
  • TabPageViewController - Paging view controller and scroll tab view.
  • TabDrawer - Customizable TabBar UI element that allows you to run a block of code upon TabBarItem selection, written in Swift
  • SwipeViewController - SwipeViewController is a Swift modification of RKSwipeBetweenViewControllers - navigate between pages / ViewControllers
  • ColorMatchTabs - Interesting way to display tabs
  • BATabBarController - A TabBarController with a unique animation for selection
  • ScrollPager - A scroll pager that displays a list of tabs (segments) and manages paging between given views
  • Segmentio - Animated top/bottom segmented control written in Swift.
  • KYWheelTabController - KYWheelTabController is a subclass of UITabBarController.It displays the circular menu instead of UITabBar.
  • SuperBadges - Add emojis and colored dots as badges for your Tab Bar buttons
  • AZTabBarController - A custom tab bar controller for iOS written in Swift 3.0
  • MiniTabBar - A clean simple alternative to the UITabBar
  • SwipeableTabBarController - UITabBarController with swipe interaction between its tabs.
  • SMSwipeableTabView - Swipeable Views with Tabs (Like Android SwipeView With Tabs Layout)
  • Tabman - A powerful paging view controller with indicator bar for iOS.
  • WormTabStrip Beatiful ViewPager For iOS written in Swift (inspired by Android SmartTabLayout)
  • SSCustomTabMenu Simple customizable iOS bottom menu with Tabbar.
  • SmoothTab - Smooth customizable tabs for iOS apps.
  • ExpandedTabBar - Very creative designed solution for "more" items in UITabBarController

Table View / Collection View

Table View

  • MGSwipeTableCell - UITableViewCell subclass that allows to display swippable buttons with a variety of transitions.
  • YXTPageView - A PageView, which supporting scrolling to transition between a UIView and a UITableView.
  • ConfigurableTableViewController - Typed, yet Flexible Table View Controller https://holko.pl/2016/01/05/typed-table-view-controller/
  • Lightning-Table - A declarative api for working with UITableView.
  • Static - Simple static table views for iOS in Swift.
  • AMWaveTransition - Custom transition between viewcontrollers holding tableviews.
  • SWTableViewCell - An easy-to-use UITableViewCell subclass that implements a swippable content view which exposes utility buttons (similar to iOS 7 Mail Application)
  • ZYThumbnailTableView - a TableView have thumbnail cell only, and you can use gesture let it expands other expansionView, all diy
  • BWSwipeRevealCell - A Swift library for swipeable table cells
  • preview-transition - PreviewTransition is a simple preview gallery controller
  • QuickTableViewController - A simple way to create a UITableView for settings in Swift.
  • TableKit - Type-safe declarative table views with Swift
  • VBPiledView - Simple and beautiful stacked UIView to use as a replacement for an UITableView, UIImageView or as a menu
  • VTMagic - VTMagic is a page container library for iOS.
  • MCSwipeTableViewCell - ? Convenient UITableViewCell subclass that implements a swippable content to trigger actions (similar to the Mailbox app).
  • MYTableViewIndex - A pixel perfect replacement for UITableView section index, written in Swift
  • ios-dragable-table-cells - Support for drag-n-drop of UITableViewCells in a navigation hierarchy of view controllers. You drag cells by tapping and holding them.
  • Bohr - Bohr allows you to set up a settings screen for your app with three principles in mind: ease, customization and extensibility.
  • SwiftReorder - Add drag-and-drop reordering to any table view with just a few lines of code. Robust, lightweight, and completely customizable. [e]
  • HoverConversion - HoverConversion realized vertical paging with UITableView. UIViewController will be paging when reaching top or bottom of UITableView contentOffset.
  • TableViewDragger - A cells of UITableView can be rearranged by drag and drop.
  • FlexibleTableViewController - Swift library of generic table view controller with external data processing of functionality, like determine cell's reuseIdentifier related to indexPath, configuration of requested cell for display and cell selection handler
  • CascadingTableDelegate - A no-nonsense way to write cleaner UITableViewDelegate and UITableViewDataSource in Swift.
  • TimelineTableViewCell - Simple timeline view implemented by UITableViewCell written in Swift 3.0.
  • RHPreviewCell - I envied so much Spotify iOS app this great playlist preview cell. Now you can give your users ability to quick check "what content is hidden under your UITableViewCell".
  • TORoundedTableView - A subclass of UITableView that styles it like Settings.app on iPad
  • TableFlip - A simpler way to do cool UITableView animations! (╯°□°)╯︵ ┻━┻
  • DTTableViewManager - Protocol-oriented UITableView management, powered by generics and associated types.
  • SwipeCellKit - Swipeable UITableViewCell based on the stock Mail.app, implemented in Swift.
  • ReverseExtension - A UITableView extension that enables cell insertion from the bottom of a table view.
  • SelectionList - Simple single-selection or multiple-selection checklist, based on UITableView.
  • AZTableViewController - Elegant and easy way to integrate pagination with dummy views.
  • SAInboxViewController - UIViewController subclass inspired by "Inbox by google" animated transitioning.
  • StaticTableViewController - Dynamically hide / show cells of static UITableViewController.
  • OKTableViewLiaison - Framework to help you better manage UITableView configuration.
  • ThunderTable - A simple declarative approach to UITableViewController management using a protocol-based approach.

Collection View

  • Dwifft - Swift Diff
  • MEVFloatingButton - An iOS drop-in UITableView, UICollectionView and UIScrollView superclass category for showing a customizable floating button on top of it.
  • Preheat - Automates prefetching of content in UITableView and UICollectionView
  • DisplaySwitcher - Custom transition between two collection view layouts
  • Reusable - A Swift mixin for UITableViewCells and UICollectionViewCells
  • Sapporo - Cellmodel-driven collectionview manager
  • StickyCollectionView-Swift - UICollectionView layout for presenting of the overlapping cells.
  • TLIndexPathTools - TLIndexPathTools is a small set of classes that can greatly simplify your table and collection views.
  • IGListKit - A data-driven UICollectionView framework for building fast and flexible lists.
  • FlexibleCollectionViewController - Swift library of generic collection view controller with external data processing of functionality, like determine cell's reuseIdentifier related to indexPath, configuration of requested cell for display and cell selection handler etc
  • ASCollectionView - A Swift collection view inspired by Airbnb.
  • GLTableCollectionView - Netflix and App Store like UITableView with UICollectionView
  • EditDistance - Incremental update tool for UITableView and UICollectionView
  • SwiftSpreadSheet - Spreadsheet CollectionViewLayout in Swift. Fully customizable.
  • GenericDataSource - A generic small reusable components for data source implementation for UITableView/UICollectionView in Swift.
  • PagingView - Infinite paging, Smart auto layout, Interface of similar to UIKit.
  • PJFDataSource - PJFDataSource is a small library that provides a simple, clean architecture for your app to manage its data sources while providing a consistent user interface for common content states (i.e. loading, loaded, empty, and error).
  • DataSources - Type-safe data-driven List-UI Framework. (We can also use ASCollectionNode)
  • KDDragAndDropCollectionView - Dragging & Dropping data across multiple UICollectionViews.
  • SectionScrubber - A component to quickly scroll between collection view sections
  • CollectionKit - A modern Swift framework for building reusable data-driven collection components.
  • AZCollectionViewController - Easy way to integrate pagination with dummy views in CollectionView, make Instagram Discover within minutes.
  • CampcotCollectionView - CampcotCollectionView is a custom UICollectionView written in Swift that allows to expand and collapse sections. It provides a simple API to manage collection view appearance.
  • Stefan - A guy that helps you manage collections and placeholders in easy way.
  • Parade - Parallax Scroll-Jacking Effects Engine for iOS / tvOS.
  • MSPeekCollectionViewDelegateImplementation - A custom paging behavior that peeks the previous and next items in a collection view.
  • SimpleSource - Easy and type-safe iOS table and collection views in Swift.
  • Conv - Conv smart represent UICollectionView data structure more than UIKit.
  • Carbon - ? A declarative library for building component-based user interfaces in UITableView and UICollectionView.
  • ThunderCollection - A simple declarative approach to UICollectionViewController management using a protocol-based approach.
  • DiffableDataSources - A library for backporting UITableView/UICollectionViewDiffableDataSource.

Expandable Cell

  • folding-cell - FoldingCell is an expanding content cell inspired by folding paper material
  • AEAccordion - UITableViewController with accordion effect (expand / collapse cells).
  • ThreeLevelAccordian - This is a customisable three level accordian with options for adding images and accessories images.
  • YNExpandableCell - Awesome expandable, collapsible tableview cell for iOS.
  • Savory - A swift accordion view implementation.
  • ExpyTableView - Make your table view expandable just by implementing one method.
  • FTFoldingPaper - Emulates paper folding effect. Can be integrated with UITableView or used with other UI components.
  • CollapsibleTableSectionViewController - A swift library to support collapsible sections in a table view.
  • ExpandableCell - Fully refactored YNExapnadableCell with more concise, bug free. Awesome expandable, collapsible tableview cell for iOS.
  • expanding-collection - ExpandingCollection is a card peek/pop controller

Header

  • ParallaxTableViewHeader - Parallax scrolling effect on UITableView header view when a tableView is scrolled.
  • CSStickyHeaderFlowLayout - UICollectionView replacement of UITableView. Do even more like Parallax Header, Sticky Section Header.
  • GSKStretchyHeaderView - Configurable yet easy to use stretchy header view for UITableView and UICollectionView.

Placeholder

  • DZNEmptyDataSet - A drop-in UITableView/UICollectionView superclass category for showing empty datasets whenever the view has no content to display.
  • HGPlaceholders - Nice library to show and create placeholders and Empty States for any UITableView/UICollectionView in your project
  • ListPlaceholder - ListPlaceholder is a swift library allows you to easily add facebook style animated loading placeholder to your tableviews or collection views
  • WLEmptyState - A component that lets you customize the view when the dataset of UITableView is empty.

Collection View Layout

  • CHTCollectionViewWaterfallLayout - The waterfall (i.e., Pinterest-like) layout for UICollectionView.
  • FMMosaicLayout - A drop-in mosaic collection view layout with a focus on simple customizations.
  • mosaic-layout - A mosaic collection view layout inspired by Lightbox's Algorithm, written in Swift
  • TLLayoutTransitioning - Enhanced transitioning between UICollectionView layouts in iOS.
  • CenteredCollectionView - A lightweight UICollectionViewLayout that 'pages' and centers it's cells ? written in Swift.
  • CollectionViewSlantedLayout - UICollectionViewLayout with slanted content
  • SquareMosaicLayout - An extandable mosaic UICollectionViewLayout with a focus on extremely flexible customizations
  • BouncyLayout - BouncyLayout is a collection view layout that makes your cells bounce.
  • AZSafariCollectionViewLayout - AZSafariCollectionViewLayout is replica of safari browser history page layout. very easy to use, IBInspectable are given for easy integration. CollectionView, make Instagram Discover within minutes.
  • Blueprints - A framework that is meant to make your life easier when working with collection view flow layouts.
  • UICollectionViewSplitLayout - UICollectionViewSplitLayout makes collection view more responsive.
  • Swinflate - A bunch of layouts providing light and seamless experiences in your CollectionView.

Tag

  • PARTagPicker - This pod provides a view controller for choosing and creating tags in the style of wordpress or tumblr.
  • AMTagListView - UIScrollView subclass that allows to add a list of highly customizable tags.
  • TagCellLayout - UICollectionView layout for Tags with Left, Center & Right alignments.
  • TTGTagCollectionView - Show simple text tags or custom tag views in a vertical scrollable view.
  • TagListView - Simple and highly customizable iOS tag list view, in Swift.
  • RKTagsView - Highly customizable iOS tags view (like NSTokenField). Supports editing, multiple selection, Auto Layout and much more.
  • WSTagsField - An iOS text field that represents different Tags
  • AKMaskField - AKMaskField is UITextField subclass which allows enter data in the fixed quantity and in the certain format.
  • YNSearch - Awesome fully customizable search view like Pinterest written in Swift 3
  • SFFocusViewLayout - UICollectionViewLayout with focused content.

TextField & TextView

  • JVFloatLabeledTextField - UITextField subclass with floating labels.
  • ARAutocompleteTextView - subclass of UITextView that automatically displays text suggestions in real-time. Perfect for email Textviews.
  • IQDropDownTextField - TextField with DropDown support using UIPickerView
  • UITextField-Shake - UITextField category that adds shake animation. Also with Swift version
  • HTYTextField - A UITextField with bouncy placeholder.
  • MVAutocompletePlaceSearchTextField - A drop-in Autocompletion control for Place Search like Google Places, Uber, etc.
  • AutocompleteField - Add word completion to your UITextFields.
  • RSKGrowingTextView - A light-weight UITextView subclass that automatically grows and shrinks.
  • RSKPlaceholderTextView - A light-weight UITextView subclass that adds support for placeholder.
  • StatefulViewController - Placeholder views based on content, loading, error or empty states
  • MBAutoGrowingTextView - An auto-layout base UITextView subclass which automatically grows with user input and can be constrained by maximal and minimal height - all without a single line of code
  • TextFieldEffects - Custom UITextFields effects inspired by Codrops, built using Swift
  • Reel Search - RAMReel is a controller that allows you to choose options from a list.
  • MLPAutoCompleteTextField - a subclass of UITextField that behaves like a typical UITextField with one notable exception: it manages a drop down table of autocomplete suggestions that update as the user types.
  • SkyFloatingLabelTextField - A beautiful and flexible text field control implementation of "Float Label Pattern". Written in Swift.
  • VMaskTextField - VMaskTextField is a library which create an input mask for iOS.
  • TJTextField - UITextField with underline and left image
  • NextGrowingTextView - The next in the generations of 'growing textviews' optimized for iOS 7 and above.
  • RPFloatingPlaceholders - UITextField and UITextView subclasses with placeholders that change into floating labels when the fields are populated with text.
  • CurrencyTextField - UITextField that automatically formats text to display in the currency format.
  • UITextField-Navigation - UITextField-Navigation adds next, previous and done buttons to the keyboard for your UITextFields.[e]
  • AutoCompleteTextField - Auto complete with suggestion textfield
  • PLCurrencyTextField - UITextField that support currency in the right way.
  • PasswordTextField - A custom TextField with a switchable icon which shows or hides the password and enforce good password policies
  • AnimatedTextInput - Animated UITextField and UITextView replacement for iOS
  • KMPlaceholderTextView - A UITextView subclass that adds support for multiline placeholder written in Swift.
  • NxEnabled - Library which allows you binding enabled property of button with textable elements (TextView, TextField)
  • AwesomeTextField - Awesome TextField is a nice and simple library for iOS. It's highly customisable and easy-to-use tool. Works perfectly for any registration or login forms in your app.
  • ModernSearchBar - The famous iOS search bar with auto completion feature implemented.
  • SelectableTextView - A text view that supports selection and expansion
  • CBPinEntryView - A customisable view written in Swift 4.2 for any pin, code or password entry. Supports one time codes in iOS 12.
  • GrowingTextView - An UITextView in Swift3 and Swift2.3. Support auto growing, placeholder and length limit.
  • DTTextField - DTTextField is a custom textfield with floating placeholder and error label in Swift3.0.
  • TextFieldCounter - UITextField character counter with lovable UX.
  • RSFloatInputView - A Float Input View with smooth animation and supporting icon and seperator written with Swift.
  • TaniwhaTextField - TaniwhaTextField is a lightweight and beautiful swift textfield framework. It has float label pattern, and also you can highly customise it. it's written with Swift.
  • InstantSearch iOS - A library of widgets and helpers to build instant-search applications on iOS.
  • SearchTextField - UITextField subclass with autocompletion suggestions list
  • PYSearch - An elegant search controller which replaces the UISearchController for iOS (iPhone & iPad).
  • styled-text - Declarative text styles and streamlined Dynamic Type support for iOS.
  • TweeTextField - Lightweight set of text fields with nice animation and functionality.
  • MeasurementTextField - UITextField-based control for (NS)Measurement values input.
  • VENTokenField - Easy-to-use token field that is used in the Venmo app.
  • ALTextInputBar - An auto growing text input bar for messaging apps.
  • Tagging - ✍️ TextView that provides easy to use tagging feature for Mention or Hashtag.
  • InputBarAccessoryView - A simple and easily customizable InputAccessoryView for making powerful input bars with autocomplete and attachments.

UIPageControl

  • PageControl - ● ○ ○ ○ A nice, animated UIPageControl alternative.
  • PageControls - This is a selection of custom page controls to replace UIPageControl, inspired by a dribbble found here
  • CHIPageControl - A set of cool animated page controls to replace boring UIPageControl.
  • Page-Control - ? Beautiful, animated and highly customizable UIPageControl alternative.

Web View

  • Otafuku - Otafuku provides utility classes to use WKWebView in Swift.
  • SwiftWebVC - A drop-in inline browser for your Swift iOS app.
  • SVWebViewController - A drop-in inline browser for your iOS app.
  • PTPopupWebView - PTPopupWebView is a simple and useful WebView for iOS, which can be popup and has many of the customized item.

Utility

  • Underscore.m - A DSL for Data Manipulation.
  • XExtensionItem - Easier sharing of structured data between iOS applications and share extensions.
  • ReflectableEnum - Reflection for enumerations in Objective-C.
  • ObjectiveSugar - ObjectiveC additions for humans. Ruby style.
  • OpinionatedC - Because Objective-C should have inherited more from Smalltalk.
  • SwiftRandom - Generator for random data.
  • RandomKit - Random data generation in Swift.
  • YOLOKit - Getting square objects down round holes.
  • EZSwiftExtensions - ? How Swift standard types and classes were supposed to work. [e]
  • Pantry - The missing light persistence layer for Swift
  • SwiftParsec - A parser combinator library written in the Swift programming language.
  • OrderedSet - A Swift collection of unique, ordered objects
  • Datez - Swift library for dealing with NSDateNSCalendar, and NSDateComponents.
  • BFKit - An Objective-C collection of useful classes to develop Apps faster.
  • BFKit-Swift - A Swift collection of useful classes to develop Apps faster.
  • Scale - Unit converter in Swift (available via CocoaPods)
  • Standard Template Protocols - Protocols for your every day iOS needs
  • TimeLord - Easy DateTime (NSDate) management in Swift
  • AppVersionMonitor - Monitor iOS app version easily.
  • Sugar - Something sweet that goes great with your Cocoa. [e]
  • Then - ✨ Super sweet syntactic sugar for Swift initializers. [e]
  • Kvitto - App Store Receipt Validation
  • Notificationz - Helping you own NSNotificationCenter in Swift
  • SwiftFoundation - Cross-Platform, Protocol-Oriented Programming base library to complement the Swift Standard Library. (Pure Swift, Supports Linux) [e]
  • libextobjc - A Cocoa library to extend the Objective-C programming language.
  • VersionTrackerSwift - Track which versions of your app a user has previously installed.
  • DeviceGuru - DeviceGuru is a simple lib (Swift) to know the exact type of the device, e.g. iPhone 6 or iPhone 6s.
  • AEAppVersion - Simple and Lightweight App Version Tracking for iOS written in Swift
  • BlocksKit - The Objective-C block utilities you always wish you had.
  • SwiftyUtils - All the reusable code that we need in each project. [e]
  • RateLimit - Simple utility for only executing code every so often.
  • Outlets - Utility functions for validating IBOutlet and IBAction connections
  • EasyAbout - A way to easily add CocoaPods licenses and App Version to your iOS App using the Settings Bundle
  • Validated - A Swift μ-Library for Somewhat Dependent Types
  • Cent - Extensions for Swift Standard Types and Classes
  • AssistantKit - Easy way to detect iOS device properties, OS versions and work with screen sizes. Powered by Swift.
  • SwiftLinkPreview - It makes a preview from an url, grabbing all the information such as title, relevant texts and images.
  • BundleInfos - Simple getter for Bundle informations. like short version from bundle.
  • YAML.framework - Proper YAML support for Objective-C based on LibYAML.
  • ReadabilityKit - Metadata extractor for news, articles and full-texts in Swift.
  • MissionControl-iOS - Super powerful remote config utility written in Swift (iOS, watchOS, tvOS, macOS)
  • SwiftTweaks - Tweak your iOS app without recompiling!
  • UnsupportedOSVersionAlert - Alerts users with a popup if they use an app with an unsupported version of iOS (e.g. iOS betas)
  • SwiftSortUtils - This library takes a shot at making sorting in Swift more pleasant. It also allows you to reuse your old NSSortDescriptor instances in Swift.
  • Retry - Haven't you wished for try to sometimes try a little harder? Meet retry .
  • ObjectiveKit - Swift-friendly API for Objective C runtime functions.
  • MoyaSugar - Syntactic sugar for Moya.
  • SwifterSwift - A handy collection of more than 400 native Swift 4 extensions to boost your productivity.
  • Eject - An eject button for Interface Builder to generate swift code.
  • ContactsWrapper - Easy to use wrapper for both contacts and contacts group with Objective-C.
  • XestiMonitors - An extensible monitoring framework written in Swift
  • OpenSourceController - The simplest way to display the libraries licences used in your application.
  • App-Update-Tracker - Easily detect and run code upon app installation or update.
  • ExtensionalSwift - Useful swift extensions in one place [e]
  • InAppSettingsKit - This iOS framework allows settings to be in-app in addition to or instead of being in the Settings app.
  • MMWormhole - Message passing between iOS apps and extensions.
  • DefaultStringConvertible - A default CustomStringConvertible implementation for Swift types [e]
  • FluxCapacitor - FluxCapacitor makes implementing Flux design pattern easily with protocols and typealias.
  • VTAcknowledgementsViewController - Ready to use “Acknowledgements”/“Licenses”/“Credits” view controller for CocoaPods.
  • Closures - Swifty closures for UIKit and Foundation.
  • WhatsNew - Showcase new features after an app update similar to Pages, Numbers and Keynote
  • MKUnits - Unit conversion library for Swift.
  • ActionClosurable - Extensions which helps to convert objc-style target/action to swifty closures
  • ios_system - Drop-in replacement for system() in iOS programs
  • SwiftProvisioningProfile - Parse provisioning profiles into Swift models.
  • Once - Minimalist library to manage one-off operations.
  • ZamzamKit - A collection of micro utilities and extensions for Standard Library, Foundation and UIKit.

User Consent

  • SmartlookConsentSDK - Open source SDK which provides a configurable control panel where user can select their privacy options and store the user preferences for the app.

VR

  • VR Toolkit iOS - A sample project that provides the basics to create an interactive VR experience on iOS
  • 360 VR Player - A open source, ad-free, native and universal 360 degree panorama video player for iOS.
  • simple360player - Free & ad-free 360 VR Video Player. Flat or Stereoscopic. In Swift 2.
  • Swifty360Player - iOS 360-degree video player streaming from an AVPlayer with Swift.

Walkthrough / Intro / Tutorial

  • Onboard - Easily create a beautiful and engaging onboarding experience with only a few lines of code.
  • EAIntroView - Highly customizable drop-in solution for introduction views.
  • MYBlurIntroductionView - A super-charged version of MYIntroductionView for building custom app introductions and tutorials.
  • BWWalkthrough - A class to build custom walkthroughs for your iOS App.
  • GHWalkThrough - A UICollectionView backed drop-in component for introduction views.
  • ICETutorial - A nice tutorial like the one introduced in the Path 3.X App.
  • JazzHands - Jazz Hands is a simple keyframe-based animation framework for UIKit. Animations can be controlled via gestures, scroll views, KVO, or ReactiveCocoa.
  • RazzleDazzle - A simple keyframe-based animation framework for iOS, written in Swift. Perfect for scrolling app intros.
  • Instructions - Easily add customizable coach marks into you iOS project.
  • SwiftyWalkthrough - The easiest way to create a great walkthrough experience in your apps, powered by Swift.
  • Gecco - Spotlight view for iOS.
  • VideoSplashKit - VideoSplashKit - UIViewController library for creating easy intro pages with background videos
  • Presentation - Presentation helps you to make tutorials, release notes and animated pages.
  • AMPopTip - An animated popover that pops out a given frame, great for subtle UI tips and onboarding.
  • AlertOnboarding - A simple and handsome AlertView for onboard your users in your amazing world.
  • EasyTipView - Fully customisable tooltip view in Swift.
  • paper-onboarding - PaperOnboarding is a material design slider
  • InfoView - Swift based simple information view with pointed arrow.
  • Intro - An iOS framework to easily create simple animated walkthrough, written in Swift.
  • AwesomeSpotlightView - Tool to create awesome tutorials or educate user to use application. Or just highlight something on screen. Written in Swift.
  • SwiftyOnboard - A simple way to add onboarding to your project.
  • WVWalkthroughView - Utility to easily create walkthroughs to help with user onboarding.
  • SwiftyOverlay - Easy and quick way to show intro / instructions over app UI without any additional images in real-time!.
  • SwiftyOnboardVC - Lightweight walkthrough controller thats uses view controllers as its subviews making the customization endless.
  • Minamo - Simple coach mark library written in Swift.
  • Material Showcase iOS - An elegant and beautiful showcase for iOS apps.
  • WhatsNewKit - Showcase your awesome new app features ?
  • OnboardKit - Customisable user onboarding for your iOS app

WebSocket

  • SocketRocket - A conforming Objective-C WebSocket client library.
  • socket.io-client-swift - Socket.IO-client for iOS/macOS.
  • SwiftWebSocket - High performance WebSocket client library for Swift, iOS and macOS.
  • Starscream - Websockets in swift for iOS and macOS
  • SwiftSocket - simple socket library for apple swift lang.
  • Socks - Pure-Swift Sockets: TCP, UDP; Client, Server; Linux, macOS
  • SwifterSockets - A collection of socket utilities in Swift for OS-X and iOS
  • Swift-ActionCableClient - ActionCable is a new WebSocket server being released with Rails 5 which makes it easy to add real-time features to your app.
  • DNWebSocket - Object-Oriented, Swift-style WebSocket Library (RFC 6455) for Swift-compatible Platforms.

Project setup

  • crafter - CLI that allows you to configure iOS project's template using custom DSL syntax, simple to use and quite powerful.
  • liftoff - Another CLI for creating iOS projects.
  • amaro - iOS Boilerplate full of delights.
  • chairs - Swap around your iOS Simulator Documents
  • SwiftPlate - Easily generate cross platform Swift framework projects from the command line.
  • xcproj - Read and update Xcode projects.
  • Tuist - A tool to create, maintain and interact with Xcode projects at scale.
  • SwiftKit - Start your next Open-Source Swift Framework ?.

Dependency / Package Manager

  • CocoaPods - CocoaPods is the dependency manager for Objective-C projects. It has thousands of libraries and can help you scale your projects elegantly.
  • Xcode Maven - The Xcode Maven Plugin can be used in order to run Xcode builds embedded in a Maven lifecycle.
  • Carthage - A simple, decentralized dependency manager for Cocoa.
  • SWM (Swift Modules) - A package/dependency manager for Swift projects similar to npm (node.js package manager) or bower (browser package manager from Twitter). Does not require the use of Xcode.
  • CocoaSeeds - Git Submodule Alternative for Cocoa.
  • swift-package-manager - The Package Manager for the Swift Programming Language
  • punic - Clean room reimplementation of Carthage tool
  • Rome - A cache tool for Carthage built frameworks
  • Athena - Gradle Plugin to enhance Carthage by uploading the archived frameworks into Maven repository, currently support only Bintray, Artifactory and Mavel local.
  • Accio - A SwiftPM based dependency manager for iOS & Co. with improvements over Carthage.

Tools

  • Shark - Swift Script that transforms the .xcassets folder into a type safe enum.
  • SBConstants - Generate a constants file by grabbing identifiers from storyboards in a project.
  • R.swift - Tool to get strong typed, autocompleted resources like images, cells and segues in your Swift project.
  • SwiftGen - A collection of Swift tools to generate Swift code (enums for your assets, storyboards, Localizable.strings and UIColors).
  • Blade - Generate Xcode image catalogs for iOS / macOS app icons, universal images, and more.
  • Retini - A super simple retina (2x, 3x) image converter.
  • Jazzy - Soulful docs for Swift & Objective-C.
  • appledoc - ObjectiveC code Apple style documentation set generator.
  • Laurine - Laurine - Localization code generator written in Swift. Sweet!
  • StoryboardMerge - Xcode storyboards diff and merge tool.
  • ai2app - Creating AppIcon sets from Adobe Illustrator (all supported formats).
  • ViewMonitor - ViewMonitor can measure view positions with accuracy.
  • abandoned-strings - Command line program that detects unused resource strings in an iOS or macOS application.
  • swiftenv - swiftenv allows you to easily install, and switch between multiple versions of Swift.
  • Misen - Script to support easily using Xcode Asset Catalog in Swift. [e]
  • git-xcp - A Git plugin for versioning workflow of real-world Xcode project. fastlane's best friend.
  • WatchdogInspector - Shows your current framerate (fps) in the status bar of your iOS app
  • Cichlid - automatically delete the current project's DerivedData directories
  • Delta - Managing state is hard. Delta aims to make it simple.
  • SwiftLintXcode - An Xcode plug-in to format your code using SwiftLint.
  • XCSwiftr - An Xcode Plugin to convert Objective-C to Swift
  • SwiftKitten - Swift autocompleter for Sublime Text, via the adorable SourceKitten framework
  • Kin - Have you ever found yourself undoing a merge due to a broken Xcode build? Then Kin is your tool. It will parse your project configuration file and detect errors.
  • AVXCAssets-Generator - AVXCAssets Generator takes path for your assets images and creates appiconset and imageset for you in just one click
  • Peek - Take a Peek at your application.
  • SourceKitten - An adorable little framework and command line tool for interacting with SourceKit.
  • Localizations - macOS app that manages localizations of Xcode projects.
  • xcbuild - Xcode-compatible build tool.
  • XcodeIssueGenerator - An executable that can be placed in a Run Script Build Phase that marks comments like // TODO: or // SERIOUS: as warnings or errors so they display in the Xcode Issue Navigator.
  • SwiftCompilationPerformanceReporter - Generate automated reports for slow Swift compilation paths in specific targets
  • BuildTimeAnalyzer - Build Time Analyzer for Swift
  • Duration - A simple Swift package for measuring and reporting the time taken for operations
  • Benchmark - The Benchmark⏲ module provides methods to measure and report the time used to execute Swift code.
  • MBAssetsImporter - Import assets from Panoramio or from your macOS file system with their metadata to your iOS simulator (Swift 2.0)
  • Realm Browser - Realm Browser is a macOS utility to open and modify realm database files.
  • SuperDelegate – SuperDelegate provides a clean application delegate interface and protects you from bugs in the application lifecycle.
  • fastlane-plugin-appicon - Generate required icon sizes and iconset from a master application icon.
  • infer - A static analyzer for Java, C and Objective-C.
  • PlayNow - Small app that creates empty Swift playground files and opens them with Xcode.
  • Xtrace - Trace Objective-C method calls by class or instance
  • xcenv - Groom your Xcode environment.
  • playgroundbook - Tool for Swift Playground books
  • Ecno - Ecno is a task state manager built on top of UserDefaults in pure Swift 3.
  • ipanema - ipanema analyzes and prints useful information from .ipa file.
  • pxctest - Parallel XCTest - Execute XCTest suites in parallel on multiple iOS Simulators.
  • IBM Swift Sandbox - The IBM Swift Sandbox is an interactive website that lets you write Swift code and execute it in a server environment – on top of Linux!
  • FBSimulatorControl - A macOS library for managing and manipulating iOS Simulators
  • Nomad - Suite of command line utilities & libraries for sending APNs, create & distribute .ipa, verify In-App-Purchase receipt and more.
  • Cookiecutter - A template for new Swift iOS / tvOS / watchOS / macOS Framework project ready with travis-ci, cocoapods, Carthage, SwiftPM and a Readme file
  • Sourcery - A tool that brings meta-programming to Swift, allowing you to code generate Swift code.
  • AssetChecker ? - Keeps your Assets.xcassets files clean and emits warnings when something is suspicious.
  • PlayAlways - Create Xcode playgrounds from your menu bar
  • GDPerformanceView-Swift - Shows FPS, CPU usage, app and iOS versions above the status bar and report FPS and CPU usage via delegate.
  • Traits - Library for a real-time design and behavior modification of native iOS apps without recompiling (code and interface builder changes are supported).
  • Struct - A tool for iOS and Mac developers to automate the creation and management of Xcode projects.
  • Nori - Easier to apply code based style guide to storyboard.
  • Attabench - Microbenchmarking app for Swift with nice log-log plots
  • Gluten - Nano library to unify XIB and it's code.
  • LicensePlist - A license list generator of all your dependencies for iOS applications.
  • AppDevKit - AppDevKit is an iOS development library that provides developers with useful features to fulfill their everyday iOS app development needs.
  • Tweaks - An easy way to fine-tune, and adjust parameters for iOS apps in development.
  • FengNiao - A command line tool for cleaning unused resources in Xcode.
  • LifetimeTracker - Find retain cycles / memory leaks sooner.
  • Plank - A tool for generating immutable model objects.
  • Lona - A tool for defining design systems and using them to generate cross-platform UI code, Sketch files, images, and other artifacts.
  • XcodeGen - Command line tool that generates your Xcode project from a spec file and your folder structure.
  • iSimulator - iSimulator is a GUI utility to control the Simulator, and manage the app installed on the simulator.
  • Natalie - Storyboard Code Generator.
  • Transformer - Easy Online Attributed String Creator. This tool lets you format a string directly in the browser and then copy/paste the attributed string code into your app.
  • ProvisionQL - Quick Look plugin for apps and provisioning profile files.
  • xib2Storyboard - A tool to convert Xcode .xib to .storyboard files.
  • Zolang - A programming language for sharing logic between iOS, Android and Tools.
  • xavtool - Command-line utility to automatically increase iOS / Android applications version.
  • Cutter - A tool to generate iOS Launch Images (Splash Screens) for all screen sizes starting from a single template.
  • nef - A set of command line tools for Xcode Playground: lets you have compile-time verification of your documentation written as Xcode Playgrounds, generates markdown files, integration with Jekyll for building microsites and Carbon to export code snippets.

Rapid Development

  • Playgrounds - Playgrounds for Objective-C for extremely fast prototyping / learning.
  • MMBarricade - Runtime configurable local server for iOS apps.
  • STV Framework - Native visual iOS development.
  • swiftmon - swiftmon restarts your swift application in case of any file change.
  • Model2App - Turn your Swift data model into a working CRUD app.

Code Injection

  • dyci - Code injection tool.
  • injectionforxcode - Code injection including Swift.
  • Vaccine - Vaccine is a framework that aims to make your apps immune to recompile-decease.

Dependency Injection

  • Swinject - Dependency injection framework for Swift
  • Reliant - Nonintrusive Objective-C dependency injection.
  • Kraken - A Dependency Injection Container for Swift with easy-to-use syntax.
  • Cleanse - Lightweight Swift Dependency Injection Framework by Square.
  • Typhoon - Powerful dependency injection (Objective-C & Swift).
  • Perform - Easy dependency injection for storyboard segues.
  • Alchemic - Advanced, yet simple to use DI framework for Objective-C.
  • Guise - An elegant, flexible, type-safe dependency resolution framework for Swift
  • Weaver - A declarative, easy-to-use and safe Dependency Injection framework for Swift
  • StoryboardBuilder - Simple dependency injection for generating views from storyboard.
  • ViperServices - Dependency injection container for iOS applications written in Swift. Each service can have boot and shutdown code.
  • DITranquillity - Dependency injection framework for iOS applications written in clean Swift.
  • Needle — Compile-time safe Swift dependency injection framework with real code
  • Locatable - A micro-framework that leverages Property Wrappers to implement the Service Locator pattern

Deployment / Distribution

  • fastlane - Connect all iOS deployment tools into one streamlined workflow.
  • deliver - Upload screenshots, metadata and your app to the App Store using a single command.
  • snapshot Automate taking localized screenshots of your iOS app on every device.
  • buddybuild - A mobile iteration platform - build, deploy, and collaborate.
  • Bitrise Mobile Continuous Integration & Delivery with dozens of integrations to build, test, deploy and collaborate.
  • watchbuild - Get a notification once your iTunes Connect build is finished processing.
  • Crashlytics - A crash reporting and beta testing service.
  • TestFlight Beta Testing - The beta testing service hosted on iTunes Connect (requires iOS 8 or later).
  • HockeyApp - With HockeyApp, you can distribute beta versions of your app, collect live crash reports, get feedback from users, and analyze test coverage.
  • boarding - Instantly create a simple signup page for TestFlight beta testers.
  • HockeyKit - A software update kit.
  • Rollout.io - SDK to patch, fix bugs, modify and manipulate native apps (Obj-c & Swift) in real-time.
  • AppLaunchpad - Free App Store screenshot builder.
  • LaunchKit - A set of web-based tools for mobile app developers, now open source!
  • Instabug - In-app feedback, Bug and Crash reporting, Fix Bugs Faster through user-steps, video recordings, screen annotation, network requests logging.
  • Appfigurate - Secure runtime configuration for iOS and watchOS, apps and app extensions.
  • ScreenshotFramer - With Screenshot Framer you can easily create nice-looking and localized App Store Images.
  • Semaphore - CI/CD service which makes it easy to build, test and deploy applications for any Apple device. iOS support is fully integrated in Semaphore 2.0, so you can use the same powerful CI/CD pipeline features for iOS as you do for Linux-based development.

App Store

  • Apple's Common App Rejections Styleguide Highlighted some of the most common issues that cause apps to get rejected.
  • Free App Store Optimization Tool Lets you track your App Store visibility in terms of keywords and competitors.
  • App Release Checklist - A checklist to pore over before you ship that amazing app that has taken ages to complete, but you don't want to rush out in case you commit a schoolboy error that will end up making you look dumber than you are.
  • Harpy - Notify users when a new version of your iOS app is available, and prompt them with the App Store link.
  • iRate - A handy class that prompts users of your iPhone or Mac App Store app to rate your application after using it for a while. Similar to Appirater, but with a simpler, cleaner interface and automatic support for iOS fast application switching.
  • appirater - A utility that reminds your iPhone app's users to review the app.
  • Siren - Notify users when a new version of your app is available and prompt them to upgrade.
  • Appstore Review Guidelines - A curated list of points which a developer has to keep in mind before submitting his/her application on appstore for review.
  • AppVersion - Keep users on the up-to date version of your App.

Xcode

Extensions (Xcode 8+)

  • CleanClosureXcode - An Xcode Source Editor extension to clean the closure syntax.
  • xTextHandler - Xcode Source Editor Extension Toolset (Plugins for Xcode 8)
  • SwiftInitializerGenerator - Xcode 8 Source Code Extension to Generate Swift Initializers.
  • XcodeEquatableGenerator - Xcode 8 Source Code Extension will generate conformance to Swift Equatable protocol based on type and fields selection.
  • Import - Xcode extension for adding imports from anywhere in the code.
  • Mark - Xcode extension for generating MARK comments.
  • XShared - Xcode extension which allows you copying the code with special formatting quotes for social (Slack, Telegram).
  • XGist - Xcode extension which allows you to send your text selection or entire file to GitHub's Gist and automatically copy the Gist URL into your Clipboard.
  • Swiftify - Objective-C to Swift online code converter and Xcode extension.
  • DocumenterXcode - Attempt to give a new life for VVDocumenter-Xcode as source editor extension.
  • Snowonder - ? Magical import declarations formatter for Xcode.
  • XVim2 - Vim key-bindings for Xcode 9.
  • Comment Spell Checker - Xcode extension for spell checking and auto correcting code comments.

Themes

Other Xcode

  • awesome-xcode-scripts - A curated list of useful xcode scripts ?.
  • Synx - A command-line tool that reorganizes your Xcode project folder to match your Xcode groups.
  • dsnip - Tool to generate (native) Xcode code snippets from all protocols/delegate methods of UIKit (UITableView, ...)
  • SBShortcutMenuSimulator - 3D Touch shortcuts in the Simulator
  • awesome-gitignore-templates - A collection of swift, objective-c, android and many more langugages .gitignore templates ?.
  • swift-project-template - Template for iOS Swift project generation.
  • Swift-VIPER-Module - Xcode template for create modules with VIPER Architecture written in Swift 3
  • ViperC - Xcode template for VIPER Architecture for both Objective-C and Swift
  • XcodeCodeSnippets - A set of code snippets for iOS development, includes code and comments snippets.
  • Xcode Keymap for Visual Studio Code - This extension ports popular Xcode keyboard shortcuts to Visual Studio Code.
  • Xcode Template Manager - Xcode Template Manager is a Swift command line tool that helps you manage your Xcode project templates.
  • VIPER Module Template - Xcode Template of VIPER Module which generates all layers of VIPER.

Reference

  • Swift Cheat Sheet - A quick reference cheat sheet for common, high level topics in Swift.
  • Objective-C Cheat Sheet - A quick reference cheat sheet for common, high level topics in Objective-C.
  • SwiftSnippets - A collection of Swift snippets to be used in Xcode
  • App Store Checklist - A checklist of what to look for before submitting your app to the App Store.
  • whats-new-in-swift-4 - An Xcode playground showcasing the new features in Swift 4.0.
  • WWDC-Recap - A collection of session summaries in markdown format, from WWDC 19 & 17.

Style Guides

Good Websites

News, Blogs and more

UIKit references

Forums and discuss lists

Tutorials and Keynotes

iOS UI Template

Prototyping

Newsletters

  • AwesomeiOS Weekly - AwesomeiOS Weekly
  • iOS Goodies - Weekly iOS newsletter
  • raywenderlich.com Weekly - sign up to receive the latest tutorials from raywenderlich.com each week
  • iOS Dev Tools Weekly - The greatest iOS development tools, including websites, desktop and mobile apps, and back-end services.
  • iOS Trivia Weekly - Three challenging questions about iOS development every Wednesday
  • Indie iOS Focus Weekly - Looking for the best iOS dev links, tutorials, & tips beyond the usual news? Curated by Chris Beshore. Published every Thursday.
  • iOS Dev Weekly - Subscribe to a hand-picked round up of the best iOS development links every week. Free.
  • Swift Weekly Brief - A community-driven weekly newsletter about Swift.org. Curated by Jesse Squires and published for free every Thursday
  • Server-Side Swift Weekly - A weekly newsletter with the best links related to server-side Swift and cross-platform developer tools. Curated by @maxdesiatov
  • iOS Cookies Newsletter - A weekly digest of new iOS libraries written in Swift.
  • Swift Developments - A weekly curated newsletter containing a hand picked selection of the latest links, videos, tools and tutorials for people interested in designing and developing their own iOS, WatchOS and AppleTV apps using Swift.

Medium

Social Media

Twitter

Facebook Groups

Podcasts

Books

Other Awesome Lists

Other amazingly awesome lists can be found in the

 

原文:https://github.com/vsouza/awesome-ios

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of awesome iOS ecosystem, including Objective-C and Swift Projects

【vue精选】与Vue.js相关的精彩内容的精选列表

Chinese, Simplified

A curated list of awesome things related to Vue.js

Resources

Official Resources

External Resources

Job Portal

Community

Conferences

Podcasts

Youtube Channels

Official Examples

Tutorials

Examples

Books

Blog Posts

Projects Using Vue.js

Open Source

  • PageKit - Modular and lightweight CMS built with Symfony components and Vue.js.
  • npmcharts.com - Compare npm packages and spot download trends.
  • Koel - A personal music streaming server that works.
  • Raven Reader - Simple RSS Reader made using atom electron and vue.js.
  • Gokotta - A simple music player built by electron and vue.
  • CoPilot - An admin portal based on AdminLTE with vue.js integration.
  • Retrospectify - A simple tool for doing collaborative retrospectives in agile teams.
  • jade-press - Cms based on mongodb, nodejs, koa, vue and more.
  • astralapp - Organize Your GitHub Stars With Ease.
  • EME - An Elegant Markdown Editor.
  • Github-explorer - A spa which can help you check your github in a better way.
  • Hotel - Start your dev servers from your browser and get local domains in seconds.
  • Surfbird - A Twitter client written with modern web technologies.
  • Approach0 - A math-aware search engine.
  • Flox - Self Hosted Movie, Series and Anime Watch List.
  • JavaScript Guessing Game - A game for identifying JavaScript tools and libraries.
  • vue-ghpages-blog - A blog based on GitHub pages by Vue.js 2 + Webpack 2.
  • Vuedo - Blog platform, built with Laravel and Vue.js.
  • vue-music163 - A Vue.js project for music.
  • Tomato5 - Real-time collaboration tool, it combines Pomodoro Technique with a team status share board.
  • Web Learn - A service which provides simple access to thousands of video tutorials on web developing and programming.
  • ExcelJSON - A tool to convert CSV, TSV to/from JSON.
  • Materialize-blog - A material blog built with Laravel5.3 and Vue2.x.
  • VueCompomnentGenerator - Generate vue single file component on browser.
  • SDR News - News for web designers and developers aggregated from multiple sources (Reddit, Hacker News and Prominent Blogs).
  • PJ Blog - Open source blog built with Laravel and Vue.js.
  • Lulumi-browser - Lulumi-browser is a light weight browser coded with Vue.js 2 and Electron.
  • vue-wordpress-pwa
  • OpenAPI 3 viewer - Browse and test a REST API described with the OpenAPI 3.0 Specification
  • Stacer - Linux System Optimizer and Monitoring
  • Distrochooser.de - An orientation guide for Linux beginners
  • Buka - EBook Management
  • Docute - A framework for writing documentation without build process
  • pm86 - Production process manager for Node.js apps Websites
  • vms - A Vue.js 2.0 Management System
  • nativescript-vue - A Vue.js implementation of the NativeScript renderer.
  • piper - A drag-and-drop mobile website builder base on Vue.
  • mmf-blog-vue2 - A blog based on Vue2(Vue-router, Vuex) and Webpack2.
  • Media Manager - Web File Manager.
  • dyu/bookmarks - A self-contained, self-hosted bookmarking app powered by leveldb, built with Vue2.1.x.
  • JSON Schema Editor - An intuitive editor for JSON schema. Develop with Vue.js 2 and Firebase.
  • npm-stats - npm package download statistics dashboard
  • vue2-admin-lte - a project that converts AdminLTE to work with Vuejs (v2.x).
  • Dockeron - A project built on Electron + Vue.js for Docker on desktop.
  • Flamme - An open source Tinder desktop client built with electron and Vue.js for educational purposes
  • Goldfish - A HashiCorp Vault UI built with VueJS, Golang, and Bulma CSS
  • Adminify - An Admin dashboard based on Vuetify, check the Online Demo
  • promptie - A framework written in Vue.js for creating command-line like interfaces in web browsers.
  • Hare - ? Application boilerplate based on Vue.js 2.x, Koa 2.x, Element-UI and Nuxt.js
  • Paper-Dashboard -Creative Tim Paper Dashboard made for Vue
  • AdminLTE-VueJS2 - An open source project that implements VueJS (v2.x) on AdminLTE.
  • Material Dashboard - Creative Tim Material Dashboard made for Vue
  • Explore-Github - VueJS 2 Github Explorer Using API v3
  • CoreUI - Open Source Admin Template powered by Vue.js
  • ChuckNorris - Chuck Norris Jokes Generator built with VueJS + api.chucknorris.io
  • LeafPlayer - A simple and fast, privately hosted music streaming server.
  • JSON Editor - A schema-aware JSON editor. Develop with Vue2.
  • Voten - A Reddit-like platform built with Vue2 and Laravel.
  • News Weaver - A web based RSS Reader/Aggregator made using VueJS and VuetifyJS
  • Wake Up Billie Joe! - A web site countdown to October, based on Green Day's song Wake me up when September Ends. Created using Vue and Firebase.
  • Astrum - A lightweight pattern library designed to be included with any web project.
  • vue2-pwa-vision - A Face Detection Google Cloud Vision with Vue2 + Vuetify + Progressive Web App
  • vue2-pwa-rekognition - A Face Detection Amazon Rekognition with Vue2 + Vuetify + Progressive Web App
  • AmmoBin.ca - meta search site for online ammo prices across Canada
  • SPA-asp.net-api-vuejs- - A Vue.js single page application for basic task Management & messaging using ASP .NET Webapi 2 and SQL server
  • Book-Trading-Club - Trade or loan books with other book readers in your area. Built using nodejs and vuejs2
  • vuejs-extension-pack vscode - An extension packf or vscode with popular VS Code extensions for Vue.js development.
  • Wiki.js - A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown
  • vue-pwa-speech - A Speech to text With Google Cloud Speech on Vue2 + Vuetify + Progressive Web App
  • vue-speech-streaming - A Performing Streaming Speech Recognition results in real time Speech To Text with Google Cloud Speech + socket.io on Progressive Web App
  • My Animation List - A tool to easy get css animation code
  • vue-input-streaming - A TextInput Streaming RealTime And Two Way Data Binding Broadcasting with Pusher
  • TidyTab - A Chrome extension for tidying up those tabs.
  • peregrine-cms - A Vue.js and Apache Sling based head-optional CMS
  • concept-to-clinic - Lung cancer prediction project with Vue.js interface
  • grid-awesome - Generate boilerplate css for grid layouts using the css display: grid; property.
  • Light Bootstrap Dashboard - Creative Tim Light Bootstrap Dashboard made for Vue
  • Hubaga - A free and lightweight WordPress eCommerce plugin for developers and other digital shops.
  • vue-webpack-buefy - Vue.js starter with full-featured Webpack and Buefy
  • Coypu - Text-editor-like weekly planner
  • core-server - Highly scalable VueJs framework with an integrated API system, and multiple advanced features.
  • discord-logo - A Vue.js animated discord logo generator based on SVGs. (Github Page)
  • node-vue-template - A starter template for building complete application using Node.js (API) and Vue.js (SPA) with some included packages and configurations to help start the development quickly.
  • vue-storefront - Vue.js Storefront - PWA for eCommerce. 100% offline, platform agnostic, headless, Magento2 supported.
  • fd-vue - Vue.js client for an IoT framework
  • wildfire - A drop-in replacement for other comment plug-ins.
  • Ride Receipts - Simple automation desktop app to download and organize your tax invoices from Uber and Lyft.
  • vue-chrome-extension-boilerplate - Boilerplate for Chrome extension using Vue.js and Webpack
  • TimeMark - A Time manager which will can record your time and some more function will be developed.
  • Laravel Enso - SPA Admin Panel built with Bulma, VueJS and Laravel, packing lots of features out of the box.
  • Code Notes - A simple code snippet manager for developers built with Electron & Vue.js.
  • Pomotroid - Simple, visually-pleasing and customizable Pomodoro timer.
  • XMR Miner - Cryptocurrency (XMR) mining app, built with Vue.js and visualized with D3
  • XMR Paper - Monero wallet generator, built with Vue.js
  • JoyProxy - Chrome extension for handling proxy settings
  • activity-automation - Manage daily activities and get reports on timely basis.
  • jsettlers-web Popular German board game to build hexes, settlements, cities, roads with earned resources
  • Tamiat CMS - Tamiat is a front-end focused CMS, uses Vue.JS as the frontend and integrates with Firebase for the backend functionality.
  • vuegg - vue GUI generator: Create mockups and code in one go! It leverages the creation of pages, components and styles with its visual editor. Generate all scaffolding code for your next vuejs project.
  • Podlove Web Player - Podcast-optimized, HTML5-based audio player featuring chapters, transcripts and embedding.
  • Leo Vue - Use the open source Leo outlining editor/IDE to create webapps with nested menus, with support for Vue components in content.
  • Justine - A configurable HTML documentation generator (currently supports JSDoc) using Vue components for the documentation template
  • Deezer-Vue - Deezer client built with Vue\Vuex
  • Vuep.run - Online SFC editor for Vue
  • V·oogle - Google.com, reVued
  • Pomidorus - Pomodoro time tracker build using Vue and D3 ?
  • Hubble - ? Travel through GitHub Stars' history.
  • Vuepress - Minimalistic Vue-powered static site generator
  • Socialhome - A federated rich profile builder with social networking features
  • GenVue - a hostable, web application that lets confidential users upload and share private files build on Vue.js, Vuetifyjs and NetCore WebAPI stack
  • vue-array - Array object operation under Vue, Array object operation under Vue Use this package to manipulate the array. Vue can monitor the changes in the array
  • Laqu-l - A complete App starter kit with Quasar Framework, GraphQL API backend with OAUTH 2.0 authentication, Firebase ready, multilanguage capability and more.
  • Protovue - A prototyping component library that helps designers and developers quicky scaffold an abstracted app layout.
  • Chattier - SPA social network built with Laravel 5.6, Vue.js 2, and Bulma (Buefy components + Bulmaswatch themes). Also uses JWT authentication.
  • chrome-ribbon-reminder - A Chrome extension written using Vue and Async/Await. Uses a popup display and changes badge counts.
  • Faviator - A simple easy favicon generator.
  • Modular Genealogy - Genealogy / family tree management system using Laravel 5.7, Vue.js 2.5 and various components. Work in progress.
  • Minimal Notes - Web app build with Vue.js
  • Roast an app built to help coffee enthusiasts find their next cup of coffee while learning about Laravel + Vue.js.
  • Stack Edit - In-browser Markdown editor
  • Bael Blog Template - A static generated blog template that uses Netlify CMS for the backend and Netlify for hosting. Features a brutalist aesthetic, fuzzy search, serverless email signup, and more.
  • Buefy Shop Sample shop, open source, built with Nuxt, Stripe, Firebase, Bulma and Serverless Functions.
  • sysmon A B/S mode system monitor for Linux. You can remotely watch the usage of your system resources via web browser everywhere.
  • eth-vue A Truffle Box that provides everything you need to quickly build Ethereum dApps that have authentication features with Vue.js, including configuration for easy deployment to the Ropsten Network. It's also Gravatar-enabled.
  • Nippon-color Inspired by nipponcolors dot com. This is a nippon-color PWA build with vue-cli 3.
  • Saleina CMS A static site content management system built with vue using git as a backend.
  • Vuido A framework for creating native desktop applications. It can run on Windows, OS X and Linux, using native GUI components.
  • YouGet YouTube Video/Audio/Subtitle Downloader + Cutter
  • Vue Pug Stylus Vue + Pug + Stylus boilerplate ? ? ?
  • Crypto News allows you to convert cryptocurrencies, view latest news and exchange rates for each ICO – all the data from the world of cryptocurrencies in one place.
  • Epiboard A new tab page extension with material design and useful features ? ?
  • zhudyos/duic Distributed configuration center ?
  • Vuemmerce Free ecommerce template built with Vue.js and Bulma framework ?
  • Nucleus Layered architecture ASP.NET Core API and Vuejs client application startup template
  • Carpoolear The open source Vue.js frontend (mobile and cordova app) for the argentinian carpooling application: Carpoolear
  • Statusfy: Statusfy is a Status Page System, easy to use and completely Open Source.
  • DynamoDb-GUI-Client: Cross-platform GUI client for DynamoDb
  • RosterWebApp Open source rostering web application which allows the rostering of employees/teams to work sessions and other features.
  • Vue E-Store Templet - An e-commerce templet build with vue/vuex/vue-router and bootstrap4.
  • Kitty Ipsum - Generate lorem ipsum composed of "meow" in different languages.
  • Git Superstar - Count your git stars and top repositories.
  • Twill - An open source CMS toolkit for Laravel that helps developers rapidly create a custom admin console that is intuitive, powerful and flexible.
  • MATH_BOT - Learn math by programming a robot.
  • Vue Crossword - A Vue.js based crossword puzzle builder and filler front-end application. Built with CodeSandbox.
  • Vue Org Chart - Manage and publish your interactive organization chart (orgchart), free and no webserver required.
  • Beep - Account Security Scanner built with Vue.js and Ionic 4
  • Vue CRUD - Vue.js based REST-ful CRUD system. Vue CRUD allows you to easily create fast applications such as CMS or CRM.
  • Vue HQ Admin Dashboard – A modern admin dashboard powered by Vue, Sass, Firestore, and Netlify.
  • MToDo - Mini To Do Lists with simple auth built with Vue.js and JSON Server as data mock. Great as reference for anyone that finding reference about real world Vue.js
  • FireX Proxy - FireX Proxy is the user's trusted Chrome and Firefox browser extension that allows you to unblock any website and browse the web privately and securely. ?
  • VueSolitaire - Solitaire (spider,klondike) imlemented in Vue.js.
  • Thermal - One stop to all Git repository.
  • QMK Configurator - QMK Firmware Keyboard Configuration UI in Vue.js.
  • Eplee Sweet, simple epub reader made with Vue.js and Electron.js.
  • vue-realworld-example-app - Exemplary fullstack Medium.com clone
  • Daily - Curated dev news delivered to your new tab ??‍?
  • Laravel File Manager - Powerful file manager for Laravel
  • Vue Crypto Dashboard - Cryptocurrency Dashboard made with Vue.js

Commercial Products

  • Wijmo - A collection of UI controls with VueJS support.
  • Collate Notes
  • Formester - Form, email marketing automation made easy
  • ChatWoot - Livechat and agent collaboration over Facebook messenger.
  • VueA - VueJS Admin template with multiple layouts and laravel version.
  • Teleo - Team collab-app moving effortlessly between talking, planning & doing
  • Cover - A high quality Component Library built on Vue.js
  • EducationLink - CRM and sales automation for education agents and colleges.
  • Pragmatic v2.0 - Responsive and configurable admin template built with Vue.js and Element.
  • Seat - Simple and modern team communication and collaboration solution.
  • Moonitor - Cryptocurrency tracker for Desktop.
  • Deskree - Online collaboration platform that combines Ideas, Tasks, and Issues in one place.
  • OSHCExpress - A comparison and ecommerce for OSHC (Overseas Student Health Cover) insurance (Australia's insurance for international students).
  • Agiloo - Project Management app for Scrum and Kanban
  • ScaffoldHub - Online Web App Generator for VueJS with NodeJS, and MongoDB or SQL.
  • Commandeer - Could Management Reimagined. A Desktop cloud management app built with Vue.js and Electron.
  • SA Email Builder - Email template builder responsive made with VueJS and Quasar Framework

Apps/Websites

  • Laravel Spark
  • Vice Video
  • Formlets
  • Laracasts
  • esa.io
  • 稀土掘金
  • Prague Airport
  • Portfolio Site
  • Laravist
  • Atiiv - An app aimed for personal trainers and their clients.
  • Statamic
  • Embalses! - A tool to report water dam level using the U.S. Geological Survey database.
  • TravelMap - A simple way for travelers to create a blog based on a Map.
  • Proper Cloth Shirt Builder - Custom shirt builder.
  • CheckIt
  • Reddit News - A browser extension which show notifications and news from reddit.
  • Powerpuff Yourself by Cartoon Networks
  • 小桃酱
  • cloudradioo - Web app that plays randomly all top 50 songs from the soundcloud charts
  • vNotes - Simple and beautiful notepad to Markdown with Vue.js and Local Storage API.
  • Open Function Computers
  • Dermail - A webmail client written in Vue.js for Dermail, a mail system written in node.js.
  • octimine - A patent search engine.
  • Draxed - A web based MySQL and PostgreSQL data browser and dashboard manager.
  • Leapspotleap - A simple way to look up wikipedia articles near you. Or simply navigate to a place and find interesting wikipedia information. Responsive web app.
  • X-SONGTAO - A Personal blog. FE and CMS are in same vue SPA.
  • Jobinja - A Job Board and career platform operating in Iran.
  • 滚蛋吧!莆田系 - Show all Putian hospital information
  • Jobi : Recruiting Platform
  • The Spice House - Ecommerce website for high quality spices. Checkout, cart, the product detail page, and search are built using Vue. Checkout is a single page app written with Vue & Vuex.
  • Livestorm - Webinar / Live events app.
  • Metric Loop - A technology services and solutions website.
  • Holden
  • Global-Exam - Online Training for Language Proficiency Tests
  • SlugSurvival - A webapp that helps student better plan their courses (hobby project, not in affiliation with UCSC).
  • FreePoll.Online - A group decision making tool built using Vue.js, vue-sortable, Semantic UI and Zappa.
  • GitRelease - Track github project's new release on mac menubar using vue.js with electron.
  • 12BAY.VN - Applications online flight bookings.
  • PLAYCODE.IO - Playground for Rapid Frontend Experiments.
  • The Void Radio - Underground House Music Online Radio.
  • Bitly Vue - Shorten URLs with VueJS & Bitly API.
  • Storyblok - API Based/Decoupled CMS using VueJS for its frontend.
  • WizzAir
  • Moving to HTTPS - Guide to moving different platform/hosting sites to HTTPS
  • Booknshelf - Discover great books and bookshelves on different topics.
  • Top HN - A real time display of top news activity on Hacker News
  • Euronews - Euronews is a multilingual news media service, headquartered in Lyon, France.
  • Roozame روزامه� - Roozame is a Persian smart news media service.
  • Koumoul
  • NinjaCalc - A suite of embedded engineering related calculators, built as an open-source single-page app with vue.js.
  • Vue.js Feed - The latest Vue.js news, tutorials, plugins, and more. Made with Vue.js and Laravel, based on Vuedo.
  • 蒜瓣 - A web app developed with Vue2.0 and Douban API
  • Guess Right - A 'guess the word' game - Written with Vue/vuex/vue-router (front-end) and Laravel/MySQL (back-end). Code is Open Source on GitHub (although not the live files that run the game at kdcinfo).
  • GRAP - Business communication service
  • Easy Mock
  • mmf-blog-vue2-ssr A blog built with Vue 2.0, vue-router & vuex, with server-side rendering
  • JSON Schema Editor - An intuitive editor for JSON schema built with Vue.js and Firebase.
  • Winsome Trivia - A single or multiplayer trivia game featuring over 2,000 unique questions built with Vue.js and powered by the Open Trivia Database.
  • Moon Organizer - Lunar calendar app
  • Flash-Vue - ‘Flashcards of the Future’ bring learning everywhere ?
  • Kinderbesteck - A full Online Shop SPA with Vue2.0, Vuex, Vue Router
  • n2ex - A vue ssr(nust) website, use v2ex API
  • Power Thesaurus - A crowdsourced online thesaurus
  • Chattanosy - A community-powered database of new things and places in Chattanooga, TN.
  • PAIXIN - A genuine picture sale website
  • CodeBottle - Drag-and-drop snippets to your projects
  • 1XBET - A betting company operating since 2007
  • MyOwnTV - A streaming website for creating internet television
  • CrowdCircus - Europe’s biggest crowdfunding- and crowdinvesting-aggregator
  • Talk to Someone - Free, anonymous and confidential online text chat with strangers around the world.
  • 轮子工厂 - A ui components and libraries sharing website
  • ابیات ناب پارسی - A collection of Persian poems
  • Ripplectron - Ripple(Blockchain coin) Wallet Desktop client for vue-electron
  • PingBreak A free and simple website monitoring service using vuejs for real-time dashboard
  • Todoist Tribute - Todoist clone, written in Rails + Vue
  • JSON Editor - A schema-aware JSON editor built with Vue2 and firebase.
  • Develteam - A social network for indie game developers.
  • Mixsii - A free video chat room site for teens, adults, family, and friends.
  • PipQuest - A retro-style puzzle game built in Vue
  • Matryx - A decentralized collaboration platform.
  • iPrevYou - YouTube™ Player - A chrome app for watching youtube videos on your desktop.
  • Item Manager - An application to transfer items for Destiny 2 game.
  • Frontend Masters Intro to Vue - Frontend Masters full day course
  • TR-101 - A drum synth / sequencer.
  • Bazaar - Media sharing platform.
  • WynnStats - A unofficial WynnCraft statistics.
  • Vectr - A free vector graphics software
  • brain bits - A P300 online spelling mechanism for Emotiv headsets
  • Coin Dashboard - The fully client-side cryptocurrency asset dashboard.
  • Habitica - online task management application in the form of a role-playing game.
  • MadeWithVueJs - A Gallery of Projects made with Vue.js (also the Site itself uses Vue.js)
  • CodeDependencyScanner - A C# dektop application that display .Net assembly code dependencies build with Vue, Neutronium and D3.js.
  • Thousand Ether Homepage - The Million Dollar Homepage reimagined as an Ethereum DApp. Build on Vue.js and open source.
  • Let's Enchance - free online image upscale and enhancement with neural networks.
  • Pi.TEAM - Online Invoicing and Accounting - Simple to use online accounting and invoicing, free for single users and freelancers.
  • Vuethwallet - A simple app generate ethereum wallet with vuejs.
  • Tipe - Next Generation API-first CMS. Create your content with powerful editing tools and access it from anywhere with a GraphQL or REST API. Stop letting your CMS decide how you build your apps.
  • Vuethexplore - A simple app explore ethereum blockchain with vuejs.
  • Fintechers - Fintech focused job board.
  • Devjournal - Collaborative todo list for projects and ideas.
  • Bubbleflat - Online platform that helps students and young Professionals find their perfect roommates by searching for people with similar lifestyles, interests, or schools. Laravel & Vuejs
  • TeaQuinox Tea Co -- ecommerce site that specializes in loose leaf tea.
  • blip - Test websites for speed, mobile-friendliness, security and the HTML5 doctype. Find businesses around a location and test their websites en masse, or just test your own URL.
  • sunpos - Sun position, elevation, azimuth, ecliptic/equatorial coordinates and sunrise/sunset time (Julian day) calculation and conversion utilities. Web site is programmed using pure JS, Vuejs and i18n Vuejs localization plugin. Visualization is created using D3.js.
  • U3xyz - A personal blog base on vue ssr.
  • 27.ua - Ukraine-based internet hypermarket
  • Chess Guardian - Answer chess positional questions from your own games.
  • Blackjack Break - A quick game of blackjack
  • MECHANICAL - Reddit mod for Firefox that surfaces contextual data insights.
  • GameVix - Swap your used video game discs with others, hassle free. PWA with Material Design.
  • VivifyScrum - Agile project management app for teams that deliver. Customizable Scrum and Kanban boards.
  • 9GAG - Popular online platform and social media website
  • CryptoVue - Real-time cryptocurrency dashboard
  • Kitchen Stories - Cooking platform
  • MailRabbit - Create, A/B test, and monitor transactional emails without a developer.
  • Vue资源精选 - great Vue components list, category, inline demo show and brief
  • Cronhub - Painless Cron Monitoring Tool
  • wrkprty - Pop-up coworking events for freelancers, remote workers, and professionals looking to get out of the office.
  • Made with love - The Made with Love ❤️ around the world, initiative is a movement to celebrate ?, promote ? and build a brand ?. It feed Tech news, design inspiration and trends from over ? sources including Dribbble, ProductHunt, Behance and Techcrunch. ?
  • Path to Product - Discover over 1,000 product jobs at startups and tech companies.
  • V·oogle - Google.com, reVued. A joke-project. :)
  • Broker Notes - 'Study to become a Real Estate Agent' ?
  • SyncLounge - SyncLounge is a tool to sync Plex content across multiple players in multiple locations.
  • HCE.it - The website of an Italian agency, entirely made with Vue using a Laravel-based headless CMS.
  • Pages - Web design inspiration
  • Scrumpy - A Beautiful Project Management Tool for Agile Teams
  • Spektrum - The website of Spektrum Media Agency
  • SPK The website of SPK Ecosystem
  • IDDEF ☪️ The Federation of the Associations that Value Humanity's webpage, CMS, CRM and Donation and all e-commerce pages are designed with Vue.js, Vuex and pure JavaScript ?
  • Configuration File Management - A simple way to manage your configuration files
  • Roast an app built to help coffee enthusiasts find their next cup of coffee while learning about Laravel + Vue.js.
  • YBR - Centralized YBS Public eComplaint Management System. (Full SPA)
  • Regex Fiddler
  • Myanpwel - The website of event ticketing platform.
  • CryptoArte - An Ethereum art collection, non-fungible token, and Dapp.
  • Muuviez - A movie discovery and tracking website with stylish design
  • NAGA VIRTUAL - NAGA VIRTUAL is the first independent virtual goods market.
  • Scroll.in - Scroll.in is an independent news, information, and entertainment venture.
  • Akunyi - Charity Website
  • What Would Mark Ruffalo Do? - Motivational website based on the story that Mark Ruffalo failed at several hundred auditions before finding success.
  • Brandy - brand assets manager for your menu bar.
  • Ruster社区 - Rust fullstack community forum for CN.
  • NBC Sports - NBC Sports is a sports news website.
  • WITHIN - Extraordinary stories in Virtual Reality.
  • plottr.io - Plan your running and cycling routes
  • beCamp - A community-organized tech conference in Charlottesville, VA. Website code is open-source.
  • Trustpilot - a free and open to all review platform.
  • Lagom - Simple, intuitive and fully responsive WHMCS theme
  • ScoutMyTrip - Roadtrip Planner - Road trip planning app for India which helps travelers to build their itinerary, discover points of interest, find hotels, gas stations, food joints etc along the route.
  • Podflix - Podcast app.
  • GamersClub - Biggest company of eSport community development in Brazil
  • MIT - Official Website of Massachusetts Institute of Technology.
  • Elvenar - Elvenar is a browser based fantasy city builder game.
  • Beacon - ? A service that allows you to share your content across multiple websites.
  • Artfinder - Artfinder is a website for buying & selling art paintings.
  • Rolodromo - A spanish website dedicated to tabletop RPG.
  • GitHubExplorer - Pure static page webapp for exploring GitHub. Using Vuejs and GitHub GraphQL API v4.
  • Keynote - Present with Vue.
  • HappyPlants - A progressive web app for organizing your plants ?.
  • Pocket Lists - World's friendliest to-do list app.
  • Padlet - Collaborative bulletin boards
  • Glovo - On-demand delivery
  • MySigMail - MySigMail is a free, in browser, email signature generator without creating account
  • Wordguru - A simple verbal game where you split into teams and try to guess as many keywords as you can.
  • ApiFlash - A Chrome based screenshot API built on top of AWS Lambda for Developers
  • Kitty Ipsum - Generate lorem ipsum composed of "meow" in different languages.
  • Git Superstar - Count your git stars and top repositories.
  • DECS - The decentralised all-in-one workspace to manage code snippets and to protect sensitive data.
  • Careup - Business management tool for dentists ?.
  • Asciiur - Internet's ascii art collection
  • Tapestri Designer - Free tool to design PCR primers for genome sequencing experiments (NGS)
  • Remote-Access-SSH - Web based remote host access with node-ssh
  • Map Marker Generator - A Free Online Tool To Generate Custom Map Icons On The Fly
  • Monocle Reader - Follow feeds, Twitter, YouTube, Blogs and everything else, all in one place.
  • 前站导航 - 前端社区、文档收录.
  • Geenes - Generate and apply color palettes to your UI, then export it to sketch or code.
  • Blurrish - Encrypted Morning Pages journal for Mac/Windows, built with Vue and Electron. Blurs as you write so you can journal in public workspaces.
  • ExifShot - What and how on photography, beautifully.
  • Studolog - Online file sharing platform for students, including tester and reviews. Currently in Czech ?? only.
  • sum.cumo – Digital business models (with Vue as a tech stack centerpiece).
  • Gamebrary - Open source tool to organize video game collections.
  • Guds - Compare prices across supermarkets. Only available in México ??.
  • Premium Poker Tools - What poker players use to study.
  • QMK Configurator - Configure, Build, and Download Custom QMK Firmware from your browser.
  • Worksome - Marketplace/platform for qualified it professionals and freelancers and companies looking to hire them.
  • Translator-vuejs - Translation App built with Vuejs, Yandex API & ResponsiveVoice.js API.
  • Big Timer - Fullscreen countdown timer for workshops, meetings and presentations. Big Timer helps workshop facilitators, meeting chairs, design sprinters, presenters and aspiring game show hosts stick to their program.
  • Wirenook - Free online app for building responsive website wireframes. Hi- and Lo- Fidelity, project sharing and svg download.
  • Kvalitetskontroll - Norwegian management system tailored for the construction industry.
  • Poolside FM - A retro-style music player

Interactive Experiences

Enterprise Usage

A11y

  • Vue A11y project - Vue.js community project to improve web accessibility.
  • vue-skip-to - It helps people who only use the keyboard to jump to what matters most.
  • vue-axe - Accessibility auditing for Vue.js applications.
  • vue-announcer - A simple way with Vue to announce any useful information for screen readers.
  • eslint-plugin-vue-a11y - Static AST checker for accessibility rules on elements in .vue
  • vue-focus-lock - It is a trap! A lock for a Focus. A11y util for scoping a focus.
  • vue-a11y-calendar - Accessible, internationalized Vue calendar.

Components & Libraries

UI Components

Table

Tables / data grids

  • vuetable-2 - Data table simplify.
  • vue-tables-2 - Vue.js 2 grid components.
  • vue-datasource - A vue.js server side component to create dynamic tables.
  • ag-grid-vue - Vue adaptor for ag-Grid.
  • vue-data-tables - Vue2.0 DataTables, based on element-ui.
  • vue-floatThead - Vue 2.0 component for floatThead, a floating & sticky table header plugin.
  • vuetiful-datatable - Datatable component with sorting, filtering, pagination, grouping and aggregation.
  • vue-materialize-datatable - VueJS datatable for Materialize CSS
  • vue-good-table - An easy to use, VueJS (2.x) table plugin with sorting, column filtering, pagination etc.
  • vue-grid - A flexible grid component for Vue.js
  • vue-easytable - A powerful table components based on Vue2.x
  • vue2-datatable-component - The best Datatable for Vue.js 2.x which never sucks
  • vue-js-grid - Vue.js 2.x responsive grid system with smooth sorting, drag-n-drop and reordering
  • vue-handsontable-official A Vue.js wrapper for the Handsontable spreadsheet component
  • vue-grid - A powerful flexbox grid system for Vue.js 2.x, built with inline-styles
  • vue-data-tablee - Based on vue-good-table, a simple and pretty table component
  • vue-scrolling-table - Simple table component with flexbox sizing, scrolled table body (horizontal and vertical), slots for all tr/th/td rendering.
  • el-search-table-pagination - Combines Form, Table and Pagination components of Element UI together. Based on Vue 2.x.(Detail)
  • vue-crud-x - Extensible crud component using Vuetify layout, other than the usual page, sort, filter, it is able to do nested CRUD, custom forms, filters, operations.
  • Vue Datatable - VueJS powered Datatable with Laravel server-side loading and JSON template setup
  • v2-table - A simple table component based Vue 2.x.
  • vue-cheetah-grid - A high-performance grid engine that work on a canvas for Vue.js.
  • vue-table-component - A straight to the point Vue component to display tables.
  • @lossendae/vue-table - Simple table component for Vue.js 2.x with pagination and sortable columns.
  • el-data-table - base on element-ui, makes crud easily
  • DevExtreme Vue Grid - High-performance plugin-based Vue data grid for Bootstrap.
  • vue-ads-table-tree - A vue Table component, with filtering, sorting and pagination. Rows can have child rows, so a tree structure can be build. It also supports async calls to load rows from the backend. It's built with the css framework tailwindcss
  • Syncfusion Data Grid for Vue - Displays and manipulates tabular data with features such as paging, sorting, filtering, editing, and grouping.
  • @marketconnect/vue-pivot-table - A vue component for pivot table
  • vue-teible - Lightweight and flexible table component for the web ⚡️
  • vue-jqxgrid - Vue data grid with filtering, sorting, editing, grouping, data export and other features.
  • vue-jqxpivotgrid - Vue pivot data grid with pivot designer, drill through cells, pivot functions.
  • toast-ui.vue-grid - Vue Wrapper for TOAST UI Grid.
  • vueye-datatable - Vueye data table is a responsive data table component based on Vue.js 2, it organizes your data per pages in order to navigate easily.
  • vue-sorted-table - A plugin to turn tables into sorted tables. Supports nested object keys, custom icons and reusable components.
  • vue-bootstrap4-table - An advanced data table based on Vue 2 and Bootstrap 4, which includes Multi column filtering, Multi column sorting, Pagination & Info, Checkbox rows and Highly customizable slot options.
  • vuejs-smart-table - Straight Forward Table Component using the vanilla HTML Table Structure with Sorting, Filtering, Pagination and Selection out of the box.
  • @myena/vue-table - Table Components for Client/Server data handling. Filter, sort, paginate, group, expanding details row. Highly customizible via slots for filter, headers, column, pagination, details row.
  • vue-jd-table - Advanced and flexible data table component for Vue 2. Feature Rich: search, filtering, exporting, pagination (traditional and virtual scroll) and so much more!
  • vue-grd - Simple, Light-weight and Flexible Vue.js component for grid layout.
  • iview-table-page - Combines Table and Page components of iview UI together. Based on Vue 2.x. And Hear are some examples to use iview-table-page.

Notification

Toaster / snackbar — Notify the user with a modeless temporary little popup

Loader

Loaders / spinners / progress bars — Let the user know that something is loading

  • vue-radial-progress - Radial progress bar component for Vue.js.
  • vue-simple-spinner - A simple, flexible spinner for Vue.js
  • vue-wait - Complex Loader Management for Vue/Vuex and Nuxt applications.
  • vue-progress-path - Customizable progress indicators and spinners that support any custom SVG path.
  • vue-blockui - BlockUI for vue 2, similar to jquery blockUI, can be used for loading screen.
  • epic-spinners - Easy to use css spinners collection with vue.js integration.
  • svg-progress-bar - A simple progress bar for Vue.js.
  • vue-loading-overlay - Tiny full screen loading indicator
  • vue-loaders - vue wrappers for loaders.css
  • vue-promise-btn - Tiny and powerful tool for asynchronous buttons(or any other tag) lock with fancy built-in spinner
  • vue-spinkit - ? A collection of loading indicators animated with CSS for VueJS
  • vue2-form-loading - A VueJS directive can be used with forms in order to disable submit button while the next page is loading
  • vue-element-loading - ⏳ Loading inside a container or full screen for Vue.js
  • tb-skeleton - A skeleton screen loading for Vue.js
  • vue-spinners - ? A collection of loading spinner components for Vuejs
  • vue-progress-bar - This is a cascading progress bar plugin based on vue
  • vue-loading-button - ? Straightforward button with slideout loading indicator

Progress Bar

A slim progress bar at the top of the page

Tooltip

Tooltips / popovers

Overlay

Overlay / modal / alert / dialog / lightbox / popup

  • vuedals - A VueJS (2.x) Plugin for multiple modals windows with a single component instance.
  • sweet-modal-vue - The sweetest library to happen to modals. Now available for Vue.js.
  • vue-js-modal - Simple to use, highly customizable, mobile friendly Vue.js 2.0+ modal with 0 dependencies.
  • vudal - Modal window for vue.js
  • vodal - A vue modal with animations.
  • vue-image-lightbox - A Vue image lightbox/gallery to display images nicely.
  • vue2-simplert - Vue 2 Simple Alert Component (SweetAlert Inspired) By Irfan Maulana
  • Vue-Semantic-Modal - Vue 2 Semantic-UI modal component without jQuery dependency
  • v-img - Easy to install image gallery.
  • vue-dialog-drag - Draggable dialog
  • vue-ya-semantic-modal - Yet another semantic-ui modal component for Vue2 without Jquery but with Vue transition
  • vue-pure-lightbox - Very simple lightbox plugin without any dependencies - only Vue! ?
  • v-viewer - Image viewer component for vue, supports rotation, scale, zoom and so on, based on viewer.js
  • vue-messagebox - Easy and made-to-order messagebox component on Vue.
  • vuejs-dialog - A lightweight, promise based alert, prompt and confirm dialog.
  • @hscmap/vue-window - Window UI Component for vue2.
  • vue-gallery - VueJS responsive and customizable image and video gallery, carousel and lightbox, optimized for both mobile and desktop web browsers. Based on blueimp-gallery
  • vue-swal - A small wrapper for integrating SweetAlert to Vuejs. (Compatible with SSR)
  • vue-modal-dialogs - ✨ Promisify your own dialogs!
  • vue-img-view - a plugin for Vue.js, you can drag / view / rotate pictures anywhere
  • vue-modaltor - most advance configurable modal component for vuejs
  • v-modal-backdrop - A simple generic backdrop component for vue
  • vue-cute-modal - A simple and easy to use Modal component for Vue applications.
  • v-dialogs - A simple and powerful dialog, including Modal, Alert, Mask and Toast modes, based on Vue2.x
  • vue-gallery-slideshow - Responsive gallery component for VueJS
  • vue-a11y-dialog - A Vue.js component wrapper for the accessible dialog a11y-dialog.
  • vue-slideout-panel - Stackable panel component for VueJS
  • v-gallery - A Vue2 plugin for images show in gallery or carousel
  • vue2-image-loader - A image lazyLoad loader component for vue2
  • vue-my-photos - A simple dependency-free image lightbox component with filtering capabilities
  • vue-img-orientation-changer - A Vue.js directive that automatically adjust your img to correct orientation.
  • vue-topmodal - A fully customisable, easy to use, Vue.js modal component. (Responsive, Stackable, Scrollable, Animated)
  • vue-modal ? - Feed your objects array for multiple switchable modal content or quickly inline your content. A fully customisable vue modal component .
  • @innologica/vue-stackable-modal - Library for modal dialogs which can be stacked. Fully customizable and very easy to use.
  • vue-sweetalert2 - wrapper for sweatlaert2 with support for TypeScript, Nuxt and SSR

Parallax

  • vue-parallax - Scrolls an image slower than the window to create a neat optical effect.
  • vue-parallaxy - Vue.js component for parallax image scroll effects.
  • vue-mouse-parallax - A simple to use Mouse Parallax Component - Made with Vue.js
  • vue-parallax-js - Tiny vue component that adds a directive for parallax effect on elements.

Icons

  • vue-awesome - Font Awesome component for Vue.js, using inline SVG.
  • vue-material-design-icons - A collection of SVG Material Design icons as single file components.
  • vue-icon-font - A iconfont plugin for Vuejs (support Font-class and Symbol).
  • vue-ionicons - Vue Icon Set Components from Ionic Team.
  • vue-ico - Dead easy icons for Vue with drop-in browser support & selective bundling
  • mdi-vue - Material Design Icon components for Vuejs
  • vue-fontawesome - Font Awesome 5 Vue component
  • g-icon - Simple icon component for your svg icons (compatible with Font Awesome-like font toolkits)
  • vue-simple-line-icons - Simple Line Icons component for Vuejs
  • vue-country-flag - Vue component for country flag icons - vicon - Vicon is an simple iconfont component for vue.
  • md-svg-vue - Material Design Icons by Google for Vue.js & Nuxt.js (server side support (with caching), inline svg rendering, official icon names)
  • vue-lang-code-flags - Vue component which shows the flag of the country from which the language comes from
  • vue-zondicons - Vue component for the beautiful Zondicon svg icons
  • vue-eva-icons - Simply beautiful open source eva icons as Vue components.
  • vue-unicons - 1000+ Pixel-perfect svg unicons for your next project as Vue components.
  • vue-fa - Simple FontAwesome 5 Vue.js 2 component.
  • vue-cryptoicon - Beautiful pixel perfect 400+ cryptocurrency and 10+ Fiat currency icon.

Menu

Minus Plus Input

Carousel

Charts

  • vue-morris - VueJS component wrapping Morris.js.
  • vue-charts - Google Charts plugin for Vue.js.
  • vue-chartjs - Vue.js wrapper for Chart.js.
  • hchs-vue-charts - Based on Vue2.0 wrapper for ChartJs.
  • vue-echarts - ECharts component for Vue.js.
  • vuetrend - Simple, elegant spark lines for Vue.js.
  • vue-highcharts - Highcharts component for Vue.
  • vue-echarts-v3 - Vue.js(v2.x+) component wrap for ECharts.js(v3.x+).
  • vue-chartist - Vue.js 2.0 component wrap for Chartist.
  • g2-vue - Factory wrapper for using G2 easily in a Vue Component.
  • vuebars - Simple, elegant spark bars for Vue.js.
  • vue-d3-network - Vue component to graph networks using d3-force
  • vue2vis - Vue2 wrapper for Visjs.
  • vue-c3 - A reusable vue component for c3 charts
  • vue-d2b - Vue components for d2b charts. (Including axis, pie, sankey, and sunburst charts)
  • VueChart - A very simple Vue wrapper for Chart.
  • vue-chartkick - Create beautiful JavaScript charts with one line of Vue
  • d3vue - A D3 Plugin for Creating Reactive Data Visualizations in VueJS
  • vue2-frappe - A simple wrapper around Frappe Charts for VueJS
  • vue-google-charts - Reactive Vue.js wrapper for Google Charts lib
  • vue-graph - Data visualization library for dashboard implementation in Vue.js
  • vue.d3.sunburst - Reactive sunburst component based on D3.js
  • v-chart-plugin - A customizable component for adding D3 charts that binds to your components data.
  • vue-jqxchart - Charting component with Pie, Bubble, Donut, Line, Bar, Column, Area, Waterfall, Polar & Spider series.
  • toast-ui.vue-chart - Vue Wrapper for TOAST UI Chart.
  • vue-apexcharts - Vue.js component for ApexCharts.
  • vue-doughnut-chart - Doughnut chart component for Vue.js.
  • v-charts - Chart components based on Vue2.x and Echarts.
  • vue-css-donut-chart - Lightweight Vue component for drawing pure CSS donut charts.
  • vue-trend-chart - Simple trend charts for Vue.js
  • vueplotlib - Declarative, interactive, linked plot components
  • vgauge - A Vue Wrapper to GaugeJS - Create beautiful gauges
  • vue-plotly - Wrapper for plotly.js declarative charting library that ships with 20 chart types, including 3D charts, statistical graphs, and SVG maps.
  • vue-funnel-graph-js - Funnel graph drawing library for Vue.js. Create vertical and horizontal animated SVG funnel charts and add labels, values, legend and other info.
  • pure-vue-chart - Lightweight vue charts implemented without any chart library dependencies

Time

Display time / date / age

Calendar

Display non-editable events in a Calendar

Map

  • vue2-google-maps - Google maps component for vue with 2-way data binding.
  • vue2-leaflet - Vue 2 components for Leaflet maps.
  • vue-mapbox-gl - Vue 2.x component for Mapbox GL JS
  • vue-yandex-maps - Vue 2.x component for Yandex Maps
  • vue-baidu-map - Vue 2.x component for Baidu Maps.
  • vue-choropleth - Vue 2.x component to display a choropleth map.
  • vuelayers - Vue 2 components to work with OpenLayers.
  • vue-googlemaps - Vue 2.x components to integrate Google Maps.
  • vue-static-map - Vue 2.x simple component to generate an static google map
  • vue-mapbox - Vue 2.x wrapper around Mapbox GL JS library that provides vueish-way to interact with the map.

Audio / Video

  • Vue-APlayer - ? Easy-to-config music player for Vue 2.x.
  • vue-audio - audio-tag wrapper; sound player component for Vue 2.x
  • vue-dplayer - A Vue 2.x video player component based on DPlayer.
  • vue-canvasvideo - A Vue 2.x component for video backgrounds and autoplay video on iOS/Safari.
  • vue-music - A Vue component base on html5 <audio>.
  • vue-audio-visual - Vue HTML5 audio visualization components.
  • vue-plyr - A set of Vue components for the plyr video & audio player.
  • v-playback - A Vue2 plugin to make video play easier.
  • vue-audio-recorder - Audio recorder for Vue.js. It allows to create, play, download and store records on a server
  • vue-video-section - A simple video header/section component for Vue. Good for video backgrounds and overlaying content on them.

Infinite Scroll

  • vue-infinite-loading - An infinite scroll plugin for Vue.js 1.0 & Vue.js 2.0.
  • vue-mugen-scroll - Infinite scroll component for Vue.js 2.
  • vue-infinite-scroll - An infinite scroll directive for vue.js.
  • vue-loop - An infinite content loop component for Vue.js 2.
  • vue-scroller - An infinite content loop component for Vue.js 2, including functionalities such as 'pull-to-refresh', 'infinite-loading', 'snaping-scroll'.
  • vue-infinite-list - An infinite list mixin can recycle dom for Vue.js 2
  • vue-infinite-slide-bar - ∞ Infinite slide bar component.
  • vue-virtual-infinite-scroll - A vue2 component based on Iscroll, supports big data list with high performance scroll, infinite load and pull refresh.

Pull-to-refresh

  • vue-pull-refresh - A pull to refresh component for Vue.js 2.0.
  • vue-pull-to - A pull-down refresh and pull-up load more and infinite scroll for Vue.js component.
  • vue-data-loading - Another component for infinite scroll and pull down/up to load data.
  • vue-quick-loadmore - A pull-down refresh and pull-up infinite scroll plugin for Vue.

Markdown

PDF

  • vue-pdf - A pdf viewer based on mozilla's PDF.js
  • pdfvuer - A PDF viewer for Vue using Mozilla's PDF.js with text support. Demo

Tree

Social Sharing

  • vue-social-sharing - A Vue.js component for sharing links to social networks, work with Vue.js 1.X or 2.X.
  • vue-goodshare - Vue.js component for social share with beautiful button design. Simple install, extensive documentation, developer support, SEO friendly, clean code without scripts tracking user activity on the page, high speed. Work with Vue.js 2.x.
  • vue-socialmedia-share - A Vue.js component for sharing links to social networks, with Vue 2.X
  • vue-picture-sharesheet - A Vue Picture Sharesheet Component heavily inspired by the Image Sharesheet in Apple's Newsroom
  • vue-twitter - A Vue.js component for embed twitter widgets (e.g timeline, buttons)
  • vue-share-buttons - Vue.js component for placing buttons in your project using which you can share anything

QR Code

  • vue-qriously - A Vue.js 2 component to draw QR codes on an HTML Canvas using qrious.
  • vue-qart - The directive of vue 2.x for qart.js.
  • vue-qrcode-reader - A Vue.js 2 component which detects and decodes QR codes from a camera stream.

Search

Miscellaneous

  • vue-avatar - An avatar component for vue.js.
  • vue-touch-ripple - Touch ripple component for Vue.js(1.x ~ 2.x).
  • vue-typer - Vue component that simulates a user typing, selecting, and erasing text.
  • vue-keyboard - Vue 2 virtual keyboard component.
  • vue-twentytwenty - Image comparison component, works with Vue.js 2.x
  • vue-cookie-law - Cookie info plugin for Vue.js 2.x
  • vue-gravatar - A dead-simple gravatar component for Vue.js 2.x
  • vue-clipboard2 - An easy to use clipboard.js binding for Vue.js 2.x
  • vue-flashcard - FLashcard component with animation for Vue.js 2.x ?
  • vue-truncate-collapsed - A simple component that truncates your text and adds a 'Read More/Show Less' clickable for Vue.js 2.x
  • vue-kanban - A flexible drag and drop kanban board component
  • vue-letter-avatar - A simple and elegant letter avatar component for vue.js
  • vue-highlightjs - Syntax highlighting with highlight.js
  • v-clipboard - Simple, tiny and easy to use directive to save your models to clipboard (less than 2kb minified, no dependencies)
  • vue-invisible-recaptcha - Super easy integration for Google's Invisible reCAPTCHA
  • vue-embed - Embed component is based on embed.js for Vue 2.x, a component that embeds emojis, media, maps, tweets, gists, code, services and markdown.
  • vue-particles - Vue.js component for particles backgrounds
  • vue-uniq-ids - Vue.js 2.x plugin that helps to use id-related attributes with no side-effect
  • vue-multivue - Use multiple vue apps of the same class on the same page.
  • vue-affix - A Vue.js 2.x plugin that affixes an element in the window while you scroll, similar to Bootstrap Affix but much simpler and smarter
  • X-Browser-Update-Vue - A Vue.js browser-update plugin.
  • vue-query-builder - A UI component for building complex queries with nested conditionals.
  • vue-info-card - A simple and beautiful card component with an elegant spark line and CSS3 flip animation.
  • v-offline - Simple, tiny and easy to use detection of offline & online events for your Vue app (less than 390b minified)
  • vue-word-cloud - A word cloud generator.
  • vue-flat-surface-shader - A Vue component for flat surface shader
  • vue-easteregg - Easey add an easteregg to your vue app (default with konami code)
  • vue-barcode-scanner
  • vue-heatmapjs - A Vue directive for tracking and visualising mouse activity
  • vue-maze - An itty-bitty maze game made as Vue.js component
  • vue-drag-verify - This is a vue component, which is sliding to unlock for login or sign up.
  • vue-balloon - Vue components for creating fixed, zoomable containers in the corner of a page. Similar to the mail composition wrapper used in gmail.
  • vue-sticker - Sticker effect to any directions
  • v-rating - ⭐️ Rating component in Semantic-UI made with VueJS (< 500B gzipped, blazing fast)
  • vue-content-placeholders - Composable components for rendering fake (progressive) content like facebook in vue
  • vue-page-designer - Vue component for drag-and-drop to design and build mobile website.
  • vue-creativecommons - CreativeCommons.org Vue.js components library.
  • vue-status-indicator - A Vue.js component to show status indicator as colored dots.
  • vue-google-adsense - Vue.js Google Adsense Component with InFeed and InArticle Ads support
  • emoji-vue - Emoji ??? dropdown for Vue.js project
  • vue-chessboard - Chessboard vue component to load positions, create positions and see threats.
  • vue-mindmap - Vue component for mindnode maps.
  • v-currency - Vue component for formatting currency.
  • vue-emoji-picker - Highly customizable unicode emoji picker ??
  • vue-8-puzzle - An itty-bitty slide puzzle game made as Vue.js component
  • vue-e164 - Customizable phone formatter with E.164 standart support
  • vue-pgn - Vue.js component for viewing chess games in pgn format
  • vue-avatar-editor - Resize, rotate and crop your uploaded avatar using a clear user interface.
  • vue-connection-listener - Vue event bus plugin listening for online/offline changes.
  • vue-sauce - "View source" directive for Vue.
  • vue-prom - Vue promise wrapper component.
  • numeric-keyboard - Numeric keyboard for mobile browsers.
  • vue-zoom-on-hover - Image zoom on mouse hover
  • vue-responsive-image - A Vue component that lets you quickly create responsive image tags with an optimal number of image sources for all devices.
  • vue-highlight-text - Vue component for highlight multiple instances of a word
  • vue-cast-props - Provides a convenient way of converting props to common data types.
  • vue2-heropatterns - A Vue2 implementation allowing you to add the popular Hero Patterns onto any Div
  • vue-link - One component to link them all ? (treat external and internal links same)
  • vue-identify-network - ⚡️Identify what kinda internet your users are using!
  • vue-cloneya - A vue component to clone DOM elements
  • vue-survey-builder - Survey builder for vue.js applications
  • vue-if-bot - A lightweight component to hide/show content to clients based on the user agent
  • vue-clampy - Vue.js (2+) directive that clamps the content of an element by adding an ellipsis to it if the content inside is too long.
  • vue-cookie-accept-decline - Show a banner with text, a decline button, and an accept button on your page. Remembers selection using cookies. Emits an event with current selection on creation. Good for GDPR requirements.
  • @lossendae/vue-avatar - An avatar component for VueJS 2.0.
  • vue-text-highlight - Text highlighter library for Vue.js ?
  • vue2-hammer Hammer.js wrapper for Vue 2.x to support mobile touch..
  • vue-countable - Vue binding for countable.js. Provides real-time paragraph, sentence, word, and character counting.
  • v-show-slide - A Vue.js directive for animating an element to and from height: auto in a sliding motion.
  • vue-swipe-actions - iOS style swipe actions for Vue.js
  • vue-friendly-iframe - A Vue js component for creating super fast loading, non-blocking iframes.
  • vue-beautiful-chat - A simple and beautiful Vue chat component backend agnostic, fully customizable and extendable.
  • vue-magnifier - A simple image zooming / magnifying component for Vue.js 2.x.
  • vue-highlight-words - Vue component to highlight words within a larger body of text. Ported from react-highlight-words
  • vue-tags-ball - Create a beautiful and spherical tag with this plugin
  • vue-rippler - Simple Vue.js plugin for custom ripple effect
  • vue-contacts - Mobile contacts component for Vue
  • basic-vue-chat - Easy to use Vue.js chat
  • vue-resize-text - A vue directive which automatically resize font size based on element width.
  • vue-github-profile - A vue component to view the profile and repos of determined user
  • vue-niege - ? ? Single File Vue component to add a snow storm through a canvas.
  • vue-dynamic-star-rating - A highly dynamic vue stars rating component, like google play rating ⭐️ ⭐️ ⭐️ ⭐️ ⭐️
  • vue-katex - Simple plugin for math typsetting using KaTeX in Vue.js
  • vue-canvas-identify - Vue canvas component for vuc-identify
  • vue-canvas-material - Vue canvas component for vuc-material
  • vue-baberrage - A simple Barrage plugin Base on Vue.js?
  • vue-terminal-ui - ?Terminal UI emulator Vue: custom and basic commands
  • vue-command - A fully working Vue.js terminal emulator
  • vue-ribbon - Vue component for GitHub ribbons
  • avatio-avatar - Vue component for illustrated avatars - used by Avatio
  • vue-jazzicon - A dead-simple Jazzicon component for Vue.
  • vue-star-rating - A simple, highly customisable star rating component ⭐️ ⭐️ ⭐️
  • vue-fixed-header - Simple and cross-browser friendly fixed header component for Vue.js written by TypeScript.
  • vue-particle-effect-buttonsA bursting particles effects buttons component.
  • vue-insomnia - Prevent display screen from sleeping (wake lock).
  • vue-car-plate-keyboard - A car license plate number keyboard for VueJS 2.x.(车牌号输入键盘,支持新能源车牌???)
  • vue-dataflow-editor - Vue2 dataflow graph editor
  • cool-emoji-picker - A fast plug-n-play [Tw]emoji Picker (+textarea for Twemoji rendering) component for Vue.

Tabs

Form

Let the user create & edit data

Phone Number Input Formatter

Picker

  • vue-smooth-picker - A smooth picker component for Vue 2.x, like iOS native datetime picker.

Generator

  • FormSchema Native - Generate a form using JSON Schema and Vue.js
  • vue-awesome-form - A vue.js component just like json-editor
  • vue-generator - Initial router and components for the Vue project.
  • vue-form-json - Generate a vue form with validation and bulma style, from json
  • form-create - Form builder with dynamic rendering, data collection, validation, and submission capabilities, supporting json data
  • element-form-builder - Build element-ui forms with JSON Schema.
  • ncform - a very nice configuration generation way to develop form
  • Laraform - Advanced form builder for Vue.js with Laravel support
  • vue-ele-form - Vue DataForm, based on element-ui
Date Picker

Date / datetime / time Picker

  • vue-datepicker - [unmaintained] Calendar and datepicker component with material design for Vue.js.
  • vue2-timepicker - [unmaintained] A dropdown time picker (hour|minute|second) for Vue 2.x, with flexible time format support.
  • vuejs-datepicker - A simple Vue.js datepicker component. Supports disabling of dates, inline mode, translations.
  • vuedt - [unmaintained] Crazy lightweight (5.5kb!) Vuejs Date and Time picker component with nice animations and not too much fuzz.
  • vue-flatpickr-component Vue.js component for flatpickr datetime picker
  • vue-bootstrap-datetimepicker Vue.js component for eonasdan-bootstrap-datetimepicker
  • vue-jalaali-datepicker - Jalaali calendar and datepicker for vue.js 2.
  • vue-date-picker - A vue date picker component inspired by material design
  • vue-monthly-picker - Vue.js component for month and year picker only
  • vue-hotel-datepicker - A responsive date range picker that displays the number of nights selected, allows custom check-in/check-out rules, blocking dates, localization support and more.
  • vue2-persian-datepicker - An awesome Persian datepicker component for vue. کامپوننت انتخاب تاریخ برای ویو.
  • vue-datetime - Mobile friendly datetime picker for Vue. Supports date, datetime and time modes, i18n and disabling dates.
  • vue-rangedate-picker - Range date picker with simple usage
  • v2-datepicker - A simple datepicker component based Vue 2.x.
  • vue-datepicker-local - A Beautiful Datepicker Component For Vue2.
  • vue-airbnb-style-datepicker - A Vue datepicker with a similar look and functionality as the popular AirBnb datepicker. Lightweight, configurable and good browser support!
  • vue-persian-datetime-picker Persian material datepicker. Supports datetime, date, time, year, month.
  • VCalendar Very customizable and powerful calendar/datepicker component with many features and good documentation.
  • @owumaro/vue-date-range-picker - A vue component using Bootstrap 4 styles for date range selection
  • vue-datepicker-mobile - A mobile friendly datepicker for vue2. ?? select one day or range of date and custom it that you wish.
  • vue-draggable-cal - Not your ordinary datepicker. A Vuejs draggable date selector with a fresh responsive design, mobile ready and 0 dependencies, 17kb gzipped.
  • vue-vanilla-datetime-picker - Datetime picker for Vue.
  • vue2-daterange-picker - Vue2 date range picker based on bootstrap-daterangepicker (no jQuery dependency)
  • vue-timeselector - Fully and simply customizable powerful time picker component for Vue.js.
  • vue-date-picker - Lightweight datepicker component for Vue 2.x.
  • vue-ctk-date-time-picker - A beautiful VueJS component to pick date & time (with range mode) ?
  • simple-vue2-datetimepicker - A simple, easy to use vue.js component for date and time picking. ?
  • vue-business-hours - Vue component for selecting business hours in an administration panel or dashboard.
  • material-vue-daterange-picker - a daterange picker of Material Design style for Vuejs 2.x, which is compatible with vuetify and friendly for mobile.
  • vue-datepicker - A clean & responsive datepicker with Material Design style for Vuejs 2.x. (date/month/quarter && date range picker) ?

Select

  • vue-select - A native Vue.js component that provides similar functionality to Select2 without the overhead of jQuery.
  • vue-multiselect - Universal select/multiselect/tagging component for Vue.js.
  • stf-vue-select - most flexible and customized select Vue2
  • vue-select-image - Vue 2 Component for selecting image from list
  • @riophae/vue-treeselect - A multi-select component with nested options support for Vue.js.
  • @k186/pd-select - A mobile UI component like IOS picker for Vue 2.x,can be wheel pick what ever you defined.
  • vue-dropdowns - A minimalistic and adaptable way to display select boxes if using objects for vue2.x
  • v-cascade - A lovely component of cascade selector with Vue 2.x (Support both of PC and Mobile)
  • vue-multi-select - A custom component to make select/multiselect for Vue2.
  • v-region - A simple region selector, provide Chinese administrative division data.
  • v-selectpage - A powerful selector for Vue2, list or table view of pagination, use tags for multiple selection, i18n and server side resources supports.
  • vue-cool-select - Bootstrap / Material Design theme, support slots, autocomplete, events, validation and more.
  • @myena/advanced-select - Single/Multiple Select component with search, controls for (de)select all and a Bootstrap 3 theme
  • @alfsnd/vue-bootstrap-select - Vue version of bootstrap-select.

Slider

Drag and Drop

  • vuedraggable - Vue component allowing drag-and-drop sorting in sync with View-Model. Based on Sortable.js.
  • vue-dragula - Drag and drop so simple it hurts.
  • vue2-dragula - A vue-dragula fork for Vue2, with a lot of improvements.
  • awe-dnd - A sortable list directive with Vue.
  • vue-draggable-resizable - Vue2 component for draggable and resizable elements.
  • vddl - Vue components for modifying lists with the HTML5 drag & drop API, supports VueJs versions 1 and 2.
  • vue-drag-drop - A minimal and lightweight wrapper for the HTML5 Drag and Drop API.
  • vue-swing - A swipeable cards interface, as seen in apps like Jelly and Tinder.
  • vue-slicksort - A dependency-free set of mixins for animated, touch-friendly, sortable lists
  • draggable-vue-directive - A simple directive to handle drag and drop of any Vue component.
  • vue-smooth-dnd - Vue wrappers of smooth-dnd library. drag and drop, sortable library covering for many cases.
  • vue-drag-resize - A dependency-free Vue component for draggable and resizable elements with aspect ratio, reactive props etc
  • vue-drag-it-dude - Vue2 component, that allows you to drag object wherever you want.
  • vue-draggable - Vue Drag and Drop library without any dependency. Simple and easy to use.
  • vue-nestable - A simple drag & drop hierarchical list made as a vue component.
  • vue-draggable-nested-tree - A powerful customizable draggable tree view component for Vuejs2 @phphe

Autocomplete

Autosuggest / autocomplete / typeahead

  • vue-instant - Vue instant allows you to easily create custom search controls with auto suggestions for your vue 2 applications.
  • v-autocomplete - Autocomplete component for Vue.js
  • vue-awesomplete - Vue wrapper for Awesomplete
  • vue-auto-complete - Autocomplete for Vue2. Works with objects or api calls.
  • vue-autosuggest - WAI-ARIA complete Autosuggest component with full customization over rendering and styling.
  • v-autosuggest - A simple modular Vuejs component that autosuggest input from a dynamic or static data querying.
  • autocomplete - Simple Autocomplete component for Vue.js 2.*
  • vue-infinite-autocomplete - Vue infinite-autocomplete wrapper for Vue.js 2.*
  • vue-simple-suggest - Simple yet feature-rich autocomplete component for Vue.js
  • v-suggest - A Vue2 plugin for input content suggestions, support keyboard to quick pick.
  • vue-bootstrap-typeahead - An typeahead/autocomplete component for Vue2 using Bootstrap 4 CSS.

Type Select

Let the user select a tag / something while typing

  • vue-input-tag - Vue.js 2.0 Input Tag Component.
  • v-distpicker A flexible, highly available district picker for picking provinces, cities and districts of China for Vue.js 2.x.
  • vue-img-inputer A graceful, highly customizable img type input for Vue 2
  • vue-img-preview An image input preview component in vue 2
  • v-image ? Tiny little component for input type=file (< 1kb, gzipped)
  • @voerro/vue-tagsinput A simple tags input Vue.js 2 component with typeahead/autocomplete
  • vue-tag-selector - Tag-like input. Light, customizable and handles REGEX validation!

Color Picker

  • vue-color - Vue Color Pickers for Sketch, Photoshop, Chrome & more.
  • vue-swatches - Help the user picking beautiful colors!
  • radial-color-picker - Minimalistic color picker with a focus on size, accessibility and performance.
  • vue-color-picker-board - Vue Color Picker component designed for humans!
  • verte - A Complete Vue.js Color Picker Component.

Switch

Switch / on/off toggle / checkbox

  • vue-switches - An on/off switch component for Vue.js with theme support.
  • vue-js-toggle-button - Vue.js 2.0+ toggle / switch button - simple, pretty, customizable.
  • vue-checkbox-radio - A Vue component to easily styling checkbox and radio inputs.
  • vue-enhanced-check - Vue component to redesign/labelize checkbox/radio, including toggle/switch button.
  • pretty-checkbox-vue - Implementation of pretty checkbox 3(A pure CSS library to beautify checkbox and radio buttons) components for Vue.js 2.2+.
  • vue2-collapse - Vue Collapse is a flexible content toggling plugin for the accordion lists or any other conditional content rendering.
  • vue-badger-accordion - A wrapping Component for Badger Accordion for Vue.js 2.0+
  • vue-loading-checkbox - A highly customizable Vue.js checkbox UI component with loading state
  • vue-rocker-switch - A customizable rocker switch component for Vue.js.
  • vue-toggle-btn - A Highly Customizable, easy-to-use elegant toggle/switch button component

Masked Input

Rich Text Editing

Image Manipulation

Edit images

Display images

  • vue-cloudinary - A vue (2.0) plugin that offers a reusable directive to get images from Cloudinary (https://cloudinary.com) with dynamic manipulation (resizing/cropping/effects/watermarking/scaling/formatting) and optimization (webp/png/auto quality/auto retina).
  • img-Vuer - An Mobile-First image viewer/gallery for Vue2
  • vue-image-loader - A vue loader/progressive image plugin like Medium.
  • vue-load-image - display loader during image loading, as well as by display alternate content when the image fails to load.
  • vue-image-painter - ? Image magic animation drawing effect component for Vue 2.x.

Video Manipulation

  • vue-playlist - A lightweight vue (2.0) component with no dependancies that offers truly seamless html5 video playback. The one and only working solution for seamless video play done with vanilla JS. It takes an array of videos and stitches them together into a single video.

File Upload

  • vue-clip - Simple and hackable file uploader for VueJs. Supports Vue >= 2.1.
  • vue-simple-upload - Simple File upload component for Vue.js.
  • vue2-multi-uploader - A drag and drop multiple file uploader component that uses Vue.js v2 and Axios. Uploader shows file names, sizes and total size of files added. It also allows setting a minimum required number of files to upload.
  • vue-dropzone - A Vue.js (vue2) component for Dropzone.js - a drag’n’drop file uploads utility with image previews.
  • vue-transmit - A purely Vue.js drag & drop uploader component based on Dropzone.js for Vue 2.0
  • vue-upload-component - Vue upload component, Multi-file upload, Upload directory, Drag upload, Drag the directory. Supports Vue >= 2.0
  • vue-uploader - A Vue.js upload component powered by simple-uploader.js
  • ic-firebase-uploader - A clean multi-file upload component for Firebase storage.
  • vuejs-uploader - A resumable multipart file uploader for HUGE file uploads.
  • vue-filepond - A Vue.js component for FilePond - a file upload library that can upload anything you throw at it.
  • v-uploader - A Vue2 plugin to make files upload simple and easier, you can drag files or select file in dialog to upload

Context Menu

Miscellaneous

  • vue-gmaps - Search places and address using Google Maps API.
  • vuep - A component for rendering Vue components with live editor and preview.
  • vue-places - Places component is based on places.js for Vue 2.x. Turn any input into an address autocomplete.
  • vue-password-strength-meter - Password strength meter based on zxcvbn in vue.js.
  • vue-float-label - Float label pattern for Vue.js.
  • vue-longpress - A VueJS (2.x) button component that requires you to keep pressing to confirm a given action.
  • vue-google-autocomplete - A Vue.js (2.x) autosuggest component for the Google Maps Places API.
  • vue-ip-input - An ip input component for Vue.js 2.x
  • vue-default-value - Vue.js 2.x directive to set a default value for editable elements with no affect to the model state
  • vue-model-autoset - A Vue.js plugin to workaround Vue limitation in observing dynamically added properties with v-model directive
  • vue-submit - Simple implementation of Ladda (12) in less than 90 lines of code with no dependencies.
  • vue-rate - Rate component for Vue
  • vuetify-google-autocomplete - A Vuetify ready Vue.js (2.x) autosuggest component for the Google Maps Places API.
  • vue-ripple-directive - Material Ripple Effect as Vue Directive.
  • vue-fab - Vue Floating Action Button.
  • vue-complexify - Vuejs porting library from jquery.complexify.js.
  • vue-mc - Models and Collections for Vue.js
  • vue-stars - Highly customizable rating control (using stars or other characters)
  • vue-confirmation-button - Customizable confirmation button that requires users to read messages before performing an action
  • vue-poll - A Vue.js component for voting
  • vue-diagrams - Diagram component for vue.js, inspired by react-diagrams
  • vue-easy-polls - A Vue.js component for creating polls, voting and showing results. It’s easy to implement and easy to customize.
  • vue-m-button - A beautiful button component for vue.
  • vue-long-click - Long click (long press) directive library for vue, support mobile and desktop.
  • vue-ui-predicate - A rules editor, generic filtering UI, predicates component for Vue JS.
  • vue-mobile-detection - Vue.js prototype function this.$isMobile() that returns a Boolean value depending on whether or not the user is browsing with a mobile.
  • vue-input-contenteditable - A Vue component wrapper for contenteditable with all the features you normally expect. Make beautiful inputs without the restrictions of input[type='text'].

Wizard

  • vue-form-wizard - Tab based component which can replace classic bootstrap & jQuery form wizards
  • vue-stepper - A simple stepper with simple actions such as next, back and end to perform simple forms.
  • vue-stepper-component - A fully customizable Stepper component with Vuex support and Zero dependencies.

CSV

  • vuecsv - A Simple CSV Downloader from json with option modal panel component.

Comment System

  • vue-comment-grid - ? Responsive Vue.js comment system plugin that built with CSS Grid and Firebase REST API + Authentication.

Canvas

  • vue-easeljs - Data-driven control over an HTML5 canvas element.
  • vue-canvas-effect - A simple, canvas effect collection for Vue.js.
  • vue-konva - Vue & Canvas - JavaScript library for drawing complex canvas graphics using Vue.
  • vue-html2canvas - Vue mixin to capture html and convert it to an image using Html2Canvas.
  • vue-canvas-nest - A Vue.js component for canvas-nest.
  • vue-signature-pad - ? A Vue Signature Pad Component

Link Preview

  • link-prevue - Flexible component for generate a link preview.

Tour

  • vue-tour - Lightweight and customizable tour plugin
  • vue-page-guide - Page tour / guide plugin with directive

UI Layout

Layout for the overall / main view

  • vue-waterfall - A waterfall layout component for Vue.js.
  • vueisotope - Vue component for isotope filter & sort magical layouts.
  • vue-grid-layout - A draggable and resizable grid layout, for Vue.js.
  • vue-drag-zone - Drag Zone component for Vue.js(2.x).
  • vue-masonry - Vue.js directive for masonry blocks layouting.
  • vue-fraction-grid - Flexbox based responsive fraction grid system for Vue.js.
  • vue-virtual-scroll-list - A vue (2.x) component support big data by using virtual scroll list.
  • vue-virtual-scroller - Component to scroll a large amount of elements efficiently (Vue 2.x).
  • vue-virtualscroll - [Vue 2.x] component to virtual scroll things.
  • vue-inview - [Vue 2.x] Viewport, get notification when DOM element is entered or leave.
  • dnd-grid - A vuejs grid with draggable and resizable boxes
  • vue-extend-layout - Extend the default layout or create custom layouts for the pages of your Vue.js SPA
  • vue-masonry-css - Vue.js Masonry layout component powered by CSS, dependency free
  • vue-fullpage.js - Official fullPage.js component for Vue.js.
  • vue-virtual-collection - Vue component for efficiently rendering large collection data.
  • autoresponsive-vue - Auto responsive grid layout library for Vue.
  • VueFlex - A flexbox grid system.
  • v-chacheli - A Vue.js component to create and display custom dashboard-like grid layouts.
  • vue-grid-styled - A lightweight set of functional grid components, ported from React's grid-styled
  • simple-grid - Vue component for grid layout,support flex.
  • vue-container-component - Simple container component inspired on Bootstrap Container
  • vue-colcade - A small wrapper for integrating Colcade grid layout to Vuejs.
  • vue-ads-layout - A small library of Vue components to quickly generate a responsive web application layout with toolbar, left/right drawers and a footer. All components can be positioned fixed or relative.
  • vue-magic-grid - A tiny port of Magic Grid for Vue.js 2.
  • vue-splitter-pane - A Vuejs component which renders two slots in a adjustable split arrangement (vetical or horizontal).
  • splitpanes - A Vue JS reliable, simple and touch-ready panes splitter / resizer.
  • vue-mock-layout - Easily mock the layout of your Vue apps.
  • vue-simple-drawer - A tiny drawer panel with bounced animation, nest supported and theme customized. directions: left/right/up/down
  • vue-grd - Simple, Light-weight and Flexible Vue.js component for grid layout.

Frameworks

Responsive

Set of components + responsive layout system

  • quasar-framework - Quasar Framework. Build responsive websites, hybrid mobile Apps (that look native on Android and iOS) and Electron apps using same code, with VueJs 2.
  • vue-material - Material design for Vue.js.
  • vuetify - Material Component Framework for Vue.js 2.
  • muse-ui - Material Component library for Vue.js 2.
  • buefy - Components based on Bulma framework.
  • element-ui - A Vue.js 2.0 UI Toolkit for Web.
  • vue-bulma-components - Easily use bulma class syntax with vue components.
  • iview-ui - A Vue.js 2.0 UI Framework for web.
  • AT-UI - A fresh and flat UI-Kit specially for desktop application, made with ♥ by Vue.js 2.0
  • v-semantic - Implementation of semantic-ui for Vue
  • bootstrap-vue - Implementation of bootstrap-4 grid and components for Vue.js 2.
  • fish-ui - A Vue.js 2.0 UI Toolkit for Web
  • zircle-ui - A frontend library to develop zoomable user interfaces.
  • vue-mdc-adapter - Material Components integration for Vue.js as per MDC Team's guidelines.
  • Material Components Vue - wrapper around material-components-web for Vue.js
  • VueFace - A Vue.js 2.0 UI Component library for Web
  • vuesax - Frontend vue Components for Vue.js.
  • vuecidity - UI component framework for Vue.js 2.0
  • ant-design-vue - An enterprise-class UI components based on Ant Design and Vue 2.5.0
  • heyui - (https://www.heyui.top/en) - A Vue.js 2.0 UI Toolkit for Web.
  • Carvue.js - IBM's Carbon Design System for Vue.js
  • BalmUI - Next Generation Material UI for Vue.js
  • Osiris UI - ? A Vue.js 2.0 universal responsive UI component library
  • N3-components - Beautiful Web Components built with Vue 2
  • Shards Vue - ✨ Sleek & UI Components Library based on the Bootstrap 4 Framework.
  • Fundamental Vue - Components based on SAP Fiori Fundamentals.
  • Framevuerk - ? Fast, Responsive, Without Dependencies, Both Direction Support and Configurable UI Framework based on Vue.js.
  • @Carbon/vue - Carbon Design System components from the @carbon team.
  • NutUI - A Vue.js 2.0 UI Toolkit for Mobile Web
  • Inkline - Inkline is a modern UI/UX Framework for Vue.js designed for creating flawless responsive web applications.
  • vue-awesome-mui - A Vue.js 2.0 MUI Component for Web
  • MDBootstrap - Powerful UI toolkit based on the latest Bootstrap 4 and Vue 2.6.10, providing a set of slick, responsive page templates, layouts, components and widgets to rapidly build responsive, mobile-first websites and apps.

Mobile

UI frameworks for mobile

  • Framework7-Vue - Build full featured iOS & Android apps using Framework7 & Vue.
  • vux - [Chinese] Vue UI Components based on WeUI.
  • vue-onsenui - Mobile app development framework and SDK using HTML5 and JavaScript. Create beautiful and performant cross-platform mobile apps. Based on Web Components, and provides bindings for Angular 1, 2, React and Vue.js.
  • Weex - Weex provides the ability to publish cross platform, so web, Android, and IOS apps can use the same API development functions.
  • weex-eros - [Chinese] Eros is a app solution based on Weex and Vue, which enables you to use API of Vue, simple and quick development of small and medium app.

Set of components for mobile

  • mint-ui - Mobile UI elements for Vue.js.
  • vant - A Vue.js 2.0 Mobile UI From YouZan.
  • cube-ui - A fantastic mobile ui lib implement by Vue.js 2.
  • mand-mobile - A mobile UI toolkit, based on Vue.js 2, designed for financial scenes.

Component Collections

Set of components without layout system

  • vue-mdc - Material Components Web for Vue.js.
  • keen-ui - A lightweight collection of essential UI components written with Vue and inspired by Material Design.
  • vue-admin - Vue Admin Panel Framework, Powered by Vue 2.0 and Bulma 0.3.
  • vuikit - UIkit with all the power of Vue.
  • uiv Bootstrap3 components implemented by Vue2.
  • wffranco/vue-strap - Bootstrap 3 components built with Vue.js 2
  • jsmod-vue-pc - Highly scalable web components for vue 2.0
  • guilhermewaess/SemVue - Semantic-ui Modules implemented with Vue 2
  • office-ui-fabric-vue - Office UI Fabric implementation for Vue.js
  • vuestic-admin - Vue Admin Dashboard with collection of custom components. Built with Vue 2 and Bootstrap 4
  • Semantic UI Vue - Semantic UI integration for Vue
  • vuesax - Frontend vue Components for Vue.js.
  • Essential JS 2 for Vue - Full featured 45+ Vue.js components which includes Data Grid, Chart, Scheduler and Diagram components etc.
  • Banshee - A mostly renderless Vue UI component and utility framework that ships with no CSS.
  • vue-atlas - A library of beautiful Vue components.
  • DevExtreme Vue Components - 65+ responsive and feature-complete Vue UI components with customizable Material Design and Bootstrap compliant themes.
  • jqwidgets - 70+ Vue.js 2.0 UI Components with Material Design themes.
  • vue-uix - UI collection for web page implementation in Vue.js
  • vuedarkmode - A Minimalist Dark Design System for Vue.js ?
  • Kendo UI for Vue – Over 70 UI components, including a Grid, built for business applications. Fully responsive with support for several Design Languages including Material Design and Bootstrap.
  • Vuent - Vue.js components implementing Microsoft Fluent Design
  • bpit/vue - Vue components lib which is focused on effects
  • vue-tailwind - Vue components with customizable classes ready for TailwindCSS, but compatible with any framework.

Admin Template

Set of admin template

Server-side rendering

  • Nuxt.js - Versatile Vue.js Framework.
  • Ream - A minimalistic framework for building server-rendered and static websites.
  • Universal vue - Vue CLI plugin to create universal Vue applications with ease

Static website generator

  • VuePress - Minimalistic Vue-powered static site generator.
  • Peco - A static website generator for humans. UNMAINTAINED
  • Saber - A static website generator for building blazing fast websites with Vue.js.
  • Gridsome - Build super fast, modern websites with Vue.js

Other

  • app-framework - IOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source.
  • Myfirebase - A decoupled Single page application Framework which is highly compatible with google firebase.
  • Vue-Access-Control Frontend access control framework based Vue.js 2.
  • Basys Toolbox for building full-stack Vue.js apps
  • CabloyJS The Ultimate NodeJS Full Stack Business Development Platform, based on KoaJS & EggJS & VueJS & Framework7

UI Utilities

Event Handling

Handling of user events (scroll, click, key strike, ...)

  • vue-shortkey - Vue-ShortKey - plugin for Vue.js.
  • vue-throttle-event - Throttle events based on requestAnimationFrame.
  • vue-waypoint - Waypoint component for Vue, this is the easiest way to trigger a function when you scroll.
  • vue-clickaway - Reusable clickaway directive for reusable Vue.js components.
  • vue-scrollfire - Fires an event on a specific scroll position.
  • vue-resize-directive - Vue directive to detect resize events with deboucing and throttling capacity.
  • v-click-outside - Vue directive to react on clicks outside of an element without stopping the event propagation.
  • vue-outside-events - Vue 2.x directive to help a specified element listen for specific events occurring outside of itself.
  • vue-selectable - Vue 1.x/2.x directive to make items selectable by mouse.
  • vue-click-helper - Vue2.x directive to handle click event and dblclick event on same element.
  • v-hotkey - Vue 2.x directive for binding hotkeys to components.
  • vue-resize - Vue 2.x component to detect DOM elements resizing (event based/no window.onresize)
  • vue-observe-visibility - Vue 2.x directive using Intersection Observer API that detects if the element is visible (in the viewport and not hidden by CSS).
  • v-dragged - Vue 2.x directive plugin for drag event detection.
  • vue-esc - Vue.js directive to add a document event listener on escape keyup.
  • vue-global-events – A component to handle global events (like shortcuts) using Vue’s event modifiers
  • vue-edge-check – Check browser edge to prevent transition effect triggered oddly when swipe edge with vue-router
  • vue-mutation-observer – A simple and tiny directive to observe changes in DOM use MutationObserver API
  • vue-scroll-show – Showing the element if the user reached it after scroll
  • vue-tabevents – Easy communication between other opened tabs
  • vue-visibility-trigger - ? Declaratively trigger methods when scrolled into view

Responsive Design

  • vue-viewports - Define your custom viewports and use them in your components.
  • vue-responsive: Vue.js(2.x) directive to hide/show HTML-elements with the Bootstrap 4, 3 or self defined breakpoints.
  • vue-match-media - Vue 2.x-compatible plugin that offers a consistent, semantic approach to making components media query-aware.
  • vue-media-query-mixin - Vue 2 media query mixin that can be used in both component js and component template. Compatible with bootstrap and vuetify viewports. wXS returns if screen width is xs, wSM returns true if screen width is sm, etc...
  • vue-breakpoints - Vue 2 minimal components to show and hide elements based on breakpoints. Inspired by Airbnb.
  • vue-mq - Offer some useful tools to quickly setup responsive design with a semantic and mobile-first API (Vue 2.x)
  • VueResizeSensor - A container that supports resize event.
  • vue-breakpoint-component - A render-less component for composing CSS breakpoint state.
  • fine-mq - A fine API to manage media queries in JS with ease and first-class integration with VueJS as a plugin.
  • vue-responsive-components - Create responsive components with ResizeObserver.
  • vue-screen-size - Get easy and reactive access to the width and height of your screen.

Form

Validation

  • vee-validate - Simple Vue.js input validation plugin.
  • vue-rawmodel - RawModel.js plugin for Vue.js v2. Form validation has never been easier.
  • vuelidate - Simple, lightweight model-based validation for Vue.js.
  • simple-vue-validator - A simple yet flexible validator library for vue.js.
  • vue-vform - Vue.js 2 form component that integrates jQuery Validation and Axios.
  • vue-form - Comprehensive form validation for Vue.js.
  • vuelidation - simple, powerful, vuejs validation.
  • laravel-vue-validator - Display errors from laravel validation rules
  • vue-daval - Super vue data validator. Easiness, simplicity, accurate.
  • willvalidate - Validation Forms for Vue.js.
  • vue-m-validator - Model data validation library, for VueJs.
  • vue-isyourpasswordsafe - A small utility written in Vue that checks if the given password has been leaked against the Have I Been Pwned API.
  • vue-form-send - A Vue.js directive for sending data from form and primitive validation
  • FormVuelar - Vue form components with server side validation in mind
  • vue-final-validate - Vue validation solution from my development experience, support nested, async.
  • vform - A simple way to handle Laravel back-end validation in Vue.

Resize

  • vue-not-visible - Vue directive for removing from dom (like v-if) element on screen smaller than breakpoints.
  • vue-window-size - Provides reactivity window size properties.
  • vue-responsive-text - ↔ Component that scales its child node in relation to its parent node's width

Scroll

Set window scroll position

  • vue-chat-scroll - Automatic scroll-to-bottom directive for Vue.js 2.0.
  • vue-scrollto - Adds a directive that listens for click events and scrolls to elements.
  • vue-next-level-scroll - A component based and SSR ready approach to smooth scrolling using the modern Scroll behavior API
  • vue-scroll-sync - A component that synchronizes containers’ scroll positions
  • v-scroll-lock - A Vue.js directive for body scroll locking without breaking scrolling of a target element
  • vue2-perfect-scrollbar - PerfectScrollbar minimalistic wrapper
  • vue-scroll-to - Adds a directive that listens for click events and scrolls to elements.
  • vue-scroll-progressbar - A customizable component that indicates the scroll relative position in a progressbar.
  • vue-backtotop - A Back-to-top component for Vue.js, which scroll page to the top when clicked.

Virtual scrollbar

  • VBar - The virtual responsive cross-browser scrollbar component for Vue.js 2x.
  • Vuebar - Vue 2 directive for custom scrollbar that uses native scroll behavior. Lightweight, performant, customizable and without dependencies.
  • vue-detached-scrollbar - A simple scrollbar that can be detached from the container it is scrolling.
  • vuescroll - A scrolling plugin based on Vue.js for uniforming the scrolling in PC and mobile.
  • vue-simplebar - Vue.js wrapper for simplebar plugin.
  • smooth-vuebar - Vue directive wrapper for smooth-scrollbar

Detect when components enter viewport

  • vue-scrollview - A component utilizing scoped slots to detect when a vue component enters and leaves the viewport.
  • vue-scrollactive - Adds an active class in a menu item based on the current section in viewport, also scrolling to the section when clicking the menu item.
  • vue-intersect - A Vue component to add intersection-observer to a Vue component or HTML element.
  • vue-scrollmonitor - A Vue plugin to watch visibility state of elements inside viewport with a wide range of browsers supported (use provide/inject so compat vue@2.2.x)
  • vue-stroll - An Awesome CSS3 list scroll effects component for Vue.js 2.x.
  • navscroll-js - Highlights menu items as you scroll, and also scrolls to a section when a menu item clicked. Use as a vue component, a vue directive or with vanilla js.
  • vue-scrollwatch - A light plugin detecting scroll event,customize callback when element enter viewport,expose 'scrollTo' api to scroll to specific element .Using vue directive.
  • vue-check-view - A plugin that checks if element is in viewport. Fast, small, has no dependencies, live demo.
  • vue-stickto - A vue directive that support multiple DOM nodes stick to top automatically
  • vue2-scrollspy - A scrollspy plugin and animated scroll-to.

Customize the scroll behavior

Seamless scrolling

Routing

  • vue-router - The official router for Vue.js.
  • vue-router-storage - Router storage & resolve solution for Vue.js 2 & vue-router 2
  • vue-tidyroutes - Decentralized vue-router routes definitions
  • vue-routisan - Elegant route definitions for Vue Router based on Laravel routing system
  • vue-error-page - Provides a wrapper for router-view that allows you to show error pages without changing the URL
  • vue-router-sitemap - Generate sitemap.xml by vue-router configuration
  • vue-smart-route - Smart route directive to make intelligent looking apps with Vue.js.
  • vue-router-lite - A component-based, declarative router for Vue.js 2.

Lazy Load

Pagination

Animation

  • vue2-animate - A Vue.js 2.0 port of Animate.css. For use with Vue's built-in transitions.
  • animated-vue - A Vue.js 2.x plugin to easily use Animate.css animations as transitions. As easy as <animated-tada>!
  • vue-lottie - A Vue.js 2.x plugin to render after effects animations based on bodymovin
  • Vueg - Make vue-router have a transition effect / 为 webApp 提供转场特效的开源 Vue 插件
  • v-animate-css - The easiest to implement Vue 2 directive for Animate.css
  • vue-mixin-tween - Mixin factory that adds tweened values to component context for animations
  • v-odometer - Smoothly transitions numbers with ease. Use this library to give your application a smooth animation, only applicable on numbers.
  • vue2-transitions ✨ Reusable Vue 2 transition components
  • vue-overdrive Super easy magic-move transitions for Vue apps ?
  • animated-number-vue Super easy way to animate numbers.
  • vue-typed-js Typed.js integration to easily create typying animations.
  • vue-parent-change-transition Enable a child components to animate when it changes the parent.
  • vue-smooth-reflow Transition an elements reflow in response to data changes.
  • VueTween Allows components to tween their properties.
  • vue-slide-up-down Like jQuery's slideUp / slideDown, but for Vue!
  • vue-animejs Simple anime.js directives for Vue.
  • Eagle.js Eagle.js is a web-based slideshow framework for Vue.js.
  • vue-pose Pose for Vue is a declarative motion system that combines the simplicity of CSS transitions with the power and flexibility of JavaScript.
  • vue-slide-up-down-component It is a simple interface but realizes very flexible and powerful slide animation, for Vue!
  • femtoTween A minimalistic (zero-dep, less than 1k) tweening library with first-class Vue support
  • vue-sequential-entrance Plugin for creating elegant sequential animation entrances with a list of elements of your page. Zero effort. Simple and lightweight
  • vue-animate-scroll Super lightweight way to add CSS animations to elements as they scroll into view.
  • vue-svg-transition Create 2-state, SVG-powered transitions
  • vue-page-transition Easy route / page transitions for Vue.js

Meta Tags

Manage meta information in the document head

  • vue-head - Manage the meta information of the head tag, a simple and easy way.
  • vue-meta - Manage page meta info in Vue 2.0 components. SSR + Streaming supported.
  • vue-headful - Set document <title> and meta tags from within your views.
  • vue-simple-headful - Easily set meta-tags with vue.js - a simpler vue-headful alternative with TypeScript support.

Portal

Move a DOM node to a target DOM node

  • vue-dom-portal - An escape hatch for DOM Elements in Vue.js components.
  • portal-vue - A Vue Plugin to render your component's template anywhere in the DOM (Works on the virtualDOM level, doesn't move nodes within the DOM)

Filters

SVG

  • vue-svgicon - A tool to create svg icon components. (vue 2.x).
  • vue-content-loading - Vue component to easily build (or use presets) SVG loading cards Facebook like.
  • vue-annotator - Annotate page using any SVG Element (rectpolygon, and many more, even HTML Element like canvas if wrapped in foreignObject)
  • vue-svg-sprite - A directive to simply use SVG sprite (vue 2.x).
  • vue-svg-filler - Vue component for custom your svg file ? ? (vue 2.x).

Miscellaneous

WebGL

Fullscreen

Page visibility

Printing

Utilities

Utilities not directly related to the UI

  • vue-underscore - simple vue plugin to implement underscore
  • vue-lazy-calc - A simple calculation plugin in lazy && chaining way with strong typed.

Typescript

HTTP Requests

Retrieve data over HTTP

  • vue-resource - The HTTP client for Vue.js.
  • vue-async-computed - Async computed properties for Vue.js.
  • vue-jsonp - A tiny library for handling JSONP request.
  • v-model - V-Model is a model plugin for Vue.js, like ng-resource.
  • vue-resource-mock - A helper to mock your http response, based on vue-resource's interceptor.
  • vue-async-data-2 - Async data loading plugin for Vue.js.
  • vue-api-request - A plugin that provides full control on your APIs, making your request simple, fast and easy to implement.
  • vue-fast-axios - Make requests with validations in a simple and beautiful way.
  • vue-async-properties - An asyncData and asyncComputed plugin with support for debouncing, transforming results, error handlers, loading/pending flags, lazy/eager requests.
  • vue-axios-plugin - A plugin that combines axios with Vuejs, making http request more easier.
  • vuex-api - A vuex plugin for effortlessly handle api calls.
  • zipkin-instrumentation-vue-resource - An interceptor for vue-resource that instruments outgoing HTTP requests with Zipkin
  • vue-api-query - Elegant and simple way to build requests for REST API.
  • vue-chimera - A full-featured RESTful resource based client, compatible with Nuxt.js and allows server side fetch.
  • vue-google-api - A wrapper for easy integration of the Google's APIs client in any vue.js 2 project, based on promises, with built-in Oauth2 "Sign In with Google" facilities.
  • vue-apis - A vue plug-in integrated with axios that chain-builds API instances. Available from the context of a vue instance (eg: this.$apis.apiName()).

i18n

Internationalization / L10n / localization / translation

  • vue-i18n - Internationalization plugin for Vue.js.
  • vue-translate-plugin - VueJS plugin for translations.
  • vuex-i18n - Localization plugin for vue.js 2.0 using vuex as store.
  • vue-gettext - Translate your Vue.js applications with gettext.
  • vue-i18n - A small plugin for implementing translations in Vue.js.
  • vue-multilanguage - Support many languages in Vue.js 2.
  • vue-ts-locale - A plugin for implementing translations using Intl in Vue.js 2 with typescript support.
  • vue-i18next - A i18next wrapper to support translations in Vue.js 2.
  • vue-polyglot - Basic translation plugin for Vue.js 2 with async loading.
  • v-localize - Simple localization plugin for the amazing Vue.js.
  • vue-simple-i18n - Probably the thinnest library to end all Vue i18n solutions within 1kb
  • template-string-i18n - I18n using template strings with auto save/load translate documents.
  • vue-translations - Translate your vuejs application easy with it.
  • vue-i18n-service - Export and import @kazupon/vue-i18n's SFC translations simply using npx vue-i18n-service export|import.
  • vue-i18n-filter - Vue filter extend for Vue-i18n, simply using {{ hello world | t }}.
  • vue-translation-manager - Interactively find and translate strings in your Vue.js application. Works well with vue-18n and vuex-i18n.
  • vue-t9n - Simplest way to translate your applications
  • vue-simple-inline-translation - A Vue component that simplifies the way text is translated: by translating it inline.
  • vue-i18n-extract - Manage vue-i18n localization with static analysis. Make reports about missing and unused i18n entries.
  • vscode-vue-i18n-ally - VSCode extension for better Vue-i18n experiences.

Custom Events

Persistence

LocalStorage etc.

  • vue-localstorage - Vue.js localStorage plugin with types support.
  • vue-ls - Vue plugin for work with LocalStorage from Vue context.
  • vue-pouch - Live and reactive bindings for PouchDB. Persist data in IndexedDB and sync with CouchDB.
  • vue-idb - Lists and huge lists management with IndexedDB (Dexie.js) only or automatically created and extendible vuex modules
  • vuejs-storage - Vue.js and vuex plugin to persistence data with localStorage/sessionStorage.
  • vue-browserstore - Browser storage wrapper.
  • VueStorage - Allows components to save and load their data across browser sessions.
  • vue-web-storage Another Vue.js plugin for localStorage and sessionStorage
  • vue-universal-cookies Isomorphic cookies plugin for Vue.js / Nuxt.js supports Browser, Express, http (node).
  • vue2-storage Browser storage for Vue.js app
  • vue-warehouse A Cross-browser storage for Vue.js and Nuxt.js, with plugins support and easy extensibility based on Store.js.
  • vue-storage-watcher - A reactive localStorage/sessionStorage plugin for Vue.js with strong typed.

State Management

  • vuex - Centralized State Management for Vue.js.
  • vue-sync - Synchronize Vue State with the Browser URL, Server Backend, and other endpoints.
  • vuelm - Lightweight state management inspired by Elm architecture.
  • vuez - A simple but powerful State Management for Vue.js, with only 2 APIs.
  • vuet - Vue.js state management model for Agile Development
  • vue-ya-stash - Yet Another stash storage with update/patch event emitters simillar with v-bind.sync
  • vue-assign-model - Automatically assign elements value to model for Vue.js.
  • vue-stash - Easily share reactive data between your Vue components.
  • vue-mc - Models and Collections for Vue.js
  • vue-model - Model component for Vue.js
  • tuex - A mostly reasonable alternative to Vuex.
  • revuejs - A tiny, light and handy state management for vuejs 2, writing less verbose code.
  • lue - Vue and vuex based library, writing less verbose code.
  • vuex-lite - A 1KB Vuex with just state and mutations.
  • Vuenut - is a component to develop faster and more fluently.
  • vue-shared - A light and simple alternative to vuex
  • vuex-module-generator - It allows you to create a vuex module easily.
  • vuex-declaration - Declare state like props, make state inject to vuex dynamically when component created.
  • vuex-up - Brings mixing and services injector features to module vuex.
  • effector — Fast and powerful reactive state manager. Effector lets you write simple, fast and type safe code and manage reactive state with ease.
  • nano-state-vue - Efficient, effective, and extensible state management: less is more

Redux

Mobx

  • movue - Mobx integration for Vue.js.
  • vue-mobx - Mobx binding for Vuejs 2.x.

Authentication/Authorization

  • vue-kindergarten
  • vue-authenticate - Simple Vue.js authentication library for login/register and OAuth (1.0/2.0) authentication
  • vue-facebook-account-kit - Simple vue wrapper to the fb account kit library.
  • casl-vue - Restricts what resources a given user is allowed to access
  • vue-google-api - A wrapper for easy integration of the Google's APIs client in any vue.js 2 project, based on promises, with built-in Oauth2 "Sign In with Google" facilities.
  • vue-auth - A simple light-weight authentication library for Vue.js
  • vue-auth-plugin - A simple authentication and authorization library for Vue.js using typescript
  • vue-google-signin-button - A simple Vue plugin to include a Google sign-in button into your web app
  • vue-facebook-signin-button - A simple plugin to include a custom Facebook sign-in button into your web app
  • vue-auth-href - A VueJS directive for downloading files that are under a protected route schema

Vuex Utilities

  • vuex-persistedstate - Persist Vuex state with localStorage.
  • vuex-plugin-jsdata - A plugin for syncing Vuex store with js-data.
  • vuex-local - Local state management within Vuex.
  • vuex-action - Utilities for vuex to easily create and manage actions.
  • vuex-rest-api - A Helper utility to simplify the usage of REST APIs with Vuex. Based on axios.
  • vuex-cache - A Vuex plugin utility to cache action those will make remote request.
  • vuex-persist - A Typescript-ready Vuex plugin to help save the store to localStorage or any custom Storage (that you can configure).
  • vuex-local-state - Add 'localState/sessionState' options to vuex. Keep the Vuex state with localStorage.
  • vuex-cli-scaffold - Scaffold vuex actions, mutations, getters and the state.
  • vuex-action-reload - A vuex plugin that reloads actions when a condition is met.
  • vuejs-storage - Vue.js and vuex plugin to persistence data with localStorage/sessionStorage.
  • vuex-orm - The Vuex plugin to enable Object-Relational Mapping access to the Vuex Store.
  • vuex-async-module - Reduce async boilerplate code generating Vuex modules. Compatible with Vue 2.x.
  • vuex-api - A vuex plugin for effortlessly handle api calls.
  • vuex-queries - Vuex-Queries helps you write query functions in Vuex
  • vuex-microservice - Define microservice URLs at a dedicated place and use them inside your Vuex actions.
  • vuex-iframe-sync - Vuex state synchronization between iframe/window.
  • vuex-aspect - Bind remote data of any kind to the vuex store.
  • Vuenut - is a component to develop faster and more fluently.
  • vuex-map-fields - Enable two-way data binding for form fields.
  • vuex-search - Vuex binding for client-side search with indexers and Web Workers.
  • vuex-dry - helps keep your vuex codes DRY.
  • vuex-pathify - provides a unified path syntax to Vuex stores (such as foo/bar@a.b.c)
  • vuex-loading - Simplify vuex loading state management
  • vuex-module-builder - Vuex module builder is a wrapper for writing vuex stores efficiently with some common methods built-in.
  • vuex-pagination - Easily work with paginated resources in your Vue/Vuex application. Works well with most of the Vue pagination components.
  • vuex-easy-firestore - Easy coupling of Firebase Cloud Firestore and Vuex. 2-way sync with 0 boilerplate!
  • vuex-listener - A global Vuex action and mutation listener plugin
  • jsonapi-vuex - Use a JSONAPI api with a Vuex store, with client-side restructuring/normalization of records.
Sync Between Tabs

GraphQL

  • vue-apollo - Apollo/GraphQL integration for VueJS.
  • vue-relay - A framework for building GraphQL-driven Vue.js applications.
  • vuex-orm-apollo - Apollo/GraphQL integration for Vuex-ORM.

Concurrency Management

  • vuency - Concurrency management for Vue.js.

Code Style

Improve readability of code

CSS

  • vue-bem-cn - Simple BEM class name generator for Vue.JS.
  • vue-css - Vue.js plugin that allows you to bundle CSS with your components.
  • vue-mods-names - Adding modificators to class names for all components in app.
  • vue-styler - Simple, performant styler for vue.
  • vue-css-modules - Seamless mapping of class names to CSS Modules inside of Vue components.
  • vue-simple-bem - Directive with succint syntax for adding BEM class names to elements.
  • fela-vue - CSS-IN-JS mixin for Vue designed for flexibility yet team-oriented.
  • j-vue

Asset Management

Utilities for building / compiling / bundling / loading assets

  • vue-script2 - Standardized, designer-friendly script tag behavior for your Single Page App.
  • vue-loader - Webpack loader for Vue.js components.
  • vueify - Browserify transform for single-file Vue components.
  • vue-compiler - A simple cli wrapper around the vue-component-compiler.
  • vue-brunch - Adds support to Brunch for pre-compiling single file Vue components.
  • poi - Start writing an app with a single .js file, Poi could handle all the development setups for you, no more configuration hell.
  • http-vue-loader - Load .vue files directly from your html/js without node.js environment nor build step.
  • vue-jsx-hot-loader - Enable HMR for Vue.js components with JSX render functions.
  • VueInBrowserLoader - Loads a .vue file from the given URL and compiles it to a component directly in the browser.
  • vue-separate-files-webpack-loader - Webpack loader for separated Vue components parts
  • vue-svg-loader - webpack loader that lets you use SVG files as Vue components
  • vue-registrar - ☘️ A package that dynamically registers your components and vuex modules - Makes your code a lot readable!

Page Navigation

  • vue-navigation - A page navigation library, record routes and cache pages, like native app navigation. 一个页面导航库,记录路由并缓存页面,像原生APP导航一样。
  • vue-acl - Access Control List for VueJS 2.
  • vue-breadcrumbs - Implements simple breadcrumb functionality with vue-router for both Vue 1.x and Vue 2.x.
  • vue-2-breadcrumbs - breadcrumb together with vue-router for Vue 2.x. and Bootstrap 4
  • vs-crumbs - Vue breadcrumbs in 40 lines of code that allows nested paths without child views.
  • vue-nav - Page navigation manager, support all navigation function of native mobile app. 页面导航管理器,支持手机原生应用的所有导航功能。
  • vue-2-crumbs - Breadcrumbs plugin for Vue.js 2 framework that allows to select parent route in route meta object with no need of sub-routing. Also allows using dynamic data.
  • vue-pesdk Vue.js wrapper for the PhotoEditorSDK
  • vue-resolve Resolve routes data before entering / rendering the component for that route.
  • vue-page-stack - Routing and navigation for your Vue SPA. Vue 单页应用导航管理器

Miscellaneous

  • vue-container - A simple dependency injection library for Vue 2.
  • vue-super - A simple plugin to call methods on parent components.
  • @skyrpex/props-to-local - Vue mixin that maps props to local data.
  • vue-inject - Dependency injection for Vue 2.x Components
  • vue-deepset - Interact with deeply nested fields in Vue/Vuex objects/state with v-model in Vue 1.x and 2.x
  • vue-gaspard - DOM helpers plugin for Vue.js
  • vue-configuration - A static configuration object for Vue.js
  • vue-lodash - A simple wrapper for integrating lodash to Vue 2.
  • vue-ramda - Vue Wrapper for ramda
  • vue-router-user-roles - Protects routes based on user roles. Add your own authentication.
  • vue-messenger - A series of useful enhancements to Vue component props: Transform, Enum-type, Numeric-type, Two-way data bindings.
  • vue-uuid-v4 - Plugin Vue2 to easy get UUIDv4
  • vue-async-operations - Managing async operations statuses in your Vue components
  • vue-direction - ? Direction aware hover in Vuejs
  • vue-unique-id - Generates unique component ids and component-scoped HTML ids.
  • stfalcon-vue-di - ⭐️ Lightweight DI for vue components️ ❤️

Web Workers

  • vue-worker - A Vue.js plugin to use webworkers in a simply way.
  • vue-log-worker - A Vue.js plugin to log error and vuex mutations to your backend through a web worker

JSX

  • jsx-vue-functional - A Babel plugin that brings syntactic sugar for Vue functional components.
  • jsx-event-modifiers - A Babel plugin that adds event modifiers similar to Vue templates to JSX.
  • jsx-v-model - A Babel plugin that brings v-model to JSX.
  • vue-jsx-sync - A Babel plugin that brings vue sync modifier to JSX.

Migration

  • vue-backbone - Vue.js Plugin to facilitate Backbone integration.

Web Sockets

  • vue-socket.io - Socket.io implementation for vuejs.
  • vue-websocket - Simple websocket (socket.io) plugin for Vue.js.
  • vue-echo - Integrates Laravel Echo into Vue, allows for easy registration of socket events.
  • vue-socket-cluster - Web Sockets for vue with uws(Micro web sockets) through socket cluster
  • vue-native-websocket - Native websocket implementation for Vuejs 2 and Vuex
  • vue-socket.io-extended - Socket.io bindings for Vue.js and Vuex
  • vue-phoenix - Elixir Phoenix Web Socket implmentation for vuejs. Also provides typescript decorator for better use.

Payment

Payment utilities.

Stripe
Paypal
Plaid

Integrations

Integrate with services or other frameworks

  • vue-disqus - Vue component to integrate Disqus comments in your application, with support for SPA.
  • vue-youtube-embed - Vue.js and YouTube.
  • vue-add-to-calendar - A Vue.js component that provides "Add to Calendar" functionality, works with Vue 2.X.
  • Vue + Meteor - Vue first-class integration in Meteor.
  • av-ts - A modern, type-safe, idiomatic Vue binding library.
  • Neutronium - Build .NET desktop applications using HTML, CSS and javascript.
  • vue-typescript-jest - Jest preprocessor.js for Vue.js components (supporting html, pug, and babel) and TypeScript.
  • vue-jest-utils - Utilities for testing Vue.js components using Jest.
  • vue-custom-element - Vue Custom Element - Custom Elements for Vue.js.
  • vue-cordova - Vue.js plugin for Cordova.
  • vue-wamp - AutobahnJS wrapper library fo Vue.js.
  • express-vue - Vue rendering engine for Express.js. Use .Vue files as templates using res.render().
  • vue-grecaptcha - Google reCAPTCHA for VueJS 2
  • vue-recaptcha - Google reCAPTCHA component for Vue.js
  • require-vuejs - RequireJS plugin to async and dynamic load and parse .vue components.
  • facebook-login-vuejs - Vue Component for Authenticating your Facebook App and get the benefits of Facebook Login.
  • vuejs/vuefire - Official Firebase Integration for VueJS
  • vuefire - Firebase for VueJS and Vuex
  • vue-runkit - RunKit Embed for Vue.js
  • vue-youtube - Provides a simple layer for you to use your imagination while over the YouTube IFrame Player API. (Compatible with SSR)
  • vue-introjs - Integrates intro.js step-by-step guide and feature introduction with Vue.js http://introjs.com/.
  • vue-loopback - Loopback and Vue application template
  • vue-laroute - Integrate Laravel routes into your VueJS application using laroute.
  • vue-raven - Automatically reports uncaught JavaScript exceptions triggered from vue component.
  • vue-telegram-login - Vue Component for Telegram Login by @vchaptsev
  • vuexpress - Vue + Express.js = VueXpress / A server side rendering engine for Express.js. Use .vue files as your express.js templates.
  • vue-fixer - A simple vue component for the fixer API.
  • amazon-cognito-vuex-module - Vuex module for Amazon Cognito.
  • vue-web3 - Web3 blockchain bindings for Vue.js (inspired by Vuefire and Drizzle)
  • sbt-vuefy - Vue.js integration for Playframework
  • loopback-vue-starter - LoopBack and Vue starter template with easy plugin management through vue-cli and vue ui.
  • vue.py - Write Vue.js Components in Python
  • vue-telegram-passport - Vue Component for Telegram Passport by @vchaptsev
  • vue-facebook-login-component - A fully customizable component for integrating Facebook login.
  • vue-programmatic-invisible-google-recaptcha - A simple invisible Google reCAPTCHA component focused solely on programmatic invocation.
  • vbuild - Its main purpose is to let you use components (.vue files) in your vuejs app, without a full nodejs stack. Since 0.6 versions : you can create your component in pure python !
  • feathers-vuex - is a first class integration of the Feathers Client and Vuex. It implements many Redux best practices under the hood, eliminates a lot of boilerplate code, and still allows you to easily customize the Vuex store.
  • vue-nocaptcha - Aliyun noCAPTCHA component for Vue.js
  • ionic-vue - Vue.js integration for Ionic v4
  • vue-0xcert - Vue.js integration for 0xcert Framework - an open-source library that provides tools for building powerful decentralized applications
  • vue-zdog Vue wrapper for zDog - a minimalist 3D engine for the browser

Vue CLI 3 Plugins

Google Analytics
  • vue-ua - Google Universal Analytics support in Vue.js.
  • vue-analytics - Vue plugin for Google Analytics.
  • vue-gtm - Vue plugin for Google Tag Manager
Yandex Metrika

Dev Tools

  • vue-dev-server - A small development server for building vue components.
  • vuepack.org - A simple page that allows you to select Vue components and download them as a single minified JS file.
  • Storybook - The UI Development Environment. works with v3.2+ later.
  • Font Awesome Finder - Chrome extension to search, preview and choose Font Awesome icons and copy the selected icon HTML code & Unicode to clipboard.
  • vue-dummy - Placeholder Text and Dummy Images as a simple v-dummy directive.
  • Bit - Manage and reuse vue components between projects. Easily isolate and share components from any project without changing its source code, organize curated collections and install in different projects.
  • Vuenut - is a component to develop faster and more fluently.
  • ComponentFixture - is a component design to develop and test other components, automatically binding their props.
  • vue-cli-template-dev-server - A development server for building vue-cli custom templates.

Inspect

Inspecting & debugging

  • Vue.js devtools - Chrome devtools extension for debugging Vue.js applications.
  • DejaVue - Visualization and debugging tool built for Vue.js.
  • vue-clicky - Right click any component to show info about it in the console.
  • vuejs-logger - Provides customizable logging functionality for Vue.js.
  • bugsnag-vue - Official Vue.js plugin for bugsnag error reporting
  • vue-inspector - Vue.js Inspector for Mobile Devices
  • Vue Performance Devtool - Vue Performance Devtool is a browser extension for inspecting the performance of Vue Components
  • VueSource - Global Vue mixin which identifies components in source code by adding HTML comments
  • NW-Vue-DevTools - DevDependency for adding Vue DevTools into NW.js
  • bruit-io - Collect feedbacks with screenshot and technical data and post them to an API like bruit.io.

Docs

Create documentation

  • vue-markdown-loader - Convert Markdown file to Vue Component.
  • vue-play - A minimalistic framework for demonstrating your Vue components.
  • vue-styleguide-generator - React inspired style guide generator for Vue.js.
  • CheatSheet - Complete Interactive API.
  • Vuex CheatSheet - Complete Interactive Vuex API.
  • vue-styleguidist - A style guide generator for Vue components with a living style guide.
  • vue-elucidate - A component that generates beautiful documentation for your living styleguide / design system.
  • vue-md-loader - Markdown files to ALIVE Vue components.
  • @vuedoc/parser - Generate a JSON documentation for a Vue file component.
  • @vuedoc/md - Generate a Markdown Documentation for a Vue file.
  • jsdoc-vue-component - A jsodc3 plugin that extract vue SFC info(name, props, events...) to document.
  • jsdoc-vuedoc - A jsdoc3 plugin use @vuedoc/md.
  • vue-storybook – Add <story> blocks to your Vue single file components for tighter integration of Vue + Storybook
  • vue-patterns - Useful Vue patterns, techniques, tips and tricks and helpful curated links.
  • vuese - One-stop solution for vue component documentation.

Test

  • vue-container - A simple dependency injection library for Vue 2.
  • vuenit - Utilities for testing Vue components and directives.
  • vue-unit - A library for Vue.js that makes it easier to create and unit test components.
  • vue-a2b - A library for Split Testing with Vue.js. Highly configurable and tiny (1.2k gzipped).
  • vue-test-utils - Official utilities for testing Vue components.
  • vue-test-actions - Unit testing Vuex actions with Jest mocks.
  • jest-vue-matcher - Additional jest matchers for vue
  • vue-hubble - A better way to select elements for UI testing in Vue.
  • Vue Testing Library - Simple and complete testing utilities that encourage good testing practices. Based on DOM Testing Library and built upon the official Vue Test Utils.
Browser-less require

Load Vue components without browser

  • vuegister - Vuegister (a portmanteau of vue & register) is a require hook for loading of the Vue.js single-file components (or .vue files).
  • vue-node - Load vue components in node.

Source Code Editing

Text editor plugins

Atom

Sublime Text

Vim

  • Vim Vue - Syntax Highlight for Vue.js components.
  • vim-vue-plugin - Vim syntax and indent plugin for .vue files.

Visual Studio Code

  • Vetur - Vue tooling for VSCode.

Visual Studio

  • VuePack - Contains HTML Intellisense and code snippets for the Vue.js JavaScript library.

Brackets

Intellij

Emacs

  • Vue Mode - Emacs major mode for vue.js.

Kate

  • Kate Syntax Files - Syntax files (modified or original) for katepart (kate, kwrite, kdevelop).

Scaffold

Scaffold / boilerplate / seed / starter kits / stack ensemble / Yeoman generator

  • vue-cli - Simple CLI for scaffolding Vue.js projects.
  • Vue-Django - A boilerplate to set you up in bringing the awesomeness of VueJS into a Django (Python) app.
  • python-vuejs - Gluing Python web frameworks and Vue.js with a set of scripts. Basically a vue-cli wrapper.
  • generator-vue-plugin - Yeoman generator generating vue plugin.
  • vue-seed - vue-seed is minimal seed for those looking to get up-and-running with Vue
  • nuxt-seed - nuxt-seed is minimal seed for those looking to get up-and-running with Vue and Nuxt
  • rails_vue_melt - Rails view with webpack=vue optimizer.
  • vue-starter - A Vue.js starter kit that lets you focus on more programming and less configuration.
  • vue-standalone-component - A standalone component generator with documentation support using jsdoc and vue-styleguidist
  • vuejs-wordpress-theme-starter - A WordPress theme with the guts ripped out and replaced with Vue
  • Cordovue - A sample Apache Cordova application using Vue.
  • Cookiecutter-Django-Vue - Django+VueJS+Docker customizable project generator with a large number of settings/integrations by @vchaptsev
  • iBiu A visual CLI for scaffolding large Vue projects in 2 seconds.
  • wp-vue - A simple Vue blog template that displays posts from a WordPress REST API endpoint.
  • vue-cli-template-nativescript - Template for starting new nativescript+vue projects with rollup+babel+eslint
  • vue-element-ui-scaffold - Online and visual Vue 2 with Element-UI CRUD scaffold/generator.
  • vue-firebase-element-ui-scaffold - Online and visual Vue 2, Element-UI and Firebase scaffold/generator with CRUDs, authentication, file/image upload, activity log and more.
  • vuesion - The most complete boilerplate for production-ready PWAs. With focus on performance, development speed, and best practices
  • vue-vuex-typescript-webpack-seed - A seed project with Vue, Vuex, Typescript, Scss & Webpack with hot reloading
  • VueCharged Template - A highly opinionated, feature-first Vue 2 template with CLI scaffolding. Uses Vue 2, Vuex, Vue Router and Vue I18n.
  • Huncwot - Vue.js boilerplate with Node.js for building modern JavaScript applications with « batteries included » approach.
  • wemake-vue-template - Bleeding edge vue template focused on code quality and developer happiness. Featuring: nuxt, flow, and jest.
  • vue-lib-template - ? A simple template for building and publishing Vue component/library as a opensource.
  • Awesome Vue Boilerplate - ? Awesome Vue, ? Vuex, Vuex-pathify, element-ui, tailwindcss
  • ScaffoldHub.io - Generate full Vue applications with SQL, MongoDB or Firebase Firestore databases.
  • VuePlay - Generate disposable Vue playgrounds in seconds. Allows you to test things quickly.
  • Mevn-CLI - Light speed setup for MEVN stack based apps.
  • vue-cli-template-registry - A solution for installing vue-cli custom templates hosted on private/enterprise repositories.
  • vue-enterprise-boilerplate - An ever-evolving, very opinionated architecture and dev environment for new Vue SPA projects using Vue CLI 3.

Client

Render Vue application in the browser only

  • Vue Plugin Boilerplate - Boilerplate for Vue.js plugin.
  • Bourgeon - Bourgeon is an opinionated-featured VueJS 2.0 setup for Webpack.
  • VuePack - A modern starter which uses Vue 2, Vuex, Vue-router and Webpack 2 (and even Electron).
  • Vue Settler - An opinionated Vue 2.0 SPA Starter.
  • vue-build - Ultra Simple, Development, Testing and Production Build Cli.
  • Vue Element Starter - Robust Vue 2 starter with Element-UI.
  • vue-multiple-pages - A modern Vue.js multiple pages starter which uses Vue 2, Webpack2, and Element-UI
  • vue-typescript-boilerplate - A Vue.js typescript SPA starter with Vue 2, Vue Typed, Vuex, Vue Router and localization
  • vue-tachyons-template - A Vue 2 project starter template w/ Tachyons, Webpack, and ESLint
  • Vuets - A Vue, TypeScript ready boilerplate using class-style components, vue plugin options, webpack & vue-cli.
  • MMF-FE/vue-typescript - A vue2.x typescript template.
  • Friendly Vue Starter - A full featured Vue.js starter project with GraphQL support via Apollo-client (Vuex, Vue-router, Vue-i18n, Webpack 3, Eslint, Prettier, ...)
  • vue-webpack-typescript - A Vue 2.2 Webpack 2 and Typescript 2 setup with hot reload, unit testing, code coverage, sass and bundling/minification.
  • vue-ts-amd - A full-featured Vue.js 2 boilerplate using AMD pattern (RequireJS) and Typescript.
  • vue-2-boilerplate - Vue 2 boilerplate for developing medium to large single page applications by petervmeijgaard
  • layout - A full-featured Webpack + Vue Extend layout
  • layout-simple - A simple Webpack + Vue Extend layout
  • vue-cli-template-library - Template for developing open-source vue.js libraries with Rollup + Jest + Babel + Storybook + TravisCI + SemanticRelease.
  • vue-cli-template-github-pages - A full-featured Webpack + vue-loader setup for Github Pages Deployment with travisCI.
  • vue-webpack-chrome-extension-template - Template for quick creation of Chrome extension on Vuejs hot reloading when developing.
  • buildless-vue - Quickly use Vue without a build step.
  • vue-component-template - Webpack setup for building & publishing a Vue component/library (with docs/demo site).
  • vue-auth-boilerplate - Vue SPA boilerplate with Router/Vuex/CLI3 and auth functions (cool looking register and login). Works with minimal setup out of the box with laravel-api-boilerplate-jwt.
  • vue-atomic-design - Vue front-end boilerplate based on atomic design methodology.

Universal

Render Vue application to HTML on the server and to the DOM in the browser

  • SPA Starter Kit - A highly opinionated starter kit for building Single Page Applications with Laravel and Vue.js.
  • SSR Boilerplate - Vue.js Server Side Rendering Boilerplate without Polluting Vuex.
  • neutrino-preset-vue-static - A minimalistic starter kit for building static sites using Vue.js.
  • Vueniverse - A fully featured, universal Vue template for user-based applications, powered by Nuxt.js and Express.
  • vue-preload - A plugin Vue for adding <link rel="preload" capabilities
  • Vue.js/Nuxt.js full featured boilerplate professional agency frontend template for building fast, robust, and adaptable web apps or sites by vuejs/nuxtjs.

Server

Includes a backend boilerplate

  • Vuetober - Single page apps with Laravel, Vue.js, and October CMS.
  • Toucan - Boilerplate for building single page apps. Server is multi-project .Net Core solution designed around SOLID principles. Client is TypeScript 2, Vuejs 2, Vuex 2.
  • vue-server-demo - Writing koa server in Vue.
  • vue-apollo-connector-kit - JWT authentication with 2 different strategies (localStorage and httpOnly cookies). Authorization using custom directives (apollo).
  • DotVue - Implement .vue file handler in .NET with server ViewModel postback. Single-file components with server-side ViewModel. Use all power of VueJS with simple C# server side data access.
  • isomor-vue-app - Setup a working environment with Vue and isomor, to unify the frontend and the backend by generating automatically the API.

Electron

  • Electron Vue - An Electron & Vue.js quick start boilerplate with vue-cli scaffolding, common Vue plugins, electron-packager/electron-builder, unit/e2e testing, vue-devtools, and webpack.
  • VuePack - A modern starter which uses Vue 2, Vuex, Vue-router and Webpack 2 (and even Electron).
  • vue-flexible-link - Tiny Vue component for Electron to open links in a browser. Ideal for cross environment apps (Web & Native)
  • vuelectron - electronjs starter kits for vue.
  • vue-design - the best website visualization builder with Vue and Electron.
  • vue-cli-plugin-electron-builder - A Vue Cli 3 plugin for Electron with no required configuration that uses Electron Builder and Electron Webpack.
  • dapp - Boilerplate for stack of Vue/Parcel/Electron.
  • vue-electron-template - An Electron & Vue.js boilerplate with Hot-reloading enabled and common Vue plugins, dev and build scripts configured using webpack-4

Parts

Scaffold parts of the app

  • vue-generator - A CLI generator for Vue components, views and store modules.
  • vue-component-generator - A generator for vue component, supports Vue1.X and Vue2.X.
  • rapydml_cmp - Vue-component pythonic generator, built on top of RapydML & RapydScript.
  • vue-authoring-template - Template for authoring also publishing Vue component and their use case in story-scenario (storybook) format in easy way.
  • vue-component-boilerplate - Template for generating the boilerplate code for a VueJS components, with build scripts and testing pre-installed.
  • vue-generate-component-typescript - A typescript code generator for vue, it can generate components, directives, filters.

Runtime

Command Line / Terminal

  • blessed-vue - A VueJS runtime to let you write command line UI in Vue Edit

Prerendering

  • react-snap - A zero-configuration static pre-renderer for SPA
  • prerender-plugin - A Node.js/ webpack plugin to prerender static HTML in a single-page application (SPA).
  • vue-prerender - A Vue.js tailored plugin which implements three strategies for prerendering Vue.js pages using headless chrome.
  • Rendora - dynamic SSR (server-side rendering) using headless Chrome to effortlessly solve the SEO problem for modern javascript websites

 

原文:https://github.com/vuejs/awesome-vue

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of awesome things related to Vue.js

【工作流引擎】精选的开源工作流引擎列表

Chinese, Simplified

awesome-workflow-engines

A curated list of awesome open source workflow engines

Full fledged product

  • Airflow Stars - Python-based platform for running directed acyclic graphs (DAGs) of tasks
  • Argo Stars - Open source container-native workflow engine for getting work done on Kubernetes
  • Azkaban Stars - Batch workflow job scheduler created at LinkedIn to run Hadoop jobs.
  • Brigade Stars - Brigade is a tool for running scriptable, automated tasks in the cloud — as part of your Kubernetes cluster.
  • Cadence Stars - An orchestration engine to execute asynchronous long-running business logic developed by Uber Engineering.
  • CloudSlang Stars - Workflow engine to automate your DevOps use cases.
  • Conductor Stars - Netflix's Conductor is an orchestration engine that runs in the cloud.
  • Copper Stars - A high performance Java workflow engine.
  • Cromwell Stars - Workflow engine written in Scala and designed for simplicity and scalability. Executes workflows written in WDL or CWL.
  • Cylc Stars - Workflow engine that orchestrates complex distributed workflows with cyclic or acyclic graphs. It was originally designed to automate weather forecasting systems at NIWA.
  • DigDag Stars - Digdag is a simple tool that helps you to build, run, schedule, and monitor complex pipelines of tasks.
  • Fission Workflows Stars - A high-perfomant workflow engine for serverless functions on Kubernetes.
  • Flor Stars - A workflow engine written in Ruby.
  • Imixs-Workflow Stars - A powerful human-centric Workflow Engine based on the BPMN 2.0 standard.
  • Kiba Stars - Data processing & ETL framework for Ruby
  • Mistral Stars - Workflow service, in OpenStack foundation.
  • Oozie Stars - Workflow Scheduler for Hadoop.
  • Pegasus Stars - Automate, recover, and debug scientific computations.
  • Pinball Stars - scalable workflow manager by Pinterest
  • Piper Stars - A distributed Java workflow engine designed to be dead simple.
  • RunDeck Stars - Job Scheduler and Runbook Automation.
  • Titanoboa Stars - Titanoboa is a platform for creating complex workflows on JVM.
  • Wexflow Stars - A high-performance, extensible, modular and cross-platform workflow engine.
  • Workflow Core Stars - Workflow Core is a light weight workflow engine targeting .NET Standard.
  • Workflow Engine - A lightweight .NET and Java workflow engine.
  • Zeebe Stars - A workflow engine for microservices orchestration that's capable of executing BPMN models, developed by the team at Camunda

BPM Suite

  • Activiti Stars - Activiti is a leading lightweight, java-centric open-source BPMN engine supporting real-world process automation needs.
  • Activiti Cloud - is now the new generation of business automation platform offering a set of cloud native building blocks designed to run on distributed infrastructures.
  • Flowable Stars - The Flowable project provides a core set of open source business process engines that are compact and highly efficient. They provide a workflow and Business Process Management (BPM) platform for developers, system admins and business users.
  • jBPM Stars - The core of jBPM is a light-weight, extensible workflow engine written in pure Java that allows you to execute business processes using the latest BPMN 2.0 specification.

SAAS

  • Bip.io - Web Automation For People And Robots.
  • Zenaton - Workflow engine for data processes and background jobs available in PHP, Node.js, Python and Ruby.

Library (embedded usage)

  • Camunda Stars - Both a java library and optionally a full fledged product on top of it.
  • Captain Stars - Distributed, light-weight java workflow engine for a microservice architecture.
  • Luigi Stars - Python module that helps you build complex pipelines of batch jobs.
  • Viewflow Stars - Reusable workflow library that helps organize people collaboration business logic in django applications.
  • Workflow Core Stars - Lightweight workflow engine for .NET Standard

 

原文:https://github.com/meirwah/awesome-workflow-engines

本文:https://pub.intelligentx.net/curated-list-awesome-open-source-workflow-engines

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of awesome open source workflow engines

【开发工具】2022 年面向 Vue 开发人员的 5 大 VS Code 扩展

Chinese, Simplified

如果您是 Web 开发人员,很有可能正在使用 VS Code。毕竟,它是最流行的代码编辑器。在很大程度上,它的受欢迎程度主要归功于开源、高度可配置和可扩展性。

在本文中,我们将看看一些专门针对 Vue 的最佳 VS Code 扩展。随着Vue 3的采用,生态系统发生了很多变化,相关工具也不例外。这是您需要了解的有关正在进行的更改以及 2022 年要使用的扩展程序的所有信息!



随着 Vue 3 + TypeScript 组合越来越受欢迎,Vue 的官方 VS Code 扩展 — Vetur — 开始出现问题,例如将 Vue 与 TypeScript 一起使用时 CPU 使用率高,或者缺乏对 Vue 3 的新 <script setup> 语法的支持。

这就是创建 Volar 的原因——解决 Vetur 的问题,并为 Vue 3 + TypeScript 用户提供可能的最佳开发体验。它为 Vue 3 提供完整的语言支持——包括标准的单文件组件 (SFC) 语法及其最新添加的内容,如 <script setup>。



如果你正在使用 Vue 3——尤其是 TypeScript——你应该看看 Volar。它是 Vue 的创建者推荐的,也是 Vite 开发的推荐扩展。



尽管 Volar 是 Vue 3 的当前推荐,但 Vetur 不会很快消失。它仍然是目前最流行的 Vue 相关 VS Code 扩展,并且许多生态系统仍在 Vue 2 上运行,对于那些没有升级的人来说,它是最好的选择。

与 Volar 一样,Vetur 提供了完整的语言支持,虽然更加成熟和功能丰富,但在 Vue 3 和 TS 支持方面有所欠缺。您仍然可以在 Vue 3 和 TS 中使用它就好了,但您应该意识到可能缺乏经验。

已经有人讨论在 Vetur 下再次结合现代 Vue 工具;但是,目前,您仍然必须选择哪个用于您的工作流程。

想要使用 Vetur 的一些附加功能(Snippets、ESLint 和 Prettier 集成)但希望拥有良好的 Vue 3 + TS 体验的开发人员还有一个解决方案 - VueDX。



VueDX(又名 Vue 开发者体验)是一组工具,旨在改善 Vue 的开发体验——特别是对于那些将它与 TypeScript 一起使用的人。它与 Vetur 集成得非常好,填补了它的许多功能漏洞。

主要扩展 - VueDX - 扩展 TS 以提供 .vue SFC 的类型检查、完成、重命名和重构。此外,还有一个 SFC 语法高亮扩展和一个独特的预览——VueDX 扩展,用于在 VS Code 中实时预览 Vue 组件。

Vue VSCode 片段(Vue VSCode Snippets)



代码段一直是提高编码效率的好方法,在 Vue 中也不例外。

Vue VSCode Snippets 提供了一组很棒的代码段,可用于 Vue 2 和 Vue 3。有用于常见导入的代码段、Vue 3 的组合 API、选项 API、生命周期钩子等等。

这个扩展将很棒的 ESLint linter 直接集成到 VS Code 中,直接在你的代码中向你展示所有的 linting 问题。虽然不是特定于 Vue 的,但 Vue 为 ESLint 提供了官方插件,以确保您的 Vue 代码中的最佳实践的正确性和使用。

要正确配置您的设置,请确保遵循官方文档。该插件提供了许多 linting 规则,您可以通过提供的预设之一或一对一地使用它们。如果您使用的是 TypeScript — 您还应该查看 TypeScript ESLint 工具。



必备品



现在,除了上述所有内容之外,VS Code 市场充满了我认为无论您在做什么类型的 Web 开发都必不可少的扩展。以下是我个人的一些首选。

  • Prettier 是一种自以为是的代码格式,可以在任何配置的操作(例如文件保存)上快速格式化您的代码。支持开箱即用的 Vue SFC 语法。
  • GitLens 是一个功能丰富的扩展,可满足您所有的 Git 需求。我最喜欢的功能是 Git 修订导航、Git 代码镜头和丰富的 Git 侧边栏视图。

GitHub 存储库



谈到 Git,GitHub Repositories 是一个相当新的扩展(目前处于预览阶段),它允许您在舒适的 VS Code 编辑器中搜索、获取和浏览任何可访问的 GitHub 存储库的代码。将它与 GitLens 结合起来,在任何开源 Vue 项目上工作都将是一场爆炸!

值得注意的是,此扩展可能会在不久的将来成为内置功能。



代码拼写检查器(Code Spell Checker)



Code Spell Checker 鼓励您提高代码的可读性和语法正确性。它会根据任何已安装的字典检查您代码中的单词,以确保它首先是正确的和人类可读的。如果您想完善您的命名游戏 - 这是必不可少的。



TODO 亮点(TODO Highlight)



如果您习惯于在代码中留下大量 TODO 类型的注释,以便您将来应该做的事情,TODO Highlight 正适合您。它不仅会突出显示带有 // TODO: 或 // FIXME: 等标签的评论,还会向您展示所有 TODO 的摘要!



结论



就是这样了!希望您发现这篇文章很有见地,现在知道应该为 Vue 开发考虑哪些扩展。现在 Vue 生态系统发生了很多变化,我希望你和我一样兴奋地看到 2022 年的未来。

原文:https://medium.com/@epicprogrammer/top-5-vs-code-extensions-for-vue-dev…

本文:https://jiagoushi.pro/node/1646

SEO Title
Top 5 VS Code extensions for Vue developers for 2022

【首席架构师推荐】一个棒棒的Flutter库,工具,教程,文章列表。

Chinese, Simplified

Twitter StackOverflow Github Repositories Entries Awesome Thanks

Flutter is a mobile app SDK for building high-performance, high-fidelity, apps for iOS and Android, from a single codebase.

If you appreciate the content ?, support projects visibility, give ?| ⭐| ?

Contents

Articles

Introduction

Websites / Blogs

Tutorial

Beginner

Advanced

Howtos

Videos

Components

Demonstrations

Web Demonstration

UI

Sticky Headers

Drawers

Bottom bars

Sliders

UI Helpers

Material Design

Cupertino Design

Effect

Calendar

Backend-Driven

  • Dynamic Widget [239⭐] - Build your dynamic UI with json, and the json format is very similar with flutter widget code by Denny Deng.

Image

Map

Charts

Navigation

  • Fluro [1716⭐] - The brightest, hippest, coolest router for Flutter with Navigation, wildcard, query, transitions by Posse.
  • PageView Indicator [68⭐] - Build page indicators for the PageView by Leo Cavalcante.
  • Swiper [39⭐] - Horizontal, Vertical, Partial swipe with indicator by Xueliang Ren.

Auth

Text & Rich Content

Analytics

Build automation

Build solutions

Build articles

Styling

Media

Audio

Video

Voice

Storage

Preferences

Monetization

Templates

Web

Clone

Machine Learning

Vision

Augmented Reality

Plugins

  • Pub packages - Packages filter in Dart Pub Repository.
  • Plugins - Official Flutter Team Plugins.

Device

Scanner

Bluetooth / NFC / Beacon

Storage

Services

Log / Tracing

Frameworks

State management

Standard

  • Bloc [2483⭐] - Collection of packages that help implement the BLoC design pattern by Felix Angelov.
  • MobX [770⭐] - Supercharge the state-management in your apps with Transparent Functional Reactive Programming (TFRP). Port of MobX from the Js/React land.

Redux / ELM / Dependency Injection

  • Built redux [73⭐] - Automatic subscribing to your redux stores. Based on the built pattern by David Marne.
  • Redux.dart [323⭐] - Port of Redux to Dart with an ecosystem of middleware, Flutter integrations, and time traveling dev tools by John Ryan and Brian Egan.
  • Redux [992⭐] - Built to work with redux.dart, utilities that allow you to easily consume a Redux Store to build Widgets.
  • Inject [509⭐] - Compile-time dependency injection by Google.
  • Flux [321⭐] - Implementation of the Flux framework by Google.
  • Fish [5090⭐] - Alibaba Redux implementation.
  • Async Redux [43⭐] - Redux without boilerplate. Allows for both sync and async reducers by Marcelo Glasberg.

Widgets

Data

Animation

Game Engine

Misc

Testing

  • Ozzie [138⭐] - Ozzie will take an screenshot during integration tests whenever you need by Jorge Coca.
  • Flutter Gherkin [41⭐] - Fully featured Gherkin parser and UI automated test runner by Jon Samwell.

Others

  • AspectD [364⭐] - Aspect-oriented programming (AOP) framework for Flutter (Dart) by Kyle Wong.

Open Source Apps

Premium

Top

Games

Utilities

VSCode

IntelliJ / Android Studio

Desktop

Bonus

Fun

Hardware

Jobs/Interview Questions

Community

Presentation material

  • Logo - Logo for stickers impressions.

Communication

 

 

原文:https://github.com/Solido/awesome-flutter

本文:https://pub.intelligentx.net/node/731

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
An awesome list that curates the best Flutter libraries, tools, tutorials, articles and more.

【首席架构师推荐】关于React生态系统的一系列精选资源

Chinese, Simplified

A collection of awesome things regarding React ecosystem.


React

JavaScript Library for building User Interfaces

React General Resources

React Community

React Online Playgrounds

React Tutorials

React General Tutorials
React Hooks
React and TypeScript
React Performance
React Internals
React Interview Questions

React Tools

React Development Tools
React Frameworks
  • next.js - The React Framework
  • gatsby.js - Free and open source framework based on React
React Styling
  • styled-components - Visual primitives for the component age
  • emotion - Library designed for writing CSS styles with JavaScript
  • radium - A toolchain for React component styling
  • jss - Authoring tool for CSS
React Routing
  • react-router - Declarative routing for React
  • navi - Declarative, asynchronous routing for React
  • curi - JavaScript router for single-page applications
React Component Libraries
React Awesome Components
React for Command Line
  • ink - React for interactive command-line apps
  • react-blessed - A React renderer for blessed terminal interface library
React Testing
React Libraries
React Integration
Forms
Autocomplete
Graphics
Model Libraries
Data Managing
Maps
Charts

React Native

Framework for building native apps using React

React Native General Resources

React Native Tutorials

React Native Development Tools

React Native Sample Apps

React Native Boilerplates

React Native Awesome Components


React AR/VR

Usage of React for Augmented and Virtual Reality

  • React 360 - Create exciting 360 and VR experiences using React
  • Viro React - Platform for rapidly building AR/VR applications using React Native

ReasonReact

Reason bindings for ReactJS

Flux

Application Architecture for Building User Interfaces

Flux General Resources

Flux Implementations

Flux Tutorials


Redux

Predictable State Container for JavaScript Apps

Redux General Resources

Redux Tools

Redux Tutorials


MobX

Simple, scalable state management for JavaScript Apps

MobX General Resources

MobX Tools

MobX Tutorials


GraphQL

Query Language

GraphQL Spec

GraphQL Tools

GraphQL Tutorials

GraphQL Implementations

Server Integration

Database Integration


Relay

Data-Driven React Applications

Relay General Resources

Relay Tutorials

Relay Tools


Apollo

Data stack based on GraphQL

Apollo General Resources

Apollo Tools


Videos

reactjsvideos.com

Important Talks

React.js Conf 2015 Playlist

ReactEurope Conf 2015 Day 1 Playlist

ReactEurope Conf 2015 Day 2 Playlist

ReactRally Conf 2015 Playlist

React.js Conf 2016 Playlist

React Amsterdam 2016 Playlist

ReactEurope Conf 2016 Day 1 Playlist

ReactEurope Conf 2016 Day 2 Playlist

ReactRally Conf 2016 Playlist

React.js Amsterdam 2018 Playlist

Video Tutorials


Demos


Example Apps


Real apps

 

 

原文:https://github.com/enaqx/awesome-react

本文:https://pub.intelligentx.net/collection-awesome-things-regarding-react-ecosystem

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A collection of awesome things regarding React ecosystem.

【首席架构师精选】JavaScript图表库的比较

Chinese, Simplified

有不同的JavaScript图表库可用。下面是每种功能的比较。

ry Name     Supported Chart Types Supported Bar Chart Types Other Features Interactivity Rendering Technologies Databinding
License Free Line Timeline Scatter Area Pie Donut Bullet Radar Funnel Gantt Network Grouped Stacked Negative Discrete Horizontal 3D Legends Mouse Over onClick HTML5 Canvas SVG VML AxisXY
amCharts Proprietary Free with a link [1] or commercial[2] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes[3] Yes  
AnyChart Proprietary Free for education and non-profit use.[4] Paid for commercial applications.[5] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes
ApexCharts MIT[6] Yes Yes Yes Yes Yes Yes Yes No Yes No No No Yes Yes Yes Yes Yes   Yes Yes Yes No Yes No  
C3.js MIT[7] Yes Yes Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes   Yes Yes Yes No Yes No Yes
CanvasJS Proprietary[8] Free for Personal, Educational and Non-Commercial Uses Yes Yes Yes Yes Yes Yes No No Yes No No No Yes Yes Yes Yes   Yes Yes Yes Yes[9] No No Yes
canvasXpress GPLv3, name/email required for source link[10] Yes Yes No Yes Yes Yes No No No No No Yes Yes Yes No No Yes   Yes Yes Yes Yes[11] No Yes[12]  
Chartist WTFPL[13] or MIT[14] Yes Yes No Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes   No Yes Yes No Yes No  
Chart.js MIT[15] Yes Yes Yes Yes Yes Yes Yes No Yes No No No Yes Yes Yes Yes Yes   Yes Yes Yes Yes No No No
Chart Builder By Livegap Free Yes Yes No No Yes Yes Yes No Yes No No No No Yes Yes No Yes   Yes Yes Yes Yes No[16] No  
Charts 4 PHP Proprietary Free basic edition[17] No No Yes Yes Yes No No No No No No Yes No No Yes   Yes Yes Yes Yes No No    
Cytoscape.js MIT[18] Yes No No No No No No No No No No Yes No No No No No   No Yes Yes Yes No No Yes
D3.js, formerly Protovis[19][20] BSD-3[21] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes[22] Yes Yes Yes Yes Yes   Yes Yes Yes No Yes[23] No Yes
dc Apache 2.0[24] Yes Yes No Yes Yes Yes Yes Yes No No No No Yes Yes No No No   No Yes Yes No Yes[25] No  
DevExtreme Proprietary Non-commercial or commercial[26] Yes[27] Yes[28] Yes[29] Yes[30] Yes[31] Yes[32] Yes[33] Yes[34] Yes[35] No No Yes[36] Yes[37] Yes Yes[38] Yes No Yes Yes Yes[39] Yes[40] Yes No Yes
DHTMLX Charts GPL[41] Yes Yes No Yes Yes Yes Yes No Yes No Yes[42] No Yes Yes Yes No Yes   Yes Yes Yes Yes No Yes  
dimple MIT[43] Yes Yes No Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes   Yes Yes Yes No Yes No Yes
Dojo Charting BSD or AFL[44] Yes Yes No Yes Yes Yes No No No No No No Yes Yes Yes No Yes   Yes Yes Yes Yes Yes Yes[45]  
Dygraphs MIT[46] Yes Yes Yes No Yes No No No No No No No Yes Yes Yes Yes Yes   Yes Yes Yes Yes No No  
Echarts BSD-3[21] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes No Yes Yes Yes Yes Yes Yes No No Yes
Factmint Charts Proprietary Non-commercial or commercial [47] Yes Yes[48] Yes[49] Yes[50] Yes[51] No No No No No No No Yes[52] Yes[52] Yes[52]   Yes Yes Yes No Yes No    
Flot Charts MIT[53] Yes Yes Yes Yes Yes Yes Yes No No No No No No Yes No No No   Yes Yes Yes Yes[54] No No  
FusionCharts Proprietary Free for personal and non-commercial uses.[55] Paid for commercial applications.[56] Yes [57] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes   Yes Yes Yes No Yes Yes[58]    
Flotr2 MIT[59] Yes Yes No Yes No Yes No No Yes No No No Yes Yes Yes No Yes   Yes Yes Yes Yes[60] No No  
MuzeJS MIT[61] Yes No Yes Yes Yes Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes No Yes No Yes
LightningChart JS Proprietary Free for personal and non-commercial uses.[62] Paid for commercial applications.[63] Yes [64] Yes No Yes Yes Yes Yes No Yes Yes No No Yes No Yes Yes Yes No Yes No Yes No   Yes
Google Charts Free[65] Yes[65] Yes Yes Yes Yes Yes Yes[66] No No Yes[67] Yes[68] Yes Yes Yes[69] Yes[70] Yes Yes[71] Yes Yes Yes Yes[72] Yes Yes[73] Yes[73] Yes[74]
gRaphael MIT[75] Yes Yes No Yes No Yes No No No No No No Yes Yes No No Yes   Yes Yes No No Yes[76] No  
Highcharts, Highstock Proprietary Free for personal and non-commercial uses.[77] Paid for commercial applications.[78] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes[79] Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes
Library Name     Supported Chart Types Supported Bar Chart Types Other Features Interactivity Rendering Technologies Databinding
License   Line Timeline Scatter Area Pie Donut Bullet Radar Funnel Gantt Network Grouped Stacked Negative Discrete Horizontal 3D Legends Mouse Over onClick HTML5 Canvas SVG VML AxisXY
JenScript BSD-3[80] Yes Yes Yes Yes Yes Yes Yes No No No Yes Yes Yes Yes Yes Yes Yes   Yes Yes Yes No[81] Yes No Yes
jqPlot MIT or GPLv2[82] Yes Yes No Yes Yes Yes Yes No No No No No Yes Yes Yes No Yes   Yes Yes Yes Yes[83] No No  
jqxChart Proprietary Free with a link [84] or commercial[85] Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes  
JSCharting Proprietary[86] No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes No Yes Yes Yes No Yes No  
KoolChart Proprietary Free with a link [87] or commercial[88] Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes[89] No Yes Yes
MetricsGraphics Mozilla Public License Version 2.0[90] Yes Yes No Yes Yes No No No No No No No Yes Yes No Yes Yes   Yes Yes Yes No Yes Yes  
NextCharts Apache 2.0[91] Yes Yes No No Yes Yes No No No No No No Yes Yes Yes Yes Yes   Yes Yes Yes Yes No No Yes
NVD3 Apache 2.0[92] Yes Yes No Yes Yes Yes Yes Yes No No No No Yes Yes Yes Yes Yes   Yes Yes Yes No Yes[93] No  
OLAPCharts Proprietary Free basic edition[94] No Yes Yes Yes Yes Yes Yes No No No Yes Yes Yes Yes Yes   Yes Yes Yes Yes No No    
plotly.js MIT[95] Yes Yes Yes[96] Yes Yes Yes Yes via Bars & Scatter[97] Yes via Python[98] via Python[99] via Python[100] Yes Yes Yes Yes Yes   Yes Yes Yes No Yes[101] No  
PlusCharts Free Yes Yes No No Yes Yes No No No No No No Yes Yes No No Yes   Yes Yes Yes No Yes Yes  
ReactiveChart MIT[102] Yes Yes Yes Yes Yes Yes Yes No No No No Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes No Yes  
RGraph MIT[103] Yes Yes No Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes No Yes Yes Yes Yes Yes Yes Yes No  
rickshaw MIT[104] Yes Yes No Yes Yes No No No No No No No Yes Yes No No No   Yes Yes No No Yes[105] No  
Shield UI Proprietary Non-commercial or commercial[106] No Yes Yes Yes Yes No Yes No No No Yes Yes Yes Yes Yes   Yes Yes Yes No Yes Yes[107]    
Syncfusion Proprietary Free[108] or commercial[109] Yes Yes Yes Yes Yes Yes[110] Yes Yes Yes[111] No Yes Yes Yes Yes Yes [112] Yes Yes Yes Yes Yes Yes Yes [113]
TeeChart JS MIT[114] Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No  
Vaadin Charts Proprietary No[115] Yes Yes Yes Yes Yes No Yes Yes No No Yes Yes Yes Yes Yes   Yes Yes Yes No Yes Yes    
VanCharts Proprietary cc-by-nc 4.0 [116] or commercial [116] Yes Yes Yes Yes Yes Yes Yes No Yes No Yes Yes Yes Yes Yes   Yes Yes Yes Yes No Yes    
VisJS Apache 2.0 and MIT[117] Yes Yes[118] Yes[119] Yes[120] Yes[121] No No No No No Yes[122] Yes[123] Yes Yes Yes No No Yes[124] Yes Yes Yes Yes No No  
Webcharts MIT[125] Yes Yes Yes Yes No No No Yes No No No No Yes Yes No No Yes   Yes Yes Yes No Yes No  
Webix UI GPL[126] Yes Yes[127] No Yes[128] Yes[129] Yes[130] Yes[130] No Yes[131] No No No Yes[132] Yes[133] Yes No Yes[133]   Yes [134] Yes [135] Yes [136] Yes No Yes Yes
xcharts MIT[137] Yes Yes No No No No No No No No No No Yes No No No No   No Yes Yes No Yes[16] No  
YUI Charts BSD-3[138] Yes Yes No No Yes Yes No No No No No No Yes Yes No No No   Yes Yes No Yes Yes Yes[139]  
ZingChart Proprietary Free with a link [140] or commercial[141] No Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes   Yes Yes Yes Yes Yes Yes[142] Yes  
ZoomCharts Proprietary Non-commercial or commercial[143] Yes Yes Yes Yes Yes Yes No No No Yes Yes Yes Yes Yes Yes   Yes Yes Yes Yes[144] Yes No    
Library Name License Free Line Timeline Scatter Area Pie Donut Bullet Radar Funnel Gantt Network Grouped Stacked Negative Discrete Horizontal 3D Legends Mouse Over onClick HTML5 Canvas SVG VML AxisXY
    Supported Chart Types Supported Bar Chart Types Other Features Interactivity Rendering Technologies Databinding

 

原文:https://en.wikipedia.org/wiki/Comparison_of_JavaScript_charting_libraries

本文:https://pub.intelligentx.net/wikipedia-comparison-javascript-charting-libraries

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia :Comparison of JavaScript charting libraries

【首席架构师精选】精选JavaScript库列表

Chinese, Simplified

Constraint programming

DOM (manipulation) oriented

Graphical/visualization (canvas or SVG related)

See also: List of JavaScript graphics libraries

GUI (Graphical user interface) and widget related

No longer actively developed

Pure JavaScript/Ajax

Template systems

Unit testing

Web-application related (MVC, MVVM)

Other

See also

External links

 

原文:https://en.wikipedia.org/wiki/List_of_JavaScript_libraries

本文:https://pub.intelligentx.net/node/754

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of JavaScript libraries

数据工具

【ETL工具】精选的ETL(提取,转换,加载)框架,库和软件的精选列表。

Chinese, Simplified

awesome-etl

A curated list of notable ETL (extract, transform, load) frameworks, libraries and software.

Related Lists

Workflow Management/Engines

  • Airflow - "Use airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed."
  • Azkaban - "a batch workflow job scheduler created at LinkedIn to run Hadoop jobs. Azkaban resolves the ordering through job dependencies and provides an easy to use web user interface to maintain and track your workflows."
  • Dray.it - "Docker workflow engine. Allows users to separate a workflow into discrete steps each to be handled by a single container."
  • Luigi - "a Python module that helps you build complex pipelines of batch jobs. It handles dependency resolution, workflow management, visualization etc. It also comes with Hadoop support built in."
  • Mara - "A lightweight opinionated ETL framework, halfway between plain scripts and Apache Airflow"
  • Pinball - "a scalable workflow management platform developed at Pinterest. It is built based on layered approach."
  • TaskFlow - "allows the creation of lightweight task objects and/or functions that are combined together into flows (aka: workflows) in a declarative manner. It includes engines for running these flows in a manner that can be stopped, resumed, and safely reverted."
  • Toil - Similar to Luigi, jobs are classes with a run method. Supports executing jobs on other machines (workers) which can include AWS spot instances.

Job Scheduling

  • Chronos - "a distributed and fault-tolerant scheduler that runs on top of Apache Mesos that can be used for job orchestration."
  • Dagobah - "a simple dependency-based job scheduler written in Python. Dagobah allows you to schedule periodic jobs using Cron syntax. Each job then kicks off a series of tasks (subprocesses) in an order defined by a dependency graph you can easily draw with click-and-drag in the web interface."
  • Jenkins - "the leading open-source automation server. Built with Java, it provides over 1000 plugins to support automating virtually anything, so that humans can actually spend their time doing things machines cannot."

Java

  • GETL - Groovy toolbox for ETL Tasks from practicing architectures
  • JSR 352 - Java native API for batch processing
  • Scriptella - Java-XML ETL toolbox for every day use.
  • Spring Batch - ETL on Spring ecosystem

Python

Libraries

  • BeautifulSoup - Popular library used to extract data from web pages.
  • Blaze - "translates a subset of modified NumPy and Pandas-like syntax to databases and other computing systems."
  • Bonobo - Simple, modern and atomic data transformation graphs for Python 3.5+.
  • Bubbles - "a Python ETL Framework and set of tools. It can be used for processing, auditing and inspecting data. Focus is on understandability and transparency of the process."
  • Celery - "an asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation, but supports scheduling as well."
  • Dask - Ever tried using Pandas to process data that won't fit into memory? Dask makes it easy. Dask also has functionality to make it easy to processing continuous streams of data.
  • dataset - A wrapper around SQLAlchemy that simplifies database operations (including upserting).
  • ijson - Allows processing JSON iteratively (as a stream) without loading the whole file into memory at once.
  • Joblib - "a set of tools to provide lightweight pipelining in Python."
  • lxml - Parses XML using C libraries libxml2 and libxslt, so it's very fast. Also supports a "recover" mode that will try its best to use invalid xml or discard it. Great for large XML files and advanced functionality (like using xpaths). IBM also has a great article on high-performance parsing with lxml here: http://www.ibm.com/developerworks/library/x-hiperfparse/
  • MrJob - "lets you write MapReduce jobs in Python 2.6+ and run them on several platforms. The easiest route to writing Python programs that run on Hadoop."
  • Odo - Moves data across containers (SQL, CSV, MongoDB, Pandas, etc). Claims to be the easiest and fastest way to load a CSV into your database.
  • Pandas - Implements dataframes in Python for easier data processing and includes a number of tools that make it easier to extract data from multiple file formats.
  • parse - The opposite of Python's format(). Easier to use than regex, but more limited.
  • PETL - "a general purpose Python package for extracting, transforming and loading tables of data." Slower than Pandas and not as good for larger amounts of data, but simpler.
  • PyQuery - Extracts data from web pages with a jquery-like syntax.
  • Retrying - Allows you to add a decorator to any function/method to retry on an exception.
  • Requests-HTML - Combines PyQuery, Requests, parse, and other libraries for a pleasant and intuitive web scraping experience.
  • riko - A python stream processing engine modeled after Yahoo! Pipes.
  • Ruffus - "The Ruffus module is a lightweight way to add support for running computational pipelines."
  • SQLAlchemy - "the Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL."
  • Toolz - "A functional standard library for python." Includes a pipe function that allows you to pipe a value through a sequence of functions. There's also a cython implementation here: https://github.com/pytoolz/cytoolz
  • xmltodict - Makes working with XML as easy as working with JSON. Also allows streaming so you don't run out of memory on large XML files. Great for simple operations on small XML files.

Talks/Articles

Ruby

  • Kiba - "Data processing & ETL framework for Ruby"
  • nokogiri - an excellent XML parser that "just works"
  • Square ETL
  • Sequel - "The Database Toolkit for Ruby"
  • Embulk - "a parallel bulk data loader that helps data transfer between various storages, databases, NoSQL and cloud services."

Go

  • Crunch - "A fast to develop, fast to run, Go based toolkit for ETL and feature extraction on Hadoop."
  • Pachyderm - A system for running processing pipeline jobs in containers and version controlling all data using a commit-based distributed filesystem.

Javascript

  • Datapumps - "Use pumps to import, export, transform or transfer data."
  • NoFlo - "a JavaScript implementation of Flow-Based Programming"

Talks/Articles

Cloud Services

  • Alteryx - Cloud ETL tool with an interface similar to GUI ETL tools.
  • AWS Data Pipeline - "a web service that helps you reliably process and move data between different AWS compute and storage services, as well as on-premise data sources, at specified intervals."
  • AWS Glue - AWS Glue generates the code (using Python and Spark) to execute your data transformations and data loading processes.
  • Amazon Simple Workflow Service (SWF) - "helps developers build, run, and scale background jobs that have parallel or sequential steps. You can think of Amazon SWF as a fully-managed state tracker and task coordinator in the Cloud."
  • AWS Batch - Allows executing jobs as containerized applications running on Amazon ECS. Also includes features for dynamically bidding for Spot Instances, integration with existing workflow engines, scheduling, monitoring, dependency modeling, and dynamic scaling/provisioning based on amount of work.
  • Google Dataflow - "Google Cloud Dataflow provides a simple, powerful model for building both batch and streaming parallel data processing pipelines."

Big Data (Hadoop Stack)

  • Pig - "a platform for analyzing large data sets that consists of a high-level language for expressing data analysis programs, coupled with infrastructure for evaluating these programs."
  • Spark - "a fast and general-purpose cluster computing system. It provides high-level APIs in Scala, Java, and Python that make parallel jobs easy to write, and an optimized engine that supports general computation graphs. It also supports a rich set of higher-level tools including Shark (Hive on Spark), MLlib for machine learning, GraphX for graph processing, and Spark Streaming."

ETL Tools (GUI)

Warning: If you're already familiar with a scripting language, GUI ETL tools are not a good replacement for a well structured application written with a scripting language. These tools lack flexibility and are a good example of the "inner-platform effect". With a large project, you will most likely run into instances where "the tool doesn't do that" and end up implementing something hacky with a script run by the GUI ETL tool. Also, the GUI can conceal complexity and the files these tools generate are impossible to code review. However, the GUI and out-of-the-box functionality can make some tasks simpler, especially for people not comfortable with writing code.

  • Apache NiFi - "a rich, web-based interface for designing, controlling, and monitoring a dataflow."
  • Informatica PowerCenter - "a toolset for establishing and maintaining enterprise-wide data warehouses. It has a customer base of over 5,000 companies."
  • Microsoft SSIS - "a component of the Microsoft SQL Server database software that can be used to perform a broad range of data migration tasks."
  • Pentaho Kettle - The most popular open-source graphical ETL tool.
  • Talend - "an open source application for data integration job design with a graphical development environment"

 

原文:https://github.com/huiwenhan/awesome-etl

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of notable ETL (extract, transform, load) frameworks, libraries and software.

【工作流工具】精选计算数据分析工作流系统

Chinese, Simplified

Computational Data Analysis Workflow Systems

Permalink: https://s.apache.org/existing-workflow-systems

An incomplete list

Please add new entries at the bottom.

See also: https://github.com/pditommaso/awesome-pipeline

  1. Arvados http://arvados.org
  2. Taverna http://www.taverna.org.uk/
  3. Galaxy http://galaxyproject.org/
  4. SHIWA https://www.shiwa-workflow.eu/
  5. Oozie https://oozie.apache.org/
  6. DNANexus https://wiki.dnanexus.com/API-Specification-v1.0.0/IO-and-Run-Specifications# https://wiki.dnanexus.com/API-Specification-v1.0.0/Workflows-and-Analyses#
  7. BioDT http://www.biodatomics.com/
  8. Agave http://agaveapi.co/live-docs/
  9. DiscoveryEnvironment http://www.iplantcollaborative.org/ci/discovery-environment
  10. Wings http://www.wings-workflows.org/
  11. Knime https://www.knime.org/
  12. make, rake, drake, ant, scons & many others. Software development relies heavily on tools to manage workflows related to compiling and packaging applications. For the most part these are file based and usually run on a single node, usually supporting parallel steps (make -j) and in some cases able to dispatch build steps to other machines (https://code.google.com/p/distcc/https://github.com/Factual/drake
  13. Snakemake https://bitbucket.org/snakemake/snakemake
  14. BPipe http://bpipe.org
  15. Ruffus https://code.google.com/p/ruffus/
  16. NextFlow http://nextflow.io
  17. Luigi http://github.com/spotify/luigi https://luigi.readthedocs.io
  18. SciLuigi. Helper library built on top of Luigi to ease development of Scientific workflows in Luigi: http://github.com/pharmbio/sciluigi
  19. Luigi Analysis Workflow (LAW) https://github.com/riga/law
  20. GATK Queue https://www.broadinstitute.org/gatk/guide/topic?name=queue
  21. Yabi https://ccg.murdoch.edu.au/yabi
  22. seqware Workflows are written in Java and executed using the Oozie Workflow Engine on Hadoop or SGE clusters. Uses Zip64 files to group the workflow definition file, workflow itself, sample settings, and data dependencies in a single file that can be exchanged between SeqWare users or archived. https://seqware.github.io/ https://seqware.github.io/docs/6-pipeline/
  23. Ketrew https://github.com/hammerlab/ketrew
  24. Pegasus http://pegasus.isi.edu/
  25. Apache Airflow https://github.com/apache/airflow
  26. Cosmos https://cosmos.hms.harvard.edu/documentation/index.html http://bioinformatics.oxfordjournals.org/content/early/2014/07/24/bioinformatics.btu385.full [paper] Cosmos2: https://github.com/LPM-HMS/COSMOS2 http://cosmos.hms.harvard.edu/COSMOS2/
  27. Pinball https://github.com/pinterest/pinball
  28. bcbio https://bcbio-nextgen.readthedocs.org/en/latest/
  29. Chronos https://github.com/mesos/chronos
  30. Azkaban https://azkaban.github.io/
  31. Apache NiFi https://nifi.apache.org/docs/nifi-docs/html/overview.html
  32. flowr (R-based) http://docs.flowr.space/ https://github.com/sahilseth/flowr
  33. Mistral https://github.com/arteria-project https://wiki.openstack.org/wiki/Mistral#What_is_Mistral.3F https://docs.openstack.org/mistral/latest/user/wf_lang_v2.html
  34. nipype http://nipy.org/nipype/
  35. End of Day https://github.com/joestubbs/endofday
  36. BioDSL https://github.com/maasha/BioDSL
  37. BigDataScript http://pcingola.github.io/BigDataScript/
  38. Omics Pipe: uses Ruffus http://sulab.scripps.edu/omicspipe/
  39. Ensembl Hive https://github.com/Ensembl/ensembl-hive
  40. QuickNGS http://bifacility.uni-koeln.de/quickngs/web
  41. GenePattern http://www.broadinstitute.org/cancer/software/genepattern/
  42. Chipster http://chipster.csc.fi/
  43. The Genome Modeling System https://github.com/genome/gms
  44. Cuneiform, A Functional Workflow Language https://github.com/joergen7/cuneiform http://www.cuneiform-lang.org/
  45. Anvaya http://www.ncbi.nlm.nih.gov/pubmed/22809419 http://webapp.cabgrid.res.in/biocomp/Anvaya/ANVAYA_Main.html#HOWTO_INSTALL_ANVAYA
  46. Makeflow http://ccl.cse.nd.edu/software/makeflow/
  47. Airavata http://airavata.apache.org/
  48. Pyflow https://github.com/Illumina/pyflow
  49. Cluster Flow http://clusterflow.io
  50. Unipro UGENE http://ugene.net/ https://dx.doi.org/10.7717/peerj.644
  51. CloudSlang http://www.cloudslang.io/
  52. Stacks http://catchenlab.life.illinois.edu/stacks/
  53. Leaf http://www.francesconapolitano.it/leaf/index.html
  54. omictools http://omictools.com/
  55. Job Description Language. The Job Description Language, JDL, is a high-level, user-oriented language based on Condor classified advertisements for describing jobs and aggregates of jobs such as Direct Acyclic Graphs and Collections. https://edms.cern.ch/ui/file/590869/1/WMS-JDL.pdf
  56. YAWL yet another workflow language http://dx.doi.org/10.1016/j.is.2004.02.002 http://www.yawlfoundation.org/
  57. Triquetrum https://projects.eclipse.org/projects/technology.triquetrum https://github.com/eclipse/triquetrum/
  58. Kronos https://github.com/jtaghiyar/kronos
  59. qsubsec http://doi.org/10.1093/bioinformatics/btv698 https://github.com/alastair-droop/qsubsec
  60. YesWorkflow http://yesworkflow.org
  61. gwf - Grid WorkFlow https://github.com/gwforg/gwf http://gwf.readthedocs.io/
  62. Fireworks. https://pythonhosted.org/FireWorks/
  63. NGLess: NGS with less work http://ngless.rtfd.io
  64. pypipegraph https://github.com/TyberiusPrime/pypipegraph
  65. Cromwell https://github.com/broadinstitute/cromwell
  66. Dagobah - Simple DAG-based job scheduler in Python. https://github.com/thieman/dagobah
  67. sushi https://github.com/uzh/sushi
  68. Clinical Trial Processor - A program for processing clinical trials data. http://mircwiki.rsna.org/index.php?title=MIRC_CTP
  69. Noodles http://nlesc.github.io/noodles/
  70. Swift & Swift/T http://swift-lang.org/main/ http://swift-lang.org/Swift-T/
  71. Consonance (runs SeqWare & CWL) https://github.com/Consonance/consonance/wiki
  72. Dog https://github.com/dogtools/dog
  73. Produce https://github.com/texttheater/produce
  74. LONI Pipeline http://pipeline.loni.usc.edu/
  75. Cpipe https://github.com/MelbourneGenomics/cpipe
  76. AWE https://github.com/MG-RAST/AWE
  77. (Py)COMPSs https://www.bsc.es/research-and-development/software-and-apps/software-list/comp-superscalar/
  78. KLIKO https://github.com/gijzelaerr/kliko
  79. SoS Workflow https://github.com/vatlab/SoS https://vatlab.github.io/sos-docs/ https://doi.org/10.1093/bioinformatics/bty405 https://doi.org/10.1371/journal.pcbi.1006843
  80. XNAT Pipeline Engine https://wiki.xnat.org/display/XNAT/Pipeline+Engine https://wiki.xnat.org/display/XNAT/XNAT+Pipeline+Development+Schema
  81. Metapipe https://github.com/TorkamaniLab/metapipe
  82. OCCAM (Open Curation for Computer Architecture Modeling) https://occam.cs.pitt.edu/
  83. Copernicus http://www.copernicus-computing.org
  84. iRODS Rule Language https://github.com/samuell/irods-cheatsheets/blob/master/irods-rule-lang-full-guide.md
  85. VisTrails https://www.vistrails.org
  86. Bionode Watermill https://github.com/bionode/bionode-watermill
  87. BIOVIA Pipeline Pilot Overview http://accelrys.com/products/collaborative-science/biovia-pipeline-pilot/
  88. Dagman A meta-scheduler for HTCondor https://research.cs.wisc.edu/htcondor/dagman/dagman.html
  89. UNICORE https://www.unicore.eu/docstore/workflow-7.6.0/workflow-manual.html#wf_dialect
  90. Toil (A scalable, efficient, cross-platform and easy-to-use workflow engine in pure Python) https://github.com/BD2KGenomics/toil
  91. Cylc (a workflow engine for cycling systems) https://cylc.github.io/
  92. Autodesk Cloud Compute Canon https://github.com/Autodesk/cloud-compute-cannon
  93. Civet https://github.com/TheJacksonLaboratory/civet
  94. Cumulus https://github.com/Kitware/cumulus
  95. High-performance integrated virtual environment (HIVE) https://hive.biochemistry.gwu.edu
  96. Cloudgene http://cloudgene.uibk.ac.at/cloudgene-yaml
  97. FASTR https://bitbucket.org/bigr_erasmusmc/fastr/ http://fastr.readthedocs.io/en/stable/
  98. BioMake https://github.com/evoldoers/biomake http://dx.doi.org/10.1101/093245
  99. remake https://github.com/richfitz/remake
  100. SciFloware http://www-sop.inria.fr/members/Didier.Parigot/pmwiki/Scifloware/
  101. OpenAlea http://openalea.gforge.inria.fr/dokuwiki/doku.php https://hal.archives-ouvertes.fr/hal-01166298/file/openalea-PradalCohen-Boulakia.pdf
  102. COMBUSTI/O https://github.com/jarlebass/combustio http://hdl.handle.net/10037/9361
  103. BioCloud https://github.com/ccwang002/biocloud-server-kai http://doi.org/10.6342/NTU201601295
  104. Triana http://www.trianacode.org/ (website seems to have been taken over by SEO)
  105. Kepler https://kepler-project.org/
  106. Anduril http://anduril.org/site/
  107. dgsh http://www.dmst.aueb.gr/dds/sw/dgsh/
  108. EDGE bioinformatics: Empowering the Development of Genomics Expertise https://bioedge.lanl.gov/edge_ui/ http://edge.readthedocs.io/ https://lanl-bioinformatics.github.io/EDGE/
  109. Pachyderm http://pachyderm.io/ http://pachyderm.readthedocs.io/en/stable/advanced/advanced.html
  110. Digdag https://www.digdag.io/
  111. Agua / Automated Genomics Utilities Agent http://aguadev.org
  112. BioDepot Workflow Builder (BwB) https://github.com/BioDepot/BioDepot-workflow-builder https://doi.org/10.1101/099010
  113. IMP: a pipeline for reproducible reference-independent integrated metagenomic and metatranscriptomic analyses http://r3lab.uni.lu/web/imp/ https://doi.org/10.1186/s13059-016-1116-8
  114. Butler https://github.com/llevar/butler
  115. adage / yadage https://github.com/diana-hep/adage https://github.com/diana-hep/yadage
  116. HI-WAY: Execution of Scientific Workflows on Hadoop YARN https://github.com/marcbux/Hi-WAY https://openproceedings.org/2017/conf/edbt/paper-248.pdf
  117. OpenMOLE https://github.com/openmole/openmole https://www.openmole.org/ https://doi.org/10.3389/fninf.2017.00021
  118. Biopet https://github.com/biopet/biopet
  119. Nephele https://nephele.niaid.nih.gov/
  120. TOPPAS http://doi.org/10.1021/pr300187f
  121. SBpipe https://pdp10.github.io/sbpipe/ https://github.com/pdp10/sbpipe https://doi.org/10.1186/s12918-017-0423-3
  122. Dray http://dray.it/
  123. GenomeVIP https://github.com/ding-lab/GenomeVIP https://doi.org/10.1101/gr.211656.116
  124. GridSAM https://sourceforge.net/projects/gridsam/
  125. Roddy https://github.com/eilslabs/Roddy
  126. SciFlo (historical; doesn't seem to be maintained anymore) https://web.archive.org/web/20161118011409/https://sciflo.jpl.nasa.gov/SciFloWiki/FrontPage
  127. GNU Guix Workflow Language https://git.roelj.com/guix/gwl.git#gnu-guix-workflow-language-extension https://github.com/UMCUGenetics/guix-workflows/blob/master/umcu/workflows/rnaseq.scm
  128. Porcupine https://timvanmourik.github.io/Porcupine/
  129. Parsl (a Parallel Scripting Library for Python) http://parsl-project.org
  130. ECFLOW (Workflow primarily for Meteorological Applications) https://software.ecmwf.int/wiki/display/ECFLOW/ecflow+home
  131. Ophidia http://ophidia.cmcc.it/
  132. WebLicht https://weblicht.sfs.uni-tuebingen.de/
  133. GATE Cloud https://cloud.gate.ac.uk/
  134. SCIPION http://scipion.cnb.csic.es/m/home/ https://github.com/I2PC/scipion/wiki/Creating-a-Protocol
  135. Ergatis http://ergatis.sourceforge.net/
  136. TIGR "Workflow" https://sourceforge.net/projects/tigr-workflow/ http://tigr-workflow.sourceforge.net/
  137. Archivematica https://wiki.archivematica.org/Main_Page (A preservation workflow system that implements the ISO-OAIS standard using gearman/MCP)
  138. Martian http://martian-lang.org/about/
  139. BioMAJ http://genouest.github.io/biomaj/
  140. Conveyor http://conveyor.cebitec.uni-bielefeld.de (retired). https://academic.oup.com/bioinformatics/article/27/7/903/230562/Conveyor-a-workflow-engine-for-bioinformatic
  141. Biopipe http://www.biopipe.org (appears to be defunct) https://www.ncbi.nlm.nih.gov/pmc/articles/PMC403782/
  142. Wildfire http://wildfire.bii.a-star.edu.sg/ https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-6-69
  143. BioWBI http://bioinformatics.hsanmartino.it/bits_library/library/00079.pdf
  144. BioWMS http://bioinformatics.hsanmartino.it/bits_library/library/00568.pdf
  145. BioMoby http://biomoby.open-bio.org/ https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-7-523
  146. SIBIOS http://ieeexplore.ieee.org/document/1309094/
  147. NGSANE https://github.com/BauerLab/ngsane https://academic.oup.com/bioinformatics/article/30/10/1471/266879/NGSANE-a-lightweight-production-informatics
  148. Pwrake https://github.com/misshie/Workflows https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3180464/
  149. Nesoni https://github.com/Victorian-Bioinformatics-Consortium/nesoni
  150. Skam http://skam.sourceforge.net/skam-intro.html
  151. TREVA http://bioinformatics.petermac.org/treva/ http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0095217
  152. EGene https://www.semanticscholar.org/paper/EGene-a-configurable-pipeline-generation-system-fo-Durham-Kashiwabara/4c0656195b5efcdd3aa7bdcb55fc95a957c150aa https://academic.oup.com/bioinformatics/article/30/18/2659/2475637/EuGene-PP-a-next-generation-automated-annotation
  153. WEP https://bioinformatics.cineca.it/wep/ https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-14-S7-S11
  154. Microbase http://www.microbasecloud.com/
  155. e-Science Central http://www.esciencecentral.co.uk/ https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3538293/
  156. Cyrille2 https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-9-96
  157. PaPy https://code.google.com/archive/p/papy/ https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3051902/
  158. JobCenter https://github.com/yeastrc/jobcenter https://scfbm.biomedcentral.com/articles/10.1186/1751-0473-7-8
  159. CoreFlow https://www.ncbi.nlm.nih.gov/pubmed/24503186
  160. dynamic-pipeline https://code.google.com/archive/p/dynamic-pipeline/
  161. XiP http://xip.hgc.jp/wiki/en/Main_Page https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3530915/
  162. Eoulsan http://www.outils.genomique.biologie.ens.fr/eoulsan/ https://www.ncbi.nlm.nih.gov/pubmed/22492314
  163. CloudDOE http://clouddoe.iis.sinica.edu.tw/
  164. BioPig https://github.com/JGI-Bioinformatics/biopig https://www.ncbi.nlm.nih.gov/pubmed/24021384
  165. SeqPig https://github.com/HadoopGenomics/SeqPig https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3866557/
  166. zymake http://www-personal.umich.edu/~ebreck/code/zymake/
  167. JMS https://github.com/RUBi-ZA/JMS http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0134273
  168. CLC Genomics Workbench https://www.qiagenbioinformatics.com/products/clc-genomics-workbench/
  169. NG6 http://ng6.toulouse.inra.fr/ https://www.ncbi.nlm.nih.gov/pubmed/22958229
  170. VIBE http://www.incogen.com/vibe/
  171. WDL (Workflow Description Language) https://github.com/broadinstitute/wdl
  172. SciFlow https://github.com/kaizhang/SciFlow (not to be confused with SciFloware and SciFlo).
  173. Bioshake https://github.com/PapenfussLab/bioshake
  174. SciPipe http://scipipe.org
  175. Kapacitor / TICKscripts https://docs.influxdata.com/kapacitor/v1.3//tick/
  176. AiiDA: Automated Interactive Infrastructure and Database for Computational Science http://www.aiida.net/
  177. Reflow: a language and runtime for distributed, integrated data processing in the cloud https://github.com/grailbio/reflow
  178. Resolwe: an open source dataflow package for Django framework https://github.com/genialis/resolwe
  179. Yahoo! Pipes (historical) https://en.wikipedia.org/wiki/Yahoo!_Pipes
  180. Walrus https://github.com/fjukstad/walrus
  181. Apache Beam https://beam.apache.org/
  182. CLOSHA https://closha.kobic.re.kr/ https://www.bioexpress.re.kr/go_tutorial http://docplayer.net/19700397-Closha-manual-ver1-1-kobic-korean-bioinformation-center-kogun82-kribb-re-kr-2016-05-08-bioinformatics-workflow-management-system-in-bio-express.html https://doi.org/10.1186/s12859-018-2019-3
  183. WopMars https://github.com/aitgon/wopmars http://wopmars.readthedocs.io/
  184. flowing-clj https://github.com/stain/flowing-clj
  185. Plumbing and Graph https://github.com/plumatic/plumbing
  186. LabView http://www.ni.com/en-us/shop/labview.html
  187. MyOpenLab http://myopenlab.org/
  188. Max/MSP https://cycling74.com/products/max/
  189. NoFlo https://noflojs.org/
  190. Flowstone http://www.dsprobotics.com/flowstone.html
  191. HyperLoom https://code.it4i.cz/ADAS/loom https://code.it4i.cz/ADAS/loom
  192. Dask http://dask.pydata.org/en/latest/ https://github.com/dask/dask
  193. Stimela https://github.com/SpheMakh/Stimela https://github.com/SpheMakh/Stimela/wiki https://www.acru.ukzn.ac.za/~cosmosafari2017/wp-content/uploads/2017/02/makhathini.pdf
  194. JTracker https://jtracker.io/ https://github.com/jtracker-io
  195. PipelineDog http://pipeline.dog/ https://github.com/zhouanbo/pipelinedog https://doi.org/10.1093/bioinformatics/btx759
  196. DALiuGE https://arxiv.org/abs/1702.07617 https://github.com/ICRAR/daliuge https://daliuge.readthedocs.io/
  197. Overseer https://github.com/framed-data/overseer
  198. Squonk https://squonk.it/
  199. GC3Pie https://github.com/uzh/gc3pie
  200. Fractalide https://github.com/fractalide/fractalide
  201. TOGGLe https://doi.org/10.1101/245480 http://toggle.southgreen.fr/
  202. Askalon http://www.askalon.org
  203. Eclipse ICE (The Integrated Computational Environment) https://www.eclipse.org/ice
  204. Sandia Analysis Workbench (SAW) http://www.sandia.gov/saw/
  205. dispel4py https://github.com/dispel4py/dispel4py
  206. Jobber https://pypi.python.org/pypi/Jobber/0.1.4
  207. NeatSeq-Flow http://neatseq-flow.readthedocs.io/
  208. S4M https://bitbucket.org/uqokorn/s4m_base/wiki/Home
  209. Loom http://med.stanford.edu/gbsc/loom.html https://github.com/StanfordBioinformatics/loom http://loom.readthedocs.io/en/latest/templates.html
  210. Watchdog https://doi.org/10.1186/s12859-018-2107-4 https://github.com/klugem/watchdog
  211. phpflo https://github.com/phpflo/phpflo
  212. BASTet: Berkeley Analysis and Storage Toolkit https://openmsi.nersc.gov/openmsi/client/bastet.html https://biorack.github.io/BASTet/ https://doi.org/10.1109/TVCG.2017.2744479
  213. Tavaxy: Pattern based workflow system for the bioinformatics domain http://www.tavaxy.org/
  214. Ginflow: Decentralised adaptive workflow engine https://ginflow.inria.fr/
  215. SciApps: A cloud-based platform for reproducible bioinformatics workflows https://doi.org/10.1093/bioinformatics/bty439 https://www.sciapps.org/
  216. Stoa: Script Tracking for Observational Astronomy https://github.com/petehague/Stoa
  217. Collective Knowledge (CK) framework http://cknowledge.org/
  218. QosCosGrid (QCG) http://www.qoscosgrid.org/ http://www.qoscosgrid.org/trac/qcg-broker/wiki/qcg-advanced-client%20
  219. High-Throughput Binding Affinity Calculator (HTBAC) https://htbac.readthedocs.io/en/latest/ https://github.com/radical-cybertools/htbac https://arxiv.org/abs/1801.01174
  220. BioWorkbench (Swift-based) https://arxiv.org/abs/1801.03915 https://github.com/mmondelli/bioworkbench
  221. ENVI Task Engine https://gbdxdocs.digitalglobe.com/docs/envi-task-engine https://www.harrisgeospatial.com/Learn/Whitepapers/TabId/2359/ArtMID/10212/ArticleID/17299/Workflow-Tools-in-ENVI.aspx https://envi-py-engine.readthedocs.io/en/latest/index.html
  222. Pypeline https://github.com/cgarciae/pypeln
  223. mpipe http://vmlaker.github.io/mpipe/
  224. idseq-dag https://github.com/chanzuckerberg/idseq-dag
  225. Piper (based upon GATK Queue) https://github.com/NationalGenomicsInfrastructure/piper
  226. Apache Object Oriented Data Technology (OODT) http://oodt.apache.org/
  227. JX Workflow (DSL for Makeflow) https://ccl.cse.nd.edu/software/manuals/jx-quick.html http://ccl.cse.nd.edu/research/papers/jx-escience-2018.pdf
  228. The Adaptable IO System (ADIOS), ADIOS using applications can be the orchestrated into a workflow http://csmd.ornl.gov/adios
  229. GenPipes https://doi.org/10.1101/459552 https://bitbucket.org/mugqic/genpipes/src/master/
  230. Argo https://argoproj.github.io/ https://github.com/argoproj/argo https://github.com/argoproj/argo/blob/master/examples/README.md
  231. Reana https://reana.readthedocs.io/en/latest/ https://github.com/reanahub/reana
  232. Cuisine Framework https://www.astron.nl/~renting/cuisine.html
  233. Niassa https://github.com/oicr-gsi/niassa https://oicr-gsi.github.io/niassa-docs/
  234. pypeFLOW https://github.com/PacificBiosciences/pypeFLOW
  235. Tiny Cloud Engine http://ka.cb.k.u-tokyo.ac.jp/tce/
  236. Xbowflow https://github.com/ChrisSuess/Project-Xbow/tree/master/xbowflow
  237. AdaptiveMd https://github.com/markovmodel/adaptivemd
  238. Meshroom https://github.com/alicevision/meshroom
  239. LSST Data Management https://github.com/lsst/pipe_base
  240. CGAT-core https://github.com/cgat-developers/cgat-core
  241. Prefect https://docs.prefect.io/
  242. Apache SCXML engine https://commons.apache.org/proper/commons-scxml/guide/core-engine.html https://commons.apache.org/proper/commons-scxml/guide/scxml-documents.html
  243. IceProd https://github.com/WIPACrepo/iceprod
  244. AnADAMA2 http://huttenhower.sph.harvard.edu/anadama2
  245. Luna https://luna-lang.org/
  246. Passerelle https://code.google.com/archive/a/eclipselabs.org/p/passerelle
  247. Kurator-Akka https://github.com/kurator-org/kurator-akka
  248. Jug http://doi.org/10.5334/jors.161
  249. Node-RED https://nodered.org/
  250. Databolt Flow https://github.com/d6t/d6tflow
  251. Frictionless Data Package Pipelines https://github.com/frictionlessdata/datapackage-pipelines
  252. DataFlows https://github.com/datahq/dataflows
  253. Volcano https://github.com/volcano-sh/volcano
  254. DataJoint https://datajoint.io/
  255. DIRAC3 (LHCb grid software) https://iopscience.iop.org/article/10.1088/1742-6596/219/6/062029

 

原文:https://github.com/common-workflow-language/common-workflow-language/wiki/Existing-Workflow-systems

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
Computational Data Analysis Workflow Systems

【机器学习精选】精选的机器学习框架,库和软件的精选列表。

Chinese, Simplified

Awesome Machine Learning Awesome

A curated list of awesome machine learning frameworks, libraries and software (by language). Inspired by awesome-php.

If you want to contribute to this list (please do), send me a pull request or contact me @josephmisiti. Also, a listed repository should be deprecated if:

  • Repository's owner explicitly say that "this library is not maintained".
  • Not committed for long time (2~3 years).

Further resources:

  • For a list of free machine learning books available for download, go here.

  • For a list of (mostly) free machine learning courses available online, go here.

  • For a list of blogs and newsletters on data science and machine learning, go here.

  • For a list of free-to-attend meetups and local events, go here.

Table of Contents

Frameworks and Libraries

Tools

Credits

APL

General-Purpose Machine Learning

  • naive-apl - Naive Bayesian Classifier implementation in APL. [Deprecated]

C

General-Purpose Machine Learning

  • Darknet - Darknet is an open source neural network framework written in C and CUDA. It is fast, easy to install, and supports CPU and GPU computation.
  • Recommender - A C library for product recommendations/suggestions using collaborative filtering (CF).
  • Hybrid Recommender System - A hybrid recommender system based upon scikit-learn algorithms. [Deprecated]
  • neonrvm - neonrvm is an open source machine learning library based on RVM technique. It's written in C programming language and comes with Python programming language bindings.

Computer Vision

  • CCV - C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library.
  • VLFeat - VLFeat is an open and portable library of computer vision algorithms, which has Matlab toolbox.

C++

Computer Vision

  • DLib - DLib has C++ and Python interfaces for face detection and training general object detectors.
  • EBLearn - Eblearn is an object-oriented C++ library that implements various machine learning models [Deprecated]
  • OpenCV - OpenCV has C++, C, Python, Java and MATLAB interfaces and supports Windows, Linux, Android and Mac OS.
  • VIGRA - VIGRA is a generic cross-platform C++ computer vision and machine learning library for volumes of arbitrary dimensionality with Python bindings.

General-Purpose Machine Learning

  • BanditLib - A simple Multi-armed Bandit library. [Deprecated]
  • Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind. [DEEP LEARNING]
  • CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box. It is easy to install, contains fast inference implementation and supports CPU and GPU (even multi-GPU) computation.
  • CNTK - The Computational Network Toolkit (CNTK) by Microsoft Research, is a unified deep-learning toolkit that describes neural networks as a series of computational steps via a directed graph.
  • CUDA - This is a fast C++/CUDA implementation of convolutional [DEEP LEARNING]
  • DeepDetect - A machine learning API and server written in C++11. It makes state of the art machine learning easy to work with and integrate into existing applications.
  • Distributed Machine learning Tool Kit (DMTK) - A distributed machine learning (parameter server) framework by Microsoft. Enables training models on large data sets across multiple machines. Current tools bundled with it include: LightLDA and Distributed (Multisense) Word Embedding.
  • DLib - A suite of ML tools designed to be easy to imbed in other applications.
  • DSSTNE - A software library created by Amazon for training and deploying deep neural networks using GPUs which emphasizes speed and scale over experimental flexibility.
  • DyNet - A dynamic neural network library working well with networks that have dynamic structures that change for every training instance. Written in C++ with bindings in Python.
  • Fido - A highly-modular C++ machine learning library for embedded electronics and robotics.
  • igraph - General purpose graph library.
  • Intel(R) DAAL - A high performance software library developed by Intel and optimized for Intel's architectures. Library provides algorithmic building blocks for all stages of data analytics and allows to process data in batch, online and distributed modes.
  • LightGBM - Microsoft's fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.
  • libfm - A generic approach that allows to mimic most factorization models by feature engineering.
  • MLDB - The Machine Learning Database is a database designed for machine learning. Send it commands over a RESTful API to store data, explore it using SQL, then train machine learning models and expose them as APIs.
  • mlpack - A scalable C++ machine learning library.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • proNet-core - A general-purpose network embedding framework: pair-wise representations optimization Network Edit.
  • PyCUDA - Python interface to CUDA
  • ROOT - A modular scientific software framework. It provides all the functionalities needed to deal with big data processing, statistical analysis, visualization and storage.
  • shark - A fast, modular, feature-rich open-source C++ machine learning library.
  • Shogun - The Shogun Machine Learning Toolbox.
  • sofia-ml - Suite of fast incremental algorithms.
  • Stan - A probabilistic programming language implementing full Bayesian statistical inference with Hamiltonian Monte Carlo sampling.
  • Timbl - A software package/C++ library implementing several memory-based learning algorithms, among which IB1-IG, an implementation of k-nearest neighbor classification, and IGTree, a decision-tree approximation of IB1-IG. Commonly used for NLP.
  • Vowpal Wabbit (VW) - A fast out-of-core learning system.
  • Warp-CTC - A fast parallel implementation of Connectionist Temporal Classification (CTC), on both CPU and GPU.
  • XGBoost - A parallelized optimized general purpose gradient boosting library.
  • ThunderGBM - A fast library for GBDTs and Random Forests on GPUs.
  • ThunderSVM - A fast SVM library on GPUs and CPUs.
  • LKYDeepNN - A header-only C++11 Neural Network library. Low dependency, native traditional chinese document.
  • xLearn - A high performance, easy-to-use, and scalable machine learning package, which can be used to solve large-scale machine learning problems. xLearn is especially useful for solving machine learning problems on large-scale sparse data, which is very common in Internet services such as online advertisement and recommender systems.
  • Featuretools - A library for automated feature engineering. It excels at transforming transactional and relational datasets into feature matrices for machine learning using reusable feature engineering "primitives".
  • skynet - A library for learning neural network, has C-interface, net set in JSON. Written in C++ with bindings in Python, C++ and C#.
  • Feast - A feature store for the management, discovery, and access of machine learning features. Feast provides a consistent view of feature data for both model training and model serving.
  • Polyaxon - A platform for reproducible and scalable machine learning and deep learning.

Natural Language Processing

  • BLLIP Parser - BLLIP Natural Language Parser (also known as the Charniak-Johnson parser).
  • colibri-core - C++ library, command line tools, and Python binding for extracting and working with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
  • CRF++ - Open source implementation of Conditional Random Fields (CRFs) for segmenting/labeling sequential data & other Natural Language Processing tasks. [Deprecated]
  • CRFsuite - CRFsuite is an implementation of Conditional Random Fields (CRFs) for labeling sequential data. [Deprecated]
  • frog - Memory-based NLP suite developed for Dutch: PoS tagger, lemmatiser, dependency parser, NER, shallow parser, morphological analyzer.
  • libfolia - C++ library for the FoLiA format
  • MeTA - MeTA : ModErn Text Analysis is a C++ Data Sciences Toolkit that facilitates mining big text data.
  • MIT Information Extraction Toolkit - C, C++, and Python tools for named entity recognition and relation extraction
  • ucto - Unicode-aware regular-expression based tokenizer for various languages. Tool and C++ library. Supports FoLiA format.

Speech Recognition

  • Kaldi - Kaldi is a toolkit for speech recognition written in C++ and licensed under the Apache License v2.0. Kaldi is intended for use by speech recognition researchers.

Sequence Analysis

  • ToPS - This is an objected-oriented framework that facilitates the integration of probabilistic models for sequences over a user defined alphabet. [Deprecated]

Gesture Detection

  • grt - The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, C++ machine learning library designed for real-time gesture recognition.

Common Lisp

General-Purpose Machine Learning

  • mgl - Neural networks (boltzmann machines, feed-forward and recurrent nets), Gaussian Processes.
  • mgl-gpr - Evolutionary algorithms. [Deprecated]
  • cl-libsvm - Wrapper for the libsvm support vector machine library. [Deprecated]
  • cl-online-learning - Online learning algorithms (Perceptron, AROW, SCW, Logistic Regression).
  • cl-random-forest - Implementation of Random Forest in Common Lisp.

Clojure

Natural Language Processing

  • Clojure-openNLP - Natural Language Processing in Clojure (opennlp).
  • Infections-clj - Rails-like inflection library for Clojure and ClojureScript.

General-Purpose Machine Learning

  • Touchstone - Clojure A/B testing library. [Deprecated]
  • Clojush - The Push programming language and the PushGP genetic programming system implemented in Clojure.
  • Infer - Inference and machine learning in Clojure. [Deprecated]
  • Clj-ML - A machine learning library for Clojure built on top of Weka and friends. [Deprecated]
  • DL4CLJ - Clojure wrapper for Deeplearning4j.
  • Encog - Clojure wrapper for Encog (v3) (Machine-Learning framework that specializes in neural-nets). [Deprecated]
  • Fungp - A genetic programming library for Clojure. [Deprecated]
  • Statistiker - Basic Machine Learning algorithms in Clojure. [Deprecated]
  • clortex - General Machine Learning library using Numenta’s Cortical Learning Algorithm. [Deprecated]
  • comportex - Functionally composable Machine Learning library using Numenta’s Cortical Learning Algorithm. [Deprecated]
  • cortex - Neural networks, regression and feature learning in Clojure.
  • lambda-ml - Simple, concise implementations of machine learning techniques and utilities in Clojure.

Data Analysis / Data Visualization

  • Incanter - Incanter is a Clojure-based, R-like platform for statistical computing and graphics.
  • PigPen - Map-Reduce for Clojure.
  • Envision - Clojure Data Visualisation library, based on Statistiker and D3.

Crystal

General-Purpose Machine Learning

  • machine - Simple machine learning algorithm.
  • crystal-fann - FANN (Fast Artificial Neural Network) binding.

Elixir

General-Purpose Machine Learning

  • Simple Bayes - A Simple Bayes / Naive Bayes implementation in Elixir.
  • emel - A simple and functional machine learning library written in Elixir.

Natural Language Processing

  • Stemmer - An English (Porter2) stemming implementation in Elixir.

Erlang

General-Purpose Machine Learning

  • Disco - Map Reduce in Erlang. [Deprecated]
  • Yanni - ANN neural networks using Erlangs leightweight processes.

Go

Natural Language Processing

  • snowball - Snowball Stemmer for Go.
  • word-embedding - Word Embeddings: the full implementation of word2vec, GloVe in Go.
  • sentences - Golang implementation of Punkt sentence tokenizer.
  • go-ngram - In-memory n-gram index with compression. [Deprecated]
  • paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm. [Deprecated]
  • go-porterstemmer - A native Go clean room implementation of the Porter Stemming algorithm. [Deprecated]

General-Purpose Machine Learning

  • birdland - A recommendation library in Go.
  • eaopt - An evolutionary optimization library.
  • leaves - A pure Go implementation of the prediction part of GBRTs, including XGBoost and LightGBM.
  • gobrain - Neural Networks written in Go.
  • go-mxnet-predictor - Go binding for MXNet c_predict_api to do inference with pre-trained model.
  • go-ml-transpiler - An open source Go transpiler for machine learning models.
  • golearn - Machine learning for Go.
  • goml - Machine learning library written in pure Go.
  • gorgonia - Deep learning in Go.
  • therfoo - An embedded deep learning library for Go.
  • neat - Plug-and-play, parallel Go framework for NeuroEvolution of Augmenting Topologies (NEAT). [Deprecated]
  • go-pr - Pattern recognition package in Go lang. [Deprecated]
  • go-ml - Linear / Logistic regression, Neural Networks, Collaborative Filtering and Gaussian Multivariate Distribution. [Deprecated]
  • GoNN - GoNN is an implementation of Neural Network in Go Language, which includes BPNN, RBF, PCN. [Deprecated]
  • bayesian - Naive Bayesian Classification for Golang. [Deprecated]
  • go-galib - Genetic Algorithms library written in Go / Golang. [Deprecated]
  • Cloudforest - Ensembles of decision trees in Go/Golang. [Deprecated]

Spatial analysis and geometry

  • go-geom - Go library to handle geometries.
  • gogeo - Spherical geometry in Go.

Data Analysis / Data Visualization

  • gota - Dataframes.
  • gonum/mat - A linear algebra package for Go.
  • gonum/optimize - Implementations of optimization algorithms.
  • gonum/plot - A plotting library.
  • gonum/stat - A statistics library.
  • SVGo - The Go Language library for SVG generation.
  • glot - Glot is a plotting library for Golang built on top of gnuplot.
  • globe - Globe wireframe visualization.
  • gonum/graph - General-purpose graph library.
  • go-graph - Graph library for Go/Golang language. [Deprecated]
  • RF - Random forests implementation in Go. [Deprecated]

Computer vision

  • GoCV - Package for computer vision using OpenCV 4 and beyond.

Haskell

General-Purpose Machine Learning

  • haskell-ml - Haskell implementations of various ML algorithms. [Deprecated]
  • HLearn - a suite of libraries for interpreting machine learning models according to their algebraic structure. [Deprecated]
  • hnn - Haskell Neural Network library.
  • hopfield-networks - Hopfield Networks for unsupervised learning in Haskell. [Deprecated]
  • DNNGraph - A DSL for deep neural networks. [Deprecated]
  • LambdaNet - Configurable Neural Networks in Haskell. [Deprecated]

Java

Natural Language Processing

  • Cortical.io - Retina: an API performing complex NLP operations (disambiguation, classification, streaming text filtering, etc...) as quickly and intuitively as the brain.
  • IRIS - Cortical.io's FREE NLP, Retina API Analysis Tool (written in JavaFX!) - See the Tutorial Video.
  • CoreNLP - Stanford CoreNLP provides a set of natural language analysis tools which can take raw English language text input and give the base forms of words.
  • Stanford Parser - A natural language parser is a program that works out the grammatical structure of sentences.
  • Stanford POS Tagger - A Part-Of-Speech Tagger (POS Tagger).
  • Stanford Name Entity Recognizer - Stanford NER is a Java implementation of a Named Entity Recognizer.
  • Stanford Word Segmenter - Tokenization of raw text is a standard pre-processing step for many NLP tasks.
  • Tregex, Tsurgeon and Semgrex - Tregex is a utility for matching patterns in trees, based on tree relationships and regular expression matches on nodes (the name is short for "tree regular expressions").
  • Stanford Phrasal: A Phrase-Based Translation System
  • Stanford English Tokenizer - Stanford Phrasal is a state-of-the-art statistical phrase-based machine translation system, written in Java.
  • Stanford Tokens Regex - A tokenizer divides text into a sequence of tokens, which roughly correspond to "words".
  • Stanford Temporal Tagger - SUTime is a library for recognizing and normalizing time expressions.
  • Stanford SPIED - Learning entities from unlabeled text starting with seed sets using patterns in an iterative fashion.
  • Stanford Topic Modeling Toolbox - Topic modeling tools to social scientists and others who wish to perform analysis on datasets.
  • Twitter Text Java - A Java implementation of Twitter's text processing library.
  • MALLET - A Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text.
  • OpenNLP - a machine learning based toolkit for the processing of natural language text.
  • LingPipe - A tool kit for processing text using computational linguistics.
  • ClearTK - ClearTK provides a framework for developing statistical natural language processing (NLP) components in Java and is built on top of Apache UIMA. [Deprecated]
  • Apache cTAKES - Apache clinical Text Analysis and Knowledge Extraction System (cTAKES) is an open-source natural language processing system for information extraction from electronic medical record clinical free-text.
  • NLP4J - The NLP4J project provides software and resources for natural language processing. The project started at the Center for Computational Language and EducAtion Research, and is currently developed by the Center for Language and Information Research at Emory University. [Deprecated]
  • CogcompNLP - This project collects a number of core libraries for Natural Language Processing (NLP) developed in the University of Illinois' Cognitive Computation Group, for example illinois-core-utilities which provides a set of NLP-friendly data structures and a number of NLP-related utilities that support writing NLP applications, running experiments, etc, illinois-edison a library for feature extraction from illinois-core-utilities data structures and many other packages.

General-Purpose Machine Learning

  • aerosolve - A machine learning library by Airbnb designed from the ground up to be human friendly.
  • AMIDST Toolbox - A Java Toolbox for Scalable Probabilistic Machine Learning.
  • Datumbox - Machine Learning framework for rapid development of Machine Learning and Statistical applications.
  • ELKI - Java toolkit for data mining. (unsupervised: clustering, outlier detection etc.)
  • Encog - An advanced neural network and machine learning framework. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks. Encog trains using multithreaded resilient propagation. Encog can also make use of a GPU to further speed processing time. A GUI based workbench is also provided to help model and train neural networks.
  • FlinkML in Apache Flink - Distributed machine learning library in Flink.
  • H2O - ML engine that supports distributed learning on Hadoop, Spark or your laptop via APIs in R, Python, Scala, REST/JSON.
  • htm.java - General Machine Learning library using Numenta’s Cortical Learning Algorithm.
  • liblinear-java - Java version of liblinear.
  • Mahout - Distributed machine learning.
  • Meka - An open source implementation of methods for multi-label classification and evaluation (extension to Weka).
  • MLlib in Apache Spark - Distributed machine learning library in Spark
  • Hydrosphere Mist - a service for deployment Apache Spark MLLib machine learning models as realtime, batch or reactive web services.
  • Neuroph - Neuroph is lightweight Java neural network framework
  • ORYX - Lambda Architecture Framework using Apache Spark and Apache Kafka with a specialization for real-time large-scale machine learning.
  • Samoa SAMOA is a framework that includes distributed machine learning for data streams with an interface to plug-in different stream processing platforms.
  • RankLib - RankLib is a library of learning to rank algorithms. [Deprecated]
  • rapaio - statistics, data mining and machine learning toolbox in Java.
  • RapidMiner - RapidMiner integration into Java code.
  • Stanford Classifier - A classifier is a machine learning tool that will take data items and place them into one of k classes.
  • SmileMiner - Statistical Machine Intelligence & Learning Engine.
  • SystemML - flexible, scalable machine learning (ML) language.
  • Weka - Weka is a collection of machine learning algorithms for data mining tasks.
  • LBJava - Learning Based Java is a modeling language for the rapid development of software systems, offers a convenient, declarative syntax for classifier and constraint definition directly in terms of the objects in the programmer's application.

Speech Recognition

  • CMU Sphinx - Open Source Toolkit For Speech Recognition purely based on Java speech recognition library.

Data Analysis / Data Visualization

  • Flink - Open source platform for distributed stream and batch data processing.
  • Hadoop - Hadoop/HDFS.
  • Onyx - Distributed, masterless, high performance, fault tolerant data processing. Written entirely in Clojure.
  • Spark - Spark is a fast and general engine for large-scale data processing.
  • Storm - Storm is a distributed realtime computation system.
  • Impala - Real-time Query for Hadoop.
  • DataMelt - Mathematics software for numeric computation, statistics, symbolic calculations, data analysis and data visualization.
  • Dr. Michael Thomas Flanagan's Java Scientific Library [Deprecated]

Deep Learning

Javascript

Natural Language Processing

  • Twitter-text - A JavaScript implementation of Twitter's text processing library.
  • natural - General natural language facilities for node.
  • Knwl.js - A Natural Language Processor in JS.
  • Retext - Extensible system for analyzing and manipulating natural language.
  • NLP Compromise - Natural Language processing in the browser.
  • nlp.js - An NLP library built in node over Natural, with entity extraction, sentiment analysis, automatic language identify, and so more

Data Analysis / Data Visualization

  • D3.js
  • High Charts
  • NVD3.js
  • dc.js
  • chartjs
  • dimple
  • amCharts
  • D3xter - Straight forward plotting built on D3. [Deprecated]
  • statkit - Statistics kit for JavaScript. [Deprecated]
  • datakit - A lightweight framework for data analysis in JavaScript
  • science.js - Scientific and statistical computing in JavaScript. [Deprecated]
  • Z3d - Easily make interactive 3d plots built on Three.js [Deprecated]
  • Sigma.js - JavaScript library dedicated to graph drawing.
  • C3.js - customizable library based on D3.js for easy chart drawing.
  • Datamaps - Customizable SVG map/geo visualizations using D3.js. [Deprecated]
  • ZingChart - library written on Vanilla JS for big data visualization.
  • cheminfo - Platform for data visualization and analysis, using the visualizer project.
  • Learn JS Data
  • AnyChart
  • FusionCharts
  • Nivo - built on top of the awesome d3 and Reactjs libraries

General-Purpose Machine Learning

  • Auto ML - Automated machine learning, data formatting, ensembling, and hyperparameter optimization for competitions and exploration- just give it a .csv file!
  • Convnet.js - ConvNetJS is a Javascript library for training Deep Learning models[DEEP LEARNING] [Deprecated]
  • Clusterfck - Agglomerative hierarchical clustering implemented in Javascript for Node.js and the browser. [Deprecated]
  • Clustering.js - Clustering algorithms implemented in Javascript for Node.js and the browser. [Deprecated]
  • Decision Trees - NodeJS Implementation of Decision Tree using ID3 Algorithm. [Deprecated]
  • DN2A - Digital Neural Networks Architecture. [Deprecated]
  • figue - K-means, fuzzy c-means and agglomerative clustering.
  • Gaussian Mixture Model - Unsupervised machine learning with multivariate Gaussian mixture model.
  • Node-fann - FANN (Fast Artificial Neural Network Library) bindings for Node.js [Deprecated]
  • Keras.js - Run Keras models in the browser, with GPU support provided by WebGL 2.
  • Kmeans.js - Simple Javascript implementation of the k-means algorithm, for node.js and the browser. [Deprecated]
  • LDA.js - LDA topic modeling for Node.js
  • Learning.js - Javascript implementation of logistic regression/c4.5 decision tree [Deprecated]
  • machinelearn.js - Machine Learning library for the web, Node.js and developers
  • mil-tokyo - List of several machine learning libraries.
  • Node-SVM - Support Vector Machine for Node.js
  • Brain - Neural networks in JavaScript [Deprecated]
  • Brain.js - Neural networks in JavaScript - continued community fork of Brain.
  • Bayesian-Bandit - Bayesian bandit implementation for Node and the browser. [Deprecated]
  • Synaptic - Architecture-free neural network library for Node.js and the browser.
  • kNear - JavaScript implementation of the k nearest neighbors algorithm for supervised learning.
  • NeuralN - C++ Neural Network library for Node.js. It has advantage on large dataset and multi-threaded training. [Deprecated]
  • kalman - Kalman filter for Javascript. [Deprecated]
  • shaman - Node.js library with support for both simple and multiple linear regression. [Deprecated]
  • ml.js - Machine learning and numerical analysis tools for Node.js and the Browser!
  • ml5 - Friendly machine learning for the web!
  • Pavlov.js - Reinforcement learning using Markov Decision Processes.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • TensorFlow.js - A WebGL accelerated, browser based JavaScript library for training and deploying ML models.
  • JSMLT - Machine learning toolkit with classification and clustering for Node.js; supports visualization (see visualml.io).
  • xgboost-node - Run XGBoost model and make predictions in Node.js.
  • Netron - Visualizer for machine learning models.
  • WebDNN - Fast Deep Neural Network Javascript Framework. WebDNN uses next generation JavaScript API, WebGPU for GPU execution, and WebAssembly for CPU execution.

Misc

  • stdlib - A standard library for JavaScript and Node.js, with an emphasis on numeric computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.
  • sylvester - Vector and Matrix math for JavaScript. [Deprecated]
  • simple-statistics - A JavaScript implementation of descriptive, regression, and inference statistics. Implemented in literate JavaScript with no dependencies, designed to work in all modern browsers (including IE) as well as in Node.js.
  • regression-js - A javascript library containing a collection of least squares fitting methods for finding a trend in a set of data.
  • Lyric - Linear Regression library. [Deprecated]
  • GreatCircle - Library for calculating great circle distance.
  • MLPleaseHelp - MLPleaseHelp is a simple ML resource search engine. You can use this search engine right now at https://jgreenemi.github.io/MLPleaseHelp/, provided via Github Pages.

Demos and Scripts

  • The Bot - Example of how the neural network learns to predict the angle between two points created with Synaptic.
  • Half Beer - Beer glass classifier created with Synaptic.

Julia

General-Purpose Machine Learning

  • MachineLearning - Julia Machine Learning library. [Deprecated]
  • MLBase - A set of functions to support the development of machine learning algorithms.
  • PGM - A Julia framework for probabilistic graphical models.
  • DA - Julia package for Regularized Discriminant Analysis.
  • Regression - Algorithms for regression analysis (e.g. linear regression and logistic regression). [Deprecated]
  • Local Regression - Local regression, so smooooth!
  • Naive Bayes - Simple Naive Bayes implementation in Julia. [Deprecated]
  • Mixed Models - A Julia package for fitting (statistical) mixed-effects models.
  • Simple MCMC - basic mcmc sampler implemented in Julia. [Deprecated]
  • Distances - Julia module for Distance evaluation.
  • Decision Tree - Decision Tree Classifier and Regressor.
  • Neural - A neural network in Julia.
  • MCMC - MCMC tools for Julia. [Deprecated]
  • Mamba - Markov chain Monte Carlo (MCMC) for Bayesian analysis in Julia.
  • GLM - Generalized linear models in Julia.
  • Gaussian Processes - Julia package for Gaussian processes.
  • Online Learning [Deprecated]
  • GLMNet - Julia wrapper for fitting Lasso/ElasticNet GLM models using glmnet.
  • Clustering - Basic functions for clustering data: k-means, dp-means, etc.
  • SVM - SVM's for Julia. [Deprecated]
  • Kernel Density - Kernel density estimators for julia.
  • MultivariateStats - Methods for dimensionality reduction.
  • NMF - A Julia package for non-negative matrix factorization.
  • ANN - Julia artificial neural networks. [Deprecated]
  • Mocha - Deep Learning framework for Julia inspired by Caffe. [Deprecated]
  • XGBoost - eXtreme Gradient Boosting Package in Julia.
  • ManifoldLearning - A Julia package for manifold learning and nonlinear dimensionality reduction.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • Merlin - Flexible Deep Learning Framework in Julia.
  • ROCAnalysis - Receiver Operating Characteristics and functions for evaluation probabilistic binary classifiers.
  • GaussianMixtures - Large scale Gaussian Mixture Models.
  • ScikitLearn - Julia implementation of the scikit-learn API.
  • Knet - Koç University Deep Learning Framework.
  • Flux - Relax! Flux is the ML library that doesn't make you tensor

Natural Language Processing

  • Topic Models - TopicModels for Julia. [Deprecated]
  • Text Analysis - Julia package for text analysis.
  • Word Tokenizers - Tokenizers for Natural Language Processing in Julia
  • Corpus Loaders - A julia package providing a variety of loaders for various NLP corpora.
  • Embeddings - Functions and data dependencies for loading various word embeddings
  • Languages - Julia package for working with various human languages
  • WordNet - A Julia package for Princeton's WordNet

Data Analysis / Data Visualization

  • Graph Layout - Graph layout algorithms in pure Julia.
  • LightGraphs - Graph modeling and analysis.
  • Data Frames Meta - Metaprogramming tools for DataFrames.
  • Julia Data - library for working with tabular data in Julia. [Deprecated]
  • Data Read - Read files from Stata, SAS, and SPSS.
  • Hypothesis Tests - Hypothesis tests for Julia.
  • Gadfly - Crafty statistical graphics for Julia.
  • Stats - Statistical tests for Julia.
  • RDataSets - Julia package for loading many of the data sets available in R.
  • DataFrames - library for working with tabular data in Julia.
  • Distributions - A Julia package for probability distributions and associated functions.
  • Data Arrays - Data structures that allow missing values. [Deprecated]
  • Time Series - Time series toolkit for Julia.
  • Sampling - Basic sampling algorithms for Julia.

Misc Stuff / Presentations

  • DSP - Digital Signal Processing (filtering, periodograms, spectrograms, window functions).
  • JuliaCon Presentations - Presentations for JuliaCon.
  • SignalProcessing - Signal Processing tools for Julia.
  • Images - An image library for Julia.
  • DataDeps - Reproducible data setup for reproducible science.

Lua

General-Purpose Machine Learning

  • Torch7
    • cephes - Cephes mathematical functions library, wrapped for Torch. Provides and wraps the 180+ special mathematical functions from the Cephes mathematical library, developed by Stephen L. Moshier. It is used, among many other places, at the heart of SciPy. [Deprecated]
    • autograd - Autograd automatically differentiates native Torch code. Inspired by the original Python version.
    • graph - Graph package for Torch. [Deprecated]
    • randomkit - Numpy's randomkit, wrapped for Torch. [Deprecated]
    • signal - A signal processing toolbox for Torch-7. FFT, DCT, Hilbert, cepstrums, stft.
    • nn - Neural Network package for Torch.
    • torchnet - framework for torch which provides a set of abstractions aiming at encouraging code re-use as well as encouraging modular programming.
    • nngraph - This package provides graphical computation for nn library in Torch7.
    • nnx - A completely unstable and experimental package that extends Torch's builtin nn library.
    • rnn - A Recurrent Neural Network library that extends Torch's nn. RNNs, LSTMs, GRUs, BRNNs, BLSTMs, etc.
    • dpnn - Many useful features that aren't part of the main nn package.
    • dp - A deep learning library designed for streamlining research and development using the Torch7 distribution. It emphasizes flexibility through the elegant use of object-oriented design patterns. [Deprecated]
    • optim - An optimization library for Torch. SGD, Adagrad, Conjugate-Gradient, LBFGS, RProp and more.
    • unsup - A package for unsupervised learning in Torch. Provides modules that are compatible with nn (LinearPsd, ConvPsd, AutoEncoder, ...), and self-contained algorithms (k-means, PCA). [Deprecated]
    • manifold - A package to manipulate manifolds.
    • svm - Torch-SVM library. [Deprecated]
    • lbfgs - FFI Wrapper for liblbfgs. [Deprecated]
    • vowpalwabbit - An old vowpalwabbit interface to torch. [Deprecated]
    • OpenGM - OpenGM is a C++ library for graphical modeling, and inference. The Lua bindings provide a simple way of describing graphs, from Lua, and then optimizing them with OpenGM. [Deprecated]
    • spaghetti - Spaghetti (sparse linear) module for torch7 by @MichaelMathieu [Deprecated]
    • LuaSHKit - A lua wrapper around the Locality sensitive hashing library SHKit [Deprecated]
    • kernel smoothing - KNN, kernel-weighted average, local linear regression smoothers. [Deprecated]
    • cutorch - Torch CUDA Implementation.
    • cunn - Torch CUDA Neural Network Implementation.
    • imgraph - An image/graph library for Torch. This package provides routines to construct graphs on images, segment them, build trees out of them, and convert them back to images. [Deprecated]
    • videograph - A video/graph library for Torch. This package provides routines to construct graphs on videos, segment them, build trees out of them, and convert them back to videos. [Deprecated]
    • saliency - code and tools around integral images. A library for finding interest points based on fast integral histograms. [Deprecated]
    • stitch - allows us to use hugin to stitch images and apply same stitching to a video sequence. [Deprecated]
    • sfm - A bundle adjustment/structure from motion package. [Deprecated]
    • fex - A package for feature extraction in Torch. Provides SIFT and dSIFT modules. [Deprecated]
    • OverFeat - A state-of-the-art generic dense feature extractor. [Deprecated]
    • wav2letter - a simple and efficient end-to-end Automatic Speech Recognition (ASR) system from Facebook AI Research.
  • Numeric Lua
  • Lunatic Python
  • SciLua
  • Lua - Numerical Algorithms [Deprecated]
  • Lunum [Deprecated]

Demos and Scripts

  • Core torch7 demos repository.
    • linear-regression, logistic-regression
    • face detector (training and detection as separate demos)
    • mst-based-segmenter
    • train-a-digit-classifier
    • train-autoencoder
    • optical flow demo
    • train-on-housenumbers
    • train-on-cifar
    • tracking with deep nets
    • kinect demo
    • filter-bank visualization
    • saliency-networks
  • Training a Convnet for the Galaxy-Zoo Kaggle challenge(CUDA demo)
  • Music Tagging - Music Tagging scripts for torch7.
  • torch-datasets - Scripts to load several popular datasets including:
    • BSR 500
    • CIFAR-10
    • COIL
    • Street View House Numbers
    • MNIST
    • NORB
  • Atari2600 - Scripts to generate a dataset with static frames from the Arcade Learning Environment.

Matlab

Computer Vision

  • Contourlets - MATLAB source code that implements the contourlet transform and its utility functions.
  • Shearlets - MATLAB code for shearlet transform.
  • Curvelets - The Curvelet transform is a higher dimensional generalization of the Wavelet transform designed to represent images at different scales and different angles.
  • Bandlets - MATLAB code for bandlet transform.
  • mexopencv - Collection and a development kit of MATLAB mex functions for OpenCV library.

Natural Language Processing

  • NLP - An NLP library for Matlab.

General-Purpose Machine Learning

  • Training a deep autoencoder or a classifier on MNIST digits - Training a deep autoencoder or a classifier on MNIST digits[DEEP LEARNING].
  • Convolutional-Recursive Deep Learning for 3D Object Classification - Convolutional-Recursive Deep Learning for 3D Object Classification[DEEP LEARNING].
  • Spider - The spider is intended to be a complete object orientated environment for machine learning in Matlab.
  • LibSVM - A Library for Support Vector Machines.
  • ThunderSVM - An Open-Source SVM Library on GPUs and CPUs
  • LibLinear - A Library for Large Linear Classification.
  • Machine Learning Module - Class on machine w/ PDF, lectures, code
  • Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind.
  • Pattern Recognition Toolbox - A complete object-oriented environment for machine learning in Matlab.
  • Pattern Recognition and Machine Learning - This package contains the matlab implementation of the algorithms described in the book Pattern Recognition and Machine Learning by C. Bishop.
  • Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search. Optunity is written in Python but interfaces seamlessly with MATLAB.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • Machine Learning in MatLab/Octave - examples of popular machine learning algorithms (neural networks, linear/logistic regressions, K-Means, etc.) with code examples and mathematics behind them being explained.

Data Analysis / Data Visualization

  • matlab_bgl - MatlabBGL is a Matlab package for working with graphs.
  • gaimc - Efficient pure-Matlab implementations of graph algorithms to complement MatlabBGL's mex functions.

.NET

Computer Vision

  • OpenCVDotNet - A wrapper for the OpenCV project to be used with .NET applications.
  • Emgu CV - Cross platform wrapper of OpenCV which can be compiled in Mono to be run on Windows, Linus, Mac OS X, iOS, and Android.
  • AForge.NET - Open source C# framework for developers and researchers in the fields of Computer Vision and Artificial Intelligence. Development has now shifted to GitHub.
  • Accord.NET - Together with AForge.NET, this library can provide image processing and computer vision algorithms to Windows, Windows RT and Windows Phone. Some components are also available for Java and Android.

Natural Language Processing

  • Stanford.NLP for .NET - A full port of Stanford NLP packages to .NET and also available precompiled as a NuGet package.

General-Purpose Machine Learning

  • Accord-Framework -The Accord.NET Framework is a complete framework for building machine learning, computer vision, computer audition, signal processing and statistical applications.
  • Accord.MachineLearning - Support Vector Machines, Decision Trees, Naive Bayesian models, K-means, Gaussian Mixture models and general algorithms such as Ransac, Cross-validation and Grid-Search for machine-learning applications. This package is part of the Accord.NET Framework.
  • DiffSharp - An automatic differentiation (AD) library providing exact and efficient derivatives (gradients, Hessians, Jacobians, directional derivatives, and matrix-free Hessian- and Jacobian-vector products) for machine learning and optimization applications. Operations can be nested to any level, meaning that you can compute exact higher-order derivatives and differentiate functions that are internally making use of differentiation, for applications such as hyperparameter optimization.
  • Encog - An advanced neural network and machine learning framework. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks. Encog trains using multithreaded resilient propagation. Encog can also make use of a GPU to further speed processing time. A GUI based workbench is also provided to help model and train neural networks.
  • GeneticSharp - Multi-platform genetic algorithm library for .NET Core and .NET Framework. The library has several implementations of GA operators, like: selection, crossover, mutation, reinsertion and termination.
  • Infer.NET - Infer.NET is a framework for running Bayesian inference in graphical models. One can use Infer.NET to solve many different kinds of machine learning problems, from standard problems like classification, recommendation or clustering through to customised solutions to domain-specific problems. Infer.NET has been used in a wide variety of domains including information retrieval, bioinformatics, epidemiology, vision, and many others.
  • ML.NET - ML.NET is a cross-platform open-source machine learning framework which makes machine learning accessible to .NET developers. ML.NET was originally developed in Microsoft Research and evolved into a significant framework over the last decade and is used across many product groups in Microsoft like Windows, Bing, PowerPoint, Excel and more.
  • Neural Network Designer - DBMS management system and designer for neural networks. The designer application is developed using WPF, and is a user interface which allows you to design your neural network, query the network, create and configure chat bots that are capable of asking questions and learning from your feed back. The chat bots can even scrape the internet for information to return in their output as well as to use for learning.
  • Vulpes - Deep belief and deep learning implementation written in F# and leverages CUDA GPU execution with Alea.cuBase.

Data Analysis / Data Visualization

  • numl - numl is a machine learning library intended to ease the use of using standard modeling techniques for both prediction and clustering.
  • Math.NET Numerics - Numerical foundation of the Math.NET project, aiming to provide methods and algorithms for numerical computations in science, engineering and every day use. Supports .Net 4.0, .Net 3.5 and Mono on Windows, Linux and Mac; Silverlight 5, WindowsPhone/SL 8, WindowsPhone 8.1 and Windows 8 with PCL Portable Profiles 47 and 344; Android/iOS with Xamarin.
  • Sho - Sho is an interactive environment for data analysis and scientific computing that lets you seamlessly connect scripts (in IronPython) with compiled code (in .NET) to enable fast and flexible prototyping. The environment includes powerful and efficient libraries for linear algebra as well as data visualization that can be used from any .NET language, as well as a feature-rich interactive shell for rapid development.

Objective C

General-Purpose Machine Learning

  • YCML - A Machine Learning framework for Objective-C and Swift (OS X / iOS).
  • MLPNeuralNet - Fast multilayer perceptron neural network library for iOS and Mac OS X. MLPNeuralNet predicts new examples by trained neural network. It is built on top of the Apple's Accelerate Framework, using vectorized operations and hardware acceleration if available. [Deprecated]
  • MAChineLearning - An Objective-C multilayer perceptron library, with full support for training through backpropagation. Implemented using vDSP and vecLib, it's 20 times faster than its Java equivalent. Includes sample code for use from Swift.
  • BPN-NeuralNetwork - It implemented 3 layers neural network ( Input Layer, Hidden Layer and Output Layer ) and it named Back Propagation Neural Network (BPN). This network can be used in products recommendation, user behavior analysis, data mining and data analysis. [Deprecated]
  • Multi-Perceptron-NeuralNetwork - it implemented multi-perceptrons neural network (ニューラルネットワーク) based on Back Propagation Neural Network (BPN) and designed unlimited-hidden-layers.
  • KRHebbian-Algorithm - It is a non-supervisor and self-learning algorithm (adjust the weights) in neural network of Machine Learning. [Deprecated]
  • KRKmeans-Algorithm - It implemented K-Means the clustering and classification algorithm. It could be used in data mining and image compression. [Deprecated]
  • KRFuzzyCMeans-Algorithm - It implemented Fuzzy C-Means (FCM) the fuzzy clustering / classification algorithm on Machine Learning. It could be used in data mining and image compression. [Deprecated]

OCaml

General-Purpose Machine Learning

  • Oml - A general statistics and machine learning library.
  • GPR - Efficient Gaussian Process Regression in OCaml.
  • Libra-Tk - Algorithms for learning and inference with discrete probabilistic models.
  • TensorFlow - OCaml bindings for TensorFlow.

Perl

Data Analysis / Data Visualization

General-Purpose Machine Learning

Perl 6

Data Analysis / Data Visualization

General-Purpose Machine Learning

PHP

Natural Language Processing

  • jieba-php - Chinese Words Segmentation Utilities.

General-Purpose Machine Learning

  • PHP-ML - Machine Learning library for PHP. Algorithms, Cross Validation, Neural Network, Preprocessing, Feature Extraction and much more in one library.
  • PredictionBuilder - A library for machine learning that builds predictions using a linear regression.
  • Rubix ML - A high-level machine learning (ML) library that lets you build programs that learn from data using the PHP language.
  • 19 Questions - A machine learning / bayesian inference assigning attributes to objects.

Python

Computer Vision

  • Scikit-Image - A collection of algorithms for image processing in Python.
  • SimpleCV - An open source computer vision framework that gives access to several high-powered computer vision libraries, such as OpenCV. Written on Python and runs on Mac, Windows, and Ubuntu Linux.
  • Vigranumpy - Python bindings for the VIGRA C++ computer vision library.
  • OpenFace - Free and open source face recognition with deep neural networks.
  • PCV - Open source Python module for computer vision. [Deprecated]
  • face_recognition - Face recognition library that recognize and manipulate faces from Python or from the command line.
  • dockerface - Easy to install and use deep learning Faster R-CNN face detection for images and video in a docker container.
  • Detectron - FAIR's software system that implements state-of-the-art object detection algorithms, including Mask R-CNN. It is written in Python and powered by the Caffe2 deep learning framework.
  • albumentations - А fast and framework agnostic image augmentation library that implements a diverse set of augmentation techniques. Supports classification, segmentation, detection out of the box. Was used to win a number of Deep Learning competitions at Kaggle, Topcoder and those that were a part of the CVPR workshops.
  • pytessarct - Python-tesseract is an optical character recognition (OCR) tool for python. That is, it will recognize and "read" the text embedded in images.Python-tesseract is a wrapper for Google's Tesseract-OCR Engine>.
  • imutils - A library containg Convenience functions to make basic image processing operations such as translation, rotation, resizing, skeletonization, and displaying Matplotlib images easier with OpenCV and Python.
  • PyTorchCV - A PyTorch-Based Framework for Deep Learning in Computer Vision.

Natural Language Processing

  • pkuseg-python - A better version of Jieba, developed by Peking University.
  • NLTK - A leading platform for building Python programs to work with human language data.
  • Pattern - A web mining module for the Python programming language. It has tools for natural language processing, machine learning, among others.
  • Quepy - A python framework to transform natural language questions to queries in a database query language.
  • TextBlob - Providing a consistent API for diving into common natural language processing (NLP) tasks. Stands on the giant shoulders of NLTK and Pattern, and plays nicely with both.
  • YAlign - A sentence aligner, a friendly tool for extracting parallel sentences from comparable corpora. [Deprecated]
  • jieba - Chinese Words Segmentation Utilities.
  • SnowNLP - A library for processing Chinese text.
  • spammy - A library for email Spam filtering built on top of nltk
  • loso - Another Chinese segmentation library. [Deprecated]
  • genius - A Chinese segment base on Conditional Random Field.
  • KoNLPy - A Python package for Korean natural language processing.
  • nut - Natural language Understanding Toolkit. [Deprecated]
  • Rosetta - Text processing tools and wrappers (e.g. Vowpal Wabbit)
  • BLLIP Parser - Python bindings for the BLLIP Natural Language Parser (also known as the Charniak-Johnson parser). [Deprecated]
  • PyNLPl - Python Natural Language Processing Library. General purpose NLP library for Python. Also contains some specific modules for parsing common NLP formats, most notably for FoLiA, but also ARPA language models, Moses phrasetables, GIZA++ alignments.
  • python-ucto - Python binding to ucto (a unicode-aware rule-based tokenizer for various languages).
  • python-frog - Python binding to Frog, an NLP suite for Dutch. (pos tagging, lemmatisation, dependency parsing, NER)
  • python-zpar - Python bindings for ZPar, a statistical part-of-speech-tagger, constiuency parser, and dependency parser for English.
  • colibri-core - Python binding to C++ library for extracting and working with with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
  • spaCy - Industrial strength NLP with Python and Cython.
  • PyStanfordDependencies - Python interface for converting Penn Treebank trees to Stanford Dependencies.
  • Distance - Levenshtein and Hamming distance computation. [Deprecated]
  • Fuzzy Wuzzy - Fuzzy String Matching in Python.
  • jellyfish - a python library for doing approximate and phonetic matching of strings.
  • editdistance - fast implementation of edit distance.
  • textacy - higher-level NLP built on Spacy.
  • stanford-corenlp-python - Python wrapper for Stanford CoreNLP [Deprecated]
  • CLTK - The Classical Language Toolkit.
  • rasa_nlu - turn natural language into structured data.
  • yase - Transcode sentence (or other sequence) to list of word vector .
  • Polyglot - Multilingual text (NLP) processing toolkit.
  • DrQA - Reading Wikipedia to answer open-domain questions.
  • Dedupe - A python library for accurate and scalable fuzzy matching, record deduplication and entity-resolution.
  • Snips NLU - Natural Language Understanding library for intent classification and entity extraction
  • NeuroNER - Named-entity recognition using neural networks providing state-of-the-art-results
  • DeepPavlov - conversational AI library with many pretrained Russian NLP models.
  • BigARTM - topic modelling platform.

General-Purpose Machine Learning

  • PyOD -> Python Outlier Detection, comprehensive and scalable Python toolkit for detecting outlying objects in multivariate data. Featured for Advanced models, including Neural Networks/Deep Learning and Outlier Ensembles.
  • steppy -> Lightweight, Python library for fast and reproducible machine learning experimentation. Introduces very simple interface that enables clean machine learning pipeline design.
  • steppy-toolkit -> Curated collection of the neural networks, transformers and models that make your machine learning work faster and more effective.
  • CNTK - Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit. Documentation can be found here.
  • auto_ml - Automated machine learning for production and analytics. Lets you focus on the fun parts of ML, while outputting production-ready code, and detailed analytics of your dataset and results. Includes support for NLP, XGBoost, CatBoost, LightGBM, and soon, deep learning.
  • machine learning - automated build consisting of a web-interface, and set of programmatic-interface API, for support vector machines. Corresponding dataset(s) are stored into a SQL database, then generated model(s) used for prediction(s), are stored into a NoSQL datastore.
  • XGBoost - Python bindings for eXtreme Gradient Boosting (Tree) Library.
  • Apache SINGA - An Apache Incubating project for developing an open source machine learning library.
  • Bayesian Methods for Hackers - Book/iPython notebooks on Probabilistic Programming in Python.
  • Featureforge A set of tools for creating and testing machine learning features, with a scikit-learn compatible API.
  • MLlib in Apache Spark - Distributed machine learning library in Spark
  • Hydrosphere Mist - a service for deployment Apache Spark MLLib machine learning models as realtime, batch or reactive web services.
  • scikit-learn - A Python module for machine learning built on top of SciPy.
  • metric-learn - A Python module for metric learning.
  • SimpleAI Python implementation of many of the artificial intelligence algorithms described on the book "Artificial Intelligence, a Modern Approach". It focuses on providing an easy to use, well documented and tested library.
  • astroML - Machine Learning and Data Mining for Astronomy.
  • graphlab-create - A library with various machine learning models (regression, clustering, recommender systems, graph analytics, etc.) implemented on top of a disk-backed DataFrame.
  • BigML - A library that contacts external servers.
  • pattern - Web mining module for Python.
  • NuPIC - Numenta Platform for Intelligent Computing.
  • Pylearn2 - A Machine Learning library based on Theano.
  • keras - High-level neural networks frontend for TensorFlowCNTK and Theano.
  • Lasagne - Lightweight library to build and train neural networks in Theano.
  • hebel - GPU-Accelerated Deep Learning Library in Python. [Deprecated]
  • Chainer - Flexible neural network framework.
  • prophet - Fast and automated time series forecasting framework by Facebook.
  • gensim - Topic Modelling for Humans.
  • topik - Topic modelling toolkit. [Deprecated]
  • PyBrain - Another Python Machine Learning Library.
  • Brainstorm - Fast, flexible and fun neural networks. This is the successor of PyBrain.
  • Surprise - A scikit for building and analyzing recommender systems.
  • Crab - A flexible, fast recommender engine. [Deprecated]
  • python-recsys - A Python library for implementing a Recommender System.
  • thinking bayes - Book on Bayesian Analysis.
  • Image-to-Image Translation with Conditional Adversarial Networks - Implementation of image to image (pix2pix) translation from the paper by isola et al.[DEEP LEARNING]
  • Restricted Boltzmann Machines -Restricted Boltzmann Machines in Python. [DEEP LEARNING]
  • Bolt - Bolt Online Learning Toolbox. [Deprecated]
  • CoverTree - Python implementation of cover trees, near-drop-in replacement for scipy.spatial.kdtree [Deprecated]
  • nilearn - Machine learning for NeuroImaging in Python.
  • neuropredict - Aimed at novice machine learners and non-expert programmers, this package offers easy (no coding needed) and comprehensive machine learning (evaluation and full report of predictive performance WITHOUT requiring you to code) in Python for NeuroImaging and any other type of features. This is aimed at absorbing the much of the ML workflow, unlike other packages like nilearn and pymvpa, which require you to learn their API and code to produce anything useful.
  • imbalanced-learn - Python module to perform under sampling and over sampling with various techniques.
  • Shogun - The Shogun Machine Learning Toolbox.
  • Pyevolve - Genetic algorithm framework. [Deprecated]
  • Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind.
  • breze - Theano based library for deep and recurrent neural networks. [Deprecated]
  • pyhsmm - library for approximate unsupervised inference in Bayesian Hidden Markov Models (HMMs) and explicit-duration Hidden semi-Markov Models (HSMMs), focusing on the Bayesian Nonparametric extensions, the HDP-HMM and HDP-HSMM, mostly with weak-limit approximations.
  • mrjob - A library to let Python program run on Hadoop.
  • SKLL - A wrapper around scikit-learn that makes it simpler to conduct experiments.
  • neurolab
  • Spearmint - Spearmint is a package to perform Bayesian optimization according to the algorithms outlined in the paper: Practical Bayesian Optimization of Machine Learning Algorithms. Jasper Snoek, Hugo Larochelle and Ryan P. Adams. Advances in Neural Information Processing Systems, 2012. [Deprecated]
  • Pebl - Python Environment for Bayesian Learning. [Deprecated]
  • Theano - Optimizing GPU-meta-programming code generating array oriented optimizing math compiler in Python.
  • TensorFlow - Open source software library for numerical computation using data flow graphs.
  • pomegranate - Hidden Markov Models for Python, implemented in Cython for speed and efficiency.
  • python-timbl - A Python extension module wrapping the full TiMBL C++ programming interface. Timbl is an elaborate k-Nearest Neighbours machine learning toolkit.
  • deap - Evolutionary algorithm framework.
  • pydeep - Deep Learning In Python. [Deprecated]
  • mlxtend - A library consisting of useful tools for data science and machine learning tasks.
  • neon - Nervana's high-performance Python-based Deep Learning framework [DEEP LEARNING].
  • Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search.
  • Neural Networks and Deep Learning - Code samples for my book "Neural Networks and Deep Learning" [DEEP LEARNING].
  • Annoy - Approximate nearest neighbours implementation.
  • TPOT - Tool that automatically creates and optimizes machine learning pipelines using genetic programming. Consider it your personal data science assistant, automating a tedious part of machine learning.
  • pgmpy A python library for working with Probabilistic Graphical Models.
  • DIGITS - The Deep Learning GPU Training System (DIGITS) is a web application for training deep learning models.
  • Orange - Open source data visualization and data analysis for novices and experts.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • milk - Machine learning toolkit focused on supervised classification. [Deprecated]
  • TFLearn - Deep learning library featuring a higher-level API for TensorFlow.
  • REP - an IPython-based environment for conducting data-driven research in a consistent and reproducible way. REP is not trying to substitute scikit-learn, but extends it and provides better user experience. [Deprecated]
  • rgf_python - Python bindings for Regularized Greedy Forest (Tree) Library.
  • skbayes - Python package for Bayesian Machine Learning with scikit-learn API.
  • fuku-ml - Simple machine learning library, including Perceptron, Regression, Support Vector Machine, Decision Tree and more, it's easy to use and easy to learn for beginners.
  • Xcessiv - A web-based application for quick, scalable, and automated hyperparameter tuning and stacked ensembling.
  • PyTorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration
  • ML-From-Scratch - Implementations of Machine Learning models from scratch in Python with a focus on transparency. Aims to showcase the nuts and bolts of ML in an accessible way.
  • Edward - A library for probabilistic modeling, inference, and criticism. Built on top of TensorFlow.
  • xRBM - A library for Restricted Boltzmann Machine (RBM) and its conditional variants in Tensorflow.
  • CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box. It is easy to install, well documented and supports CPU and GPU (even multi-GPU) computation.
  • stacked_generalization - Implementation of machine learning stacking technic as handy library in Python.
  • modAL - A modular active learning framework for Python, built on top of scikit-learn.
  • Cogitare: A Modern, Fast, and Modular Deep Learning and Machine Learning framework for Python.
  • Parris - Parris, the automated infrastructure setup tool for machine learning algorithms.
  • neonrvm - neonrvm is an open source machine learning library based on RVM technique. It's written in C programming language and comes with Python programming language bindings.
  • Turi Create - Machine learning from Apple. Turi Create simplifies the development of custom machine learning models. You don't have to be a machine learning expert to add recommendations, object detection, image classification, image similarity or activity classification to your app.
  • xLearn - A high performance, easy-to-use, and scalable machine learning package, which can be used to solve large-scale machine learning problems. xLearn is especially useful for solving machine learning problems on large-scale sparse data, which is very common in Internet services such as online advertisement and recommender systems.
  • mlens - A high performance, memory efficient, maximally parallelized ensemble learning, integrated with scikit-learn.
  • Netron - Visualizer for machine learning models.
  • Thampi - Machine Learning Prediction System on AWS Lambda
  • MindsDB - Open Source framework to streamline use of neural networks.
  • Microsoft Recommenders: Examples and best practices for building recommendation systems, provided as Jupyter notebooks. The repo contains some of the latest state of the art algorithms from Microsoft Research as well as from other companies and institutions.
  • StellarGraph: Machine Learning on Graphs, a Python library for machine learning on graph-structured (network-structured) data.
  • BentoML: Toolkit for package and deploy machine learning models for serving in production
  • MiraiML: An asynchronous engine for continuous & autonomous machine learning, built for real-time usage.
  • numpy-ML: Reference implementations of ML models written in numpy
  • creme: A framework for online machine learning.
  • Neuraxle: A framework providing the right abstractions to ease research, development, and deployment of your ML pipelines.

Data Analysis / Data Visualization

  • SciPy - A Python-based ecosystem of open-source software for mathematics, science, and engineering.
  • NumPy - A fundamental package for scientific computing with Python.
  • Numba - Python JIT (just in time) compiler to LLVM aimed at scientific Python by the developers of Cython and NumPy.
  • Mars - A tensor-based framework for large-scale data computation which often regarded as a parallel and distributed version of NumPy.
  • NetworkX - A high-productivity software for complex networks.
  • igraph - binding to igraph library - General purpose graph library.
  • Pandas - A library providing high-performance, easy-to-use data structures and data analysis tools.
  • Open Mining - Business Intelligence (BI) in Python (Pandas web interface) [Deprecated]
  • PyMC - Markov Chain Monte Carlo sampling toolkit.
  • zipline - A Pythonic algorithmic trading library.
  • PyDy - Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion based around NumPy, SciPy, IPython, and matplotlib.
  • SymPy - A Python library for symbolic mathematics.
  • statsmodels - Statistical modeling and econometrics in Python.
  • astropy - A community Python library for Astronomy.
  • matplotlib - A Python 2D plotting library.
  • bokeh - Interactive Web Plotting for Python.
  • plotly - Collaborative web plotting for Python and matplotlib.
  • altair - A Python to Vega translator.
  • d3py - A plotting library for Python, based on D3.js.
  • PyDexter - Simple plotting for Python. Wrapper for D3xterjs; easily render charts in-browser.
  • ggplot - Same API as ggplot2 for R. [Deprecated]
  • ggfortify - Unified interface to ggplot2 popular R packages.
  • Kartograph.py - Rendering beautiful SVG maps in Python.
  • pygal - A Python SVG Charts Creator.
  • PyQtGraph - A pure-python graphics and GUI library built on PyQt4 / PySide and NumPy.
  • pycascading [Deprecated]
  • Petrel - Tools for writing, submitting, debugging, and monitoring Storm topologies in pure Python.
  • Blaze - NumPy and Pandas interface to Big Data.
  • emcee - The Python ensemble sampling toolkit for affine-invariant MCMC.
  • windML - A Python Framework for Wind Energy Analysis and Prediction.
  • vispy - GPU-based high-performance interactive OpenGL 2D/3D data visualization library.
  • cerebro2 A web-based visualization and debugging platform for NuPIC. [Deprecated]
  • NuPIC Studio An all-in-one NuPIC Hierarchical Temporal Memory visualization and debugging super-tool! [Deprecated]
  • SparklingPandas Pandas on PySpark (POPS).
  • Seaborn - A python visualization library based on matplotlib.
  • bqplot - An API for plotting in Jupyter (IPython).
  • pastalog - Simple, realtime visualization of neural network training performance.
  • Superset - A data exploration platform designed to be visual, intuitive, and interactive.
  • Dora - Tools for exploratory data analysis in Python.
  • Ruffus - Computation Pipeline library for python.
  • SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis).
  • somoclu Massively parallel self-organizing maps: accelerate training on multicore CPUs, GPUs, and clusters, has python API.
  • HDBScan - implementation of the hdbscan algorithm in Python - used for clustering
  • visualize_ML - A python package for data exploration and data analysis. [Deprecated]
  • scikit-plot - A visualization library for quick and easy generation of common plots in data analysis and machine learning.
  • Bowtie - A dashboard library for interactive visualizations using flask socketio and react.
  • lime - Lime is about explaining what machine learning classifiers (or models) are doing. It is able to explain any black box classifier, with two or more classes.
  • PyCM - PyCM is a multi-class confusion matrix library written in Python that supports both input data vectors and direct matrix, and a proper tool for post-classification model evaluation that supports most classes and overall statistics parameters
  • Dash - A framework for creating analytical web applications built on top of Plotly.js, React, and Flask
  • Lambdo - A workflow engine for solving machine learning problems by combining in one analysis pipeline (i) feature engineering and machine learning (ii) model training and prediction (iii) table population and column evaluation via user-defined (Python) functions.
  • TensorWatch - Debugging and visualization tool for machine learning and data science. It extensively leverages Jupyter Notebook to show real-time visualizations of data in running processes such as machine learning training.

Misc Scripts / iPython Notebooks / Codebases

Neural Networks

  • nn_builder - nn_builder is a python package that lets you build neural networks in 1 line
  • NeuralTalk - NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences.
  • Neuron - Neuron is simple class for time series predictions. It's utilize LNU (Linear Neural Unit), QNU (Quadratic Neural Unit), RBF (Radial Basis Function), MLP (Multi Layer Perceptron), MLP-ELM (Multi Layer Perceptron - Extreme Learning Machine) neural networks learned with Gradient descent or LeLevenberg–Marquardt algorithm. =======
  • NeuralTalk - NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences. [Deprecated]
  • Neuron - Neuron is simple class for time series predictions. It's utilize LNU (Linear Neural Unit), QNU (Quadratic Neural Unit), RBF (Radial Basis Function), MLP (Multi Layer Perceptron), MLP-ELM (Multi Layer Perceptron - Extreme Learning Machine) neural networks learned with Gradient descent or LeLevenberg–Marquardt algorithm. [Deprecated]
  • Data Driven Code - Very simple implementation of neural networks for dummies in python without using any libraries, with detailed comments.

Kaggle Competition Source Code

Reinforcement Learning

  • DeepMind Lab - DeepMind Lab is a 3D learning environment based on id Software's Quake III Arena via ioquake3 and other open source software. Its primary purpose is to act as a testbed for research in artificial intelligence, especially deep reinforcement learning.
  • Gym - OpenAI Gym is a toolkit for developing and comparing reinforcement learning algorithms.
  • Serpent.AI - Serpent.AI is a game agent framework that allows you to turn any video game you own into a sandbox to develop AI and machine learning experiments. For both researchers and hobbyists.
  • ViZDoom - ViZDoom allows developing AI bots that play Doom using only the visual information (the screen buffer). It is primarily intended for research in machine visual learning, and deep reinforcement learning, in particular.
  • Roboschool - Open-source software for robot simulation, integrated with OpenAI Gym.
  • Retro - Retro Games in Gym
  • SLM Lab - Modular Deep Reinforcement Learning framework in PyTorch.
  • Coach - Reinforcement Learning Coach by Intel® AI Lab enables easy experimentation with state of the art Reinforcement Learning algorithms

Ruby

Natural Language Processing

  • Awesome NLP with Ruby - Curated link list for practical natural language processing in Ruby.
  • Treat - Text REtrieval and Annotation Toolkit, definitely the most comprehensive toolkit I’ve encountered so far for Ruby.
  • Stemmer - Expose libstemmer_c to Ruby. [Deprecated]
  • Raspel - raspell is an interface binding for ruby. [Deprecated]
  • UEA Stemmer - Ruby port of UEALite Stemmer - a conservative stemmer for search and indexing.
  • Twitter-text-rb - A library that does auto linking and extraction of usernames, lists and hashtags in tweets.

General-Purpose Machine Learning

Data Analysis / Data Visualization

  • rsruby - Ruby - R bridge.
  • data-visualization-ruby - Source code and supporting content for my Ruby Manor presentation on Data Visualisation with Ruby. [Deprecated]
  • ruby-plot - gnuplot wrapper for Ruby, especially for plotting ROC curves into SVG files. [Deprecated]
  • plot-rb - A plotting library in Ruby built on top of Vega and D3. [Deprecated]
  • scruffy - A beautiful graphing toolkit for Ruby.
  • SciRuby
  • Glean - A data management tool for humans. [Deprecated]
  • Bioruby
  • Arel [Deprecated]

Misc

Rust

General-Purpose Machine Learning

  • deeplearn-rs - deeplearn-rs provides simple networks that use matrix multiplication, addition, and ReLU under the MIT license.
  • rustlearn - a machine learning framework featuring logistic regression, support vector machines, decision trees and random forests.
  • rusty-machine - a pure-rust machine learning library.
  • leaf - open source framework for machine intelligence, sharing concepts from TensorFlow and Caffe. Available under the MIT license. [Deprecated]
  • RustNN - RustNN is a feedforward neural network library. [Deprecated]
  • RusticSOM - A Rust library for Self Organising Maps (SOM).

R

General-Purpose Machine Learning

  • ahaz - ahaz: Regularization for semiparametric additive hazards regression. [Deprecated]
  • arules - arules: Mining Association Rules and Frequent Itemsets
  • biglasso - biglasso: Extending Lasso Model Fitting to Big Data in R.
  • bmrm - bmrm: Bundle Methods for Regularized Risk Minimization Package.
  • Boruta - Boruta: A wrapper algorithm for all-relevant feature selection.
  • bst - bst: Gradient Boosting.
  • C50 - C50: C5.0 Decision Trees and Rule-Based Models.
  • caret - Classification and Regression Training: Unified interface to ~150 ML algorithms in R.
  • caretEnsemble - caretEnsemble: Framework for fitting multiple caret models as well as creating ensembles of such models. [Deprecated]
  • CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box for R.
  • Clever Algorithms For Machine Learning
  • CORElearn - CORElearn: Classification, regression, feature evaluation and ordinal evaluation.
  • CoxBoost - CoxBoost: Cox models by likelihood based boosting for a single survival endpoint or competing risks [Deprecated]
  • Cubist - Cubist: Rule- and Instance-Based Regression Modeling.
  • e1071 - e1071: Misc Functions of the Department of Statistics (e1071), TU Wien
  • earth - earth: Multivariate Adaptive Regression Spline Models
  • elasticnet - elasticnet: Elastic-Net for Sparse Estimation and Sparse PCA.
  • ElemStatLearn - ElemStatLearn: Data sets, functions and examples from the book: "The Elements of Statistical Learning, Data Mining, Inference, and Prediction" by Trevor Hastie, Robert Tibshirani and Jerome Friedman Prediction" by Trevor Hastie, Robert Tibshirani and Jerome Friedman.
  • evtree - evtree: Evolutionary Learning of Globally Optimal Trees.
  • forecast - forecast: Timeseries forecasting using ARIMA, ETS, STLM, TBATS, and neural network models.
  • forecastHybrid - forecastHybrid: Automatic ensemble and cross validation of ARIMA, ETS, STLM, TBATS, and neural network models from the "forecast" package.
  • fpc - fpc: Flexible procedures for clustering.
  • frbs - frbs: Fuzzy Rule-based Systems for Classification and Regression Tasks. [Deprecated]
  • GAMBoost - GAMBoost: Generalized linear and additive models by likelihood based boosting. [Deprecated]
  • gamboostLSS - gamboostLSS: Boosting Methods for GAMLSS.
  • gbm - gbm: Generalized Boosted Regression Models.
  • glmnet - glmnet: Lasso and elastic-net regularized generalized linear models.
  • glmpath - glmpath: L1 Regularization Path for Generalized Linear Models and Cox Proportional Hazards Model.
  • GMMBoost - GMMBoost: Likelihood-based Boosting for Generalized mixed models. [Deprecated]
  • grplasso - grplasso: Fitting user specified models with Group Lasso penalty.
  • grpreg - grpreg: Regularization paths for regression models with grouped covariates.
  • h2o - A framework for fast, parallel, and distributed machine learning algorithms at scale -- Deeplearning, Random forests, GBM, KMeans, PCA, GLM.
  • hda - hda: Heteroscedastic Discriminant Analysis. [Deprecated]
  • Introduction to Statistical Learning
  • ipred - ipred: Improved Predictors.
  • kernlab - kernlab: Kernel-based Machine Learning Lab.
  • klaR - klaR: Classification and visualization.
  • L0Learn - L0Learn: Fast algorithms for best subset selection.
  • lars - lars: Least Angle Regression, Lasso and Forward Stagewise. [Deprecated]
  • lasso2 - lasso2: L1 constrained estimation aka ‘lasso’.
  • LiblineaR - LiblineaR: Linear Predictive Models Based On The Liblinear C/C++ Library.
  • LogicReg - LogicReg: Logic Regression.
  • Machine Learning For Hackers
  • maptree - maptree: Mapping, pruning, and graphing tree models. [Deprecated]
  • mboost - mboost: Model-Based Boosting.
  • medley - medley: Blending regression models, using a greedy stepwise approach.
  • mlr - mlr: Machine Learning in R.
  • ncvreg - ncvreg: Regularization paths for SCAD- and MCP-penalized regression models.
  • nnet - nnet: Feed-forward Neural Networks and Multinomial Log-Linear Models. [Deprecated]
  • pamr - pamr: Pam: prediction analysis for microarrays. [Deprecated]
  • party - party: A Laboratory for Recursive Partytioning.
  • partykit - partykit: A Toolkit for Recursive Partytioning.
  • penalized - penalized: L1 (lasso and fused lasso) and L2 (ridge) penalized estimation in GLMs and in the Cox model.
  • penalizedLDA - penalizedLDA: Penalized classification using Fisher's linear discriminant. [Deprecated]
  • penalizedSVM - penalizedSVM: Feature Selection SVM using penalty functions.
  • quantregForest - quantregForest: Quantile Regression Forests.
  • randomForest - randomForest: Breiman and Cutler's random forests for classification and regression.
  • randomForestSRC - randomForestSRC: Random Forests for Survival, Regression and Classification (RF-SRC).
  • rattle - rattle: Graphical user interface for data mining in R.
  • rda - rda: Shrunken Centroids Regularized Discriminant Analysis.
  • rdetools - rdetools: Relevant Dimension Estimation (RDE) in Feature Spaces. [Deprecated]
  • REEMtree - REEMtree: Regression Trees with Random Effects for Longitudinal (Panel) Data. [Deprecated]
  • relaxo - relaxo: Relaxed Lasso. [Deprecated]
  • rgenoud - rgenoud: R version of GENetic Optimization Using Derivatives
  • Rmalschains - Rmalschains: Continuous Optimization using Memetic Algorithms with Local Search Chains (MA-LS-Chains) in R.
  • rminer - rminer: Simpler use of data mining methods (e.g. NN and SVM) in classification and regression. [Deprecated]
  • ROCR - ROCR: Visualizing the performance of scoring classifiers. [Deprecated]
  • RoughSets - RoughSets: Data Analysis Using Rough Set and Fuzzy Rough Set Theories. [Deprecated]
  • rpart - rpart: Recursive Partitioning and Regression Trees.
  • RPMM - RPMM: Recursively Partitioned Mixture Model.
  • RSNNS - RSNNS: Neural Networks in R using the Stuttgart Neural Network Simulator (SNNS).
  • RWeka - RWeka: R/Weka interface.
  • RXshrink - RXshrink: Maximum Likelihood Shrinkage via Generalized Ridge or Least Angle Regression.
  • sda - sda: Shrinkage Discriminant Analysis and CAT Score Variable Selection. [Deprecated]
  • spectralGraphTopology - spectralGraphTopology: Learning Graphs from Data via Spectral Constraints.
  • SuperLearner - Multi-algorithm ensemble learning packages.
  • svmpath - svmpath: svmpath: the SVM Path algorithm. [Deprecated]
  • tgp - tgp: Bayesian treed Gaussian process models. [Deprecated]
  • tree - tree: Classification and regression trees.
  • varSelRF - varSelRF: Variable selection using random forests.
  • XGBoost.R - R binding for eXtreme Gradient Boosting (Tree) Library.
  • Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search. Optunity is written in Python but interfaces seamlessly to R.
  • igraph - binding to igraph library - General purpose graph library.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • TDSP-Utilities - Two data science utilities in R from Microsoft: 1) Interactive Data Exploration, Analysis, and Reporting (IDEAR) ; 2) Automated Modeling and Reporting (AMR).

Data Analysis / Data Visualization

  • ggplot2 - A data visualization package based on the grammar of graphics.
  • tmap for visualizing geospatial data with static maps and leaflet for interactive maps
  • tm and quanteda are the main packages for managing, analyzing, and visualizing textual data.
  • shiny is the basis for truly interactive displays and dashboards in R. However, some measure of interactivity can be achieved with htmlwidgets bringing javascript libraries to R. These include, plotlydygraphshighcharter, and several others.

SAS

General-Purpose Machine Learning

  • Visual Data Mining and Machine Learning - Interactive, automated, and programmatic modeling with the latest machine learning algorithms in and end-to-end analytics environment, from data prep to deployment. Free trial available.
  • Enterprise Miner - Data mining and machine learning that creates deployable models using a GUI or code.
  • Factory Miner - Automatically creates deployable machine learning models across numerous market or customer segments using a GUI.

Data Analysis / Data Visualization

  • SAS/STAT - For conducting advanced statistical analysis.
  • University Edition - FREE! Includes all SAS packages necessary for data analysis and visualization, and includes online SAS courses.

Natural Language Processing

Demos and Scripts

  • ML_Tables - Concise cheat sheets containing machine learning best practices.
  • enlighten-apply - Example code and materials that illustrate applications of SAS machine learning techniques.
  • enlighten-integration - Example code and materials that illustrate techniques for integrating SAS with other analytics technologies in Java, PMML, Python and R.
  • enlighten-deep - Example code and materials that illustrate using neural networks with several hidden layers in SAS.
  • dm-flow - Library of SAS Enterprise Miner process flow diagrams to help you learn by example about specific data mining topics.

Scala

Natural Language Processing

  • ScalaNLP - ScalaNLP is a suite of machine learning and numerical computing libraries.
  • Breeze - Breeze is a numerical processing library for Scala.
  • Chalk - Chalk is a natural language processing library. [Deprecated]
  • FACTORIE - FACTORIE is a toolkit for deployable probabilistic modeling, implemented as a software library in Scala. It provides its users with a succinct language for creating relational factor graphs, estimating parameters and performing inference.
  • Montague - Montague is a semantic parsing library for Scala with an easy-to-use DSL.
  • Spark NLP - Natural language processing library built on top of Apache Spark ML to provide simple, performant, and accurate NLP annotations for machine learning pipelines, that scale easily in a distributed environment.

Data Analysis / Data Visualization

  • MLlib in Apache Spark - Distributed machine learning library in Spark
  • Hydrosphere Mist - a service for deployment Apache Spark MLLib machine learning models as realtime, batch or reactive web services.
  • Scalding - A Scala API for Cascading.
  • Summing Bird - Streaming MapReduce with Scalding and Storm.
  • Algebird - Abstract Algebra for Scala.
  • xerial - Data management utilities for Scala. [Deprecated]
  • PredictionIO - PredictionIO, a machine learning server for software developers and data engineers.
  • BIDMat - CPU and GPU-accelerated matrix library intended to support large-scale exploratory data analysis.
  • Flink - Open source platform for distributed stream and batch data processing.
  • Spark Notebook - Interactive and Reactive Data Science using Scala and Spark.

General-Purpose Machine Learning

  • DeepLearning.scala - Creating statically typed dynamic neural networks from object-oriented & functional programming constructs.
  • Conjecture - Scalable Machine Learning in Scalding.
  • brushfire - Distributed decision tree ensemble learning in Scala.
  • ganitha - Scalding powered machine learning. [Deprecated]
  • adam - A genomics processing engine and specialized file format built using Apache Avro, Apache Spark and Parquet. Apache 2 licensed.
  • bioscala - Bioinformatics for the Scala programming language
  • BIDMach - CPU and GPU-accelerated Machine Learning Library.
  • Figaro - a Scala library for constructing probabilistic models.
  • H2O Sparkling Water - H2O and Spark interoperability.
  • FlinkML in Apache Flink - Distributed machine learning library in Flink.
  • DynaML - Scala Library/REPL for Machine Learning Research.
  • Saul - Flexible Declarative Learning-Based Programming.
  • SwiftLearner - Simply written algorithms to help study ML or write your own implementations.
  • Smile - Statistical Machine Intelligence and Learning Engine.
  • doddle-model - An in-memory machine learning library built on top of Breeze. It provides immutable objects and exposes its functionality through a scikit-learn-like API.
  • TensorFlow Scala - Strongly-typed Scala API for TensorFlow.

Scheme

Neural Networks

Swift

General-Purpose Machine Learning

  • Bender - Fast Neural Networks framework built on top of Metal. Supports TensorFlow models.
  • Swift AI - Highly optimized artificial intelligence and machine learning library written in Swift.
  • BrainCore - The iOS and OS X neural network framework.
  • swix - A bare bones library that includes a general matrix language and wraps some OpenCV for iOS development. [Deprecated]
  • AIToolbox - A toolbox framework of AI modules written in Swift: Graphs/Trees, Linear Regression, Support Vector Machines, Neural Networks, PCA, KMeans, Genetic Algorithms, MDP, Mixture of Gaussians.
  • MLKit - A simple Machine Learning Framework written in Swift. Currently features Simple Linear Regression, Polynomial Regression, and Ridge Regression.
  • Swift Brain - The first neural network / machine learning library written in Swift. This is a project for AI algorithms in Swift for iOS and OS X development. This project includes algorithms focused on Bayes theorem, neural networks, SVMs, Matrices, etc...
  • Perfect TensorFlow - Swift Language Bindings of TensorFlow. Using native TensorFlow models on both macOS / Linux.
  • PredictionBuilder - A library for machine learning that builds predictions using a linear regression.
  • Awesome CoreML - A curated list of pretrained CoreML models.
  • Awesome Core ML Models - A curated list of machine learning models in CoreML format.

TensorFlow

General-Purpose Machine Learning

  • Awesome TensorFlow - A list of all things related to TensorFlow.
  • Golden TensorFlow - A page of content on TensorFlow, including academic papers and links to related topics.

Tools

Neural Networks

  • layer - Neural network inference from the command line

Misc

  • ML Workspace - All-in-one web-based IDE for machine learning and data science. The workspace is deployed as a docker container and is preloaded with a variety of popular data science libraries (e.g., Tensorflow, PyTorch) and dev tools (e.g., Jupyter, VS Code).
  • Notebooks - A starter kit for Jupyter notebooks and machine learning. Companion docker images consist of all combinations of python versions, machine learning frameworks (Keras, PyTorch and Tensorflow) and CPU/CUDA versions.
  • DVC - Data Science Version Control is an open-source version control system for machine learning projects with pipelines support. It makes ML projects reproducible and shareable.

 

 

原文:https://github.com/josephmisiti/awesome-machine-learning

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
A curated list of awesome Machine Learning frameworks, libraries and software.

【首席架构师推荐】免费数据可视化软件

Chinese, Simplified
SEO Title
wikipedia Free data visualization software

【首席架构师推荐】数值分析软件列表

Chinese, Simplified

这里列出了一些值得注意的最终用户计算机应用程序,用于数值或数据分析:

 

Numerical-software packages

  • Analytica is a widely used proprietary tool for building and analyzing numerical models. It is a declarative and visual programming language based on influence diagrams.
  • FlexPro is a program for data analysis and presentation of measurement data. It provides a rich Excel-like user interface and its built-in vector programming language FPScript has a syntax similar to MATLAB.
  • FreeMat, an open-source MATLAB-like environment with a GPL license.
  • GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command-line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with MATLAB. The 4.0 and newer releases of Octave include a GUI. A number of independently developed Linux programs (CantorKAlgebra) also offer GUI front-ends to Octave. An active community provides technical support to users.
  • Jacket, A proprietary GPU Toolbox for MATLAB, enabling some MATLAB computations to be offloaded to the GPU for acceleration and data visualization purposes.
  • jLab, a research platform for building an open-source MATLAB-like environment in pure Java and Groovy. Currently supports interpreted j-Scripts (MATLAB-like) and compiled GroovySci (extension to Groovy) scripts that provides direct interfacing to Java code and scripting access to many popular Java scientific libraries (e.g. Weka and JSci) and application Wizards.
  • Julia (programming language) is a high-level dynamic language with a surface similarity to MATLAB.
  • LabVIEW offers both textual and graphical-programming approaches to numerical analysis. Its text-based programming language MathScript uses .m-file-script syntax providing some compatibility with MATLAB and its clones.
  • LAPACK provides Fortran 90 routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems and the associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, and generalized Schur).
  • MATLAB is a widely used proprietary software for performing numerical calculations. It comes with its own programming language, in which numerical algorithms can be implemented.
  • GNU MCSim a simulation and numerical integration package, with fast Monte Carlo and Markov chain Monte Carlo capabilities.
  • ML.NET is a free-software machine-learning library for the C# programming language.[1][2]
  • NAG Library is an extensive software library of highly optimized numerical-analysis routines for various programming environments.
  • O-Matrix
  • pandas is an open-source BSD-licensed library providing data structures and data analysis tools for the Python programming language.
  • Perl Data Language provides large multidimensional arrays for the Perl programming language, and utilities for image processing and graphical plotting.
  • Plotly – Plotting library, Python command line, and graphical interface for analyzing data and creating browser-based graphs. Available for RPythonMATLABJulia, and Perl.
  • Rlab is another free-software computer program which bears a strong resemblance to MATLAB. Rlab development ceased for several years but it was revived as RlabPlus.
  • ScaLAPACK is a library of high-performance linear algebra routines for parallel distributed-memory machines that features functionality similar to LAPACK (solvers for dense and banded linear systems, least-squares problems, eigenvalue problems, and singular-value problem).
  • Scilab is advanced numerical analysis package similar to MATLAB or Octave. Comes with a complete GUI and Xcos which is alternative to Simulink. (free softwareGPL-compatible CeCILL license)
  • Sysquake is a computing environment with interactive graphics for mathematics, physics and engineering. Like other applications from Calerga, it is based on a MATLAB-compatible language.
  • TK Solver is a mathematical modeling and problem-solving software system based on a declarative, rule-based language, commercialized by Universal Technical Systems, Inc.
  • Torch is a deep-learning library with support for manipulation, statistical analysis and presentation of Tensors.
  • XLfit, A plugin to Excel which provides curve-fitting and statistical analysis.

General-purpose computer algebra systems

Main article: List of computer algebra systems

  • Macsyma, a general-purpose computer algebra system, which has a free GPL-licensed version called Maxima.
  • Maple, a general-purpose commercial mathematics software package.
  • Mathcad offers a WYSIWYG interface and the ability to generate publication-quality mathematical equations.
  • Mathematica offers numerical evaluation, optimization and visualization of a very wide range of numerical functions. It also includes a programming language and computer algebra capabilities.
  • PARI/GP is a widely used computer algebra system designed for fast computations in number theory (factorizations, algebraic number theory, elliptic curves...), but also contains a large number of other useful functions to compute with mathematical entities such as matrices, polynomials, power series, algebraic numbers etc., and a lot of transcendental functions. PARI is also available as a C library to allow for faster computations.
  • SageMath is an open-source math software, with a unified Python interface which is available as a text interface or a graphical web-based one. Includes interfaces for open-source and proprietary general purpose CAS, and other numerical analysis programs, like PARI/GP, GAP, gnuplot, Magma, and Maple.
  • Speakeasy is an interactive numerical environment also featuring an interpreted programming language. Born in the mid '60s for matrix manipulation and still in continuous evolution, it pioneered the most common paradigms of this kind of tools, featuring dynamic typing of the structured data objects, dynamic allocation and garbage collection, operators overloading, dynamic linking of compiled or interpreted additional modules contributed by the community of the users and so on.
  • Trilinos is a collection of open-source object-oriented libraries for use in scientific and engineering applications. Trilinos is based on scalable, parallel linear-algebra algorithms.

Interface-oriented

  • Baudline is a time-frequency browser for numerical signals analysis and scientific visualization.
  • COMSOL Multiphysics is a finite-element analysis, solver and simulation software / FEA Software package for various physics and engineering applications, especially coupled phenomena, or multiphysics.
  • Dataplot is provided by NIST.
  • DADiSP is a commercial program focused on DSP that combines the numerical capability of MATLAB with a spreadsheet-like interface.
  • EJS is an open-source software tool, written in Java, for generating simulations.
  • Euler Mathematical Toolbox is a powerful numerical laboratory with a programming language that can handle real, complex and interval numbers, vectors and matrices. It can produce 2D/3D plots.
  • FEATool Multiphysics is a Matlab GUI toolbox for finite element FEM and PDE multiphysics simulations.
  • FEniCS Project is a collection of project for automated solutions to PDEs.
  • Hermes is a C++ library of advanced adaptive finite element algorithms to solve PDEs and multiphysics coupled problems.
  • Fityk is a curve fitting and data-analysis program. Primarily used for peak fitting and analyzing peak data.
  • FlexPro is a commercial program for interactive and automated analysis and presentation of mainly measurement data. It supports many binary instrument data formats and has its own vectorized programming language.
  • IGOR Pro, a software package with emphasis on time series, image analysis, and curve fitting. It comes with its own programming language and can be used interactively.
  • LabPlot is a data analysis and visualization application built on the KDE Platform.
  • MFEM is a free, lightweight, scalable C++ library for finite element methods .
  • Origin, a software package that is widely used for making scientific graphs. It comes with its own C/C++ compiler that conforms quite closely to ANSI standard.
  • PAW is a free data analysis package developed at CERN.
  • SPSS, an application for statistical analysis.
  • QtiPlot is a data analysis and scientific visualisation program, similar to Origin.
  • ROOT is a free object-oriented multi-purpose data-analysis package, developed at CERN.
  • Salome is a free software that provides a generic platform for pre- and post-processing for numerical simulation.
  • Shogun, an open-source large-scale machine-learning toolbox that provides several SVM implementations (like libSVM, SVMlight) under a common framework and interfaces to Octave, MATLAB, Python, R
  • Waffles is a free-software collection of command-line tools designed for scripting machine-learning operations in automated experiments and processes.
  • Weka is a suite of machine learning software written at the University of Waikato.

Language-oriented

  • acslX is a software application for modeling and evaluating the performance of continuous systems described by time-dependent, nonlinear differential equations.
  • ADMB is a software suite for non-linear statistical modeling based on C++ which uses automatic differentiation.
  • AMPL is a mathematical modeling language for describing and solving high complexity problems for large-scale optimization.
  • Ch, a commercial C/C++-based interpreted language with computational array for scientific numerical computation and visualization.[3]
  • APMonitor: APMonitor is a mathematical modeling language for describing and solving representations of physical systems in the form of differential and algebraic equations.
  • Armadillo is C++ template library for linear algebra; includes various decompositions, factorisations, and statistics functions; its syntax (API) is similar to MATLAB.
  • Clojure with numeric libraries Neanderthal, ClojureCUDA, and ClojureCL to call optimized matrix and linear algebra functions on CPU and GPU.
  • Julia is designed for cloud parallel scientific computing in mind on LLVM-based JIT as a backend. Lightweight “green” threading (coroutines). Direct calls of C functions from code (no wrappers or special APIs needed), support for Unicode. Powerful shell-like capabilities for managing other processes. Lisp-like macros and other metaprogramming facilities.
  • ELKI a software framework for development of data mining algorithms in Java.
  • GAUSS, a matrix programming language for mathematics and statistics.
  • GNU Data Language, a free compiler designed as a drop-in replacement for IDL.
  • IDL, a commercial interpreted language based on FORTRAN with some vectorization. Widely used in the solar physicsfusionatmospheric sciences and medical communities. The GNU Data Language is a free alternative.
  • ILNumerics.Net, a C# math library that brings numeric computing functions for science, engineering and financial analysis to the .NET Framework.
  • KPP generates Fortran 90FORTRAN 77C, or Matlab code for the integration of ordinary differential equations (ODEs) resulting from chemical reaction mechanisms.
  • Madagascar, an open-source software package for multidimensional data analysis and reproducible computational experiments.
  • mlpack is an open-source library for machine learning, providing a simple and consistent API, while exploiting C++ language features to provide maximum performance and flexibility
  • NCAR Command Language is an interpreted language designed specifically for scientific data analysis and visualization.
  • O-Matrix - a matrix programming language for mathematics, engineering, science, and financial analysis.
  • OptimJ is a mathematical Java-based modeling language for describing and solving high-complexity problems for large-scale optimization.
  • Perl Data Language, also known as PDL, an array extension to Perl ver.5, used for data manipulation, statistics, numerical simulation and visualization.
  • Python with well-known scientific computing packages: NumPySymPy and SciPy.
  • R is a widely used system with a focus on data manipulation and statistics which implements the S language. Many add-on packages are available (free softwareGNU GPL license).
  • SAS, a system of software products for statistics. It includes SAS/IML[4], a matrix programming language.
  • VisSim is a visual block-diagram language for simulation of nonlinear dynamic systems and model-based embedded development. Its fast ODE engine supports real-time simulation of complex large-scale models. The highly efficient fixed-point code generator allows targeting of low-cost fixed-point embedded processors.
  • Wolfram Language which is used within many Wolfram technologies such as Mathematica and the Wolfram Cloud
  • World Programming System (WPS), supports mixing PythonR and SAS languages in a single-user program for statistical analysis and data manipulation
  • Yorick is an interpreted programming language designed for numerics, graph plotting and simulation.

Historically significant

  • Expensive Desk Calculator written for the TX-0 and PDP-1 in the late 1950s or early 1960s.
  • S is an (array-based) programming language with strong numerical support. R is an implementation of the S language.

See also

 

原文:https://en.wikipedia.org/wiki/List_of_numerical-analysis_software

本文:https://pub.intelligentx.net/wikipedia-list-numerical-analysis-software

讨论:请加入知识星球或者小红圈【首席架构师圈】

 

 

SEO Title
wikipedia List of numerical-analysis software

【首席架构师推荐】数值计算库一览表

Chinese, Simplified

这是一个著名的数值库列表,这些库用于软件开发中执行数值计算。它不是一个完整的列表,而是一个包含Wikipedia上文章的数字库列表,很少有例外。

典型库的选择取决于一系列不同的需求,例如:期望的特性(例如:大维线性代数、并行计算、偏微分方程)、商业/开源性质、API的可读性、可移植性或平台/编译器依赖性(例如:Linux、Windows、Visual c++、GCC)、速度性能、易用性、开发人员的持续支持、标准遵从性、针对特定应用程序场景的代码的专门优化,甚至要安装的代码库的大小。

由于我们发现很少有全面的调查可用,所以在许多可能的库中几乎总是(至少最初是)有一个艰难的选择。通常情况下,它往往是由用户根据自己的品味和舒适度来决定的,只是因为缺乏适当的信息。

 

Multi-language

  • ALGLIB is an open source numerical analysis library which may be used from C++, C#, FreePascal, Delphi, VBA.
  • ArrayFire is a high performance open source software library for parallel computing with an easy-to-use API.
  • IMSL Numerical Libraries are libraries of numerical analysis functionality implemented in standard programming languages like C, Java, C# .NET, Fortran, and Python.
  • The NAG Library is a collection of mathematical and statistical routines for multiple programming languages (C, C++, Fortran, Visual Basic, Java, Python and C#) and packages (MATLAB, Excel, R, LabVIEW).
  • GNU Octave is an open source high level programming language and library, including a command line interface and GUI, analogous to commercial alternatives such as Maple, MATLAB, Mathematica, etc. APIs, functions and libraries can be called from many platforms, including high level engineering programs, where functions are, in many cases, seamlessly interpreted and integrated in similar fashion to MATLAB. It also can be used with batch orientation.
  • librsb is an open source library for high performance sparse matrix computations providing multi-threaded primitives to build iterative solvers (implements also the Sparse BLAS standard). It can be used from C, C++, Fortran, and a dedicated GNU Octave package.

C

C++

  • Adept is a combined automatic differentiation and array library.
  • Advanced Simulation Library is free and open source hardware accelerated multiphysics simulation software with an OpenCL-based internal computational engine.
  • ALGLIB is an open source / commercial numerical analysis library with C++ version
  • Armadillo is a C++ linear algebra library (matrix and vector maths), aiming towards a good balance between speed and ease of use. It employs template classes, and has optional links to BLAS and LAPACK. The syntax (API) is similar to MATLAB.
  • Blaze is an open-source, high-performance C++ math library for dense and sparse arithmetic.
  • Blitz++ is a high-performance vector mathematics library written in C++.
  • Boost.uBLAS C++ libraries for numerical computation
  • deal.II is a library supporting all the finite element solution of partial differential equations.
  • Dlib is a modern C++ library with easy to use linear algebra and optimization tools which benefit from optimized BLAS and LAPACK libraries.
  • Eigen is a vector mathematics library with performance comparable with Intel's Math Kernel Library
  • Hermes Project: C++/Python library for rapid prototyping of space- and space-time adaptive hp-FEM solvers.
  • IML++ is a C++ library for solving linear systems of equations, capable of dealing with dense, sparse, and distributed matrices.
  • IT++ is a C++ library for linear algebra (matrices and vectors), signal processing and communications. Functionality similar to MATLAB and Octave.
  • LAPACK++, a C++ wrapper library for LAPACK and BLAS
  • Intel MKL, Intel Math Kernel Library (in C and C++), a library of optimized math routines for science, engineering, and financial applications, written in C/C++ and Fortran. Core math functions include BLAS, LAPACK, ScaLAPACK, sparse solvers, fast Fourier transforms, and vector math.
  • mlpack is an open-source library for machine learning, exploiting C++ language features to provide maximum performance and flexibility while providing a simple and consistent API
  • MTL4 is a generic C++ template library providing sparse and dense BLAS functionality. MTL4 establishes an intuitive interface (similar to MATLAB) and broad applicability thanks to Generic programming.
  • The NAG Library has C++ API
  • NTL is a C++ library for number theory.
  • Trilinos is an effort to develop algorithms and enabling technologies for the solution of large-scale, complex multi-physics engineering and scientific problems. It is a collection of packages.

Delphi

  • Analytics & Physics: commercial Delphi libraries for symbolic and numerical calculations (including symbolic derivatives) and working with physical values and units of measurement.
  • ALGLIB - an open source numerical analysis library.

.NET Framework languages C#F#VB.NET and PowerShell[edit]

  • Accord.NET is a collection of libraries for scientific computing, including numerical linear algebra, optimization, statistics, artificial neural networks, machine learning, signal processing and computer vision. LGPLv3, partly GPLv3.
  • AForge.NET is a computer vision and artificial intelligence library. It implements a number of genetic, fuzzy logic and machine learning algorithms with several architectures of artificial neural networks with corresponding training algorithms. LGPLv3 and partly GPLv3.
  • ALGLIB is an open source numerical analysis library with C# version. Dual licensed: GPLv2+, commercial license.
  • ILNumerics.Net Commercial high performance, typesafe numerical array classes and functions for general math, FFT and linear algebra, aims .NET/mono, 32&64 bit, script-like syntax in C#, 2D & 3D plot controls, efficient memory management.
  • IMSL Numerical Libraries have C# version (commercially licensed). IMSL .Net have announced end of life at the end of 2020.
  • Math.NET Numerics aims to provide methods and algorithms for numerical computations in science, engineering and every day use. Covered topics include special functions, linear algebra, probability models, random numbers, interpolation, integral transforms and more. Free software under MIT/X11 license.
  • Measurement Studio is a commercial integrated suite UI controls and class libraries for use in developing test and measurement applications. The analysis class libraries provide various digital signal processing, signal filtering, signal generation, peak detection, and other general mathematical functionality.
  • ML.NET is a free software machine learning library for the C# programming language.[1][2]
  • The NAG Library has C# API. Commercially licensed.
  • NMath by CenterSpace Software: Commercial numerical component libraries for the .NET platform, including signal processing (FFT) classes, a linear algebra (LAPACK & BLAS) framework, and a statistics package.
  • Numpy.NET offers C# language bindings for NumPy a fundamental library for scientific computing, machine learning and AI.[3] Numpy.NET is free software under MIT license.
  • NumSharp is an open source N-D Tensor computation library for Data Science, Machine Learning and AI, written in pure C#.[4] NumSharp is free software licensed under the Apache 2.0 license.

Fortran

Java

Scala

  • ND4S is a scientific computing library for Scala that includes support for n-dimensional arrays on the JVM.

Perl

  • Perl Data Language gives standard Perl the ability to compactly store and speedily manipulate the large N-dimensional data arrays.

Python

  • NumPy, a BSD-licensed library that adds support for the manipulation of large, multi-dimensional arrays and matrices; it also includes a large collection of high-level mathematical functions. NumPy serves as the backbone for a number of other numerical libraries, notably SciPy. De facto standard for matrix/tensor operations in Python.
  • SageMath is a large mathematical software application which integrates the work of nearly 100 free software projects and supports linear algebra, combinatorics, numerical mathematics, calculus, and more.
  • SciPy, a large BSD-licensed library of scientific tools. De facto standard for scientific computations in Python.
  • ScientificPython, a library with a different set of scientific tools
  • SymPy , a library based on New BSD license for symbolic computation. Features of Sympy range from basic symbolic arithmetic to calculus, algebra, discrete mathematics and quantum physics.

Others

See also

 

原文:https://en.wikipedia.org/wiki/List_of_numerical_libraries

本文:https://pub.intelligentx.net/wikipedia-list-numerical-libraries

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of numerical libraries

【首席架构师推荐】文本挖掘软件列表

Chinese, Simplified

文本挖掘计算机程序可从许多商业和开放源码公司和源代码获得。

 

Commercial

  • Amenity Analytics – develops cloud-based text analytics solutions using natural language processing and machine learning to draw insights at scale from any source of unstructured data.
  • Angoss – Angoss Text Analytics provides entity and theme extraction, topic categorization, sentiment analysis and document summarization capabilities via the embedded
  • AUTINDEX - is a commercial text mining software package based on sophisticated linguistics by IAI (Institute for Applied Information Sciences), Saarbrücken.
  • Autonomy – text mining, clustering and categorization software
  • Averbis – provides text analytics, clustering and categorization software, as well as terminology management and enterprise search
  • Basis Technology – provides a suite of text analysis modules to identify language, enable search in more than 20 languages, extract entities, and efficiently search for and translate entities.
  • Clarabridge – text analytics (text mining) software, including natural language (NLP), machine learning, clustering and categorization. Provides SaaS, hosted and on-premises text and sentiment analytics that enables companies to collect, listen to, analyze, and act on the Voice of the Customer (VOC) from both external (Twitter, Facebook, Yelp!, product forums, etc.) and internal sources (call center notes, CRM, Enterprise Data Warehouse, BI, surveys, emails, etc.).
  • DigitalMR - social media listening & text+image analytics tool for market research
  • Endeca Technologies – provides software to analyze and cluster unstructured text.
  • FICO Score – leading provider of analytics.
  • General Sentiment - Social Intelligence platform that uses natural language processing to discover affinities between the fans of brands with the fans of traditional television shows in social media. Stand alone text analytics to capture social knowledge base on billions of topics stored to 2004.
  • IBM LanguageWare - the IBM suite for text analytics (tools and Runtime).
  • IBM SPSS - provider of Modeler Premium (previously called IBM SPSS Modeler and IBM SPSS Text Analytics), which contains advanced NLP-based text analysis capabilities (multi-lingual sentiment, event and fact extraction), that can be used in conjunction with Predictive Modeling. Text Analytics for Surveys provides the ability to categorize survey responses using NLP-based capabilities for further analysis or reporting.
  • Inxight – provider of text analytics, search, and unstructured visualization technologies. (Inxight was bought by Business Objects that was bought by SAP AG in 2008).
  • Language Computer Corporation – text extraction and analysis tools, available in multiple languages.
  • Lexalytics - provider of a text analytics engine used in Social Media Monitoring, Voice of Customer, Survey Analysis, and other applications. Salience Engine. The software provides the unique capability of merging the output of unstructured, text-based analysis with structured data to provide additional predictive variables for improved predictive models and association analysis.
  • LexisNexis – provider of business intelligence solutions based on an extensive news and company information content set. LexisNexis acquired DataOps to pursue search
  • Linguamatics – provider of natural language processing (NLP) based enterprise text mining and text analytics software, I2E, for high-value knowledge discovery and decision support.
  • Luminoso – enterprise feedback and text analytics solutions developed over a decade of natural language processing (NLP), machine learning and artificial intelligence research at MIT Media Lab. Enables clients to understand, measure and act on large amounts of consumer feedback, across multiple channels.[1][2]
  • Mathematica – provides built in tools for text alignment, pattern matching, clustering and semantic analysis. See Wolfram Language, the programming language of Mathematica.
  • MATLAB offers Text Analytics Toolbox for importing text data, converting it to numeric form for use in machine and deep learning, sentiment analysis and classification tasks.[3]
  • MeaningCloud - formerly known as Textalytics: a set of text analytics APIs offered both in SaaS mode and on-premises that are totally customizable to obtain the highest accuracy and very easy to integrate in any system or environment thanks to its SDKs and plug-ins.
  • Medallia - offers one system of record for survey, social, text, written and online feedback.
  • Megaputer Intelligence - derives actionable knowledge from large volumes of text and structured data, including natural language processing (NLP), machine learning, sentiment analysis, entity extraction, clustering, and categorization.
  • NetOwl – suite of multilingual text and entity analytics products, including entity extraction, link and event extraction, sentiment analysis, geotagging, name translation, name matching, and identity resolution, among others.
  • PoolParty Semantic Suite lets you develop a knowledge graph – thus structure and represent your prioritised knowledge domains. The highly performative PoolParty service extracts entities and terms following a sophisticated text mining algorithm.
  • RapidMiner with its Text Processing Extension – data and text mining software.
  • SAS – SAS Text Miner and Teragram; commercial text analytics, natural language processing, and taxonomy software used for Information Management.
  • Semantria - offers its services via API and Excel plugin. It is a spinoff of text-analysis software Lexalytics, but differs in that it is offered via API and Excel plugin, and in that it incorporates a bigger knowledge base and uses deep learning.
  • Sketch Engine - a corpus manager and analysis software which providing creating text corpora from uploaded texts or the Web including part-of-speech tagging and lemmatization or detecting a particular website.[4]
  • Smartlogic – Semaphore; Content Intelligence platform containing commercial text analytics, natural language processing, rule-based classification, ontology/taxonomy modelling and information visualization software used for Information Management.
  • StatSoft – provides STATISTICA Text Miner as an optional extension to STATISTICA Data Miner, for Predictive Analytics Solutions.
  • Sysomos - provider social media analytics software platform, including text analytics and sentiment analysis on online consumer conversations.
  • WordStat - Content analysis and text mining add-on module of QDA Miner for analyzing large amounts of text data.

Open source

  • Carrot2 – text and search results clustering framework.
  • Coding Analysis Toolkit – CAT is a free, web-based, and open source text analysis service. Load, code, and annotate text data in teams. Measure inter-rater reliability and adjudicate differences between coders. Report on the accuracy of codes and coders over time. Train better coders through systematic iterations.
  • GATE – general Architecture for Text Engineering, an open-source toolbox for natural language processing and language engineering.
  • Gensim - large-scale topic modelling and extraction of semantic information from unstructured text (Python).
  • Natural Language Toolkit (NLTK) – a suite of libraries and programs for symbolic and statistical natural language processing (NLP) for the Python programming language.
  • OpenNLP - natural language processing.
  • Orange with its text mining add-on.
  • Stanbol - an open source text mining engine targeted at semantic content management.
  • The programming language R provides a framework for text mining applications in the package tm.[5] The Natural Language Processing task view contains tm and other text mining library packages.[6]
  • The KNIME Text Processing extension.
  • The PLOS Text Mining Collection.[7]
  • Voyant Tools - a web-based text analysis environment, created as a scholarly project.
  • spaCy - open-source Natural Language Processing library for Python

References

  1. ^ Alba, Davet (12 February 2015). "The Startup That Helps You Analyze Twitter Chatter in Real Time". Wired. Retrieved 4 March 2015.
  2. ^ Lohr, Steve (27 June 2014). "The U.S.-Germany Match Through a Social Media Lens". New York Times. Retrieved 4 March 2015.
  3. ^ "Text Analytics Toolbox"www.mathworks.com. Retrieved 2019-07-10.
  4. ^ "Text analysis with Sketch Engine"Sketch Engine. LEXICAL COMPUTING CZ s.r.o. Retrieved 17 January 2018.
  5. ^ Introduction to the tm Package: Text Mining in R
  6. ^ CRAN Task View: Natural Language Processing
  7. ^ "Table of Contents: Text Mining". PLOS.

External links

 

原文:https://en.wikipedia.org/wiki/List_of_text_mining_software

本文:https://pub.intelligentx.net/wikipedia-list-text-mining-software

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of text mining software

【首席架构师推荐】深度学习软件比较

Chinese, Simplified

下表比较了用于深度学习的著名软件框架、库和计算机程序。

Deep-learning software by name

Software

Initial Release

Software license[a]

Open source

Platform

Written in

Interface

OpenMP 

support

OpenCL

 support

CUDA support

Automatic differentiation[1]

Has pretrained models

Recurrent nets

Convolutional nets

RBM/DBNs

Parallel execution (multi node)

Actively Developed

BigDL 2016 Apache 2.0 Yes

Apache

Spark

Scala

Scala,

Python

    No   Yes Yes Yes      
Caffe 2013 BSD Yes

Linux

macOS

Windows[2]

C++

Python

MATLAB

C++

Yes

Under

development[3]

Yes Yes Yes[4] Yes Yes No ?  
Chainer 2015 BSD Yes

Linux

macOS

Python Python No No Yes Yes Yes Yes Yes No Yes Yes
Deeplearning4j 2014 Apache 2.0 Yes

Linux

macOS

Windows,

 Android 

(Cross-

platform)

C++

Java

Java

Scala

Clojure

Python 

(Keras), 

Kotlin

Yes No[5] Yes[6][7] Computational Graph Yes[8] Yes Yes Yes Yes[9]  
Dlib 2002 Boost Software License Yes

Cross-

Platform

C++ C++ Yes No Yes Yes Yes No Yes Yes Yes  
Intel Data Analytics Acceleration Library 2015 Apache License 2.0 Yes

Linux

macOS

Windows 

on Intel 

CPU[10]

C++

Python

Java

C++

Python

Java[10]

Yes No No Yes No   Yes   Yes  
Intel Math Kernel Library   Proprietary No

Linux,

 macOS

Windows 

on Intel 

CPU[11]

  C[12] Yes[13] No No Yes No Yes[14] Yes[14]   No  
Keras 2015 MIT license Yes

Linux

macOS

Windows

Python

Python

R

Only if using Theano as backend

Can use

Theano,

Tensorflow

or PlaidML

as backends

Yes Yes Yes[15] Yes Yes No[16] Yes[17] Yes
MATLAB + Deep Learning Toolbox   Proprietary No

Linux,

 macOS

Windows

C

C++

Java

MATLAB

MATLAB No No Train with Parallel Computing Toolbox and generate CUDA code with GPU Coder[18] No Yes[19][20] Yes[19] Yes[19] No With Parallel Computing Toolbox[21] Yes
Microsoft Cognitive Toolkit (CNTK) 2016 MIT license[22] Yes

Windows

Linux[23] 

(macOS 

via Docker

on roadmap)

C++

Python

(Keras), 

C++,

 Command

line,[24] 

BrainScript[25] 

(.NET on

roadmap[26])

Yes[27] No Yes Yes Yes[28] Yes[29] Yes[29] No[30] Yes[31] No[32]
Apache MXNet 2015 Apache 2.0 Yes

Linux

macOS

Windows,[33][34] 

AWS

Android,[35] 

iOS

JavaScript[36]

Small

 C++ 

core

library

C++

Python

Julia

Matlab

JavaScript,

 Go

R

Scala

Perl

Yes

On

roadmap[37]

Yes Yes[38] Yes[39] Yes Yes Yes Yes[40] Yes
Neural Designer   Proprietary No

Linux

macOS

Windows

C++

Graphical

user

interface

Yes No No ? ? No No No ?  
OpenNN 2003 GNU LGPL Yes

Cross

-platform

C++ C++ Yes No Yes ? ? No No No ?  
PlaidML 2017 AGPL Yes

Linux

macOS

Windows

Python,

 C++

OpenCL

Python,

 C++

?

Some

OpenCL

ICDs are

not recognized

No Yes Yes Yes Yes   Yes Yes
PyTorch 2016 BSD Yes

Linux,

 macOS

Windows

Python,

 C

C++

CUDA

Python,

 C++

Yes

Via separately maintained

package

[41]

[42][42]

Yes Yes Yes Yes Yes   Yes Yes
Apache SINGA 2015 Apache 2.0 Yes

Linux

macOS,

 Windows

C++

Python

C++

Java

No

Supported

in V1.0

Yes ? Yes Yes Yes Yes Yes  
TensorFlow 2015 Apache 2.0 Yes

Linux

macOS

Windows,[43] 

Android

C++,

 Python

CUDA

Python 

(Keras), 

C/C++

JavaGo

JavaScript,

 R,[44] 

Julia

Swift

No

On roadmap

[45] but

already with

 SYCL[46] 

support

Yes Yes[47] Yes[48] Yes Yes Yes Yes Yes
Theano 2007 BSD Yes

Cross

-platform

Python

Python 

(Keras)

Yes

Under develo

pment[49]

Yes Yes[50][51] Through Lasagne's model zoo[52] Yes Yes Yes Yes[53] No
Torch 2002 BSD Yes

Linux

macOS

Windows,[54] 

Android,[55] 

iOS

CLua

Lua

LuaJIT,

[56] C,

utility

library for

 C++/

OpenCL[57]

Yes

Third

party

implemen

tations[58][59]

Yes[60][61] Through Twitter's Autograd[62] Yes[63] Yes Yes Yes Yes[54] No
Wolfram Mathematica 1988 Proprietary No

Windows,

 macOS

Linux

Cloud computing

C++

Wolfram

Language

CUDA

Wolfram Language Yes No Yes Yes Yes[64] Yes Yes Yes Yes[65] Yes
  1. ^ Licenses here are a summary, and are not taken to be complete statements of the licenses. Some libraries may use other libraries internally under different licenses

Related software

See also

 

本文:https://pub.intelligentx.net/wikipedia-comparison-deep-learning-software

讨论:请加入知识星球或者小红圈【首席架构师圈】

本文地址
https://architect.pub/wikipedia-comparison-deep-learning-software
SEO Title
Wikipedia Comparison of deep-learning software

【首席架构师推荐】精选优化软件清单

Chinese, Simplified

给定一个输入和输出值之间的转换,描述一个数学函数f,优化处理生成和选择一个最佳解决方案从一些组可用的替代方案,通过系统地选择输入值在一个允许集,计算的输出功能,录音过程中发现的最好的输出值。许多实际问题都可以用这种方法建模。例如,输入可以是电机的设计参数,输出可以是功耗,或者输入可以是业务选择,输出可以是获得的利润。

优化问题,在本例中是最小化问题,可以用以下方式表示

给定:一个函数f:一个{\displaystyle \to}\to R,从某个集合a到实数

搜索:A中的一个元素x0,使得f(x0)≤f(x)对于A中的所有x。

在连续优化中,A是欧氏空间Rn的某个子集,通常由一组约束、等式或不等式来指定,这些约束、等式或不等式是A的成员必须满足的。在组合优化中,A是离散空间的某个子集,如二进制字符串、排列或整数集。

优化软件的使用要求函数f用合适的编程语言定义,并在编译或运行时连接到优化软件。优化软件将在A中提供输入值,实现f的软件模块将提供计算值f(x),在某些情况下,还将提供关于函数的附加信息,如导数。

这样就得到了一个清晰的关注点分离:不同的优化软件模块可以很容易地在同一个函数f上进行测试,或者给定的优化软件可以用于不同的函数f。

下表提供了根据许可证和业务模型类型组织的值得注意的优化软件列表。

 

Free and open-source software

Applications
Name License Description
ADMB BSD nonlinear optimization framework, using automatic differentiation.
ASCEND GPL mathematical modelling chemical process modelling system.
CUTEr GPL a testing environment for optimization and linear algebra solvers.
GNU_Octave GPL a software package featuring a high-level programming language, primarily intended for numerical computations; well recognized free alternative to MATLAB.
Scilab CeCILL a cross-platform numerical computational package and a high-level, numerically oriented programming language with free numerical optimization framework.
Software libraries
Name License Description
ALGLIB GPL dual licensed (GPL/commercial) nonlinear optimization library (unconstrained, box, linearly, nonlinearly-constrained, nonlinear and QP problems), optionally using automatic differentiation. Cross-language: C++, C#.
COIN-OR SYMPHONY EPL 1.0 integer programming
Dlib Boost Software License Unconstrained/box-constrained nonlinear/QP optimization library written in C++.
GEKKO MIT License machine learning and optimization of mixed-integer and differential algebraic equations in Python.
GLPK GPL GNU Linear Programming Kit, C API.
IPOPT CPL a large scale nonlinear optimizer for continuous systems (requires gradient), C++ (formerly Fortran and C).
J. D. Powell's

optimization suite
LGPL a set of Fortran 95 algorithms for (derivative-free, DFO) optimization subject to box and linear constraints: BOBYQA – DFO, box; COBYLA – DFO, nonlinearly constrained; LINCOA – DFO, linearly constrained; NEWUOA and UOBYQA – DFO, unconstrained; TOLMIN – linearly constrained.
MIDACO Dual (Commercial, BY-NC-ND) a lightweight software tool for single- and multi-objective optimization based on evolutionary computing. Written in C/C++ and Fortran with gateways to Excel, VBA, Java, Python, Matlab, Octave, R, C# and Julia.
MINUIT (now MINUIT2) LGPL an unconstrained optimizer internally developed at CERN.
OpenMDAO Apache License Multidisciplinary Design, Analysis, and Optimization (MDAO) framework, written in Python. The development is led out of the NASA Glenn Research Center, with support from the NASA Langley Research Center.
OptaPlanner Apache License a lightweight, embeddable planning engine written in Java. It solves constraint satisfaction problems with construction heuristics and metaheuristic algorithms.
SciPy BSD a general numeric package for Python, with some support for optimization.

Proprietary software

  • AIMMS – optimization modeling system, including GUI building facilities.
  • ALGLIB – dual licensed (GPL/commercial) constrained quadratic and nonlinear optimization library with C++ and C# interfaces.
  • Altair HyperStudy – design of experiments and multi-disciplinary design optimization.
  • AMPL – modelling language for large-scale linear, mixed integer and nonlinear optimization.
  • ANTIGONE – a deterministic global optimization MINLP solver.
  • APMonitor – modeling language and optimization suite for large-scale, nonlinear, mixed integer, differential and algebraic equations with interfaces to MATLAB, Python, and Julia.
  • Artelys Knitro – large scale nonlinear optimization for continuous and mixed-integer programming.
  • ASTOS – AeroSpace Trajectory Optimization Software for launcher, re-entry and generic aerospace problems.
  • BARON – optimization of algebraic nonlinear and mixed-integer nonlinear problems.
  • COMSOL Multiphysics – a cross-platform finite element analysis, solver and multiphysics simulation software.
  • CPLEX – integer, linear and quadratic programming.
  • FEATool Multiphysics – FEA GUI Toolbox for MATLAB
  • FICO Xpress – integer, linear and quadratic and nonlinear programming.
  • FortMP – integer, linear and quadratic programming.
  • FortSP – stochastic programming.
  • GAMS – General Algebraic Modeling System.
  • Gurobi – integer, linear and quadratic programming.
  • HEEDS MDO – multidisciplinary design optimization using SHERPA, a hybrid, adaptive optimization algorithm.
  • IMSL Numerical Libraries – linear, quadratic, nonlinear, and sparse QP and LP optimization algorithms implemented in standard programming languages C, Java, C# .NET, Fortran, and Python.
  • IOSO – (Indirect Optimization on the basis of Self-Organization) a multiobjective, multidimensional nonlinear optimization technology.
  • Kimeme – an open platform for multi-objective optimization and multidisciplinary design optimization.
  • LINDO - (Linear, Interactive, and Discrete Optimizer) a software package for linear programming, integer programming, nonlinear programming, stochastic programming, and global optimization. The "What's Best!" Excel add-in performs linear, integer, and nonlinear optimization using LINDO.
  • LIONsolver – an integrated software for data mininganalyticsmodeling Learning and Intelligent OptimizatioN and reactive business intelligence approach.
  • modeFRONTIER – an integration platform for multi-objective and multi-disciplinary optimization, which provides a seamless coupling with third party engineering tools, enables the automation of the design simulation process, and facilitates analytic decision making.
  • Maple – linear, quadratic, and nonlinear, continuous and integer optimization. Constrained and unconstrained. Global optimization with add-on toolbox.
  • MATLAB – linear, integer, quadratic, and nonlinear problems with Optimization Toolbox; multiple maxima, multiple minima, and non-smooth optimization problems; estimation and optimization of model parameters.
  • MIDACO a lightweight software tool for single- and multi-objective optimization based on evolutionary computing. Written in C/C++ and Fortran with gateways to Excel, VBA, Java, Python, Matlab, Octave, R, C# and Julia.
  • Mathematica – large-scale multivariate constrained and unconstrained, linear and nonlinear, continuous and integer optimization.
  • ModelCenter – a graphical environment for integration, automation, and design optimization.
  • MOSEK – linear, quadratic, conic and convex nonlinear, continuous and integer optimization.
  • NAG – linear, quadratic, nonlinear, sums of squares of linear or nonlinear functions; linear, sparse linear, nonlinear, bounded or no constraints; local and global optimization; continuous or integer problems.
  • NMath – linear, quadratic and nonlinear programming.
  • OptimJ – Java-based modeling language. Premium Edition includes support for Gurobi, Mosek and CPLEX solvers.
  • Optimus platform – a process integration and design optimization platform developed by Noesis Solutions.
  • optiSLang – software solutions for CAE-based sensitivity analysis, optimization and robustness evaluation.
  • OptiY - a design environment providing modern optimization strategies and state of the art probabilistic algorithms for uncertainty, reliability, robustness, sensitivity analysis, data-mining and meta-modeling.
  • OptiStruct – award-winning CAE technology for conceptual design synthesis and structural optimization.
  • PottersWheel – parameter estimation in ordinary differential equations (MATLAB toolbox, free for academic use).
  • pSeven — software platform for automation of engineering simulation and analysis, multidisciplinary optimization and data mining, developed by DATADVANCE.
  • SAS – a software suite developed by SAS Institute for advanced analytics (statistics, forcasting, machine learning, optimization, etc.), business intelligence, customer intelligence, data management, risk management, and many more.
  • SmartDO – multidisciplinary global design optimization, specialized in computer-aided engineering (CAE). using the direct global search approaches.
  • SNOPT – large-scale optimization problems.
  • The Unscrambler X – product formulation and process optimization software.
  • TOMLAB – supports global optimization, integer programming, all types of least squares, linear, quadratic and unconstrained programming for MATLAB. TOMLAB supports solvers like GurobiCPLEXSNOPTKNITRO and MIDACO.
  • VisSim – a visual block diagram language for simulation and optimization of dynamical systems.
  • WORHP – a large-scale sparse solver for continuous nonlinear optimization.

Freeware/free for academic use

See also

 

原文:https://en.wikipedia.org/wiki/List_of_optimization_software

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
List of optimization software

【首席架构师推荐】精选免费数据分析软件

【首席架构师推荐】精选数据分析软件列表

Chinese, Simplified

精选数据分析软件列表

 

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

R

S

T

U

W

X

 

原文:https://en.wikipedia.org/wiki/Category:Data_analysis_software

本文:https://pub.intelligentx.net/wikipedia-data-analysis-software

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia Data analysis software

【首席架构师推荐】精选数据挖掘和机器学习软件列表

Chinese, Simplified

精选数据挖掘和机器学习软件列表

A

B

C

D

E

F

G

I

J

K

L

M

N

O

P

R

S

T

U

V

W

X

Y

Z

 

原文:https://en.wikipedia.org/wiki/Category:Data_mining_and_machine_learning_software

本文:https://pub.intelligentx.net/wikipedia-data-mining-and-machine-learning-software

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia Data mining and machine learning software

【首席架构师推荐】统计软件一览表

Chinese, Simplified

统计软件是专门用于统计和计量经济学分析的计算机程序。

Open-source

 

Public domain

Freeware

Proprietary

Add-ons

See also

 

原文:https://en.wikipedia.org/wiki/List_of_statistical_software

本文:https://pub.intelligentx.net/wikipedia-list-statistical-software

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of statistical software

【首席架构师推荐】统计软件包比较

Chinese, Simplified

下表比较了若干统计分析包的一般资料和技术资料。

General information

Product Developer Latest version Open source Software license Interface Written in Scripting languages
ADaMSoft Marco Scarno 27 April 2015 Yes GNU GPL CLIGUI Java  
Alteryx Alteryx Inc. 2019.2 (June 2019) No Proprietary GUI, Python SDK, js SDK C#, C++, Python, R, js R, Python
Analyse-it Analyse-it   No Proprietary GUI C#, C++, Fortran  
ASReml VSN International 26 March 2014 No Proprietary CLI    
BMDP Statistical Solutions   No Proprietary      
Dataplot Alan Heckert 2013 Yes Public domain CLIGUI Fortran  
ELKI Ludwig Maximilian University of Munich 0.7.5 (15 February 2019) Yes AGPL CLIGUI Java Shell (computing)
Epi Info Centers for Disease Control and Prevention 27 June 2016 Yes Public domain CLIGUI Microsoft C#  
EViews IHS 23 March 2015 No Proprietary CLIGUI    
GAUSS Aptech Systems 2019 No Proprietary CLIGUI C, C++  
GenStat VSN International 2015 No Proprietary CLIGUI    
GraphPad Prism GraphPad Software, Inc. February 2009 No Proprietary GUI    
gretl The gretl Team 2019c (2 July 2019) Yes GNU GPL CLIGUI C hansl
JASP JASP team 0.92 (10 December 2018) Yes GNU GPL GUI C++  
JMP SAS Institute 14.3 (March 2019) No Proprietary GUICLI   JSL (JMP Scripting Language)
LIMDEP Econometric Software, Inc., William Greene May 2012 No Proprietary CLIGUI Fortran, C++  
Maple Maplesoft 2019.1 (May 28, 2019; 3 months ago) [±][1] No Proprietary CLIGUI    
Mathematica Wolfram Research 12.0.0 (April 16, 2019; 5 months ago) [±][2] No Proprietary CLIGUI C, Mathematica  
MATLAB MathWorks R2018b (12 September 2018) No Proprietary CLIGUI C++, Java, MATLAB  
MaxStat Pro MaxStat Software Pro 3.6 No Proprietary GUI VB.net, C++, C#  
MedCalc MedCalc Software bvba 7 May 2019 No Proprietary GUI    
Minitab Minitab Inc. 7 June 2017 No Proprietary CLIGUI    
NCSS NCSS, LLC February 2015 No Proprietary GUI    
NLOGIT Econometric Software, Inc., William Greene May 2012 No Proprietary CLIGUI Fortran,C++  
NMath Stats CenterSpace Software November 2009 No Proprietary CLI    
NumXL Spider Financial 14 June 2016 No Proprietary GUI C++, VBA C, C++, C#, VB, VBA, .NET
OpenEpi A. Dean, K. Sullivan, M. Soe 22 September 2014 Yes GNU GPL GUI JavaScript, HTML  
Orange Bioinformatics Laboratory, Faculty of Computer and Information Science, University of Ljubljana 10 January 2016 Yes GNU GPL GUI/Python Python, Cython Python
Origin OriginLab 28 October 2014 No Proprietary GUI C++ LabTalk
Ox programming language OxMetrics, J.A. Doornik August 2011 No Proprietary CLI    
OxMetrics OxMetrics, J.A. Doornik August 2011 No Proprietary CLI/GUI    
Primer Primer-E February 2007 No Proprietary GUI    
PSPP GNU Project 1.2.0 (6 November 2018)[3] Yes GNU GPL CLIGUI C Perl (by PSPP-Perl[4])
R R Foundation 3.5.2 (20 December 2018) Yes GNU GPL CLIGUI[5] C, Fortran, R[6] R languagePython (by RPy), Perl (by Statistics::R module)
RKWard RKWard community 0.7.0 (16 April 2018) [7] Yes GNU GPL CLIGUI C++, ECMAScript R languagePython (by RPy), Perl (by Statistics::R module)
Revolution Analytics Norman Nie 2007 Yes Proprietary CLIGUI    
RATS Estima 1 October 2010 No Proprietary CLIGUI    
ROOT ROOT Analysis Framework 4 November 2016 Yes GNU GPL GUI C++ C++, Python
SageMath >100 developers worldwide 8.8 (27 June 2019; 2 months ago) [±][8] Yes GNU GPL CLI & GUI Python, Cython Python
Salstat Alan J. Salmoni, Mark Livingstone 16 May 2014 Yes GNU GPL CLI & GUI PythonNumPySciPy Python
SAS SAS Institute 9.4M6 (November 2018),

Viya 3.4 (September 2018)
No Proprietary CLI & GUI C SAS language, CAS Language (CASL), APIs for R languagePythonLuaJava
SciPy Enthought 1.3.1 (9 August 2019) Yes BSD CLI PythonCFortran Python
SHAZAM SHAZAM Analytics Ltd 11.1.4 (April 2015) No Proprietary CLIGUI FORTRAN, C++, C  
SigmaXL SigmaXL Inc. 11 March 2019 No Proprietary GUI    
Skytree Infinity Skytree, Inc. 26 October 2010 No Proprietary CLIGUIJava SDKPython SDK C++ ShellPython
SOCR UCLA and University of Michigan 3.0 (10 May 2015) Yes LGPL GUI Java  
SOFA Statistics Grant Paton-Simpson 1.5.2 (7 July 2019) Yes AGPL GUI Python Python
SPlus Insightful Inc. 2010 No Proprietary CLI    
SPSS IBM 24.0 (15 March 2016) No Proprietary CLIGUI Java R, Python, SaxBasic
Stata StataCorp LLC 26 June 2019 No Proprietary CLIGUI C ado, Mata
StatCrunch Pearson Education July 2017 No Proprietary GUI    
Statgraphics Statpoint Technologies Incorporated September 2014 No Proprietary GUI C++  
Statistica Dell Software September 2015 No Proprietary GUI C++ R, Statistica Visual Basic (SVB)
StatPlus AnalystSoft 7 January 2007 No Proprietary GUI    
Statsmodels Statsmodels Developers 0.9.0 (12 May 2018) Yes BSD CLI PythonC Python
SYSTAT Systat Software Inc. 21 February 2007 No Proprietary CLIGUI    
TSP TSP International September 2009 No Proprietary CLI Fortran  
UNISTAT Unistat Ltd 8 April 2011 No Proprietary GUIExcel    
Winpepi J. H. Abramson June 2008 No Proprietary GUI    
WPS Analytics World Programming March 2018 No Proprietary CLIGUI C, Assembler PythonRSAS and SQL languages
WINKS TexaSoft August 2013 No Proprietary GUI Fortran, Visual Basic  
XploRe MD*Tech 2006 No Proprietary GUI    
Product Developer Latest version Open source Software license Interface Written in Scripting languages

Operating system support

Product Windows Mac OS Linux BSD Unix Cloud
ADaMSoft Yes Yes Yes Yes Yes No
Alteryx Yes No No No No No
Analyse-it Yes No No No No No
BMDP Yes         No
Dataplot Yes Yes Yes Yes Yes No
ELKI Yes Yes Yes Yes Yes No
Epi Info Yes No No No No No
EViews Yes Yes No No No No
GAUSS Yes Yes Yes No Yes No
GraphPad Prism Yes Yes No No No No
gretl Yes Yes Yes Yes No No
JASP Yes Yes Yes No No browser
JMP Yes Yes Terminated No No No
LIMDEP Yes No No No No No
Maple Yes Yes Yes No Yes No
MATLAB Yes Yes Yes No No No
Mathematica Yes Yes Yes No Yes Yes
MaxStat Pro Yes No No No No No
MedCalc Yes No No No No Yes[9]
Minitab Yes Terminated No No No No
NCSS Yes Yes No No No No
NLOGIT Yes No No No No No
NMath Stats Yes No No No No No
NumXL Yes No No No No No
OpenEpi Yes Yes Yes Yes Yes No
Orange Yes Yes Yes Yes Yes No
Origin Yes No No No No No
Primer Yes No No No No No
PSPP Yes Yes Yes Yes Yes No
R Commander Yes[10] Yes[10] Yes[10] Yes[10] Yes No
R Yes Yes Yes Yes Yes Yes
RATS Yes Yes Yes No Yes No
RKWard Yes No Yes No Yes No
ROOT Yes Yes Yes Yes Yes No
SageMath Partial Yes Yes No Yes Yes
Salstat Yes Yes Yes Yes Yes No
SAS Yes Terminated Yes No Yes Yes
SciPy Yes Yes Yes Yes Yes No
SHAZAM Yes No No No No No
SigmaXL Yes Yes No No No No
SOCR Yes Yes Yes Yes Yes No
SOFA Statistics Yes Yes Yes Yes Yes No
SPlus Yes No Yes No Yes No
SPSS Yes Yes Yes No Yes Yes
Stata Yes Yes Yes No Yes No
StatCrunch Yes Yes Yes Yes Yes Yes
Statgraphics Yes No No No No No
Statistica Yes No No No No No
StatPlus Yes Yes No No No No
Statsmodels Yes Yes Yes Yes Yes No
SYSTAT Yes Terminated No No No No
TSP Yes Yes Yes Yes Yes No
UNISTAT Yes No No No No No
The Unscrambler Yes No No No No No
Winpepi Yes No No No No No
WPS Analytics Yes Yes Yes No Yes Yes
WINKS Yes No No No No No
XploRe Yes No Yes No Yes No
Product Windows Mac OS Linux BSD Unix SaaS

ANOVA

Support for various ANOVA methods

Product One-way Two-way MANOVA GLM Mixed model Post-hoc Latin squares
ADaMSoft Yes Yes No No No No No
Alteryx Yes Yes Yes Yes Yes    
Analyse-it Yes Yes No No Yes Yes No
BMDP Yes Yes Yes Yes Yes Yes  
Epi Info Yes Yes No No No No No
EViews Yes            
GAUSS   No No No   No No
GenStat Yes Yes Yes Yes Yes Yes Yes
GraphPad Prism Yes Yes No No   Yes No
gretl Yes            
JASP Yes Yes No        
JMP Yes Yes Yes Yes Yes Yes Yes
LIMDEP Yes Yes Yes Yes Yes No No
Maple Yes[11] No No No No No Yes[12]
Mathematica Yes Yes No[13] Yes   Yes No
MATLAB+Statistics Toolbox Yes Yes Yes Yes Yes Yes Yes
MaxStat Pro Yes Yes No No No Yes Yes
MedCalc Yes Yes No Yes   Yes No
Minitab Yes Yes Yes Yes   Yes Yes
NCSS Yes Yes Yes Yes Yes Yes Yes
NLOGIT Yes Yes Yes Yes Yes No No
NMath Stats Yes Yes No No   No No
Orange Yes No No No No No No
Origin Yes Yes No No Yes Yes No
PSPP Yes Yes No Yes   Yes Yes
R Yes Yes Yes Yes Yes Yes Yes
R Commander Yes Yes Yes Yes   Yes Yes
SageMath Yes Yes Yes   Yes Yes  
Salstat Yes No No No   No No
SAS Yes Yes Yes Yes Yes Yes Yes
SciPy Yes No No No No No No
SHAZAM Yes Yes No Yes Yes Yes No
SigmaXL Yes Yes No No     No
SOCR Yes Yes No No   Yes Yes
SOFA Statistics Yes No No No   No No
SPlus Yes Yes Yes Yes   Yes Yes
SPSS Yes Yes Yes Yes Yes Yes Yes
Stata Yes Yes Yes Yes Yes Yes Yes
StatCrunch Yes Yes No No No Yes No
Statgraphics Yes Yes Yes Yes Yes Yes Yes
Statistica Yes Yes Yes Yes   Yes Yes
StatPlus Yes Yes Yes Yes   Yes Yes
Statsmodels Yes Yes Yes Yes Yes Yes No
SYSTAT Yes Yes Yes Yes   Yes Yes
TSP No No No No   No No
UNISTAT Yes Yes No Yes   Yes Yes
The Unscrambler Yes No No No   No No
WINKS Yes Yes No Yes Yes Yes No
Winpepi Yes Yes No No   No No
WPS Analytics Yes Yes Yes Yes Yes Yes Yes
Product One-way Two-way MANOVA GLM Mixed model Post-hoc Latin squares

Regression

Support for various regression methods.

Product OLS WLS 2SLS NLLS Logistic GLM LAD Stepwise Quantile Probit Cox Poisson MLR
ADaMSoft Yes Yes No Yes Yes No No Yes          
Alteryx Yes Yes     Yes Yes   Yes   Yes      
Analyse-it Yes       Yes               Yes
BMDP Yes       Yes     Yes     Yes    
Epi Info Yes No No No Yes No No No     Yes    
EViews Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes   Yes Yes
GAUSS Yes       Yes Yes No   No     Yes  
GenStat Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
GraphPad Prism Yes Yes No Yes No No No No No No   No Yes
gretl Yes Yes Yes Yes Yes No Yes Yes Yes Yes   Yes  
JMP Yes Yes No Yes Yes Yes No Yes In JMP Pro Yes In JMP Pro Yes Yes
LIMDEP Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Maple Yes Yes No Yes[14] No No No No No No No No Yes
Mathematica Yes Yes   Yes Yes[15] Yes[16] Yes[17]   Yes Yes[18] Yes[19] Yes Yes[20]
MATLAB+Statistics Toolbox Yes Yes Yes[21] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
MaxStat Pro Yes Yes   Yes Yes               Yes
MedCalc Yes Yes   Yes Yes     Yes   Yes Yes   Yes
Minitab Yes Yes No Yes Yes No No Yes No        
NCSS Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
NLOGIT Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
NMath Stats Yes Yes   Yes                 Yes
NumXL Yes         Yes   Yes         Yes
Orange Yes Yes No Yes Yes No No No No No No No Yes
Origin Yes Yes No Yes No No No No No No Yes No Yes
PSPP Yes                        
R Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
R Commander[22] Yes         Yes     No        
RATS Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes   Yes Yes
SageMath Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes   Yes  
Salstat No No No No No No No No No No   No No
SAS Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
SciPy Yes via "statsmodels" No Yes No No No Yes No via "statsmodels" No via "statsmodels" No
SHAZAM Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
SigmaXL Yes       Yes               Yes
SOCR Yes No No No Yes No No No          
SPlus Yes     Yes Yes Yes   Yes Yes        
SPSS Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Stata Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
StatCrunch Yes No No No Yes No No No No No No No Yes
Statgraphics Yes Yes No Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Statistica Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes
StatPlus Yes No Yes Yes Yes Yes No Yes          
Statsmodels Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes
SYSTAT Yes Yes Yes Yes Yes Yes Yes Yes No        
TSP Yes Yes Yes Yes Yes No Yes No Yes Yes   Yes Yes
UNISTAT Yes Yes Yes Yes Yes Yes No Yes   Yes   Yes  
The Unscrambler Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
WINKS Yes       Yes Yes   Yes         Yes
Winpepi Yes       Yes         Yes   Yes Yes
WPS Analytics Yes Yes   Yes Yes Yes   Yes   Yes Yes Yes Yes
Product OLS WLS 2SLS NLLS Logistic GLM LAD Stepwise Quantile Probit Cox Poisson MLR

Time series analysis

Support for various time series analysis methods.

Product ARIMA GARCH Unit root test Cointegration test VAR Multivariate GARCH
Alteryx Yes No        
Analyse-it            
EViews Yes Yes Yes Yes Yes Yes
GAUSS Yes Yes Yes   Yes Yes
GraphPad Prism No No No No No  
gretl Yes Yes Yes Yes Yes  
JMP Yes          
LIMDEP Yes Yes Yes Yes Yes No
Mathematica Yes[23] Yes Yes[24] Yes Yes[25] Yes[26]
MATLAB+Econometrics Toolbox Yes Yes Yes Yes Yes  
MaxStat Pro Yes No No No No No
MedCalc No No No No No  
Minitab Yes No No No No  
NCSS Yes          
NLOGIT Yes Yes Yes Yes Yes No
NumXL Yes Yes Yes Yes    
NMath Stats            
Orange Yes No No No Yes No
Origin No No No No No No
PSPP            
R Yes Yes Yes Yes Yes Yes
R Commander[22]            
RATS Yes Yes Yes Yes Yes Yes
SageMath Yes Yes Yes Yes Yes Yes
Salstat No No No No No No
SAS Yes Yes Yes Yes Yes Yes
SciPy via "statsmodels" No via "statsmodels" No via "statsmodels" No
SHAZAM Yes Yes Yes Yes Yes No
SOCR No No No No No  
Stata Yes Yes Yes Yes Yes Yes
Statgraphics Yes No No No No  
Statistica Yes No No No No  
StatPlus Yes No No No No  
SPlus   Yes     Yes  
SPSS Yes Yes        
Statsmodels Yes No Yes Yes Yes No
SYSTAT Yes          
TSP Yes Yes Yes Yes Yes No
UNISTAT Yes No No No No  
WINKS Yes No No No No  
Winpepi            
WPS Analytics Yes   Yes      
Product ARIMA GARCH Unit root test Cointegration test VAR Multivariate GARCH

Charts and diagrams

Support for various statistical charts and diagrams.

Chart Bar chart Box plot Correlogram Histogram Line chart Scatterplot
ADaMSoft Yes Yes Yes Yes Yes Yes
Alteryx Yes Yes   Yes Yes Yes
Analyse-it Yes Yes Yes Yes Yes Yes
BMDP       Yes   Yes
ELKI No No No Yes Yes Yes
Epi Info Yes No No Yes Yes Yes
EViews Yes Yes Yes Yes Yes Yes
GAUSS Yes Yes   Yes Yes Yes
GenStat Yes Yes Yes Yes Yes Yes
GraphPad Prism Yes Yes Yes Yes Yes Yes
gretl Yes Yes Yes Yes Yes Yes
JMP Yes Yes Yes Yes Yes Yes
LIMDEP Yes Yes Yes Yes Yes Yes
Maple Yes[27] Yes[28] Yes[29] Yes[30] Yes[31] Yes[32]
Mathematica Yes[33] Yes[34] Yes[35] Yes[36] Yes[37] Yes[38][39]
MATLAB+Statistics Toolbox Yes Yes Yes Yes Yes Yes
MaxStat Pro Yes Yes Yes Yes Yes Yes
MedCalc Yes Yes Yes Yes Yes Yes
Minitab Yes Yes Yes Yes Yes Yes
NCSS Yes Yes Yes Yes Yes Yes
NLOGIT Yes Yes Yes Yes Yes Yes
NMath Stats            
NumXL     Yes Yes    
Orange Yes Yes Yes Yes Yes Yes
Origin Yes Yes No Yes Yes Yes
PSPP            
R Yes Yes Yes Yes Yes Yes
R Commander            
RATS Yes Yes Yes Yes Yes Yes
SageMath Yes Yes Yes Yes Yes Yes
SAS Yes Yes Yes Yes Yes Yes
SciPy Yes Yes No Yes Yes Yes
SHAZAM Yes Yes Yes Yes Yes Yes
SigmaXL Yes Yes   Yes Yes Yes
SOCR Yes Yes Yes Yes Yes Yes
SOFA Statistics Yes Yes No Yes Yes Yes
SPlus            
SPSS Yes Yes Yes Yes Yes Yes
Stata Yes Yes Yes Yes Yes Yes
StatCrunch Yes Yes No Yes Yes Yes
Statgraphics Yes Yes Yes Yes Yes Yes
Statistica Yes Yes Yes Yes Yes Yes
StatPlus Yes Yes Yes Yes Yes Yes
Statsmodels Yes Yes Yes Yes Yes Yes
SYSTAT            
TSP No No Yes Yes Yes Yes
UNISTAT Yes Yes Yes Yes Yes Yes
The Unscrambler Yes     Yes Yes Yes
WINKS Yes Yes Yes Yes Yes Yes
Winpepi         Yes Yes
WPS Analytics Yes Yes Yes Yes Yes Yes

Other abilities

Product s/w

type

[Note 1]
Descriptive statistics Nonparametric statistics Quality

control
Survival

analysis
    Data processing
Base

stat.[Note 2]
Normality

tests[Note 3]
CTA[Note 4] Nonparametric

comparison, ANOVA
Cluster

analysis
Discriminant

analysis
BDP[Note 5] Ext.[Note 6]
ADaMSoft S + + + + - - + + + +
Alteryx S + + + + + + + + + +
Analyse-it X + + + + + - - - + +
BMDP   + + + +   + + +    
Epi Info S + - + + - + - - + +
Gauss St + + - - - - - - + +
GenStat St + + + + + + + + + +
GraphPad Prism S + + - + - + - - - -
Gretl S + + + + - + - - + +
JMP S + + + + + + + + + +
LIMDEP S + + + + - - + + + +
Maple S + +[40]     +[41] - - - + +
Mathematica S + + + + - +[42] + - + +
MATLAB+Statistics Toolbox S + + + + + + + + + +
MaxStat Pro S + + + +   - - - + +
MedCalc S + + + + + + - - + +
Minitab S + + + + + + + + + +
NCSS S + + + + + + + + + +
NLOGIT S + + + + - - + + + +
NMath Stats S + + - - - - + - - -
NumXL X + + - - - - - - - +
OpenEpi S + - + - - - - - - -
Orange S + + + + + - + + + +
Origin S + + - + - + + + + +
PSPP S + +                
R St + + + + + + + + + +
RATS   + + - - - - - - + +
SAS S + + + + + + + + + +
SciPy St + + - + - - - - + +
SHAZAM S + + - - - - - - + +
SigmaXL X + + + + + +     + +
SOCR S + + + + - + + - + +
SOFA Statistics S   - + + - - - - - -
Stata S + + + + + + + + + +
StatCrunch C + + + + + - - - + +
Statgraphics S + + + + + + + + + +
Statistica S + + + + + + + + + +
StatPlus S + + + + + + - - + +
SPlus St + + + + + + + + + +
SPSS S + + + + + + + + + +
Statsmodels St + + + - - + - - + +
SYSTAT S + + + + + + + + + +
TSP S + + - - - - - - + +
UNISTAT S + + + + + + + + + +
The Unscrambler S + +   +     + +    
WINKS S + + + + + +     + +
Winpepi S + + + + - + + - - -
WPS Analytics S + + + +   + + + + +
Product s/w

type

[Note 1]
Descriptive statistics Nonparametric statistics Quality

control
Survival

analysis
    Data processing
Base

stat.[Note 2]
Normality

tests[Note 3]
CTA[Note 4] Nonparametric

comparison, ANOVA
Cluster

analysis
Discriminant

analysis
BDP[Note 5] Ext.[Note 6]

See also[edit]

原文:https://en.wikipedia.org/wiki/Comparison_of_statistical_packages

本文:https://pub.intelligentx.net/wikipedia-comparison-statistical-packages

讨论:请加入知识星球或者小红圈【首席架构师圈】

 

SEO Title
Wikipedia Comparison of statistical packages

【首席架构师推荐】计算代数系统列表

Chinese, Simplified

下表提供了计算机代数系统(CAS)的比较。CAS是一个包,包含一组算法,用于对代数对象执行符号操作,一种语言来实现它们,以及使用该语言的环境。CAS可以包括用户界面和图形功能;要想有效,可能需要大量的算法库、高效的数据结构和一个快速的内核

General

System Creator Development started First public release Latest stable version Latest stable release date Cost (USD) License Notes
Axiom Richard Jenks 1977 1993 and 2002[7]   August 2014[8] Free modified BSD license General purpose CAS. Continuous Release using Docker Containers
Cadabra Kasper Peeters 2001 2007 2.2.0 29 March 2018 Free GNU GPL CAS for tensor field theory
CoCoA John Abbott, Anna M. Bigatti, Giovanni Lagorio 1987 1995 5.2.0 2 May 2017 Free GNU GPL Specialized CAS for commutative algebra
Derive Soft Warehouse 1979 1988 6.1 November 2007 Discontinued Proprietary CAS designed for pocket calculators; it was discontinued in 2007
Erable (aka ALGB) Bernard Parisse, Mika Heiskanen, Claude-Nicolas Fiechter 1993 1993 4.20060919 21 April 2009 Free LGPL CAS designed for Hewlett-Packard scientific graphing calculators of the HP 48/49/40/50 series; discontinued in 2009
Fermat Robert H. Lewis 1986 1993 6.21 13 July 2018 $70 if grant money available, otherwise $0 GNU GPL Specialized CAS for resultant computation and linear algebra with polynomial entries
FORM J.A.M. Vermaseren 1984 1989 4.2 6 July 2017[9] Free GNU GPL CAS designed mainly for particle physics
FriCAS Waldek Hebisch 2007 2007 1.3.5 3 February 2019 Free modified BSD license Full-featured general purpose CAS. Especially strong at symbolic integration.
GAP GAP Group 1986 1986 4.9.3 5 September 2018 Free GNU GPL[10] Specialized CAS for group theory and combinatorics.
GiNaC Christian Bauer, Alexander Frink, Richard B. Kreckel, et al. 1999 1999 1.7.5 17 February 2019 Free GNU GPL Integrate symbolic computation into C++ programs; no high-level interface, but emphasis on interoperability.
KANT/KASH KANT Group ? ? 3 2005/2008 Free for non-commercial use own license Specialized CAS for algebraic number theory
Macaulay2 Daniel Grayson and Michael Stillman 1992 1994 1.14 2019 Free GNU GPL Specialized CAS for algebraic geometry and commutative algebra
Macsyma MIT Project MAC and Symbolics 1968 1978 2.4 1999 $500 Proprietary The oldest general purpose CAS. Still alive as Maxima.
Magma University of Sydney ~1990 1993 2.22-3 20 July 2016 $1,440 Proprietary General purpose CAS, originally specialized in group theory. Works with elements of algebraic structures rather than with non typed mathematical expressions
Magnus The New York Group Theory Cooperative 1994 1997   2005 Free GNU GPL Specialized CAS for group theory providing facilities for doing calculations in and about infinite groups. Discontinued in 2005.
Maple Symbolic Computation Group, University of Waterloo 1980 1984 2019.1 (May 28, 2019; 3 months ago) [±][11] 14 March 2019 $2,390(Commercial), $2,265 (Government), $995 (Academic), $239 (Personal Edition), $99 (Student), $79 (Student, 12-Month term)[12] Proprietary One of the major general purpose CAS
Mathcad Parametric Technology Corporation 1985 1985 15.0 M045 November 2015 $1,600 (Commercial), $105 (Student), Free (Express Edition)[13] Proprietary Numerical software with some CAS capabilities
Mathematica Wolfram Research 1986 1988 12.0.0 (April 16, 2019; 5 months ago) [±][14] 16 April 2019 $2,495 (Professional), $1095 (Education), $295 (Personal),[15] $140 (Student), $69.95 (Student annual license),[16] free on Raspberry Pi hardware[17] Proprietary One of the major general purpose CAS
Mathomatic George Gesslein II 1986 1987 16.0.5 2012 Discontinued LGPL Elementary algebracalculuscomplex number and polynomial manipulations.
Maxima MIT Project MAC and Bill Schelter et al. 1967 1998 5.42.0 22 January 2019 Free GNU GPL General purpose CAS. Continuation of Macsyma; new releases occur two times a year.
MuMATH Soft Warehouse 1970s 1980 MuMATH-83   Discontinued Proprietary Predecessor of Derive
MuPAD SciFace Software 1989 2008 5.1 2008 Discontinued Proprietary MathWorks has incorporated MuPAD technology into Symbolic Math Toolbox
OpenAxiom Gabriel Dos Reis 2007 2007 1.4.2 2013 Free modified BSD license General purpose CAS. A fork of Axiom.
PARI/GP Henri Cohen, Karim Belabas, Bill Allombert et al. 1985 1990 2.11.0 18 July 2018 Free GNU GPL Specialized CAS for number theory.
Reduce Anthony C. Hearn 1960s 1968   2018 Free modified BSD license Historically important general purpose CAS. Still alive, as open-sourced and freed in December 2008
Scilab Scilab Enterprises 1990 1990 6.0.2 14 February 2019 Free CeCILL (GPL-compatible) Matlab alternative.
SageMath William A. Stein 2005 2005 8.8 27 June 2019[18] Free GNU GPL Mathematics software system combining a number of existing packages, including numerical computationstatistics and image processing
SINGULAR University of Kaiserslautern 1984 1997 4-1-2 25 March 2019 Free GNU GPL Computer algebra system for polynomial computations, with special emphasis on commutative and non-commutative algebraalgebraic geometry, and singularity theory.
SMath Studio Andrey Ivashov 2004 2006 0.99.6839 22 September 2018 Free Proprietary Mathematical notebook program similar to Mathcad.
Symbolic Math Toolbox (MATLAB) MathWorks 1989 2008 9.4(2018a) 2018 $3,150 (Commercial), $99 (Student Suite), $700 (Academic), $194 (Home) including required Matlab Proprietary Provides tools for solving and manipulating symbolic math expressions and performing variable-precision arithmetic.
SymPy Ondřej Čertík 2006 2007 1.4 10 April 2019 Free modified BSD license Python-based
TI-Nspire CAS (Computer Software) Texas Instruments 2006 2009 3.1.0.392     Proprietary Successor to Derive. Based on Derive's engine used in TI-89/Voyage 200 and TI-Nspire handheld
Wolfram Alpha Wolfram Research   2009   2013 Pro version: $4.99 / month, Pro version for students: $2.99 / month, ioRegular version: free Proprietary Online computer algebra system with step-by step solutions.
Xcas/Giac Bernard Parisse 2000 2000 1.2.3 January 2017 Free GPL General CAS, also adapted for the HP Prime. Compatible modes for Maple, MuPAD and TI89 syntax. Symbolic spreadsheets, Giac library for use with other programs. ARM ports for some PDAs with Linux or WinCE[19]
Yacas Ayal Pinkus et al. 1998[20] 1999 1.7.0 26 June 2019 Free GNU GPL  
  Creator Development started First public release Latest stable version Latest stable release date Cost (USD) License Notes

These computer algebra systems are sometimes combined with "front end" programs that provide a better user interface, such as the general-purpose GNU TeXmacs.

Functionality

Below is a summary of significantly developed symbolic functionality in each of the systems.

System Formula editor Arbitrary precision Calculus Solvers Graph theory Number theory Quantifier elimination Boolean algebra Tensors Probability Control theory Coding theory Group theory System
Integration Integral transforms Equations Inequalities Diophantine equations Differential equations Recurrence relations
Axiom No Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes No No Yes Axiom
Cadabra No Yes Yes Yes Yes Yes No Yes No No No No No Yes No No No Yes Cadabra
FriCAS Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes FriCAS
Magma No Yes No No Yes No Yes No No Yes Yes No No No ? ? Yes Yes Magma
Magnus No Yes No No No No No No No ? ? No ? No No No No Yes Magnus
Maple Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes No Yes Maple
Mathcad Yes No Yes No Yes No No No No No No No No No No No No No Mathcad
Mathematica Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes[21] Yes Yes No Yes Mathematica
Mathomatic No No Yes Yes Yes No No No No No Yes No No No No No No No Mathomatic
Symbolic Math Toolbox (MATLAB) Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes No Yes No Yes Yes No No Symbolic Math Toolbox (MATLAB)
Maxima No Yes Yes Yes Yes Yes No Yes Yes Yes Yes No Yes Yes Yes Yes No Yes Maxima
SageMath No Yes Yes Yes Yes Yes Yes[A] Yes Yes Yes Yes Yes[B] Yes Yes Yes No Yes Yes SageMath
SMath Studio Yes No Yes No Yes No No No No No No No No No No No No No SMath Studio
SymPy No Yes Yes Yes Yes Yes Yes[22] Yes Yes No Yes No Yes Yes Yes No No Yes SymPy
Wolfram Alpha Pro version only Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No ? ? No Yes Wolfram Alpha
GAP No Yes No No Yes Yes Yes No Yes Yes Yes Yes Yes Yes No No Yes Yes GAP
Xcas/Giac Yes Yes Yes No Yes Yes No Yes Yes No Yes No No No Yes ? No ? Xcas/Giac
Yacas No Yes Yes No Yes No No No No No No No No No ? ? No No Yacas
Reduce No Yes Yes ? Yes Yes ? Yes ? ? Yes Yes Yes Yes ? ? ? ? Reduce
  1. ^ via SymPy
  2. ^ via qepcad optional package
 

Those which do not "edit equations" may have a GUI, plotting, ASCII graphic formulae and math font printing. The ability to generate plaintext files is also a sought-after feature because it allows a work to be understood by people who do not have a computer algebra system installed.

Operating system support

The software can run under their respective operating systems natively without emulation. Some systems must be compiled first using an appropriate compiler for the source language and target platform. For some platforms, only older releases of the software may be available.

System DOS Windows macOS Linux BSD Solaris Android iOS SaaS Other
Axiom ? Emulator Yes Yes No No ? ? No  
Cadabra No Yes Yes Yes Yes No No No No  
CoCoA No Yes Yes Yes Yes Yes ? ? No Tru64 UNIXHP-UXIRIX
Derive Yes Yes No No No No ? ? No  
Erable No Emulator Emulator Emulator No No No No No System RPL on HP 48/49/50/40 series
Euler ? Yes No Yes No No ? ? No  
Fermat ? Cygwin Yes Yes No No ? ? No  
FORM ? Cygwin Yes Yes Yes Yes ? ? No  
FriCAS ? Cygwin+native Yes Yes Yes Yes ? ? No  
GAP ? Yes Yes Yes Yes Yes ? ? No  
KANT/KASH ? Yes Yes Yes No No ? ? No  
Macaulay2 ? Cygwin Yes Yes Yes Yes ? ? No  
Magma ? Yes Yes Yes Yes Yes ? ? No  
Magnus No Yes ? Yes ? Yes No No No SunOs
Maple No Yes Yes Yes No No No No No  
Mathcad Yes Yes No No No No No No No  
Mathematica No Yes Yes Yes No No No No Yes Raspberry Pi[17]
Mathomatic Yes Yes Yes Yes Yes Yes No Yes No All POSIX platforms
Maxima ? Yes Yes Yes Yes Yes Yes ? No All POSIX platforms with Common Lisp
MuMATH Yes No No No No No ? ? No  
OpenAxiom ? Yes Yes Yes Yes Yes ? ? No  
PARI/GP ? Yes Yes Yes Yes Yes Yes ? No  
Reduce ? Yes Yes Yes Yes Yes ? ? No  
SageMath No Yes Yes Yes No Yes No Yes Yes  
SINGULAR ? Yes Yes Yes Yes Yes ? ? No  
SMath Studio No Yes Mono Mono Mono Mono Yes Yes Yes Universal Windows Platform
SymbolicC++ ? Yes Yes Yes Yes Yes ? ? No  
Symbolic Math Toolbox (MATLAB) No Yes Yes Yes No No No No Yes  
SymPy ? Yes Yes Yes Yes Yes Yes Yes Yes[23] Any system that supports Python
TI-Nspire (desktop software) No Yes Yes No No No No Yes No  
Xcas/Giac No Yes Yes Yes Yes Yes Yes Yes No HP Prime CASKhiCAS for TI Nspire
Yacas No Yes Yes Yes Yes Yes ? ? No  

Graphing calculators

Some graphing calculators have CAS features.

System Creator Development started First public release / OS version Latest stable version / OS version Notes
Casio CFX-9970G CASIO Computer Co. ? 1998    
Casio Algebra FX 2.0 CASIO Computer Co. ? 1999    
Casio ClassPad 300Casio ClassPad 300 PlusCasio ClassPad 330Casio ClassPad 330 PlusCasio ClassPad fx-CP400

Casio ClassPad Manager
CASIO Computer Co. 2002 2003 3.10.7000 ClassPad Manager is an emulator which runs on a PC.
HP 49GHP 49g+HP 48gIIHP 50gHP 40GHP 40gs Hewlett-Packard 1993 1.??(1999) / 4 2.15 (2006-09-19, 2009-04-21) / 4 Based on Erable, which is also available as an add-on for the HP 48SHP 48SXHP 48GHP 48G+HP 48GX. Intended for problems which occur in engineering applications. Source code openly available.
HP Prime Hewlett-Packard 2000 2013 6975 (2014-12-03) / v1.1.0-46 (2014-03-31) Based on Xcas/Giac. Source code openly available.
TI-89 Texas Instruments 1995 1996 2.09  
TI-89 Titanium Texas Instruments 2003 2004 7/18/2005 v3.10  
TI-92 Texas Instruments 1994 1995 ?  
TI-92 Plus Texas Instruments 1997 1998 3/27/2003 v2.09  
TI-Nspire CASTI-Nspire CX CAS Texas Instruments 2006 2008 2014 v3.6.0.550  
Voyage 200 Texas Instruments 2001 2002 7/18/2005 v3.10  

 

See also

 

原文:https://en.wikipedia.org/wiki/List_of_computer_algebra_systems

本文:https://pub.intelligentx.net/wikipedia-list-computer-algebra-systems

讨论:请加入知识星球或者小红圈【首席架构师圈】

SEO Title
wikipedia List of computer algebra systems

【首席架构师精选】图型可视化软件

【首席架构师精选】精选数据可视化软件列表

【首席架构师精选】精选绘图软件

【首席架构师精选】精选统计软件列表

集成平台

Chinese, Simplified
SEO Title
integration platform

【Kafka架构】如何为高性能流应用程序设计和实现可扩展的Kafka架构

视频号

微信公众号

知识星球

Chinese, Simplified

Kafka是一个分布式、可扩展、弹性和容错的事件流平台,使您能够实时处理大量数据。Kafka Streams是一个库,通过构建Kafka生产者和消费者库,并利用Kafka的本地功能提供数据并行性、分布式协调、容错性和操作简单性,简化了应用程序开发。


架构

Kafka体系结构由两个主要层组成:

  • 存储层:负责存储和复制应用程序生成和使用的事件。存储层基于分布式提交日志的抽象,分布式提交日志是一种以持久和容错的方式存储记录序列的数据结构。Kafka中的记录是一个键值对,它还包含时间戳和可选的头。记录可以代表任何类型的事件,如客户订单、付款、点击网站或传感器读数
  • 计算层:负责在事件到达或离开系统时处理和转换事件。计算层由四个核心组件组成:生产者API、消费者API、流API和连接器API。这些组件允许您与存储层交互,并对事件执行各种操作

Kafka主题是共享一个共同主题或类别的记录流的逻辑名称。例如,您可以有一个名为“/orders”的主题,其中包含与系统中的订单相关的所有事件。一个主题可以划分为多个分区,这些分区是Kafka中并行性和可扩展性的单位。每个分区都是一个有序且不可变的记录序列,这些记录被分配给集群中的一个或多个代理(服务器)。一个分区可以有一个引导代理和零个或多个从引导代理复制数据以实现容错。

 

生产者API允许您将事件写入Kafka中的一个或多个主题。您可以指定各种参数,如键、值、分区、时间戳、标头、压缩类型和每个事件的确认级别。生产者API还处理事件的批处理、缓冲、序列化、错误处理和负载平衡。

 

消费者API允许您读取Kafka中一个或多个主题的事件。您可以指定各种参数,如组ID、偏移量、分区分配策略、反序列化类型、轮询间隔和每个使用者的提交行为。使用者API还处理事件的重新平衡、偏移管理、错误处理和并发控制。

 

流API允许您对Kafka中的事件执行有状态流处理。您可以使用构建在生产者和消费者API之上的Java库来定义复杂的转换、聚合、联接、窗口、状态存储和对事件的交互式查询。流API还处理流处理应用程序的可扩展性、容错性、一次性语义和应用程序重置。

 

连接器API允许您将Kafka与数据库、云服务或遗留系统等外部系统集成。您可以使用源连接器将外部系统中的数据摄取到Kafka主题中,也可以使用接收器连接器将Kafka话题中的数据导出到外部系统中。连接器API还处理配置管理。

Kafka Streams是对生产者和消费者的抽象,它使您能够专注于处理您的Kafka数据,而不必担心低级细节。您可以用Java或Scala编写代码,创建一个JAR文件,然后启动独立的应用程序,将记录流式传输到Kafka主题。

Kafka Streams为处理数据提供了两个主要的抽象:KStream和KTableKStream表示一个无限制的记录流,可以使用无状态操作(如映射、过滤、连接和聚合)对其进行转换。KTable表示记录的变更日志流,可以按键查询这些记录,并通过计数、分组、窗口化和联接等有状态操作进行更新。

 

Kafka Streams还支持交互式查询,允许您从外部客户端或服务查询应用程序的状态。您可以使用交互式查询来公开KTables的最新值或状态存储的内容。

 

设计可扩展kafka体系结构的最佳实践

需要考虑的主要方面

  • 分区:分区是实现Kafka中可扩展性和并行性的关键。一个主题被划分为一个或多个分区,这些分区分布在多个代理中。每个分区都有一个引导程序和零个或多个跟随程序,它们复制数据以实现容错。生产者根据记录键或自定义分区器将记录写入分区。使用者通过形成使用者组并将分区分配给组成员,并行地从分区中读取记录
  • 复制:复制是Kafka中确保数据可用性和持久性的机制。每个分区都可以有一个复制因子,该因子指定在不同的代理上维护多少个数据副本。分区的引导者处理所有的读写请求,而跟随者被动地复制来自引导者的数据。如果领导者失败,其中一名追随者将自动当选为新的领导者
  • 序列化:序列化是将数据从一种格式转换为另一种格式以进行传输或存储的过程。Kafka使用字节数组作为记录的数据类型,因此您需要在将数据发送到Kafka之前对其进行序列化,并在从Kafka收到数据后对其进行反序列化。Kafka为字符串、整数、字节等常见数据类型提供了内置的序列化器和反序列化器。您还可以为JSON、Avro、Protobuf等复杂数据类型使用自定义序列化器和反串行器。
  • 压缩:压缩是通过消除冗余或使用编码方案来减小数据大小的技术。压缩可以通过减少网络带宽使用、磁盘空间使用和CPU使用来提高Kafka的性能和效率。Kafka支持多种压缩编解码器,如gzip、snappy、lz4、zstd等。您可以在生产者级别或主题级别配置压缩
  • 保留:保留是决定数据在被删除或压缩之前在Kafka中保留多长时间的策略。保留可以基于时间或大小限制。基于时间的保留会删除超过指定持续时间的记录。当分区的总大小超过指定的限制时,基于大小的保留将删除记录。您还可以使用日志压缩只保留每个记录键的最新值

最佳实践

  • 有意义的记录键:记录键对于确定如何在Kafka中对数据进行分区和处理非常重要。您应该使用反映数据语义和处理逻辑的有意义的记录键。例如,如果要计算每个客户的订单数量,则应使用客户ID作为记录密钥。避免使用空键或随机键,因为它们可能会导致数据分布不均匀或不必要的重新分区
  • 避免创建过多或过少的主题:过多的主题会增加管理元数据和代理连接的开销。主题过少会导致数据失真和消费者之间的争论。一个好的经验法则是每个逻辑数据类型或域有一个主题
  • 选择一个平衡吞吐量和延迟的分区大小:更大的分区大小可以通过允许更多记录一起批处理来提高吞吐量。然而,它也会延迟向消费者交付记录,从而增加延迟。较小的分区大小可以通过更快地传递记录来减少延迟。然而,它也可以通过降低批处理效率来降低吞吐量。一个好的经验法则是分区大小在1MB到10MB之间
  • 选择与所需并行级别匹配的分区数:分区数决定了有多少消费者可以并行使用主题中的数据。如果您的分区比使用者多,则某些分区将处于空闲状态。如果你的消费者比分区多,那么一些消费者就会饿死。一个好的经验法则是至少拥有与预期消费者的最大数量一样多的分区
  • 选择一个符合可用性和持久性要求的复制因子:复制因子决定了在不同的代理上维护每个分区的副本数量。更高的复制因子可以在一个复制副本出现故障时允许消费者切换到另一个复制复制副本,从而提高可用性。它还可以通过降低代理崩溃时数据丢失的风险来提高耐用性。但是,更高的复制系数也会增加磁盘空间使用率和网络流量。一个好的经验法则是复制因子在2到4之间。
  • 选择适当的状态存储:状态存储是存储流应用程序状态的本地数据库,如KTables或自定义聚合。Kafka Streams提供两种类型的状态存储:RocksDB和内存。RocksDB是一个持久的键值存储,支持快速高效地访问大量数据。内存中状态存储速度更快,但不那么耐用,而且更占用内存。您应该选择适合您的性能和可靠性要求的状态存储类型
  • 调整您的配置参数:Kafka Streams公开了许多配置参数,允许您自定义流应用程序的行为和性能。您应该根据您的用例和环境来调整这些参数。例如,您可以调整缓冲区大小、批处理大小、提交间隔、缓存大小、轮询超时等,以优化应用程序的吞吐量和延迟。您还可以启用度量和日志记录来监视应用程序并对其进行故障排除
  • 测试和基准测试您的应用程序:测试和基准是确保流媒体应用程序的质量和性能的重要步骤。您应该使用实际的数据和负载场景来测试您的应用程序,并测量关键指标,如吞吐量、延迟、资源利用率、错误率等。您还应该将结果与您的期望和要求进行比较,并确定需要解决的任何瓶颈或问题
  • 保护您的Kafka集群和数据:您应该使用SSL、SASL或Kerberos等机制为您的Kavka集群启用身份验证、授权和加密。您还应该使用ACL、配额、复制和备份等功能来保护您的数据免受未经授权的访问、篡改或丢失

常见问题及解决方案

数据重复

使用Kafka内置的数据冗余和恢复功能,确保数据只存储一次。您还可以使用KafkaConnect将Kafka与其他系统集成,避免数据重复。

数据丢失或群集故障

您可以配置您的Kafka集群进行容错。您可以使用复制来确保您的数据存储在多个代理上。您还可以使用负载均衡器在代理之间分配流量。

数据倾斜

当数据在分区之间分布不均匀时,可能会发生数据偏斜,这会影响Kafka集群的性能。为了解决这个问题,您可以使用分区策略,在分区之间均匀分布数据,例如基于键的分区或循环分区。

缓慢的再平衡时间

您可以利用缓存来减少需要重新平衡的数据量。您还可以监控主题的数据量,以确保Kafka的性能不受影响。

网络拥塞

通过使用高速网络接口优化网络配置,将网络配置为低延迟,并使用压缩来减少传输的数据量。

冗余数据存储

仅将Kafka用于短期存储数据,并根据您的特定需求将数据迁移到关系数据库或非关系数据库。您还可以将Kafka配置为使用HDFS或blob存储以获得额外的永久性。

延迟或无序事件

您可以在Kafka Streams中使用事件时间语义和窗口操作来处理延迟或无序事件。事件时间语义意味着您使用嵌入事件中的时间戳而不是处理时间来确定事件的顺序。通过窗口操作,可以将事件分组为固定或动态时间间隔,并对其应用聚合或联接。您还可以为处理延迟到达或更新的窗口指定宽限期和保留期。

模式演变或数据格式更改

您可以使用模式注册表和序列化框架,如Avro、Protobuf或JSONSchema来处理模式演变或数据格式更改。模式注册表是一种存储和管理数据模式的服务。序列化框架允许您通过架构兼容性检查和转换对数据进行序列化和反序列化。您可以使用自定义序列化程序和反序列化程序将模式注册表和序列化框架与Kafka Streams集成。

安全漏洞

您可以使用加密、身份验证和授权来保护您的Kafka集群。您还可以监视Kafka集群的安全问题,并在必要时采取纠正措施。

监测不足

您可以实施一个全面的监控解决方案,跟踪吞吐量、延迟和错误率等关键指标。您还可以设置警报,以便在出现性能问题时通知您,并在必要时采取纠正措施。

实施不当

它可能导致数据处理效率低下和技术债务。为了避免这种情况,您可以在设计和实现Kafka架构时遵循最佳实践。您还可以监视Kafka集群的性能和可用性问题,并在必要时采取纠正措施。

最后一句话

为高性能流应用程序设计和实现可扩展的Kafka架构需要仔细规划和实现。Kafka事件驱动架构、Kafka Streams和Apache Pulsar分布式消息和流媒体平台是提高Kafka性能的一些解决方案。

本文地址
https://architect.pub
SEO Title
How to Design and Implement Scalable Kafka Architecture for High-Performance Streaming Applications

【企业事件枢纽】Apache Kafka中的事务

Chinese, Simplified

在之前的一篇博客文章中,我们介绍了Apache Kafka®的一次语义。这篇文章介绍了各种消息传递语义,介绍了幂等生成器、事务和Kafka流的一次处理语义。现在,我们将继续上一节的内容,深入探讨Apache Kafka中的事务。该文档的目标是让读者熟悉有效使用Apache Kafka中的事务API所需的主要概念。

我们将讨论设计事务API的主要用例、Kafka的事务语义、用于Java客户端的事务API的细节、实现的有趣方面,以及在使用API时的重要注意事项。

这篇博客文章并不是关于使用事务细节的教程,我们也不会深入讨论设计细节。相反,我们将在适当的地方链接到JavaDocs或设计文档,以供希望深入研究的读者使用。

我们希望读者熟悉基本的Kafka概念,比如主题、分区、日志偏移量,以及代理和客户在基于Kafka的应用程序中的角色。熟悉Java的Kafka客户机也会有所帮助。

为什么交易?

我们在Kafka中设计的事务主要用于那些显示“读-进程-写”模式的应用程序,其中的读和写来自于异步数据流,比如Kafka主题。这种应用程序通常称为流处理应用程序。

第一代流处理应用程序可以容忍不准确的处理。例如,使用web页面印象流并生成每个web页面的视图聚合计数的应用程序可以容忍计数中的一些错误。

然而,随着这些应用程序的流行,对具有更强语义的流处理应用程序的需求也在增长。例如,一些金融机构使用流处理应用程序来处理用户帐户上的借方和贷方。在这些情况下,不能容忍处理过程中的错误:我们需要准确地一次处理所有消息,没有例外。

更正式地说,如果流处理应用程序使用消息a并生成消息B,使得B = F(a),那么仅一次处理就意味着如果且仅当成功生成B时才使用a,反之亦然。

使用配置为至少一次传递语义的普通Kafka生产者和消费者,流处理应用程序可能会在以下方面失去一次处理语义:

  1. 由于内部重试,生产者.send()可能导致消息B的重复写入。这是由幂等生产者解决的,并不是本文其余部分的重点。
  2. 我们可能会重新处理输入消息A,导致将重复的B消息写入输出,这违反了一次处理语义。如果流处理应用程序在写入B之后但在将A标记为已使用之前崩溃,则可能发生重新处理。因此,当它恢复时,它将再次消耗A并再次写入B,从而导致重复。
  3. 最后,在分布式环境中,应用程序会崩溃,甚至更糟!-暂时失去与系统其余部分的连接。通常,会自动启动新实例来替换那些被认为丢失的实例。通过这个过程,我们可能会有多个实例处理相同的输入主题,并写入相同的输出主题,从而导致输出重复,并违反一次处理语义。我们称之为“僵尸实例”问题。

我们在Kafka中设计了事务api来解决第二个和第三个问题。事务通过使这些周期成为原子性的,并通过促进僵死的隔离,从而在读写周期中实现精确的一次处理。

事务性语义

原子多分区写道

事务允许对多个Kafka主题和分区进行原子写入。事务中包含的所有消息都将被成功写入,或者一个也不写入。例如,处理过程中的错误可能导致事务中止,在这种情况下,来自事务的任何消息都不会被使用者读取。现在我们来看看它是如何实现原子读写周期的。

首先,让我们考虑原子读写周期的含义。简而言之,这意味着如果一个应用程序使用一个消息的抵消X topic-partition tp0,和写消息B topic-partition tp1在消息上做一些处理,B = F (a),然后read-process-write周期是a和B原子只有在消息被认为成功地消耗和发表在一起,要么一无所有。

现在,只有当消息A的偏移量X标记为已使用时,才会认为它是从主题分区tp0使用的。将偏移量标记为已使用的偏移量称为提交偏移量。在Kafka中,我们通过写入内部Kafka主题offsets主题来记录偏移量提交。仅当消息的偏移量提交到偏移量主题时,才认为该消息已被消耗。

因此从一个偏移量提交只是另一个写一个卡夫卡的话题,因为消息被认为是只有当其抵消消费承诺,原子还写跨多个主题和分区使原子read-process-write周期:提交的抵消X的补偿主题写的消息B tp1将单个事务的一部分,因此原子。

僵尸击剑(Zombie fencing)

我们通过要求为每个事务生产者分配一个称为transaction .id的惟一标识符来解决zombie实例的问题。这用于跨流程重新启动标识相同的生产者实例。

API要求事务生产者的第一个操作应该是显式注册其事务。使用Kafka集群的id。当它这样做时,Kafka代理使用给定的事务检查打开的事务。id并完成它们。它还增加与transaction .id关联的epoch。epoch是存储在每个transaction .id中的内部元数据。

一旦epoch被碰撞,任何具有相同事务的生产者。身份证和旧时代被认为是僵尸,被隔离。来自这些生产者的未来事务写将被拒绝。

读事务消息

现在,让我们将注意力转向在读取作为事务的一部分写入的消息时提供的保证。

Kafka使用者只会在事务被提交时才会向应用程序提交事务消息。换句话说,使用者不会交付作为开放事务一部分的事务性消息,也不会交付作为中止事务一部分的消息。

值得注意的是,上面的保证没有达到原子读取。特别是,当使用Kafka使用者来消费来自主题的消息时,应用程序将不知道这些消息是否作为事务的一部分写入,因此它们不知道事务何时开始或结束。进一步说,一个给定的消费者不保证订阅所有分区事务的一部分,它没有发现这个方法,这就很难保证所有的信息是一个事务的一部分最终会被一个消费者。

简而言之:Kafka保证使用者最终只交付非事务性消息或提交的事务性消息。它将从打开的事务中保留消息,并从中止的事务中过滤出消息。

Java中的事务API

事务特性主要是一个服务器端和协议级特性,任何支持它的客户端库都可以使用它。用Java编写的“读-处理-写”应用程序,使用Kafka的事务API,看起来应该是这样的:

第1-5行通过指定事务设置生产者。配置id并将其注册到initTransactions API。inittransactions()返回后,由具有相同事务的生产者的另一个实例启动的任何事务。id会被关闭和隔离。

第7-10行指定KafkaConsumer应该只读取非事务性消息,或者从它的输入主题中提交事务性消息。流处理应用程序通常在多个读写阶段处理其数据,每个阶段使用前一阶段的输出作为其输入。通过指定read_committed模式,我们可以在所有阶段只执行一次处理。

第14-21行演示了读写循环的核心:我们使用一些记录,启动一个事务,处理使用的记录,将处理过的记录写入输出主题,将使用的偏移量发送到偏移量主题,最后提交事务。根据上面提到的保证,我们知道偏移量和输出记录将作为一个原子单元提交。

事务是如何工作的

在本节中,我们将简要概述上述事务api引入的新组件和新数据流。为了更详尽地讨论这个主题,您可以阅读原始设计文档,或者观看介绍事务的Kafka峰会演讲。

下面内容的目标是在调试使用事务的应用程序时,或者在尝试调优事务以获得更好的性能时,提供一个心智模型。

事务协调器和事务日志

Kafka 0.11.0中的transactions API引入的组件是事务协调器和上图右侧的事务日志。

事务协调器是在每个Kafka代理中运行的模块。事务日志是一个内部kafka主题。每个协调器在事务日志中拥有一些分区子集。其代理为其领导的分区。

每一个事务。id通过一个简单的哈希函数映射到事务日志的特定分区。这意味着只有一个协调器拥有给定的transaction .id。

通过这种方式,我们利用Kafka的rock solid复制协议和leader选择过程来确保事务协调器总是可用的,并且所有事务状态都被持久地存储。

值得注意的是,事务日志只存储事务的最新状态,而不是事务中的实际消息。消息仅存储在实际的主题分区中。事务可以处于“进行中”、“准备提交”和“完成”等不同状态。存储在事务日志中的就是这种状态和相关的元数据。

数据流

在较高的层次上,数据流可以分为四种不同的类型。

A:生产者和事务协调者的交互

执行事务时,生产者向事务协调器发出以下请求:

initTransactions API注册一个事务。id与协调器。此时,协调器将使用该事务关闭任何挂起的事务。id和碰撞的时代,以栅栏出僵尸。每个生产者会话只发生一次。

当生产者在事务中第一次将数据发送到一个分区时,该分区首先向协调器注册。

当应用程序调用commitTransaction或abortTransaction时,将向协调器发送一个请求,以开始两阶段提交协议。

B:协调器和事务日志的交互

随着事务的进展,生产者发送上述请求来更新协调器上事务的状态。事务协调器将其拥有的每个事务的状态保存在内存中,并将该状态写入事务日志(以三种方式复制,因此是持久的)。

事务协调器是从事务日志中读写的惟一组件。如果给定的代理失败,则将选出一个新的协调器作为死代理拥有的事务日志分区的leader,它将从传入分区读取消息,以便为这些分区中的事务重建其内存状态。

C:生产者写数据到目标主题分区

在向协调器注册了事务中的新分区之后,生产者将数据正常地发送到实际的分区。这是同一个生产者。发送流,但是要进行一些额外的验证以确保生产者不受保护。

D:主题分区交互的协调器

在生产者发起提交(或中止)之后,协调器开始两阶段提交协议。

在第一阶段,协调器将其内部状态更新为“prepare_commit”,并在事务日志中更新此状态。一旦完成了这一步,就可以保证在任何情况下提交事务。

然后协调器开始第2阶段,将事务提交标记写入作为事务一部分的主题分区。

这些事务标记不公开给应用程序,而是由处于read_committed模式的使用者使用,以过滤掉中止的事务中的消息,并且不返回作为打开事务一部分的消息(即,在日志中但没有与之关联的事务标记的。

一旦写入了标记,事务协调器将事务标记为“完成”,并且生产者可以启动下一个事务。

实践中处理交易

既然我们已经理解了事务的语义以及它们是如何工作的,那么我们就将注意力转向编写利用事务的应用程序的实践方面。

如何选择一个transaction .id

事务。id在保护僵尸方面起着重要作用。但是保持一个标识符在不同的生产者会话之间是一致的,并且适当地隔离僵尸是有点棘手的。

正确隔离“僵尸”的关键是确保对于给定的transaction .id,读写周期中的输入主题和分区总是相同的。如果这不是真的,那么一些消息可能会通过事务提供的围栏泄漏。

例如,在一个分布式流处理应用程序中,假设主题分区tp0最初是由transactional处理的。T0 id。如果在以后的某个时候,它可以映射到另一个具有transactional的生产者。id T1,在T0和T1之间没有栅栏。因此,可以对来自tp0的消息进行重新处理,这违反了一次处理的保证。

实际上,必须存储输入分区和事务之间的映射。外部存储中的id,或者对其进行一些静态编码。Kafka Streams选择后一种方法来解决这个问题。

事务如何执行,以及如何调优它们

事务生产者的性能

让我们将注意力转向事务如何执行。

首先,事务只导致适度的写放大。增加的写是由于:

  1. 对于每个事务,我们都有额外的rpc向协调器注册分区。这些是成批的,因此我们的rpc比事务中的分区要少。
  2. 在完成事务时,必须将一个事务标记写入参与事务的每个分区。同样,事务协调器在单个RPC中批量处理为同一代理绑定的所有标记,因此我们在那里保存RPC开销。但是我们不能避免对事务中的每个分区进行一次额外的写操作。
  3. 最后,我们将状态更改写入事务日志。这包括对添加到事务中的每批分区的写操作、“prepare_commit”状态和“complete_commit”状态。

我们可以看到,开销与作为事务一部分写入的消息的数量无关。因此,提高吞吐量的关键是在每个事务中包含更多的消息。

实际上,对于在最大吞吐量下生成1KB记录的生产者,每100ms提交一条消息只会导致吞吐量降低3%。较小的消息或较短的事务提交间隔将导致更严重的降级。

增加事务持续时间的主要代价是增加了端到端延迟。请记住,读取事务性消息的使用者不会交付作为开放事务一部分的消息。因此,提交间隔的时间越长,应用程序的等待时间就越长,从而增加了端到端延迟。

事务消费者的性能

事务性消费者比生产者简单得多,因为它所需要做的就是:

  1. 筛选属于中止的事务的消息。
  2. 不返回作为开放事务一部分的事务消息。

因此,当以read_committed模式读取事务消息时,事务使用者的吞吐量没有下降。这样做的主要原因是,我们在读取事务性消息时保持零副本读取。

而且,使用者不需要任何缓冲来等待事务完成。相反,代理不允许它提前进行补偿,其中包括打开的事务。

因此,消费者是极其轻量级和高效的。有兴趣的读者可以在本文档中了解消费者设计的细节。

进一步的阅读

我们刚刚触及了Apache Kafka中事务的皮毛。幸运的是,几乎所有的设计细节都记录在网上。有关文件如下:

  1. 最初的Kafka KIP:它提供了关于数据流的详细信息和公共接口的概述,特别是随事务而来的配置选项。
  2. 原始设计文档:不适合胆小的人,这是权威的地方——源代码外!-了解如何处理每个事务RPC,如何维护事务日志,如何清除事务数据,等等。
  3. KafkaProducer javadocs:这是一个学习如何使用新api的好地方。页面开头的示例以及send方法的文档都是很好的起点。

结论

在这篇文章中,我们了解了Apache Kafka中事务API的关键设计目标,理解了事务API的语义,并对API的实际工作方式有了更深入的了解。

如果我们考虑一个读-进程-写循环,这篇文章主要讨论了读和写路径,处理本身就是一个黑盒。事实上,在处理阶段可以做很多事情,这使得仅使用事务api无法保证一次处理。例如,如果处理对其他存储系统有副作用,这里介绍的api不足以保证只进行一次处理。

Kafka Streams框架使用这里描述的事务api向上移动价值链,并为各种流处理应用程序提供一次处理,甚至包括那些在处理期间更新某些额外状态存储的应用程序。

将来的一篇博客文章将讨论Kafka流如何提供一次处理语义,以及如何编写利用它的应用程序。

最后,对于那些渴望了解上述api实现细节的人,我们将在另一篇后续博客文章中介绍一些更有趣的解决方案。

 

原文:https://www.confluent.io/blog/transactions-apache-kafka/

本文:https://pub.intelligentx.net/node/829

讨论:请加入知识星球【首席架构师圈】或者飞聊小组【首席架构师智库】

 

SEO Title
Transactions in Apache Kafka