This is a public love letter to redo & the joy it brings building software.
I remember when I first finished The Little Schemer and wrote my first semi useful “JSON Diff” program. I was exalted. I was elated. I was ecstatic.
There is something magical when you learn Lisp that is really tough to convey over a blog post or short article. One must try it, to grok it.
I have not professionally used Lisp much since however it’s been immensely impactful in the way I think about & construct software.
Redo is this for build systems.
I must have come across several articles about Redo or even djb’s own cryptic posts on it however I filed it mentally in the same mental folder I put a lot of stuff I come across on Hacker News; “Cool”.
apenwarr’s post announcing his implementing is c.2010 !
Redo however is eye opening. I may not use it professionally, similar to Lisp, but it’s made an impact on how I view build systems going forward.
Many of you reading this post will do what I’ve done previously coming across Redo; however I hope that at least some fraction of you try it. Take the red pill.
- My goal here is not to explain how to use Redo; I think Apenwarr’s documentation does a great job of walking one through it. Here though are some standout bits of Redo that were amazing:
Redo is a simple set of primitives executed via the shell.
Redo primitives (build scripts) can be written in any language.
Redo is tiny!
Redo can integrate seamlessly in any build system or wrap them.
Redo supports checksumming of targets, not just mtime.
I really encourage everyone to read Apenwarr’s original blog post announcing it https://apenwarr.ca/log/20101214.
If you’ve read this far and are thinking “If Redo is so great, how come it hasn’t taken over?”
I’m asking myself the same thing.