Recently I had a discussion on Twitter where some Pivotal employees claimed that Buildpacks removes vendor lock-in because it is used by both Heroku and CloudFoundry. As I argued in my post that standardization in PaaS only makes sense when it reduces or eliminates vendor lock-in, I beg to differ from their push that Buildpacks are the standards to avoid vendor lock-in. Heroku did an awesome job releasing Buildpacks to extend their platform to have deeper language support adhering to the idea of Polyglot Platforms. Developers got very excited extending the platform and they have definite advantage in terms of supporting many languages on their platform. When CloudFoundry tried to reboot their platform, they embraced Buildpacks because it gives them an easy onramp to extensibility. I would say it was a smart move because it helps CloudFoundry platform gain developer credibility based on the popularity of Buildpacks.
However, I disagree from their arguments that Buildpacks are the standards because it helps avoid vendor lock-in. Let me make it clear here. Buildpacks may very well emerge as a standard in the future. On a personal level, I would love to see interoperability between OpenShift Cartridges and Heroku Buildpacks. Buildpacks can be considered as standards if it is about plugging language runtime and frameworks support on platforms but if CloudFoundry wants to make Buildpacks a packaging format for anything beyond that (like packaging application servers, data stores, other 3rd party services), it fails the “standards test” I outlined in this blog post. As an example, I cannot take Liberty Buildpack and plug it into Heroku (at least, not yet). Making only a subset of Buildpacks compatible across platforms and calling it as a standard that removes vendor lock-in is mainly marketing than doing anything to empower the end customers.
I really want PaaS standards and I am willing to discuss with anyone or work with anyone to standardize on Buildpacks and/or Cartridges or Containers but the end goal should be to really empower the end customers and help them avoid vendor lock-in. Anything else is just plain old marketing and doesn’t mean much. #justsayin