As we’re moving off OCaml at dialo, we’d like to donate the libraries we built to people who will properly maintain them. We built a highly performant telephony system using OCaml, but as a small team we ended up maintaining too much software for our liking.
We initially built a SIP server implementation in OCaml, which was a perfect fit. We needed to connect it to the rest of our system in a language agnostic way. We chose gRPC and that’s where things got difficult.
At a smaller scale our own buggy implementation of gRPC on top of h2 was good enough. Then we started scaling and at the same time transitioned to OCaml 5.0. The combination of those factors resulted in:
- Performance regressions in 5.0 related to memory management, both inside of app code, SIP stack, and inside of h2.
- We needed a more robust implementation of gRPC to handle errors and edge cases better.
Long story short we ended up:
- Writing our own implementation of http2
- Rewriting the gRPC library exclusively for eio to limit the scope together with decent codegen
Then, in late 2025, we had to add new features to the SIP server and something inside us just broke. The SIP server had accumulated quite a bit of legacy code over 3.5 years, so we wanted to rewrite some parts. We were extremely excited to build the new architecture centered around effects — only to discover that user-space effects and concurrency libraries don’t really work well together, since callbacks lose their scope (duh). That was the final straw.
We decided to run two 1-week stints to try rewriting the service in Rust and Go. We ended up choosing Rust. We still miss OCaml, but not having to implement and maintain our own http2/grpc/sip stack is a breath of fresh air.
So here we are — we’re gradually removing OCaml from our stack, and that’s why we’d like to donate:
- ocaml-grpc - the new code is on
dialobranch, eio only at the moment, battle tested on production. It does have some bugs in it but few and it’s pretty solid. - haha (http2) - overall good but could be better. We cancel fibers too often, it’s a very low hanging fruit to make it much faster.
- Our SIP stack — this is currently not open source, but we’re happy to share the source code with the right person or team.
Please write dms to me and feel free to ask me or @adamchol about specifics.