Now it has happened. In his DrupalCon Vienna keynote presentation, Dries Buytaert, the Drupal trademark owner, has announced, that “Drupal is no longer for small websites.” At the same time, he said he is offended, when people say Drupal is only for the “Enterprise” websites now. This does seem wrong to me in a number of ways. Now, after about two years of experience working with Drupal 8 in larger and smaller businesses, I think there is both truth and inconsistency in what Dries has said. So let’s sort things out.
The discussion about Drupal 8 has been going on for years now. Small business owners were complaining that the new Drupal is harder and more complex, and the proponents of the changes were responding, that it’s all gonna be fine, and the business owners just need to learn their proper PHP and OOP, and make a bold step into the bright future. Another discussion and objection about Drupal 8 all this time was that it would raise the cost of development and maintenance, thus, cutting out the small business segment of Drupal community. And the response also has been, “You are just panicking, the step is big, but Drupal 8 will in fact be easier and more out of the box than the previous versions, so you should not fret, oh ye little of faith.”
If you watch the keynote, you can see that the reason why Dries says “Drupal is no longer for small websites”, is because SAAS (or, plainly speaking, online site builders) have become so good that they are to overtake all that segment soon. If this logic were true, then Wordpress would no longer be for the small websites, either. However, Wordpress is still growing, so evidently it’s not about SAAS. Dries is not being consistent with the reasons why Drupal is no longer for small sites. And the reasons are much higher system requirements (most of which are officially undeclared), much steeper learning curve, and much higher hosting and maintenance cost. These three. And the fourth is that the change has decimated the small Drupal businesses community and one can no longer easily find a Drupal business doing small websites.
Drupal system requirements are much higher than declared. Drupal 8 has undeclared requirements, that are not listed as such on a Drupal.org System Requirements page. Here are some corrections for Drupal 8.4.0:
- Composer required.
- Minimum RAM: 512 MB.
- SSH access.
- Git support.
- PHP 7.1 or higher.
Now if you compare the parameters above with what the official Drupal documentation says, you will be rightly shocked. The above server setup rules out all of the cheap shared hosting that the smaller businesses would normally use in the past.
Composer. I have been objected, that “Drupal 8 core does not require Composer. You can download and extract the zip file with Drupal, and it will work without Composer just fine. It’s the use of the contrib modules that depend on libraries that require Composer.” I view this objection as dishonest. I have built dozens of websites in my life, and not one of them would run on a pure Drupal core without any contrib modules. And in Drupal 8, you can not install any of the common contrib modules without Composer, because the required libraries need to be added to the vendor classes autoloader, and you need Composer for that. Thus, Composer is a must, yet it is undeclared as a requirement. But the most modern shared hosting providers do not provide Composer unless to go to expensive hosting plans.
RAM. Pure Drupal core can run on 64 MB of RAM. However, you need to update your website. And since your website uses Composer, and Composer is RAM hungry, you can’t efficiently update your site without allocating at least 512 MB RAM to it, so you can run composer install. No, you can, of course, update your websites on the local server, and then simply upload the whole codebase via FTP or SSH. but then, the update times soar, since the Drupal’s vendor and code base folders contain lots of files that can take long time to upload. Another problem with an FTP or SSH upload is that the way libraries are referenced in the autoloader registry, it becomes much more dangerous to update websites with file uploads. Thus, 512 MB of RAM is undeclared, and you could potentially work around that, but at the expense of your maintenance being taxed sorely. Most modern hosting providers do not provide as much RAM for their shared hosting plans.
SSH Access. If you are using a git workflow and maintain dozens of websites, you will find them maintainable mostly if you have SSH access with Composer and git. Both Composer and git require SSH access. Without SSH, your maintenance of Drupal 8 websites becomes a problem ridden nightmare. Most hosting providers do not include SSH in their shared hosting plans.
Git support. Uploading files with SSH or FTP is not very efficient with the larger vendor and Drupal code base, and much more prone to human factor mistakes. You can not maintain Drupal 8 websites without Git efficiently. In fact, Git, Composer, and SSH access go in hand as tools to maintaining the Drupal 8 websites. Take out one, and maintenance becomes questionable at best, and business unviable.
PHP 7.1. Drupal 8.4.0 has been switched to a newer version of Symfony. The newer version of Symfony has some PHP 7 syntax in it, which breaks the websites running under PHP 5.6. If you try to use Composer, however, you will see that PHP 7.1 is required for it to manage dependencies correctly. I have been told that there is a workaround how to make Composer not complain about the specific PHP 7.1 dependency, but really? As of the time of writing of this blog post, the most of what the shared hosting providers provide is PHP 7.0, and that not all of them.
An update from 12 October 2017: The PHP 7.1 requirement has been an oversight. There is a bug report at Drupal.org, hopefully it will be fixed. https://www.drupal.org/node/2898119
So let’s face it. The real reason why Drupal 8 is not for small websites, is because besides it’s learning curve that the small businesses can’t handle, it also has system requirements that the small clients can’t afford. It’s not about SAAS. It’s about the fact that Drupal 8 has been built by big companies for big projects, and the rest of the Drupal community have been left overboard. I realize that every product has it’s niche, and I do see Drupal 8 shine even for some smaller projects that I do. However, I believe there needs to be more honesty and clarity about what’s happening and why.