Has anybody used Chicagoboss? (Erlang web framework)

Just wanted to know if any one used chicagoboss and how is it different from phoenix .


My friend Garret wrote it. He likes it quite a bit :wink: I personally haven’t used it.


I used CB 2 years ago and I’m actively using Phoenix now, so my view on CB may be a little bit outdated.
There are couple of differences:


ChicagoBoss uses erlydtl by default, but you can also use jade. Phoenix uses EEx. In erlydtl if I messed up my templates they were very hard to debug, because they were using Erlang parse transforms. EEx is also using macros, but you get nice errors pointing to actual lines which makes a big difference.

DB layer

ChicagoBoss has boss_db and Phoenix has Ecto. boss_db has made a strange decision to use Erlang parametrized modules to get “object like” syntax. This syntax was later removed from Erlang, so CB team added a layer of parse transforms. It wasn’t very bad, but it messed up with tooling, IDEs, syntax checkers and dialyzer.

Ecto is very composable, nicely separates validation from DB operations and with composable queries is a clear winner in this category.


Phoenix is based on plug which allows you to mix, match and compose parts of application. The idea is that you have common data structure called conn and your custom parts are just functions that modify conn. You can put such functions very easily in any place during request lifecycle. This is a powerful concept. CB is much more rigid.


Phoenix by default runs tests in parallel by wrapping each test case in a transaction. There is more helpers to operate on conn and other data structures, so it performs better than CB


I liked very much working with CB. I even contributed some small patches to get rid of race condition in boss_db. I feel like this framework didn’t get the attention it deserved which resulted in less developers contributing. Phoenix quickly got to the point where it is more mature than its older brother.


I do not like the Chicago Boss Program Style.
First, front-end developers used front-end template like handlers bar.js. And we use ember js or angularjs.

Second, db layer is cool, but after i read the source codes, i try to use poorboy to build my own special database layer(adapter).

Finally, i wrote the our company’s own framework.

anyway, thanks Garret to give us a great project.

1 Like