Apps: Making Drupal Distributions Work
It is amazing in three short years how much more powerful and easy to use Drupal distributions have come. Three years ago I spent the holidays converting our base Drupal installation into a distribution. Friday, we launched the fourth generation of the OpenEnterprise distribution, built in Drupal 7 leveraging Apps. Distros have come a long way baby!
Most of the sites LevelTen builds are for businesses and organizations looking to build their online brand. They tend to have a common set of needs; brochure pages (products, services, about us), blogs, press rooms, FAQs, events, whitepapers, contact forms, etc. Over our first year of doing Drupal we started to create a base install. It was a collection of modules and a database dump with many of the site recipes we commonly used.
The approach was to put everything in up front, and then remove what we didn't need. It gave us a great jumpstart for a typical business site. Then we decided to share it with the world. Over the Holidays in 2008, we converted the recipes from a database dump to code using Drupal 6's installation profiles. We finally launched the distro as iSite Essentials in January of 2009.
If I had any idea how hard it would be to do, I probably would not have done it. To create an install profile you have to work with parts of Drupal most people don't usually venture. You spend a lot of time with drupal_execute() trying to trick Drupal into accepting coded form submission. We had to come up with ways of importing demo data so you could see how the distro actually works. You have to deal Drupal in the installation phase with partial bootstraps, missing hooks, and missing dependent modules. You have to bake all your site building recipes in the bizzaro world that is Drupal's installer.
A year later the Features module had gained traction. Storing site building recipes became much easier. We rebuilt the distro using features. Version 2 of iSite Essentials was released for DrupalCon San Francisco. There were still a lot of challenges. Features was still an up and coming concept. Many data structures could not be saved in features. We had to do a fair number of hacks, err, I mean hooks, to get things to work. Demo content was still a pain.
For the 3rd version of distro, we decided to streamline things. In traditional Drupal distributions, you have to install all site building during site installation. With features we could install things later. We moved things like blogs, FAQs, press rooms to features you could enable or disable during the install or add later via the modules admin. We renamed the distribution OpenEnterprise and launched it a year ago. It was the last of the Drupal 6 versions.
For Drupal 7 we wanted to leverage features even more to make the distro highly modular. We wanted a way to enable a streamlined configuration wizard to tweek settings. (Our first attempt at this was the presets module for Drupal 6). We wanted a way to automate the downloading of dependent modules and third party libraries. We wanted a way to more intelligently deal with demo content. Basically we wanted it to be incredibly flexible and dirt simple. Easy right?
Well some smart people over at Phase II were working on the same challenges. Luckily, they solved them before we wasted time on it. The ultimate answer to the "incredibly flexible and dirt simple" problem is Apps.
For the D7 version of OpenEnterprise we built a core installation that contains the truly essential modules and site building every Drupal site should have (can you say WYSIWYG). All the fancy optional stuff has been moved to apps. Want a cool blog with the simplicity of WordPress? There's an app for that. Want a portfolio manager to show off projects, clients and testimonials, there's and app for that. Job board? App. Want a FAQ, events calendar, press room, etc. Well there aren't apps for that, yet. We, and many others, are working on it. That is what is coming next; apps for everything.
At their core, apps are essentially features (or modules). But where features are for coders, apps are for regular folks. They enable one-click automatic downloading of all files. There is a straight forward way to configure and tweek settings. They allow us to add and remove demo content so we can quickly see what an app does. Its Features simplified.
Distros have been touted as the future of Drupal since Drupal 5. Apps is the next great step in making distros more useful and easier to maintain. Long live the distro.
BTW, we would love to know what you think about OpenEnterprise. Download it and take it for a spin. Let us know what you think.