Прочитав книгу Джо Армстронга и просмотрев скриншоты Кевина Смита, я создал простое OTP-приложение, состоящее из одного gen_server и одного супервизора, связанных вместе как OTP-приложение.
Сейчас я смотрю на mochiweb и создал пример проекта [helloworld], используя скрипт new_mochiweb.erl. Просматривая исходный код, я вижу, что он не отличается от моего примера приложения OTP [приложение OTP есть, там есть супервизор] с одним ключевым отличием: сгенерированные файлы helloworld.erl и helloworld_web.erl не реализуют поведение gen_server, это просто стандартные модули Erlang.
У меня сложилось впечатление, что использование gen_server было рекомендованным способом при создании компонентов приложения OTP. Почему mochiweb может использовать OTP-приложения и поведение супервизора, а не gen_server?