Drupal Apps: A Manifesto

By Alec Reynolds,

What are Drupal Apps?

In the tech space, the word "app" invites unintended connotations. When we visit the Apple App store, or go to Google Play, we have a pretty good idea of what an "app" is: a piece of software with a highly-focused set of functionality. However, as we see apps expanding into the desktop world as widgets and software add-ons, the meaning becomes more obscure. Afterall, if Microsoft chooses to start calling add-ons to a CRM "apps," no one will mistake them for a mobile weather report app.

Drupal further confuses the app paradigm by providing a purely technical definition.

Since the introduction of the Apps module, the Drupal community has attempted to describe what apps are by offering technical definitions. According to the Apps module page, a Drupal app provides "facilities to download modules and all of their dependencies in one easy step." By this definition, apps are simply another layer on the Drupal stack, allowing developers to aggregate existing Drupal functionality in an easier manner. Indeed, this is much the perspective offered by Phase 2.

From the perspective of an advanced site builder or developer, this is an adequate definition. Why download the same modules, create the same content types, and assemble the same Views site after site? Instead, install a package of these Drupal building blocks that satisfies a basic use case. After a few custom tweaks, the site builder should be in a position to start theming.

While this definition may describe what an app is from a technical viewpoint, it ignores the unique opportunities available to Drupal apps to improve the end-user experience. We hope to encourage a perspective which sees apps as holistic encapsulations of functionality that produce a complete user experience.

We need to redefine Drupal apps.

Who Needs Apps?

Apps have very different stakeholders, with various needs:


Application icon - Backslash between brackets

How apps help them:

  • Provide a needed layer to aggregate module functionality
  • Easy way to extend app-minded distributions

Site Builders

Icon image of a computer mouse

How apps help them:

  • Save time re-using common site elements/functionality
  • Can extend and create apps using in-browser tools like Features


Icon of user looking at computer monitor

How apps could help them:

  • Provides a well-defined piece of functionality that works out of the box
  • Doesn't require knowledge of "Drupal-y" concepts

Drupal has flourished in great part because of its infinite customizability. However, the main beneficiary of this flexibility has been site builders, not site owners. We have made it easier for people with limited technical ability to build sites, provided they have the time to learn somewhat opaque tools and interfaces. In contrast, we have not made significant advances in helping site owners to create content and manage their site.

The current generation of Drupal apps helps site builders, not end-users.

The current conception of Drupal apps continues this trend. By most definitions, Drupal apps are site builder tools. This is misleading, as most end-users are familiar with the idea of an app as a self-contained piece of functionality that is easy to utilize. Most end-users will be confused when they download a "Media Center" app and are unable to change basic layout and re-name elements like "videos" to "movies." They will need to delve into traditional Drupal configuration to perform these actions and make full use of their app.

End-users stand to gain the most from the added functionality apps can provide.

Apps should continue to encapsulate Drupal functionality in a manner that is familiar to site builders and allows customization. However, they should also include interfaces that assist end-users in the installation, configuration, and day-to-day use of the app functionality.

Apps for the End-user

In no particular order, here are a couple features that we've been thinking about at Kalamuna as essentials for future user-facing apps.

Apps Installer

Many of the changes that are necessary to turn a generic app into a useful tool for the end-user are purely cosmetic. Common options set in an installer might be naming a content type or choosing whether comments should be allowed.

Helpful Default Content

Demo content in most Drupal distributions and apps, in so far as it exists, is typically lipsum-filled experiments in Dadaist-nonsense. A far better alternative would be to emulate the visual style of a wireframe.

Intuitive Administrative Links

When a view displays a list of content, why not present editorial users the option to add more content of the displayed type? Whether using Drupal 7's contextual links or another interface, this could assist in the speedy population of a new app.

Re-branding Drupal Apps

Apps can provide an abstraction layer for Drupal functionality that allows end-users to effectively utilize their site. To create this reality, the community not only needs to develop a new generation of apps, but also re-think the way we present them to outsiders.

Apps need to engage end-users on their own terms.

Perhaps a simple way to do this is to consciously separate the target audience for apps. There will always be a need for low-level, site builder-centric apps. High-level, end-user-focused apps providing UI enhancements will depend upon these to aggregate Drupal core and contrib functionality into usable chunks. However, these should be explicitly labeled as for developer use. Finding a way to separate these markets and effectively market to end-users will be a challenge for future Drupal app stores.

"Application" image courtesy of Kyle Klitch, "Mouse" image courtesy of Camila Bertoco, and "User" image courtesy of Luis Prado. All from the Noun Project.

Alec Reynolds


When his long-standing interest in programming and this "internet thing" became relevant to his entrepreneurial inclinations, Alec found himself helping launch a series of startups. This experience has provided Alec with a deep understanding of young businesses and the product development process, where he participates from the code to the customer.