When to NOT use Drupal

http://travistidwell.com/presentations/notdrupal
Created by Travis Tidwell / travist / @softwaregnome

I'm not hatin'. I Drupal.

Drupal is an amazing tool. "It can do everything"!

... but that is kind of the problem.

Customer says...
"I need a web application that does _____."
You say...
"Yeah, Drupal can do that!"
We need to start saying...
"Yeah, Drupal SHOULD do that!"

So, what should Drupal do?

What should it NOT do?

Let's start using the right tools for the right job!

Drupal's intentions

Drupal is and was intended to be a Content Management System.

"Just because you have content to manage, does NOT mean you need a Content Management System."

Drupal is really a Content Workflow Management System.


Drupal makes sense when your system is concerned with managing content workflows between multiple users.

"The majority of Drupal websites should not have been built with Drupal."

Examples

Let's take a look at http://www.drupalshowcase.com

Brochure Websites

These are the majority...

Brochure Websites

What should I use instead?

Static Site Generator

https://www.staticgen.com/

My favorite static site generator

http://wintersmith.io/

I would recommend using Nunjucks templating language (Twig like) https://github.com/jbuck/wintersmith-nunjucks.

Bootstrapping your project with Yeoman

http://yeoman.io/

npm install -g yo
npm install -g generator-metalsmith
yo metalsmith

Shameless plug

I created a project that combines
Wintersmith + Nunjucks + Bootstrap = Juckstrap

npm install -g generator-juckstrap
yo juckstrap

Static Sites

You can build a brochure website in an afternoon.

What about mobile?

The web is moving to "API first" methodology

Drupal's response to that is the "Headless Drupal" movement.

Using Drupal as a backend API server to front end applications and Mobile apps.

Drupal 8 gives us a fighting chance

Symfony allows for easy API development.

But even with that do you still need Drupal?...

Depends on what your mobile app needs to do

Cases when you really don't need Drupal as a backend.

  • Simple "brochure" apps.
  • Single purpose apps
  • Gaming apps

When does it make sense to use Drupal?

  • Multi-user publishing apps.
  • News apps
  • When it is a "mobile" version of a Drupal site.

Other contenders for "API first" applications.

My personal favorite contender

Why I "currently" prefer node.js for API development.
  • Built in HTTP layer (no need for Apache or NGINX)
  • Loves high concurrency situations (Mobile).
  • Works seamlessly with static sites.
  • "Build up instead of Chisel away" development.
Example: An API to fetch a list of static users.

// Require the application.
var app = require('express')();

// Get the users endpoint.
app.get('/users.json', function(req, res) {
	res.json([
		{ first: 'Travis', last: 'Tidwell'},
		{ first: 'Joe', last: 'Smith' },
		{ first: 'Sam', last: 'Roberts' }
	]);
});

// Listen to port 4000
app.listen(4000);
						
Closing comments
  • Use Drupal how it was intended and you will be happy.
  • Stop saying "CAN" and start saying "SHOULD".
  • Never stop exploring other alternatives.
  • Drupal 8 will solve many things but should still be evaluated when deciding platforms.


I look forward to the day when...

Drupal SHOULD do everything!

Go forth and build something cool...

Thank you

Thank you