Making Installation Profiles Awesome

Events happening in the community are now at Drupal community events on www.drupal.org.
Ed Ropple's picture

(Side node: does my "include the word awesome" quota include the subject? ;-) )

Overview of awesome: Building installation profiles is currently difficult. Inconsistencies, a lack of documentation, and cumbersome iterative testing results in frustration and overconsumption of caffeinated beverages. This must be awesomed.

Description of awesome:

I recently started using Drupal extensively over the last six months or so. It's awesome and I love working with it. A couple of weeks ago, much to the annoyance of the denizens of #drupal, I started looking into building an installation profile with a bunch of my usual customizations and presets for the various modules I use on more or less every site, be it my own or someone else's. The aforementioned IRC-dweller-annoyance comes from the fact that there's precious little documentation for this fun little jaunt, so I've had to bug 'em with a lot of questions.

The installation profile system is flexible, but that flexibility seems to come at a serious loss of ease-of-use. Does this module want its settings as entries in the {variable} table? Or does it want its configuration data stored as an array? If it's an array, what keys are used? And how are they used? How about adding a view to the system (not hard, but potentially tricky - are there dependency issues? what about potential configuration problems?)?

My idea for GSoC 2009 is to build an application, either online or offline (each has its advantages), to generate this installation profile. I'd envision the workflow to look a little like this:

  • Present a list of modules to the user (everything with a supported build for 6.x, say). The user picks what they want enabled. Do dependency checking so required modules are also included. Order modules to satisfy dependencies (or just make the user do it).
  • Present the configuration options for core, as well as for all selected modules. The user preconfigures all modules all nice-like, or clicks "use defaults" when they don't want to fiddle with it.
  • For modules where you have to create items (ImageCache presets, Views, Panels, etc.), the user specifies the stuff to be loaded in at the start. (Now that I think about it, doing anything significant with Views or Panels might be difficult, aside from "copy and paste an exported spec".)
  • The user can load in nodes (pages, etc.), generate URL aliases if Pathauto is included, and build menus to link it all together. (This step and the last might need to be merged--it's awfully hard to build a Panel that slurps in a node if that node hasn't been added yet, for example.)

This isn't a complete list and I'm sure I'm forgetting some stuff, but it's a start--I think the general idea is pretty clear. Obviously some of this would require participation from module developers (maybe a better import API for Views, cough cough); the above is playing pie-in-the-sky a little on that front.

There's some other fun stuff that could be done, too, and streamline a lot of the maintenance of installation profiles. The automated profile builder could, for example, build an "independent profile", which doesn't need to be packaged with a complete installation like Prosepoint or whatever. Instead, it includes the code necessary to bootstrap the profile from a base Drupal build. An independent profile could, during the installation process, get the latest supported versions of any specified module or theme if one doesn't currently exist (I don't know if functionality for this exists on drupal.org at present, but if it does it could be leveraged) and unpack them into the correct places. Instead of tossing around full-size Drupal builds for a given installation profile, now you're downloading a single text file and letting the system handle the rest.

Why is this awesome:

First, a little bit about me: I participated in GSoC in 2007 and 2008. Both years my project focused on usability, on lowering the barriers to entry to hit the ground running with open source software. In 2007, I was tasked with writing the framework for a package manager for Windows, to allow for easier deployment of open source software (just get people to download the conduit, the reasoning went, and they can grab whatever open-source software they like). In 2008, I wrote a set of tools that integrated with Visual Studio to ease use of the Mono Framework and testing on Linux.

This idea's similar in principle: lower the barrier of entry so people get interested and get hooked on Drupal. With a system like this (especially if it included that independent profile bit mentioned above), it would be relatively easy to quickly create quality profiles. And, perhaps more importantly, it'd be easier to get new people into Drupal because the preset profiles just work. You want a quick blog? Download simpleblog.profile, which sets it up as a single-user blog. You want a brochureware site? Download brochureware.profile, which uses panels for a cool-looking layout and drops in a low-key theme. Right now, Drupal has a reputation for being crazy-powerful and also being mean and a huge pain to learn at first. I know that when I first started with Drupal, I went to look at the preconfigured installation profiles, and was disappointed--instead of being able to see a quality working site right off the bat or being able to hit the ground running with a site that was mostly configured the way I liked it, I found out I'd have to start completely from scratch. I got over that hump--the second time I tried to learn Drupal, the first I got confused and quit--and absolutely love Drupal now, but that's not the case for everyone who encounters it. It's easier to just say screw-it and go find something a little easier to start with, y'know?

All in all, I think it's a tool that would provide some pretty considerable benefits in the adoption and ease-of-use areas. One might even call it awesome. ;-)

Mentors:

  • ?

Difficulty: Medium when it comes to writing the code, but Hard in terms of length/duration. It may be more than can be done during GSoC. (If I was chosen, I might try to make it my Senior Capstone project for my degree program, which would keep me on the project through May of 2010, at the least.)

Comments

Have you looked at the

cwgordon7's picture

Have you looked at the install profile API module at http://drupal.org/project/install_profile_api? I think there's at least a bit of overlap between your proposal and this existing module.

Thanks for the reply! Was a

Ed Ropple's picture

Thanks for the reply! Was a little worried I'd annoyed somebody. ;-)

I hadn't seen install_profile_api, but I'm jazzed to see it. Such a thing would make the longer, slower parts of this sort of project a little easier, and allow for more concentration on a clean, useful UI (as well as other mentioned features). The proposal might even fit in the package itself, as some optional functionality.

Again, thanks a lot. :)

-Ed

Sounds pretty neat. One

chrisshattuck's picture

Sounds pretty neat. One other module you might want to take a look at as well is Patterns. I've seen a little demo-ing with it, and from my understanding, it takes installation profiles to the next level in terms of things like setting up nodes, CCK types, views, etc, and makes it much easier. The one thing they don't have yet is a snazzy user interface (it's all code), which sounds like what you'd like to do with installation profiles.

Chris Shattuck
Learn Drupal with over 1700 Drupal video tutorials

Seems like the two could be

Ed Ropple's picture

Seems like the two could be meshed pretty easily, building the installation profiles as sets of patterns. Or maybe not. But the idea is seriously cool. I haven't yet looked deeply into it, but I would be a little wary of the "bootstrapping problem" I mentioned in the original post - maybe they've addressed it as part of what they've been working on, but there could be issues with figuring out what needs to be installed where/when when using them in an installation profile, to ensure that all dependencies are fulfilled. Assuming that's straightened out, I could see this being a very flexible and very awesome improvement on installation profiles as they currently exist.

In any case, I wish I'd known about Patterns a month and a half ago...would have saved me a boatload of time!

Thanks a lot,
Ed

Take a look at the features module

dmitrig01's picture

it may do a lot of what you want

In addition to features,

bonobo's picture

In addition to features, look at Context and Spaces -- between these three, there's some good stuff brewing.


FunnyMonkey
Click. Connect. Learn.
Using Drupal in Education

but wait

dmitrig01's picture

a few days :-) We're still working to make them into a usable-ish state (especially features)

Hmm. It looks like there's

Ed Ropple's picture

Hmm. It looks like there's some stuff there that would be useful.

As webchick suggested (or led me towards, anyway, I don't remember if she deserves all the blame or not! ;-) ), the majority of the functionality I'm looking to implement exists, in some form or another. Perhaps we could drill out the core parts of what I'm suggesting for a project idea? Namely, the independent installation stuff--so as not to overwhelm a new user with all sorts of crap while they're still trying to get their Drupal legs--and a GUI on top of install_profile_api or Features or plugin_manager or whatever (not trying to sound dismissive, it's just that I might not be the best person to make that decision!) to facilitate the process of actually building the things.

Sound interesting to anyone?

Thanks,
Ed

Lots of churn

boris mann's picture

This whole area has a lot of churn at the moment, and ideally pieces of it will get into core as well as get backported to Drupal 6. See http://groups.drupal.org/node/19838 for the closest to what you are thinking of at the moment.

Because of all the changes in this space right at the moment, I don't know if it's a good fit for GSOC unless you do something like commit to making the backport for core (which may or may not happen).

Get involved in some more of the discussions and see if people can think of a logical piece to shave off for a GSOC project.

Not only would I commit to

Ed Ropple's picture

Not only would I commit to that, I'd rather work on D6 until D7 is stabilized. :-P

I'll poke around.

-Ed

Hi, I think your Idea for

summit's picture

Hi, I think your Idea for SOC is great. Could I ask you to add something to it please? See http://drupal.org/node/444244#comment-1529482
I think drupal will benefit a lot having install-profiles which make drupal out-of-the-box copying wordpress functionality with fckeditor/imce and other modules standard enabled and configured or other CMS-like install-profiles (Joomla/Typo3) to get beginners using Drupal as tooling box without having to set up fckeditor and other not-core modules which are standard in other cms's.
Do you like the idea? this way Drupal 6 will get more beginners using Drupal I think.

greetings,
Martijn

Update & Project Status?

typehost's picture

Is there any update or progress on this? I just published an installation profile for 5.x, "Drupala" - designed for a combined social networking & social bookmaking site:

http://code.google.com/p/drupala/

I included a MySQL database map with pre-configured settings to make the install easier. I'd like to set up a cloud site that allows the one click deployment of a Drupal installation profile by the user, giving him/her a choice of a number of template sites.

Features, Contexts, Spaces, Patterns... I will also look into these modules as I was unaware of them previously.

Unfortunately, no. I wasn't

Ed Ropple's picture

Unfortunately, no. I wasn't accepted, and I haven't had time to work on open-source projects as I've been working. Spaces looks interesting, when it reaches a production state.

Hi Isn't drupala on Drupal

summit's picture

Hi Isn't drupala on Drupal 6. Drupal 5 is almost not developing anymore...not a good one to choose now in my perspective?
greetings,
Martijn

SoC 2009

Group categories

Admin Tags

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: