Files
awesome-awesomeness/html/erlang.md2.html
2025-07-18 23:13:11 +02:00

445 lines
20 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h1 id="awesome-erlang-awesome-analytics">Awesome Erlang <a
href="https://github.com/sindresorhus/awesome"><img
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
alt="Awesome" /></a> <a
href="https://github.com/drobakowski/awesome-erlang"><img
src="https://ga-beacon.appspot.com/UA-82766782-1/awesome-erlang?flat&amp;useReferer"
alt="Analytics" /></a></h1>
<p>A curated list of amazingly awesome Erlang libraries, resources and
shiny thing inspired by <a
href="https://github.com/h4cc/awesome-elixir">awesome-elixir</a>.</p>
<ul>
<li><a href="#awesome-Erlang">Awesome Erlang</a>
<ul>
<li><a href="#package-management">Package Management</a></li>
<li><a href="#release-management">Release Management</a></li>
<li><a href="#configuration-management">Configuration
Management</a></li>
<li><a href="#codebase-maintenance">Codebase Maintenance</a></li>
<li><a href="#web-frameworks">Web Frameworks</a></li>
<li><a href="#web-framework-components">Web Framework
Components</a></li>
<li><a href="#http">HTTP</a></li>
<li><a href="#testing">Testing</a></li>
<li><a href="#logging">Logging</a></li>
<li><a href="#monitoring">Monitoring</a></li>
<li><a href="#deployment">Deployment</a></li>
<li><a href="#distributed-systems">Distributed Systems</a></li>
<li><a href="#code-analysis">Code Analysis</a></li>
<li><a href="#build-tools">Build Tools</a></li>
<li><a href="#geolocation">Geolocation</a></li>
<li><a href="#debugging">Debugging</a></li>
<li><a href="#actors">Actors</a></li>
<li><a href="#date-and-time">Date and Time</a></li>
<li><a href="#orm-and-datamapping">ORM and Datamapping</a></li>
<li><a href="#queue">Queue</a></li>
<li><a href="#authentication">Authentication</a></li>
<li><a href="#text-and-numbers">Text and Numbers</a></li>
<li><a href="#rest-and-api">REST and API</a></li>
<li><a href="#caching">Caching</a></li>
<li><a href="#third-party-apis">Third Party APIs</a></li>
<li><a href="#networking">Networking</a></li>
<li><a href="#internet-of-things">Internet of Things</a></li>
<li><a href="#algorithms-and-datastructures">Algorithms and
Datastructures</a></li>
<li><a href="#translations-and-internationalizations">Translations and
Internationalizations</a></li>
<li><a href="#miscellaneous">Miscellaneous</a></li>
</ul></li>
<li><a href="#resources">Resources</a>
<ul>
<li><a href="#websites">Websites</a></li>
<li><a href="#books">Books</a></li>
<li><a href="#web-reading">Web Reading</a></li>
<li><a href="#Erlang-reading">Erlang Reading</a></li>
<li><a href="#screencasts">Screencasts</a></li>
</ul></li>
<li><a href="#other-awesome-lists">Other Awesome Lists</a></li>
<li><a href="#contributing">Contributing</a></li>
</ul>
<h2 id="package-management">Package Management</h2>
<p><em>Libraries and tools for package and dependency
management.</em></p>
<ul>
<li><a href="https://hex.pm/">hex.pm</a> - A package manager for the
Erlang ecosystem.</li>
</ul>
<h2 id="release-management">Release Management</h2>
<p><em>Libraries and tools for release management.</em></p>
<ul>
<li><a href="https://github.com/erlware/relx">relx</a> - A release
assembler for Erlang.</li>
</ul>
<h2 id="configuration-management">Configuration Management</h2>
<p><em>Libraries and tools related to configuration management.</em></p>
<ul>
<li><a href="https://github.com/heroku/stillir">stillir</a> - Cache
environment variables as Erlang app variables.</li>
</ul>
<h2 id="codebase-maintenance">Codebase Maintenance</h2>
<p><em>Libraries and tools to maintain a clean codebase.</em></p>
<ul>
<li><a href="https://github.com/inaka/elvis">elvis</a> - Erlang Style
Reviewer.</li>
</ul>
<h2 id="web-frameworks">Web Frameworks</h2>
<p><em>Web development frameworks.</em></p>
<ul>
<li><a href="https://github.com/tsujigiri/axiom">Axiom</a> - A
micro-framework, inspired by Rubys <a
href="https://github.com/sinatra/sinatra">Sinatra</a>.</li>
<li><a href="https://github.com/ChicagoBoss/ChicagoBoss">ChicagoBoss</a>
- A server framework inspired by Rails and written in Erlang.</li>
<li><a href="https://github.com/ninenines/cowboy">cowboy</a> - A simple
HTTP server.</li>
<li><a href="https://github.com/kivra/giallo">Giallo</a> - A small and
flexible web framework on top of <a
href="https://github.com/ninenines/cowboy">Cowboy</a>.</li>
<li><a href="https://github.com/mochi/mochiweb">MochiWeb</a> - An Erlang
library for building lightweight HTTP servers.</li>
<li><a href="https://github.com/synrc/n2o">N2O</a> - WebSocket
Application Server.</li>
<li><a href="https://github.com/nitrogen/nitrogen">Nitrogen</a> -
Framework to build web applications (including front-end) in pure
Erlang.</li>
<li><a href="https://github.com/zotonic/zotonic">Zotonic</a> - High
speed, real-time web framework and content management system.</li>
</ul>
<h2 id="web-framework-components">Web Framework Components</h2>
<p><em>Standalone component from web development frameworks.</em></p>
<ul>
<li><a href="https://github.com/ChicagoBoss/cb_admin">cb_admin</a> - An
admin interface for Chicago Boss.</li>
<li><a
href="https://github.com/dkuhlman/cb_websocket_controller">cb_websocket_controller</a>
- A template for implementing a Websocket controller for
ChicagoBoss.</li>
<li><a href="https://github.com/kivra/giallo_session">giallo_session</a>
- A session management library for the Giallo web framework.</li>
<li><a
href="https://github.com/nitrogen/simple_bridge">simple_bridge</a> - An
abstraction layer providing a unified interface to popular Erlang web
servers (Cowboy, Inets, Mochiweb, Webmachine, and Yaws).</li>
</ul>
<h2 id="http">HTTP</h2>
<p><em>Libraries for working with HTTP and scraping websites.</em></p>
<ul>
<li><a href="https://github.com/ninenines/bullet">bullet</a> - Simple,
reliable, efficient streaming for Cowboy.</li>
<li><a href="https://github.com/ninenines/gun">gun</a> - Erlang HTTP
client with support for HTTP/1.1, SPDY and Websocket.</li>
<li><a href="https://github.com/benoitc/hackney">hackney</a> - Simple
HTTP client in Erlang.</li>
<li><a href="https://github.com/cmullaparthi/ibrowse">ibrowse</a> -
Erlang HTTP client.</li>
<li><a href="https://github.com/esl/lhttpc">lhttpc</a> - A lightweight
HTTP/1.1 client implemented in Erlang.</li>
<li><a href="https://github.com/inaka/shotgun">shotgun</a> - For the
times you need more than just a gun.</li>
</ul>
<h2 id="testing">Testing</h2>
<p><em>Libraries for testing codebases and generating test
data.</em></p>
<ul>
<li><a href="https://github.com/manopapad/proper">PropEr</a> - A
QuickCheck-inspired property-based testing tool for Erlang.</li>
<li><a href="https://github.com/esl/tracerl">tracerl</a> - Dynamic
tracing tests and utilities for Erlang/OTP</li>
</ul>
<h2 id="logging">Logging</h2>
<p><em>Libraries for generating and working with log files.</em></p>
<ul>
<li><a href="https://github.com/basho/lager">lager</a> - A logging
framework for Erlang/OTP.</li>
<li><a
href="https://github.com/jbrisbin/lager_amqp_backend">lager_amqp_backend</a>
- AMQP RabbitMQ Lager backend.</li>
<li><a href="https://github.com/synlay/lager_hipchat">lager_hipchat</a>
- HipChat backend for lager.</li>
<li><a href="https://github.com/kivra/lager_loggly">lager_loggly</a> -
Loggly backend for lager.</li>
<li><a href="https://github.com/blinkov/lager_smtp">lager_smtp</a> -
SMTP backend for lager.</li>
<li><a href="https://github.com/furmanOFF/lager_slack">lager_slack</a> -
Simple Slack backend for lager.</li>
<li><a href="https://github.com/heroku/logplex">logplex</a> - Heroku log
router.</li>
</ul>
<h2 id="monitoring">Monitoring</h2>
<p><em>Libraries for gathering metrics and monitoring.</em></p>
<ul>
<li><a href="https://github.com/mazenharake/entop">entop</a> - A
top-like Erlang node monitoring tool.</li>
<li><a href="https://github.com/massemanet/eper">eper</a> - A loose
collection of Erlang Performance related tools.</li>
<li><a href="https://github.com/Feuerlabs/exometer">Exometer</a> - An
Erlang instrumentation package.</li>
<li><a href="https://github.com/boundary/folsom">folsom</a> - An Erlang
based metrics system inspired by Coda Hales <a
href="https://github.com/codahale/metrics">metrics</a>.</li>
<li><a href="https://github.com/lpgauth/statsderl">statsderl</a> - A
statsd Erlang client.</li>
<li><a href="https://github.com/ferd/vmstats">vmstats</a> - Tiny Erlang
app that works in conjunction with statsderl in order to generate
information on the Erlang VM for graphite logs.</li>
</ul>
<h2 id="deployment">Deployment</h2>
<p><em>Libraries and tools related to deployment of Erlang/OTP
applications.</em></p>
<ul>
<li><a href="https://github.com/synlay/docker-erlang">docker-erlang</a>
- Basic Docker Container Images for Erlang/OTP.</li>
</ul>
<h2 id="distributed-systems">Distributed Systems</h2>
<p><em>Tools for stress/load testing, latency issues, etc. across
microservices.</em></p>
<ul>
<li><p><a href="https://github.com/fogfish/typhoon">Typhoon</a> - Stress
and load testing tool for distributed systems that simulates traffic
from a test cluster toward a system-under-test (SUT) and visualizes
related latencies. ## Code Analysis <em>Libraries and tools for
analysing, parsing and manipulation codebases.</em></p></li>
<li><p><a href="https://github.com/parapluu/Concuerror">Concuerror</a> -
Concuerror is a systematic testing tool for concurrent Erlang
programs.</p></li>
<li><p><a href="https://github.com/proger/eflame">eflame</a> - A Flame
Graph profiler for Erlang.</p></li>
<li><p><a href="https://github.com/crownedgrouse/geas">geas</a> - Geas
is a tool that will detect the runnable official Erlang release window
for your project, including its dependencies and provides many useful
informations.</p></li>
</ul>
<h2 id="build-tools">Build Tools</h2>
<p><em>Project build and automation tools.</em></p>
<ul>
<li><a href="https://github.com/rebar/rebar">rebar</a> - Erlang build
tool that makes it easy to compile and test Erlang applications, port
drivers and releases.</li>
<li><a href="https://github.com/rebar/rebar3">rebar3</a> - A build tool
for Erlang which can manage Erlang packages from <a
href="https://hex.pm/">Hex.pm</a>. See more at <a
href="https://www.rebar3.org/">rebar3.org</a></li>
<li><a href="https://github.com/rustyio/sync">sync</a> - On-the-fly
recompiling for Erlang.</li>
</ul>
<h2 id="geolocation">Geolocation</h2>
<p><em>Libraries for geocoding addresses and working with latitudes and
longitudes.</em></p>
<ul>
<li><a href="https://github.com/armon/erl-rstar">erl-rstar</a> - An
Erlang implementation of the R*-tree spacial data structure.</li>
<li><a href="https://github.com/couchbase/geocouch">GeoCouch</a> - A
spatial extension for Couchbase and Apache CouchDB.</li>
<li><a href="https://github.com/armon/teles">Teles</a> - An Erlang
network service for manipulating geographic data.</li>
</ul>
<h2 id="debugging">Debugging</h2>
<p><em>Libraries and tools for debugging code and applications.</em></p>
<ul>
<li><a href="https://github.com/kvakvs/tx">tx</a> - An HTML Erlang term
viewer, starts own webserver and displays any term you give it from your
Erlang node.</li>
</ul>
<h2 id="actors">Actors</h2>
<p><em>Libraries and tools for working with actors and such.</em></p>
<ul>
<li><a href="https://github.com/devinus/poolboy">poolboy</a> - A hunky
Erlang worker pool factory.</li>
</ul>
<h2 id="date-and-time">Date and Time</h2>
<p><em>Libraries for working with dates and times.</em></p>
<ul>
<li><a
href="https://github.com/dmitryme/erlang_localtime">erlang_localtime</a>
- Erlang library for conversion from one local time to another.</li>
<li><a href="https://github.com/choptastic/qdate">qdate</a> - Erlang
date, time, and timezone management: formatting, conversion, and date
arithmetic.</li>
</ul>
<h2 id="orm-and-datamapping">ORM and Datamapping</h2>
<p><em>Libraries that implement object-relational mapping or datamapping
techniques.</em></p>
<ul>
<li><a href="https://github.com/ErlyORM/boss_db">boss_db</a> - A
sharded, caching, pooling, evented ORM for Erlang.</li>
<li><a href="https://github.com/epgsql/epgsql">epgsql</a> - PostgreSQL
Driver for Erlang.</li>
<li><a href="https://github.com/mysql-otp/mysql-otp">mysql-otp</a> -
MySQL/OTP MySQL driver for Erlang/OTP.</li>
<li><a
href="https://github.com/artemeff/pgsql_migration">pgsql_migration</a>
PostgreSQL migrations for Erlang.</li>
</ul>
<h2 id="queue">Queue</h2>
<p><em>Libraries for working with event and task queues.</em></p>
<ul>
<li><a href="https://github.com/darach/dq">dq</a> - Distributed Fault
Tolerant Queue library.</li>
<li><a href="https://github.com/rgrinberg/ebqueue">ebqueue</a> - Tiny
simple blocking queue in erlang.</li>
<li><a href="https://github.com/okeuday/pqueue">pqueue</a> - Erlang
Priority Queues.</li>
<li><a href="https://github.com/ChicagoBoss/tinymq">tinymq</a> - A
diminutive, in-memory message queue for Erlang.</li>
</ul>
<h2 id="authentication">Authentication</h2>
<p><em>Libraries for implementing authentications schemes.</em></p>
<ul>
<li><a href="https://github.com/kivra/oauth2">oauth2</a> - Erlang Oauth2
implementation.</li>
</ul>
<h2 id="text-and-numbers">Text and Numbers</h2>
<p><em>Libraries for parsing and manipulating text and numbers.</em></p>
<ul>
<li><a href="https://github.com/patternmatched/ejsv">ejsv</a> - Erlang
JSON schema validator.</li>
<li><a href="https://github.com/artemeff/eql">eql</a> - Erlang with SQL
or not.</li>
<li><a href="https://github.com/davisp/jiffy">jiffy</a> - JSON NIFs for
Erlang.</li>
<li><a href="https://github.com/talentdeficit/jsx">jsx</a> - An erlang
application for consuming, producing and manipulating json.</li>
<li><a href="https://github.com/expelledboy/miffy">miffy</a> - Jiffy
wrapper which returns pretty maps.</li>
<li><a href="https://github.com/artemeff/qsp">qsp</a> - Enhanced query
string parser for Erlang.</li>
<li><a href="https://github.com/lordnull/rec2json">rec2json</a> -
Generate JSON encoder/decoder from record specs.</li>
</ul>
<h2 id="rest-and-api">REST and API</h2>
<p><em>Libraries and web tools for developing REST-ful APIs.</em></p>
<ul>
<li><a href="https://github.com/s1n4/leptus">leptus</a> - Leptus is an
Erlang REST framework that runs on top of cowboy.</li>
<li><a href="https://github.com/FelipeBB/rooster">rooster</a> - rooster
is a lightweight REST framework that runs on top of mochiweb.</li>
</ul>
<h2 id="caching">Caching</h2>
<p><em>Libraries for caching data.</em></p>
<ul>
<li><a href="https://github.com/fogfish/cache">cache</a> - In-memory
Segmented Cache</li>
</ul>
<h2 id="third-party-apis">Third Party APIs</h2>
<p><em>Libraries for accessing third party APIs.</em></p>
<ul>
<li><a
href="https://github.com/ruel/google-token-erlang">google-token-erlang</a>
- Google ID token verifier for Erlang.</li>
<li><a href="https://github.com/kivra/restclient">restc</a> - An Erlang
REST client</li>
<li><a href="https://github.com/kivra/oauth2_client">oauth2c</a> - An
Erlang oAuth 2 client (uses restc)</li>
</ul>
<h2 id="networking">Networking</h2>
<p><em>Libraries and tools for using network related stuff.</em></p>
<ul>
<li><a href="https://github.com/benoitc-attic/barrel_tcp">barrel_tcp</a>
- barrel_tcp is a generic TCP acceptor pool with low latency in
Erlang.</li>
<li><a href="https://github.com/priestjim/gen_rpc">gen_rpc</a> - A
scalable RPC library for Erlang-VM based languages.</li>
<li><a href="https://github.com/rpt/gen_tcp_server">gen_tcp_server</a> -
A library that takes the concept of gen_server and introduces the same
mechanics for operating a TCP server.</li>
<li><a href="https://github.com/gossiperl/gossiperl">gossiperl</a> -
Language agnostic gossip middleware and message bus written in
Erlang.</li>
<li><a href="https://github.com/benoitc/nat_upnp">nat_upnp</a> - Erlang
library to map your internal port to an external using UNP IGD.</li>
<li><a href="https://github.com/ninenines/ranch">ranch</a> - Socket
acceptor pool for TCP protocols.</li>
</ul>
<h2 id="internet-of-things">Internet of Things</h2>
<p><em>Libraries and tools for interacting with the physical
world.</em></p>
<ul>
<li><a href="https://grisp.org/">GRiSP</a> - Run the Erlang VM on an IoT
board with many hardware interfaces and low-level drivers using a small
realtime unikernel called RTEMS</li>
<li><a href="https://github.com/noam-io/lemma_erlang">lemma_erlang</a> -
A lemma for IDEOs Noam internet-of-things prototyping platform.</li>
</ul>
<h2 id="algorithms-and-datastructures">Algorithms and
Datastructures</h2>
<p><em>Libraries and implementations of algorithms and
datastructures.</em></p>
<ul>
<li><a href="https://github.com/fogfish/datum">datum</a> - A pure
functional and generic programming for Erlang</li>
<li><a href="https://github.com/travelping/erlando">erlando</a> - A set
of syntax extensions like currying and monads for Erlang.</li>
<li><a href="https://github.com/mochi/statebox">statebox</a> - Erlang
state “monad” with merge/conflict-resolution capabilities.</li>
<li><a href="https://github.com/basho/riak_dt">riak_dt</a> - Erlang
library of state based CRDTs.</li>
</ul>
<h2 id="translations-and-internationalizations">Translations and
Internationalizations</h2>
<p><em>Libraries providing translations or
internationalizations.</em></p>
<h2 id="miscellaneous">Miscellaneous</h2>
<p><em>Useful libraries or tools that dont fit in the categories
above.</em></p>
<ul>
<li><a href="https://github.com/ferd/erlang-history">erlang-history</a>
- Hacks to add shell history to Erlangs shell.</li>
<li><a href="https://github.com/ShoreTel-Inc/erld">erld</a> - erld is a
small program designed to solve the problem of running Erlang programs
as a UNIX daemon.</li>
</ul>
<h1 id="resources">Resources</h1>
<p>Various resources, such as books, websites and articles, for
improving your Erlang development skills and knowledge.</p>
<h2 id="websites">Websites</h2>
<p><em>Useful web and Erlang-related websites and newsletters.</em></p>
<ul>
<li><a
href="https://github.com/0xAX/erlang-bookmarks/wiki/Erlang-bookmarks">Erlang
Bookmarks</a> - All about erlang programming language [powerd by
community].</li>
<li><a href="https://erlangcentral.org/">Erlang Central</a> - An awesome
collections of erlang resource along with live community chat for
discussing and seeking help.</li>
<li><a href="http://www.planeterlang.com/">Planet Erlang</a> - Planet
site/RSS feed of blog posts covering topics across the Erlang
ecosystem.</li>
<li><a href="http://spawnedshelter.com/">Spawned Shelter</a> - Erlang
Spawned Shelter. A collection of the best articles, videos and
presentations related to Erlang.</li>
</ul>
<h2 id="books">Books</h2>
<p><em>Fantastic books and e-books.</em></p>
<ul>
<li><a
href="https://leanpub.com/erlangandelixirforimperativeprogrammers">Erlang
and Elixir for Imperative Programmers</a> - Introduction to Erlang and
Elixir in the context of functional concepts by Wolfgang Loder
(2016)</li>
<li><a href="http://learnyousomeerlang.com/">Learn You Some Erlang</a> -
Learn you some Erlang - for great good! A very thorough resource
covering everything from beginning Erlang programming to large-scale
development and deployment.</li>
<li><a href="http://www.erlang-in-anger.com/">Stuff Goes Bad - ERLANG IN
ANGER</a> - This book intends to be a little guide about how to be the
Erlang medic in a time of war.</li>
</ul>
<h2 id="web-reading">Web Reading</h2>
<p><em>General web-development-related reading materials.</em></p>
<h2 id="erlang-reading">Erlang Reading</h2>
<p><em>Erlang-releated reading materials.</em></p>
<ul>
<li><a href="http://www.evanmiller.org/joy-of-erlang.html">The Joy of
Erlang; Or, How To Ride A Toruk</a> - The Joy of Erlang; Or, How To Ride
A Toruk A fast track introduction to Erlang that teaches the language by
walking through a few example projects.</li>
</ul>
<h2 id="screencasts">Screencasts</h2>
<p><em>Cool video tutorials.</em></p>
<h1 id="contributing">Contributing</h1>
<p>Please see <a
href="https://github.com/drobakowski/awesome-erlang/blob/master/CONTRIBUTING.md">CONTRIBUTING</a>
for details.</p>
<p><a href="https://github.com/drobakowski/awesome-erlang">erlang.md
Github</a></p>