Serdar Yegulalp
Senior Writer

Puppet Server drops Ruby for Clojure

news analysis
Sep 25, 20142 mins

The automation tool chooses Clojure on the JVM to improve speed and programming convenience, and shows the evolution of Puppet's design philosophy

arrow diagram flow chart
Credit: Thinkstock

Puppet Labs, creator of the versatile automation tool that shares its name, has pulled back the curtain on a new project: Puppet Server.

Puppet Server, as the name implies, is meant to be “a next-generation alternative to our current Puppet master.” Its touted advantages are speed — Puppet Labs claims it’s anywhere from two to three times faster, depending on the task — and a design that hews to service-oriented architecture.

The most striking change is the language used to build the product. While previous versions of Puppet were built using Ruby, Puppet Server uses Clojure, a functional language that runs on the JVM.

In an April blog post, Puppet Labs went into detail about its rationale for making the switch. The JVM, the company stated, has a venerable history as a platform, with a wealth of instrumentation and debugging tools, as well as a broad degree of portability across systems.

As for Clojure, it has features that “make it an ideal choice for back-end services development” with strong controls over concurrency and mutability and access to the range of libraries offered by Java. Clojure was also used to build PuppetDB, the storage service Puppet uses to stash the data it generates.

Core pieces for Puppet Server were published earlier this year by Puppet Labs, most notably the Trapperkeeper framework — “a Clojure framework for hosting long-running applications and services,” as Puppet Labs explains it. The point of creating Trapperkeeper was to guarantee consistency and robustness across Puppet’s products going forward.

Right now, the agents remain “vanilla Ruby,” as Puppet Labs puts it, so there’s little sign that modules — the packages used to describe tasks in Puppet — will need to be reworked. The JVM does support Ruby by way of JRuby, so it’s possible that a future, Clojure-powered version of an agent will invoke JRuby for the sake of compatibility.

InfoWorld’s Paul Venezia took a look at Puppet in context with its major competition — Chef, Ansible, and Salt — and found that Puppet had the biggest mind share of the four products and represented the most complete picture for data center orchestration. That said, the best features in Puppet seem to be reserved for its for-pay enterprise edition, which seems unlikely to change with this new Clojure-based iteration.

Serdar Yegulalp

Serdar Yegulalp is a senior writer at InfoWorld. A veteran technology journalist, Serdar has been writing about computers, operating systems, databases, programming, and other information technology topics for 30 years. Before joining InfoWorld in 2013, Serdar wrote for Windows Magazine, InformationWeek, Byte, and a slew of other publications. At InfoWorld, Serdar has covered software development, devops, containerization, machine learning, and artificial intelligence, winning several B2B journalism awards including a 2024 Neal Award and a 2025 Azbee Award for best instructional content and best how-to article, respectively. He currently focuses on software development tools and technologies and major programming languages including Python, Rust, Go, Zig, and Wasm. Tune into his weekly Dev with Serdar videos for programming tips and techniques and close looks at programming libraries and tools.

More from this author