Feb
18
InfoQ: Tom Preston-Werner on Powerset, GitHub, Ruby and Erlang
In this interview filmed at RubyFringe 2008, Tom Preston-Werner talks about how both Powerset and GitHub use Ruby and Erlang, as well as tools like Fuzed, god, and more.
The interview is very interesting especially for the discussion of GitHub’s architecture.
He mentions the following Ruby and Erlang libraries:
- grit / gitr (git libraries) {Ruby}
- fuzed {Erlang}
- egitd (git daemon) {Erlang}
- bj (background job processor) {Ruby}
- god (process monitoring) {Ruby}
His reasoning for writing egitd in Erlang is eye-opening. I’ll paraphrase his reasons as follows:
- Erlang is a functional programming language, which means it disallows side effects. This provides for referential transparency, which makes it easier to parallelize programs.
- For server applications, this means that each incoming connection can be spawned off into a lightweight ‘process’ and executed in parallel on separate cores. You get this parallelization without having to create actual OS processes, which would take more memory, allowing your server to be very memory-efficient.