First, go and read Randy Bias’s open letter to the community: OpenStack’s Future Depends on Embracing Amazon. Now. I strongly agree with him that without full AWS API compatibility (not just syntax, but deep semantics), OpenStack will be unable to deliver on the hybrid future which most of us expect. (Gartner gets this right.)
But then what? Suppose that the OpenStack board said to Randy, “You’re right. We agree 100%. Let’s commit ourselves to this goal.” Then what? What would be different?
One immediate concern that we would have to address is what we choose to define as “AWS compatibility”. It’s obvious that AWS has been adding features faster than OpenStack, and that in a very real sense we’re falling behind. On the other hand, the adoption of these new features is slower; it’s gated by many factors, including the rate of change of layered tools such as those from Rightscale and Enstratius. So while the AWS API is a moving target, it should be possible to define a compatibility roadmap.
We also need to consider the status of existing OpenStack features and contributions that are incompatible with AWS APIs. There are plenty of these in every area – compute, object storage, block storage, networking, security, and so forth. In some cases there are missing features, which it should be possible to add in. (I’m looking at Swift here.) However what do we do about incompatibilities that arise because of third-party components that OpenStack has incorporated but does not control? Do we exclude them (difficult)? Maybe we introduce a new feature categorization, in which components would be tagged as “AWS compatible”; anyone who wanted to assemble an OpenStack system which delivered AWS API compatibility would have to use only “AWS compatible” subsystems. This also feels deeply problematic, and could well lead to a fork.
I don’t know what the answers will be to these questions, nor how the answers will influence the overall outcome. However I believe that those of us who would advance the case for AWS compatibility need to dig into this. We need to come up with a recommendation that spells out the consequences, so that the community can make a fully informed decision.