You are here

Time For More Robust Installation Profiles–A Drupal 8 Proposal


Drupal is about impossible to learn and configure!!!!

How many times do we hear that? It is by far the most common complaint that plagues Drupal.

Take a common task like creating a simple blog. If you go the Wordpress route, you simply upload it to your server and fill out a couple of quick input boxes. Next thing you know you are writing your first post with such ease that Grandma can do it.

Now let’s do that task in Drupal. You upload Drupal and install it. You can start writing instantly, but you better no HTML. There’s no WYSIWYG editor out of the box or even a simple tag editor like BUEditor. To get that basic functionality that assists even the most seasoned web developer with writing content, you must go back to and search for the modules. After that you need to download, install and then configure them. If you want the added simplicity of WYSIWYG then you have to go a few steps further. You need to download the editor you want to use from the author’s website, upload that and then configure it.

That seems like a lot – right? Well it is, but it gets even worse. What’s a blog post without images? You won’t get that right out of the box on Drupal. Instead you will be forced to configure image fields. You now have a way to get images associated with your post, but putting the actual image in your post is a whole other issue. You can use modules like insert to give a simple mechanism to insert img tags, but again you have another whole step of searching, downloading, uploading, installing and configuring.

I didn’t even mention other issues like getting pretty URLs for your posts or scheduling them (another big feature wanted by bloggers!).

And the problems don’t stop there. Most blogs want things like categories and tags. Now you got to configure taxonomy.

To set up a simple blog in Wordpress takes a matter of minutes, usually around 10. To setup a simple blog in Drupal can take hours. It also exposes another problem for newcomers with Drupal – the perfect solution.

There’s many ways to achieve the same goal in Drupal and if you are a newcomer, relying upon Google to help, then you are going to spend a big chunk of time searching, reading and experimenting to come up with the solution you want. That right there is enough to send a lot of new users running to something more simple like Wordpress.

But Drupal doesn’t have to be this way!

One of the hidden gems in Drupal is installation profiles. Installation profiles automate the process of configuring Drupal to achieve a common goal. They include the required themes and modules inside of them, as well the necessary configuration. They really make getting a Drupal goal-specific site up and running a simple task, but they still don’t meet the simplicity of Wordpress. You still have another download/extract/upload step and a lot of times these profiles can be cumbersome themselves.

I strongly believe that Drupal can expand on this already great idea and move Drupal closer to a simple installation like Drupal.

When you first go to install Drupal 7, you are presented with this screen:

Drupal Install

We have two profiles available, but neither one is that complete. The standard profile basically leaves you with an installation like I described above. If you want a simple blog, you still got a couple hours of leg work to get it up and running.

But what if we expanded that? Let’s add in some more profiles. In the future, installing Drupal could look something like this:

Drupal Proposed Install

Users would now have more choices “out of the box” when it comes to installing Drupal.

Of course this is just the first step of many to make this work. With the current workings of installation profiles, Drupal would become a huge download. Each profile would have to have all the modules and themes with them. That wouldn’t be a good thing. Instead the mechanism of installation profiles would also need changed.

Step 1 – Automatically download the required components.

Going back to Wordpress, there is another great feature. You can go to the admin section and point and click at a plugin to download and install.

Wordpress Plugins

By simple clicking the Install Now link, Wordpress will download the plugin and attempt to extract it to the plugins folder. If server permissions don’t allow that to happen, then you are presented with the option of entering FTP information so that Wordpress can automatically extract the files to the proper place. This is something that can be done on 99% of the servers out there and it makes extending Wordpress a breeze, even for Grandma.

Taking a page from this book of awesomeness, Drupal should rework installation profiles to operate in the same way. If the required module or theme isn’t there, then Drupal will retrieve the needed component and try to extract it. If that doesn’t work, the user will be able to utilize FTP or SFTP through Drupal to do it. The mechanism for handling file transfers is already in Drupal 7 in the form of file stream wrappers.

This also addresses another situation, external components that can’t be included on due to licensing differences .

Back to our original goal of creating a simple blog. We want a WYSIWYG editor included with it, but we can’t package TinyMCE or CKEditor in with the WYSIWYG module. So instead of packaging, we let our Drupal installation profile point to this external component and go ahead and download it along with the other needed components. No more click around, downloading, extracting and uploading different packages, it’s all done with a simple point and click inside of Drupal. For the end user nothing could be much simpler and it would even work with installers like Fantastico. Unfortunately the hurdles are still coming, but the next ones are for the Drupal community.

Step 2 – What profiles should be included?

For this to work, Drupal needs to decide upon uniform installation profiles. Everyone might have a different idea of which WYSIWYG editor should be included and how it should be configured. We would need a group of decision makers to decide upon the final setup for common Drupal blogs. This is by no means an easy undertaking. Everyone has different opinions on what is best, so achieving our goal will be rough, but not as rough as deciding what changes should go into core.

There will also be the issue of which profiles to include in core. Blog is a great one, but there are many uses for Drupal. We wouldn’t want to inflate this new feature with tons of profiles that might only be installed by 1% of the users. Instead some time and leg work will be needed to decide exactly which profiles should be included.

Step 3 – Keeping it up to date.

With this whole new system will come an extra burden of making sure the core installation profiles are up to date. That doesn’t mean the actual profiles themselves, but any components that are required by them – modules and themes. While it’s not adding extra code to core, it still is.

This is also a silver lining. Imagine being a module maintainer that has one of their modules needed by a core installation profile. There is a lot of prestige that goes with that, and while it doesn’t help pay the bills, it does make maintaining that module seem more worth it. If you work in the Drupal world, it also helps increase your worth. Sure you aren’t a core developer, but you are now a close second.


While there is a lot of work to achieve this goal, it is still very achievable. Drupal has a very powerful and robust community of great minds. We can come together and setup this new system and iron out the kinks in managing it. In the end we will be providing the most important people a much easier tool to use and much simpler life. Those important people are the end users, and while it’s easy for those of us who work in Drupal for a living to think this might be more work than it’s worth, think about the 90% of Drupal installations out there that are common people trying to get their first site up and running. That’s how we make Drupal’s growth exceed what it has already done and that is a win for all involved.