Drupal legend Robert Douglass has started a conversation on Twitter under the hash tag #drupalappstore, which presents the idea of a "Drupal App Store" up for discussion, arguments, and flame wars. Robert has challenged people in the Drupal community to blog about this topic, and when Robert says something about Drupal, people listen. Here's my contribution to the conversation.
As a person who makes his living by providing Drupal services, I have mixed feelings about the concept of an app store.
In the open source world, there are many people who believe that it's immoral to charge for open source software. Free is free, and if you desire to profit from using your talents to code, you're an evil capitalist who threatens the entire culture of open source.
There are many people who subscribe to the idealogy of open source because they simply wish to contribute something useful to the world. We are free to speak, free to contribute, free to share and this is a very powerful concept. There's no barrier to entry, no license fees, and no one to prevent your contribution from being shared.
Like many others, I write open source software because it feels good, I get to share the fruits of my labor, and I find it very rewarding to solve a problem with code that others can use.
The Drupal community embraces these beliefs fully. Anyone with an idea can get a CVS account on drupal.org and contribute a module or a theme. These modules range from the essential-can't-build-without-them to modules that provide specific functionality for specific use-cases, to colorful and mostly pointless modules. The point is, no one stops these modules from being contributed.
Some people are now sharing their code in places outside of Drupal, either on their own servers or on Github or other sites.
Drupal is a highly collaborative culture. Many Drupal modules are designed to work in conjunction with other modules, and many modules have multiple maintainers.
The very notion of an App store evokes thoughts of how Apple and Google have implemented the concept. Recently, Wordpress has launched an app store of its own. In these instances, what people pay for is a single, stand-alone block of code that provides discrete and atomic functionality. Wordpress plugins rarely require other plugins in order to work. iPhone apps don't depend on other iPhone apps, and neither to Android apps.
This concept doesn't translate to the Drupal community, as many modules are dependent upon other modules. The idea that a person pays $9.99 for one module, and then has to pay varying amounts for two or three other modules in order to use that module is really not feasible, in my opinion. Given that most Drupal sites have a minimum of 20 modules in use, it could get fairly expensive to build a moderately complex site in Drupal if you had to pay for all of the modules you needed.
How about the collaboration argument? If developer A has a module and developer B writes a similar module, there's no incentive to work together to merge those two modules, as they will both potentially lose money. Having several modules that perform largely similar functionality only pollutes the ecosystem and makes it difficult to select modules when building projects. What if a developer writes a module that is so absolutely useful that it ought to be merged into Drupal core? That developer will lose revenue.
And how about vetting? Apple has strict policies about what apps can be sold in their store. Would a Drupal app store do the same thing? I wouldn't want someone to tell me that I couldn't sell my app because someone else didn't find my code useful or of sufficient quality.
The only way I see a Drupal app store working is if it is implemented in a way that follows the concept of the iPhone app store; that is, fully standalone applications with no dependencies. What that means to me is that Drupal distributions would fit this model, such as OpenAtrium, or some e-commerce application. I could easily see a Magento-like application built with Drupal for sale as an app, with additional plugins for sale. Or perhaps a multi-user blogging distribution for sale.
I think that if this idea was implemented, it would go a long way toward forwarding the concept of Drupal distributions, and companies can be successful with this business model.
Why would I pay for any of these solutions when there are so many free alternatives? Superiority, support, functionality. If the Drupal community was going to go in the direction of an App store, I would expect that these three things would need to be provided by developers in order to make the case that paying for the application has more value than getting a similar application for free.