Why I archived Burrow
In March I announced Burrow as my go-to framework for personal web projects. Now it's October and I have archived the project, built a media player with Elixir and Phoenix and released a library for this stack to handle passkeys.
Why, you might ask? Or at least I've asked myself.
A few months in I realised I had lost track of the actual projects I wanted to build. Basically I went all in on building a framework that a) includes all the things I ever wanted in a web application framework and b) replicates Phoenix LiveView. The first thing is an endless list in itself. But the second proved to be a massive task, and even more complicated if you can't rely on the wonderful features of the BEAM and Elixir. You can do it in Go with plain JavaScript or HTMX, but the server side has to implement a lot of things you get in Elixir for free.
In July I checked my list of apps — a media player, a read-it-later service, an AI-powered email assistant, and so on. Everything was started. Nothing was even close to being usable for me. But I kept pushing on the underlying framework of my dreams.
Burrow wasn't wasted time. Building it taught me more about what I actually want from a framework than any framework I've used — and that's exactly what made it so easy to keep building it instead of the apps.
Time to stop and reflect on my goals. I need these apps because none of the existing options fit the way I work. I don't need a web framework or the fame of building one.
Then I started to look around for what gets me as close as possible to my "one binary, one service" doctrine and uses a language I enjoy. I ended up with Elixir, which I have used a few times in the past and always enjoyed. Why not Django? I still love Django, but in Elixir your message queue, your background workers, your web app all run in a self-healing virtual machine. In Django even the smallest of my apps would have meant three or four services to deploy.
The repository stays online, archived and read-only, in case anyone wants to look around. The Django-versus-Elixir question deserves its own post, and I'll get to it. Until then — if you've been through a similar detour, I'd love to hear about it.