Tim Alternatives

Necessary Criteria

Node / Hapi Node / Express Java or Groovy / Spring MVC Elixir / Phoenix Ruby / Rails
Websockets Simplistic Simplistic Simple Simple Very New / Complicated
JSON API Simplistic Simplistic Difficult Simple Simple
AMQP Simplistic Simplistic Sophisticated Simple Possible
REST Simple Simple Simple Simple Simple
RDBMS Support Simplistic or Not Widely Used Simplistic or Not Widely Used Sophisticated Simple Mostly Simple
Testability Difficult Reasonable Simple Simple Simple
Documentation Poor Good Good Good Good
Usage Small Large Large Medium Large
Libraries Tons / Very Tiny / Supplement Lack of Standard Library / Fragmentation / Comprehensive Tons / Very Tiny / Supplement Lack of Standard Library / Fragmentation / Comprehensive Lots / Mostly Infrastructure / Sharing Uncommon Compared to Other LanguagesĀ  Many / Some in Erlang Lots / Very Comprehensive
Package Management Good Good Great Great Great

Desireable Criteria

Node / Hapi Node / Express Java or Groovy / Spring MVC Elixir / Phoenix Ruby / Rails
Readability Medium / Explicit Medium / Explicit Medium / Explicit & Implicit Simple / Explicit Simple / Implicit
Encourage Good Practices Low Low Medium High Medium-High
Flexibility High High Medium High High
Reliability If You Build It If You Build It High High Medium
Recoverability If You Build It If You Build It Medium-High High / Core Principle of Erlang Medium
Speed Fast Fast Fast Fast Usually Fast Enough
Memory Efficient Efficient Heavy Efficient Heavy
Scalability Process Model / High Process Model / High Thread Model / High Erlang Process Model / High Process Model / Medium
Distributability Medium Medium High High Lots / Very Comprehensive
Language Helps Find Implementation Errors Poor Poor Great Good Poor
Made with Slides.com