13 February 2017

Jade Templating Engine Renamed to Pug

Playing with the Express framework on a Node.js project I was encouraged by Express's documentation to bootstrap my new project with the Jade templating engine. I'd never used Jade before but I liked what came out the box!

Diving deeper and hungry for official documentation I searched the term "jade templating" on duckduckgo.com and scanned my eyes down the results until I saw a result containing those key words (I don't think I'm the only one who doesn't just click the top result). What my eyeballs had done is skipped past two or three pages with the word "Pug" in the title, assuming these were unrelated. They weren't. Jade was renamed to Pug in December 2015 and those results were exactly what I wanted but they didn't look like it because they had received the thorough word-replacement treatment switching Jade to Pug and proper 301 redirects had been set on the old Jade domains to send users to the new Pug domains. [Back story: The makers of Jade had discovered another software company had trademarked the name Jade so changed to Pug, an issue on their GitHub repo explains this further.]

Unaware of the name change and still seeking Jade, the only vaguely official-looking result was a tired old cache of a secondary .net domain name that neither the legal trademark holders, nor current maintainers of Pug want to renew so that they can humanely euthanize with proper 404s and purge it from the various search engine's caches. Trying to get a search engine to "let go" of something can be timely and costly so I understand why the maintainers aren't bothering to kill it.

I clicked on that dud link, and was greeted with the registrars ugly default holding page (you know the ones with a stock image and some links to key-word matched content). Immediately I thought this meant that another flash-in-the-pan web technology had been abandoned by it's maintainers and that I would now have to reverse out of my very recent decision to start using it. Holding out hope a little longer I decided to double-check with the name credited in the snippet with this Tweet. Luckily he replied and I got my explanation about the renaming.

But why has this imposed renaming cut adrift it's legacy instead of seamlessly changing and informing users along the way? Like when Twitter Bootstrap became just Bootstrap or when Orange became EE or Jif became Cif, all channels that led to those brands switched in a coordinated effort and various campaigns happened to make current consumers aware. Why -- during this Jade-to-Pug transition period -- are we not guided by a smattering of posts and articles with titles like "Jade has become Pug" or "Pug replaces Jade" and why does ExpressJS's documentation still recommend using Jade?

Keen to help and noticing the Express documentation is open source on GitHub, I touched base with the maintainers with a comment on an existing issue. They explained that they had been holding off switching all Jade references to Pug because Pug was still in beta.  Do they update the documentation for their framework to use a non-stable version of a templating engine or leave it as they are and confuse users who are unaware of the name change?  A tricky situation.

The maintainers agreed that it's been a long time and nobody's really sure why Pug's not out of Beta yet. I edited the documentation and my pull request was accepted with a merge so the Express documentation now recommends Pug and hopefully future new adopters won't experience the same confusion that I did.

Also I am writing this carefully titled blog post in the hope it may help future Jade-seeking sailors who may find themselves overboard, treading water on the vast open sea, unable to grab hold of the floating documentation they so desperately need. Do not fear, your beloved vessel has not sunk, it's just been renamed and is right over here. Enjoy!