As a Drupal developer, you may believe your spirit animal burrows somewhere between Drupal 7 and Drupal 8. Mine resides in Backdrop. Let me tell you how I discovered it there. I saw Jen Lampton give a great session on Backdrop for the first time at Florida DrupalCamp 2014 and I really didn’t give it much thought. People were still yammering on about Drupal 8 and no one was adopting anything at the time. We were still trying to get people on Drupal 7. Flash forward to Spring 2016: Kalamuna won a small project through a nonprofit client in the San Francisco Bay Area. My dilemma: build the tiny site in Drupal 8, or do it with Drupal 7 (Panopoly and Kalatheme) — or go with Backdrop. I thought about it for a week and I landed on Backdrop. Here’s why:
More Performant Than Drupal 7, Better For Small Projects Than Drupal 8
After looking at the client’s site’s requirements, the functionality seemed very limited and all I needed to do was hook it up with Bootstrap and build a couple pages. I didn’t want to build a small, brand new site in Drupal 7. I believe it would of been a disservice to the client; Drupal 7 is a very stable and widely used platform, but it will probably be passe in 5 years. Too often we find old Drupal sites for small nonprofits that are quickly out of date within a few years. Small nonprofits just don’t have the funding to redo their site every 3-4 years. With that statement in mind, why didn’t I chose Drupal 8? Drupal 8 is still in its growing phase and the two D8 sites I have built have been harder to maintain. Updating modules usually leads to a WSOD more often than not and we only had a tiny budget. I couldn’t spend too much time debugging and patching the CMS itself due to this. The Bootstrap Drupal 8 theme is too heavy for a small site as well. Also, at the time, we hadn't even started to port Kalatheme to Drupal 8 yet (it’s coming though, no worries). Backdrop was the only other option. I went to the Backdrop site and I looked through the themes and modules and it had everything I needed. Also, Bootstrap Lite was right up my alley. The decision was made, I announced it to Kalamuna: we would have our first public Backdrop site. And away I went.
Backdrop is Easy to Use with Kalabox
I went to Pantheon and spun out a Backdrop instance. I primarily use Kalabox as my local development environment and it integrates seamlessly with Pantheon out of the box. Kalabox is a supporter of Backdrop and as such, a Backdrop app comes with it. So the uptime was nil and within a couple minutes I was ready to begin my journey. As a side note, when I built the site, Backdrop was at version 1.3.x. I know there is a newer, minor version with more bells and whistles out now. Once I had the site up on Kalabox, it looked like your typical Panopoly Drupal 7 site or even a Drupal 8 site. However, it was fast, like super snappy. With just a quick browse through, everything appeared as it does in Drupal 7, and so I felt right at home.
New Layout Templates are Powerful and Simple
The first difference I noticed was the layout system. If you are used to building a site with Page Manager or Panels / Panelizer with Layouts, then this isn’t too hard to figure out. With layouts you can define a default layout for the whole site, which is nice. You can also do a Page Manager-type page based on path and/or other visibility conditions. The layouts are structured similar to any panels template, although a little less confusing now. There is an info file similar to a theme info file in Drupal 7 that defines the regions and any additional php files used for preprocessor. This is cool because all related preprocessor functions are in one place and it makes the layouts for modular. With this function:
you can fancy-up any vars going into the tpl.php. The tpl.php handles all the structure between the body tags and the content variables handle your output with your regions. So if you had two regions named content and footer, the $content['content'] and $content['footer'] would contain the blocks you defined in the manage page of the layout. It’s pretty straightforward and similar to Drupal 8’s panels system, too.
Backdrop Theme Layer: Familiar, but Different
The theme layer is just about as it is in Drupal 7. I noticed, though, that page.tpl.php is not used at the theme level anymore. It is hidden away in the core system theme folder in Backdrop. You can use preprocess_page to change the body classes and all that good stuff. This is much easier. The page structure is more split out and systemically it makes more sense. Since page.tpl is gone per se, your header is defined in header.tpl.php and you can easily structure it and use the preprocess_header to do more magic. It couldn’t find a html.tpl.php, but that seems to all be handled via hook_html_head_alter now. So those three things were just an adjustment, but it wasn't too hard to figure out. You can use all your other tpl’s (node, node-type, etc) as you did in past and current versions of Drupal. Your node-based content is generally rendered in a block within the layout system now. In my case, on the default layout, it was rendered in the content region and I used the node.tpl to define its structure a little more. Finally, similar to Drupal 8, there are no process functions anymore. Not that I used them too often, they are just not there.
Status Quo Items
The content and content types layout are just as they are in Drupal 7 and in Drupal 8. One of my favorite things you can do is delete the default content types. I hardly ever used them in any Drupal version and less clutter makes my OCD happy. Other than that, there isn't much more to report on this. This section of the CMS looks and feels as it normally has and that is good enough for me. Also, Views is a part of core now as well. This all seems to function as it did in Drupal 7. So these three items remain as status quo.
CMI: The New Way To Deploy Builds
The Configuration Management Interface is a great new addition to Backdrop and Drupal 8. The hardest concept to grasp with the CMI is the fact we truly have a dev / test / live workflow now. We have had a quasi implementation of this workflow on a few different hosting environments for years. However, it was never a true workflow setup in terms of code and database. Once you get the hang of the CMI, it is easy to use. I use drush config-extra for managing the CMI in Drupal 8. It isn’t there for Backdrop, so I had to move the tar balls manually.
Backdrop Offers Great Documentation
The documentation on the Backdrop site is fantastic. It is well laid out and it doesn’t have 10 years of useless comments on every article, which saved me time. I don’t think you can comment at all, which is stellar. The mindless dribble some people post on Drupal’s comment section was always a pain point for me and I am glad they didn’t allow that here. Since some aspects of the CMS are different, I used the docs a lot throughout this process. Stack Overflow and Google don't really help at this stage in the game, either.
So what spirit animal did I find during my Backdrop journey? Well, that’s personal. But what you should know is that Backdrop is a great addition to any developer’s toolset. It has the familiarity of Drupal 7, but with new bells and whistles. It is extremely performant and you can build an entire site right out of the box. I only used two contrib modules (Better Exposed Filter and Webform) to build out the California Jobs Roadmap site. If you need to build a site quickly and are low on budget, Backdrop is the logical choice, post Drupal 7. It eliminates Drupal 8’s extreme learning curve and frequent instability. You can hop in, and within a week build a sharp site like we did. Backdrop developers Jen Lampton and Nate Haug et al. did a great job. Thank you for all your hard work.