The app store model, pioneered by companies like Handango and popularized by Apple, has become the preferred method for distributing software on everything from desktops to post-PC devices. We’re also seeing this model in the cloud, mostly through software-as-a-service (SaaS) providers, such as the Google Apps Marketplace. But what’s been missing so far is a platform-as-a-service that allows you to add components through an app store interface.
In the world of enterprise software, SaaS app markets are subverting the binary distinction between “best of breed” solutions that do one thing and do it well and large suites. It’s hard not to root for best of breed solutions. They are, after all, the best at what they do. But large enterprises have reasons for choosing bundles, ranging from integration to procurement issues. With an app store, you can standardize on a particular suite and then augment or replace specific features. For example, both Jive and Yammer are social collaboration suites that include idea management app, but both also include an app marketplace where you can install a competing idea management solution like Spigit or UserVoice.
We’ve yet to see this applied to PaaS, but I think it’s something we need. I recently moderated a panel on polyglot vs. single stack platform-as-as-service providers at DeployCon. Although there are clear benefits in choosing a PaaS provider fanatically devoted to a particular stack, the way Nodejitsu is devoted to Node.js, the general consensus of the panel was that the market is heading towards polyglot providers. There are just too many advantages in choosing a PaaS provider that give you a single place to multiple stacks with the same tools.
PaaS providers are trying a few ways to get out of the best of breed paradox. Engine Yard acquired Orchestra for its PHP PaaS instead of trying to build something in-house. Cloud Foundry and OpenShift are trying to get the open source community to create a best-of-breed implementation for each stack that it supports. But in the end the truly best implementations may be scattered across providers. Heroku, dotCloud and Active State Stackato may each end up with the best version of one component, but in the end you’ll probably have to pick just one provider.
That’s where an app store could come in handy. What if you could sign-up for a public PaaS and then choose among different components? What if you could actually add OpenShift’s Java stack and Nodejitsu’s Node.js stack to a Cloud Foundry PaaS with the click of a button? Not an integration with a separate PaaS instance, but as an actual component within your main PaaS, with support from a best-of-breed provider. I imagine developers competing to create the best architectures and configurations for stacks, and end users being able to pick the best ones. The primary PaaS provider would need to vet these for security and resource efficiency, of course, but it would turn the PaaS into more of a, well, platform.
There’s some evidence that something like this could happen. PHPFog already has a selection of “JumpStarts” for different applications and frameworks, such as WordPress, Drupal and Cake PHP. But AppFog CEO Lucas Carlson recently showed me Open JumpStarts, a forthcoming project which would allow third party developers to create and submit custom stacks for various frameworks and languages.
We may see this from Amazon Web Services soon enough. Elastic Beanstalk and AWS Marketplace provide the fundamental components. I could see Bitnami or CloudSmith getting into this market as well. You can even see the configuration repositories from Puppet Labs and Opscode as steps in this direction.
With an app store model, best-of-breed would become a realistic solution for platform-as-a-service and shake-up the existing support models.