Drupal App Stores: installing an app on a remote site without knowing its codebase
Drupal apps are the latest hype in the Drupal community, and Drupal app stores will be next. Linnovate has taken the task of developing the first generation of app stores for Drupal. This article covers one of the fundamental dilemmas with regards to app stores: How is it at all possible?!
Apps come to solve the problem of expanding a Drupal site with new features, and doing it easily. Phase2 and LevelTen have both good presentations of the general idea. Our goal is to leverage the existing state of the art to the next level - serving any Drupal website, regardless of it’s code base (usually distros).
When speaking of Drupal app stores, we have three kinds of implementations, presented hereby. As a store operator or as a provider of apps, these three kinds stand for three levels of comprehension of the destination platform (the client end).
- Hosted solutions (cloud based products): E.g., Drupal Gardens, SubHub.
In a cloud, both the store and the client are in reach of the cloud providers and they have full comprehension of the client platform. The store and the client can share the same server and the same user authentication. Moreover, the operators have an exact image of the client’s capabilities and installed software. - Drupal distributions: E.g., Open public, OpenideaL, Open Enterprise, Open* .
When the the client is based on a distribution, there are some assumptions we can count on, or at least take under consideration. We can have a pretty good guess about which contrib modules are installed. However, our comprehension is not complete, since the client may have changed some of the original parts, and added/removed software. The apps.module was made just for that and does a good job. - Custom Drupal sites: E.g.... your website!
Last comes the custom Drupal website. Basically we can count on Drupal’s minimal installation profile and the appstore_client.module to be installed. We have close to zero comprehension of the environment. Absolute darkness. Spooky...
When implementing the Appstore model, we targeted all the above comprehension levels, including customs Drupal sites.
We definitely want each Drupal site out there to join the party by simply install the appstore_client.module, subscribe to a good app store, or app stores, and start enjoying the benefits of apps. It should be noted that apps may be downloaded for free, or sold for dinero (see the discussion at g.d.o. )
What it actually means, is that we’re focusing on building the app store as generic as it can be, and with very basic assumptions. For instance, installing all of a module’s dependencies and their own dependencies, but without updating any already-installed module without an approval from the site owner.
On the other hand, asking for approval like “Installing this app requires an update to ‘Views’ module version from 3.3 to 3.4. Please approve.” is probably wrong and counters the whole idea of apps...
In many cases, site owners don't even know they have a “Views” module installed (wtf...??), and for sure they can not approve or reject this upgrade without fearing of utterly breaking their site.
Installing an app without updating all of the dependencies mentioned in the app’s manifest, may cause unknown behaviors. Yet, this is still the least worst behavior, comparing to breaking the website.
We encourage you to test our alpha package at http://drupal.org/project/appstore and give us feedback (or even better - jump in and join the ride!)