I've been experimenting with installation profiles for some time now. It all started with a Drupalcon Chicago presentation by Dmitri Gaskin (dmitrig01): From Zero to Distribution using Features, Profiler, and Drush Make. A year ago, on a bad day, setting up a fresh Drupal installation in order to test a module or try some new tricks in Views could take me as much as two hours. The possibility of installing Drupal with a custom list of contrib modules in less than a minute seemed like science-fiction at the time.
Setting up a Drupal website on a shared server or locally with MAMP, LAMP or WAMP requires a fair bit of 'prior' technical knowledge that experienced Drupal users take for granted. The lack of which inevitably stumps a newcomer into an uncontrolled rage of frustrations. I know. I've been there.
The first time I installed Drupal, I think it must of taken me a month or so. Plain ignorance, as in 'not knowing much in general', was one reason it took me so long. Ego also played its part: I thought I would skip a few 'classes' and tackle a multisite installation right off the bat. In the end, after a stubborn and somewhat senseless battle, I eventually succeeded. When I finally read 'Welcome to {Your Site Name}', I stood up in front of my computer, jumping up & down with my two arms raised above my head and then pulling on my t-shirt like I just scored the gold-medal-winning goal at the 2014 Mundial. Silly me.
Nowadays, every Drupal project I work on starts with a distribution profile. It helps me to quickly map out my goals and visualize the best way to get there.
As a side note, I've been thinking about sharing what I've learned in a mini-series of tutorials or screencasts. Maybe this post will ring the bell for round 1.
So in case I'm not making myself clear, this post is about how I modified an existing distribution into an installation profile and what I gained in doing so. The distribution I used is UberDrupal and you can download it here: http://drupal.org/project/uberdrupal.
On the UberDrupal project page, one can read the following. 'UberDrupal is an installation profile designed to help you get a Drupal site running Ubercart up as quickly as possible.' In fact, the UberDrupal distribution contains in a single download: Drupal core, Ubercart's core set of modules and an installation script that guides you through the setup of a very basic online store in one go. If all goes well, your new 'empty' site will be up before your eyes within 5 minutes. Not bad when you consider that doing it piecemeal will easily cost you a couple of hours - assuming you know what you're doing.
I should clarify one thing before I continue and that is the difference between a distribution and an installation profile.
A distribution is a package that includes all modules & files required for installing a fresh Drupal website. It includes an installation profile. A distribution cannot exist without an installation profile. When you download and install Drupal 7, you're actually downloading a distribution which offers you the choice between 3 different installation profiles: minimal, standard or testing. The UberDrupal distribution weighs in at 3.34 MB.
You can think of an installation profile as the genetic signature of a particular Drupal install or codebase. It can perfectly exist withtout modules & files. When called or invoked with an appropriate command, an installation profile will fetch all modules & libraries that appears in its internal list and build a Drupal website on the fly. The UberDrupal installation profile weighs in at just 6,267 bytes.
The makings of an installation profile are very similar to that of a module. A basic profile is made up of 3 files: a '.info' file which minimally names and describes the profile; a '.make' file which lists the required modules & libraries; and a '.profile' file that contains the script (if any) for setting up and configuring the Drupal website.
In Part II of this post, I'll drop the theory and show how easy it is to transform the UberDrupal distro into a profile, update it and customize it the way you want it.
Agreed
Great post! I agree with Tim. Can't wait for part two! Thanks!
What? More soup!? ;-)
Hey Tim & Matt,
Look for Part 2 of this post in the Related posts & documentation block. Cheers!
I'm looking forward to seeing more on this. I first became aware of distributions and installation profiles when I purchased a theme. It was amazing to see the site automatically install with modules preconfigured and actual content in place. What a simple but great idea to have a "base" distribution that allows you to quickly get up and running on a new project! Tell us more please, thanks.