Part two of the WhatsApp series. Part one covered operations; this one covers the tooling that keeps a large Erlang codebase maintainable.
The two misconceptions about static analysis that come up most: first, that these tools are slow - the current tooling is fast, the reputation comes from earlier Dialyzer runs on large codebases. Second, that you have to commit all at once - eqWAlizer was rolled out incrementally, and the team that introduced new checks also owned fixing the resulting errors across other teams’ code.
The open source rationale: internal tools degrade without diverse use cases. External contributors and bug reports improve them in ways captive internal use doesn’t. WhatsApp is better served by a healthy ELP community than by keeping a competitive advantage nobody else would use.
Concrete next step: ELP on GitHub (WhatsApp/erlang-language-platform), binary install available, hooks into CI.