{"slug": "erlang-otp", "name": "Erlang/OTP", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 4, "commenters": 11, "warners": 2, "score": 2.953, "rising": 0.02, "first": "2025-11-01", "latest": "2026-09-12", "why": "Erlang/OTP solved this in 1986 for telecom switches that needed 99.999% uptime.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 4, "compare": 1, "warn": 2}, "spark": [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "Erlang/OTP solved this in 1986 for telecom switches that needed 99.999% uptime.", "kind": "", "icon": true, "domain": "erlang.org", "github_repo": null, "official_url": "https://www.erlang.org/", "pricing": "", "aliases": ["Erlang/OTP", "Erlang", "Erlang OTP"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 794730048, "item_id": 49670628, "url": "https://news.ycombinator.com/item?id=49670628", "by": "spinningslate", "date": "2026-09-12", "version": null, "stance": "recommend", "quote": "As an Erlang and now gleam developer, I'm continuously grateful for the BEAM's support", "excerpt": "> Yes, golang managed to create dynamic stacks, but this required major support from compiler and so unlikely to appear in existing languages That's true but I'm puzzled by the decision rationale. It's undeniably a major undertaking to add first class, fine-grained processes to a language and its runtime. But time invested there gets the multiplicative upside that all language users benefit from the investment. Inste", "context": "", "use_case": "", "switched_from": "", "story": "A Design Space Exploration of Async/Await"}, {"id": 757902432, "item_id": 47368902, "url": "https://news.ycombinator.com/item?id=47368902", "by": "Setas", "date": "2026-03-13", "version": null, "stance": "recommend", "quote": "Erlang/OTP solved this in 1986 for telecom switches that needed 99.999% uptime.", "excerpt": "I run 8 AI agents that manage my solo company \u2014 CEO, CFO, COO, Marketing, Accountant, Lawyer, CTO, and an Improver agent that upgrades the others. They share a persistent knowledge graph (JSONL file), consult each other through a central orchestrator, and post content to social media on a 5-minute cron. They've been running for months. They crash. The interesting question isn't how to prevent that \u2014 it's how to make ", "context": "Runs 8 AI agents for a solo company", "use_case": "Supervision and fault tolerance", "switched_from": "", "story": "You hired the AI to write the tests. Of course they pass"}, {"id": 743937073, "item_id": 46496067, "url": "https://news.ycombinator.com/item?id=46496067", "by": "adagradschool", "date": "2026-01-04", "version": null, "stance": "recommend", "quote": "using the principles from Erlang/OTP", "excerpt": "I'm approaching this problem via recursive task decomposition [0] mostly for coding but once that is polished, I can imagine it generalizing to other workloads. One idea I've been meaning to explore for a while is using the principles from Erlang/OTP [1] and mapping it onto multi-agent systems. Some nodes are supervisor trees that coordinate and handle restarts, gracefully degrade, are easy to observe + steer. [0] ht", "context": "", "use_case": "", "switched_from": "", "story": "What changes when AI memory stops being ephemeral?"}, {"id": 733652608, "item_id": 45853288, "url": "https://news.ycombinator.com/item?id=45853288", "by": "Joel_Mckay", "date": "2025-11-07", "version": null, "stance": "recommend", "quote": "The OTP offers a flat/simple architecture", "excerpt": "The OTP offers a flat/simple architecture, and most people are puzzled the first time they see a Phoenix channels demonstration. I think it is hilarious people assume 3NF or 4NF db schema can save them from bad design. Yet, many have tried to make SQL scale efficiently (with some obvious caveats) =3 https://www.cockroachlabs.com/", "context": "", "use_case": "", "switched_from": "", "story": "From web developer to database developer in 10 years"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 770516708, "item_id": 48157294, "url": "https://news.ycombinator.com/item?id=48157294", "by": "pmontra", "date": "2026-05-15", "version": null, "stance": "warn", "quote": "supervisors don't cover all use cases of job control", "excerpt": "I used both Rails and Phoenix. ActiveRecord is more pleasant to work with than the ORM of Phoenix IMHO, but not everyone shares the same feeling. Despite having built in concurrency my team ended up building a version of Sidekiq because supervisors don't cover all use cases of job control. I prefer deploying with Capistrano than with Elixir builds. Another matter of taste. Structural pattern matching is the only feat", "context": "", "use_case": "", "switched_from": "", "story": "Erlang/OTP 29.0"}, {"id": 734202992, "item_id": 45887687, "url": "https://news.ycombinator.com/item?id=45887687", "by": "giraffe_lady", "date": "2025-11-11", "version": null, "stance": "warn", "quote": "OTP is a really roughneck standard library", "excerpt": "I love saying this but OTP is a really roughneck standard library. They just added shit to it as they needed it without apparently putting too much consideration into the organization, naming, or conventions. It makes it very powerful but very disorienting and experience gained with one part of it often does not really prepare you for other parts. Usually each specific tool was created by someone who used it immediat", "context": "", "use_case": "", "switched_from": "", "story": "How I fell in love with Erlang"}]}], "who": [{"by": "Setas", "context": "Runs 8 AI agents for a solo company", "url": "https://news.ycombinator.com/item?id=47368902", "date": "2026-03-13"}], "tags": [], "use_cases": ["supervision and fault tolerance", "calling otp functions from gleam"], "compared": [{"slug": "beam", "name": "BEAM", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=45785300", "title": "How I fell in love with Erlang", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49626718", "title": "A Design Space Exploration of Async/Await", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48571811", "title": "Agentic coding deserves more than a chat box bolted onto VS Code", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48524293", "title": "Phoenix LiveView 1.2 Released", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48155297", "title": "Erlang/OTP 29.0", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47327559", "title": "You hired the AI to write the tests. Of course they pass", "mentions": 1}], "sentiment_by_month": {"2025-11": {"compare": 1, "recommend": 1, "warn": 1, "neutral": 1}, "2025-12": {"neutral": 1}, "2026-01": {"recommend": 1}, "2026-02": {}, "2026-03": {"recommend": 1}, "2026-04": {}, "2026-05": {"warn": 1}, "2026-06": {"neutral": 2}, "2026-07": {}, "2026-08": {}, "2026-09": {"recommend": 1}, "2026-10": {}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 794730048, "item_id": 49670628, "url": "https://news.ycombinator.com/item?id=49670628", "by": "spinningslate", "date": "2026-09-12", "version": null, "stance": "recommend", "quote": "As an Erlang and now gleam developer, I'm continuously grateful for the BEAM's support", "excerpt": "> Yes, golang managed to create dynamic stacks, but this required major support from compiler and so unlikely to appear in existing languages That's true but I'm puzzled by the decision rationale. It's undeniably a major undertaking to add first class, fine-grained processes to a language and its runtime. But time invested there gets the multiplicative upside that all language users benefit from the investment. Inste", "context": "", "use_case": "", "switched_from": "", "story": "A Design Space Exploration of Async/Await"}, {"id": 777216048, "item_id": 48576003, "url": "https://news.ycombinator.com/item?id=48576003", "by": "sublinear", "date": "2026-06-17", "version": null, "stance": "neutral", "quote": "", "excerpt": "That video is the perfect amount of awkward. I love it.", "context": "", "use_case": "", "switched_from": "", "story": "Agentic coding deserves more than a chat box bolted onto VS Code"}, {"id": 776402161, "item_id": 48525135, "url": "https://news.ycombinator.com/item?id=48525135", "by": "arcanemachiner", "date": "2026-06-14", "version": null, "stance": "neutral", "quote": "It is, since OTP 24 was released in 2021", "excerpt": "I believe BEAM bytecode is now JIT-ed. EDIT: It is, since OTP 24 was released in 2021: https://www.erlang.org/downloads/24 > The BeamAsm JIT-compiler has been added to Erlang/OTP and will give a significant performance boost for many applications. The JIT-compiler is enabled by default on most x86 64-bit platforms that have a C++ compiler that can compile C++17.", "context": "", "use_case": "", "switched_from": "", "story": "Phoenix LiveView 1.2 Released"}, {"id": 770516708, "item_id": 48157294, "url": "https://news.ycombinator.com/item?id=48157294", "by": "pmontra", "date": "2026-05-15", "version": null, "stance": "warn", "quote": "supervisors don't cover all use cases of job control", "excerpt": "I used both Rails and Phoenix. ActiveRecord is more pleasant to work with than the ORM of Phoenix IMHO, but not everyone shares the same feeling. Despite having built in concurrency my team ended up building a version of Sidekiq because supervisors don't cover all use cases of job control. I prefer deploying with Capistrano than with Elixir builds. Another matter of taste. Structural pattern matching is the only feat", "context": "", "use_case": "", "switched_from": "", "story": "Erlang/OTP 29.0"}, {"id": 757902432, "item_id": 47368902, "url": "https://news.ycombinator.com/item?id=47368902", "by": "Setas", "date": "2026-03-13", "version": null, "stance": "recommend", "quote": "Erlang/OTP solved this in 1986 for telecom switches that needed 99.999% uptime.", "excerpt": "I run 8 AI agents that manage my solo company \u2014 CEO, CFO, COO, Marketing, Accountant, Lawyer, CTO, and an Improver agent that upgrades the others. They share a persistent knowledge graph (JSONL file), consult each other through a central orchestrator, and post content to social media on a 5-minute cron. They've been running for months. They crash. The interesting question isn't how to prevent that \u2014 it's how to make ", "context": "Runs 8 AI agents for a solo company", "use_case": "Supervision and fault tolerance", "switched_from": "", "story": "You hired the AI to write the tests. Of course they pass"}, {"id": 743937073, "item_id": 46496067, "url": "https://news.ycombinator.com/item?id=46496067", "by": "adagradschool", "date": "2026-01-04", "version": null, "stance": "recommend", "quote": "using the principles from Erlang/OTP", "excerpt": "I'm approaching this problem via recursive task decomposition [0] mostly for coding but once that is polished, I can imagine it generalizing to other workloads. One idea I've been meaning to explore for a while is using the principles from Erlang/OTP [1] and mapping it onto multi-agent systems. Some nodes are supervisor trees that coordinate and handle restarts, gracefully degrade, are easy to observe + steer. [0] ht", "context": "", "use_case": "", "switched_from": "", "story": "What changes when AI memory stops being ephemeral?"}, {"id": 740180752, "item_id": 46261297, "url": "https://news.ycombinator.com/item?id=46261297", "by": "worthless-trash", "date": "2025-12-13", "version": null, "stance": "neutral", "quote": "I use many of the otp functions in gleam on thr regular", "excerpt": "I use many of the otp functions in gleam on thr regular, what functionality cant i call? Gleam can call any erlang function, and can somewhat handle the idc types. [ im sure it has another name ]. Did i miss something that gleam fails on, because this is one of my concerns.", "context": "", "use_case": "Calling OTP functions from Gleam", "switched_from": "", "story": "I tried Gleam for Advent of Code"}, {"id": 734579568, "item_id": 45911223, "url": "https://news.ycombinator.com/item?id=45911223", "by": "sodapopcan", "date": "2025-11-12", "version": null, "stance": "neutral", "quote": "Erlang functions won't be optimized.  See section 2.3", "excerpt": "> Of course, that assumes that you write your functions so that they can be converted into iteration! I was indeed assuming this, however due to my lack of compiler knowledge, not explicitly writing your functions--at least in the classic way--doesn't necessarily mean you Erlang functions won't be optimized. See section 2.3 [0] Though again, I don't know shit about compilers and while I can imagine what callER optimi", "context": "", "use_case": "", "switched_from": "", "story": "How I fell in love with Erlang"}, {"id": 734202992, "item_id": 45887687, "url": "https://news.ycombinator.com/item?id=45887687", "by": "giraffe_lady", "date": "2025-11-11", "version": null, "stance": "warn", "quote": "OTP is a really roughneck standard library", "excerpt": "I love saying this but OTP is a really roughneck standard library. They just added shit to it as they needed it without apparently putting too much consideration into the organization, naming, or conventions. It makes it very powerful but very disorienting and experience gained with one part of it often does not really prepare you for other parts. Usually each specific tool was created by someone who used it immediat", "context": "", "use_case": "", "switched_from": "", "story": "How I fell in love with Erlang"}, {"id": 733652608, "item_id": 45853288, "url": "https://news.ycombinator.com/item?id=45853288", "by": "Joel_Mckay", "date": "2025-11-07", "version": null, "stance": "recommend", "quote": "The OTP offers a flat/simple architecture", "excerpt": "The OTP offers a flat/simple architecture, and most people are puzzled the first time they see a Phoenix channels demonstration. I think it is hilarious people assume 3NF or 4NF db schema can save them from bad design. Yet, many have tried to make SQL scale efficiently (with some obvious caveats) =3 https://www.cockroachlabs.com/", "context": "", "use_case": "", "switched_from": "", "story": "From web developer to database developer in 10 years"}, {"id": 732524992, "item_id": 45782812, "url": "https://news.ycombinator.com/item?id=45782812", "by": "matheusmoreira", "date": "2025-11-01", "version": null, "stance": "compare", "quote": "This document says Erlang processes use 309 words", "excerpt": "> The alternative is lightweight/green threads and actors. How lightweight should threads be to support high scale multitasking? Writing my own language, capturing stack frames in continuations resulted in figures like 200-500 bytes. Grows with deeply nested code, of course, but surely this could be optimized... https://www.erlang.org/docs/21/efficiency_guide/processes.html This document says Erlang processes use 309", "context": "", "use_case": "", "switched_from": "", "story": "Async/Await is finally back in Zig"}]}