September 9, 2015

Clojure Boot

I stumbled across Boot a few months ago and after reading through the overview, I was really excited about the potential. As soon as I read that boot was a build system built on the concept of a build task pipeline, similar to the technique used in the clojure ring library to handle http requests, I was sold. I was even more intrigued by the concepts of immutable file system trees and isolated classpaths.

As a side note, one of the reasons I love clojure so much is that it seems to be such a great breeding ground for making good, practical use of solid, sensible algorithms, concepts, and ideas. I'm not sure if it's because clojure is a lisp and is so easy to adapt, or maybe because many of the clojure library authors are really smart, experienced functional programmers bringing great ideas from other languages, or perhaps because we just happen to be at the point in history when it's finally practical to actually implement some of the great ideas in computer science. But no matter what the reason, somehow, the clojure ecosystem seems to encourage the discovery and use of very valuable computer science concepts that have been neglected over the years.

I've used several build systems over the years: make, rake, custom scripts, ant, maven, bundler, and gradle, to name a few. All of these are basically programs that read some configuration file and then perform some tasks (such as compiling code, running tests, etc).

I think Boot is the first build system that I've ever seen that takes a unique, refreshing view on how to solve the problem of building software projects.

Did I mention I'm really excited about boot's potential?!

I've been wanting to deep dive into boot for a while now and happy to finally dedicate some time to do so. I hope to write some posts on how to get the most out of using boot, so stay tuned for more.

Tags: clojure software boot-clj tech