The language-puppet library is the start of a rewrite of the Puppet configuration management tool. While it is far from being fully featured, it is already pretty useful to me, especially when writing or modifying manifests. The ultimate goal is to provide a drop-in replacement of the Puppetmaster for people more concerned with efficiency than features.
This project comes from a growing frustration at using Puppet. While it is so useful that I am not sure how I could live without it, it is written in Ruby, which is possibly the worst choice for a production system (an inflammatory rant can be found here). My main gripes with the current implementation of puppet are its speed (tens of seconds to compile a catalog, and about twice as much to apply it, really?) and memory usage (controlled by restarting the ruby processes).
So here it is, a tentative rewrite of Puppet in a nice language that compiles into native code, namely Haskell. I will cover the usage of this library in the following posts, and the kind of applications that are enabled by the increase in performance.