install profiles

Decomposing a site into features to build an install profile

Great walk through of how the folks at Funny Monkey deconstructed a site to turn it into several types of Features so that it could be easily plugged together and managed as an install profile.

Form follows function: the growth of Drupal themes will directly mirror the growth of custom distributions

Yes, I've also read Morten, Todd, and now All Drupal Themes. Here's my take:

The growth of Drupal themes will directly mirror the growth of custom distributions. We are currently in the "it's so easy, we click together lots of Drupal modules from scratch" phase. Once there are more Open Atrium and ProsePoint type of distributions, with known modules / module options and features, then you can build great themes to support those functions.

Form follows function. I've tried to explain this a million times in the D7 process. Having a "great" core theme is impossible when we don't decide what kind of site Drupal should be optimized for out of the box. This same holds true for trying to build and market a theme that will apply and work well with the many vastly different kind of sites that one can build with Drupal.

Drupal out of the box: let's make a community

First off, I need to apologize to @webchick for being called away from the Drupal BoF at Open Web Vancouver last night. It was great to have her here to do a run through with @chx1975 of where we're at with Drupal 7. I was around just long enough to once again raise the issue of what the default install profile will do.

We've come quite far in major core improvements, but we don't have a story for what Drupal is when you do a default install. What should Drupal do "out of the box"?

There is a placeholder issue for this now: #483987 Decide on direction for default install profile. As I've seen the UX process continue, I still see us focusing on building and constructing. The changes there have been excellent, but I think we're missing an opportunity to have a truly great out of the box experience. My codename for this is "drupaloob".

The first step is deciding the story for this. WordPress is a blog. We are not a blog. We are a multi user system. Can we turn on a minimal OOB experience that showcases some of our multi user and other strengths? In the words of President Obama, "Yes We Can!"

My personal opinion and outline for this is that we should ship with a "Community in a Box". I've documented it on groups.drupal.org. Regardless of the details of comments on or off, promoted by default, and other finer points, here is my user story for this Community in a Box:

A community site with front page articles, a community blogging section, discussion forums, and shared image galleries.

Anyone is welcome to sign up for an account and participate in the forums. After some time in the forums, users are invited to become contributors, and can post blog posts and photos, as well as submit unpublished articles.

The blogging functionality is a community multi user blog. It is not meant as one users blog, but rather a large community that can post quick thoughts responding to each other and sharing their ideas. (Note: this is in here because people get confused about "blog" functionality -- this is meant to highlight that having a community blog is not the same as a single user blog, so don't expect to be able to change titles and designs etc. -- your blog posts are in a shared, community space)

Editors are around and police the forums, as well as reviewing and publishing articles and other material for the front page.

The photo galleries are shared galleries: like the forum and the community blogs, users upload them to share, rather than in their own space. There are weekly suggestions for new gallery categories, and users can also tag photos with whatever they like to mix and match how the photos are grouped.

While I'm piling wishes on top of dreams, I'd even like to use the wizard that has been in core since Drupal 6 to make several parts of this OOB experience optional. That is, right at the beginning, users would have two options.

One would be to do an "express install" that would install everything with the defaults as I've outlined above.

The second would be to engage the wizard and answer a series of questions and options:

Do you want forums? yes/no
Do you want a community blog for contributors? yes/no
Do you want a community photo gallery? yes/no etc.

What do you think? What would you want people to experience when they first install Drupal 7? Edit the wiki, leave comments, or create some patches against default.profile.

DC Drupalcon 2009

Grabup Image

I'm just wrapping up 4 days of this year's North American Drupalcon in Washington, DC - http://dc2009.drupalcon.org. First off, the the DCDC team led by the folks at Development Seed have done a fantastic job. Everything from the venue to the identity design of the whole conference have been most excellently pulled together. They've set a new bar for organization and professionalism. And a new high of almost 1500 attendees, up from 900 in Boston a year ago.

For me, I've really enjoyed "coming back". I didn't make it to Szeged in the fall, and I've spent the past 8 months not having Drupal as a day job. That has, in fact, re-energized me about being involved in the Drupal community in the context that I feel like being involved. I can work on concepts and projects that interest and excite me, without any ties to clients or projects or commercial interests.

This time around, I didn't give a presentation around install profiles, although I did sit in on the session. I think we ended up with the catalyzation of having lots of the different overlapping solutions work together. Oh, and by the way, any bitching about install profiles not doing packages or post install stuff or any of a host of other things -- we know, we've always known that, it was hard enough to get them in, never mind boil the ocean and have them do everything else. It took from 4.5 through to Drupal 5 to get them in at all! Anyway, core hooks for import / export sounds like a very achievable goal for D7.

The presentation I did give -- Practical Semantic Web (and Why You Should Care) is up on SlideShare and also available as video on the Internet Archive. More on that in a complete post.

I said at the end of my presentation that Drupal's mission is to "evolve the web". I'd like to be a part of evolving the web, and I see my involvement in Drupal as keeping in touch with that.

Open Source stands together

Matt Mullenweg had to make a pretty clear statement that WordPress is Open Source in response to some sniping from MT.

I already left a comment in support of Matt, and he tossed it back my way:

Thanks Boris, I think the way Drupal and WordPress have co-existed is a great model to follow despite a few distractions along the way, and your role in facilitating that as an ambassador has been crucial. It’s rare for code for one project to be directly applicable to another, but ideas and values are contagious — in the good Isley Brothers way.

I know how this can be. We flirted with dual licensing around Bryght's mass hosting system, Hostmaster. In hindsight, it probably delayed development by 2 years. Now hosted on Drupal.org, Hostmaster has a couple of more developers buying in and it feels like we're developing some momentum.

We made a Bryght "install profile" -- a bundle of code and configuration and a little custom module for doing some cool stuff with CSS overrides. From day one, it's been hosted on our public SVN repository, and includes the original CVS tags from Drupal.org itself.

It was amusing to watch that MT4 actually had as a feature that other systems had adopted their templating system -- namely a single contributed module in Drupal that can support MT themes for bloggy sites.

Basically, sniping other open projects isn't cool. In the first meetings that the Drupal community ever had as a group, in Antwerp and Amsterdam, we had Joomla community members and senior devs. It was so fun playing with the Joomla guys and matching t-shirts and groups shots with Rasmus at OSCMS 2007. Amy Stephens +1 -- check out Open Source Community.

The "enemy" here is proprietary systems (and those really are quotes around enemy, as I recall having a great discussion with a proprietary Java based system developer this morning at CCI2008). They are not good for business, they are not good for communities, and they are not good for the growth of this interlinked web of data that is becoming truly useful.

I ran a couple of not really that successful because they were TOO Drupal heavy "Open Source CMS Summits". I'd love to do more of them, because we have so much to learn from each other, but we are all so focused on growing our own communities, each bit of *friendly* rivalry pushing the others to get better. Like the Isley Brothers :P

Install Profile API for Drupal

After about 3 years of running multisite and working on some variant of "install profiles" with our whole team at Bryght, I reactivated my CVS account on Drupal.org and created the Install Profile API "module".

I'm incredibly proud of commit 62627.

As Kieran Lal of CivicSpace said at the recent OSCMS Summit, creating install profiles creates a new "profession" in the Drupal ecosystem: install profile maintainer.

It combines the consulting skills of taking business requirements and translating those into a selection of Drupal modules and configuration. It takes a bit of rigor and diligence to keep track of included modules, and listening to the community that is using your install profile. 

I'm excited about the installation profiles on drupal.org. Every community can potentially bundle a custom package and easily leapfrog the (frustrating) learning stage of what module should I use and how do I configure this.