This weekend at DrupalCamp Atlanta, I had the pleasure of presenting with Jay Callicott from Mediacurrent (a team who did a tremendous job of planning and hosting this DrupalCamp, it should be noted) on how to build an App for a Drupal distribution, using Mediacurrent's brand new Events app that they just built.
Ok, so it wasn't really 8 minutes, and it wasn't exactly live - it was more like the cooking show kind of live -- but it did cover all the steps of building an App for a Drupal distribution, start to finish.
To save you the suspense, I'll go ahead and sum up the steps:
Knowing what Apps are and aren't is an important first step. Apps are about usability in Drupal distributions. And they're about making the excellent existing functionality in Drupal easier to find, install, configure, and use for a distribution's end users.
A lot of people in the session had questions about how Apps and Features differ. While our live answer wasn't super succinct, Jay, a long-time Features user and fan, later explained it nicely this way:
"Features allows the export of configuration to a module. App provides an interface for delivery of modules and their dependencies, as well as an API for configuration."
Yeah, Jay. Well put. Listen to that guy. Another way to look at it, if you're more of a businessy person and less of a technical person, might be this:
"the Features module packages up Drupal functionality and configuration in a way that makes it easy to use and share among developers. The Apps module wraps a layer of usability around Drupal functionality that makes it easier to use and share among a distribution's end users. You'll often combine them, wrapping the Apps layer of usability around the Features packaging of functionality."
Got it? Super. Glad we cleared that up. Let's move on.
A good App will solve a distinct problem for a specific audience, and solve it completely.
Before Mediacurrent started building their app, they took stock of the problem: "OpenPublic users don't have an easy way to add event listings to their web sites" and planned a solution. We always say that if you can craft a tweet (140 characters or less) with the problem, audience, and solution, it's likely a good app idea.
Building an app starts with building a great piece of Drupal functionality, in the form of a base module or a Feature that accomplishes the solution that you so thoughtfully planned above. We highly recommend using existing modules, and contributing all new modules back to Drupal.org. Because that's the right thing to do, and you know it.
In Mediacurrent's case, Jay had already built a really lovely Events listing Feature for his distribution, OpenChurch. So he had an awesome starting place.
Once you've got your base functionality built, the usability layers of an App come into play. This is where you build your configuration page, add demo content if that's appropriate for your app, and gather the assets, including the apps manifest and the images and screenshots associated with your App. And of course, you're going to want to do some testing to make sure the thing does everything you said it would do, and shows up where you want it to show up.
Jay's got some excellent screencasts in the presentation that walk you through exactly how he tested his app and got it ready to go.
Now that you've got it all packaged up, you can send it over to the distribution's maintainers (in the case of OpenPublic, that would be Phase2) along with all of its associated assets. We'll test it too, and make sure it works in the distribution and follows with the Open App Standard.
In the case of the Events app, our team suggested that Jay go back and add demo content to it, so that it was easier to use from installation. Once he did that, it was ready to go live.
Then, as you'll see in the presentation, the App is added to the OpenPublic Apps console and voila! - it's available to all OpenPublic users. We know many OpenPublic users will be excited to see the Events app in the console, as it's one of the most requested pieces of functionality for OpenPublic. Thank you, Jay and the Mediacurrent team!
You can watch the presentation in its entirety, and when you're plenty inspired and ready to build YOUR app, you can take a look at our new documentation on building Apps at the OpenPublic community site. Then give us a shout and let's get started making your great Drupal functionality findable, installable, and easier to use in Drupal distributions.