I read on Wednesday that Sun Microsystems plans to release open-source application programming interfaces for its . The obvious question in my mind is, why wouldn't Sun just support Amazon's APIs, which have become the de facto standard?
The short answer is that Amazon filed a very broad patent titled "Distributed storage system with Web services client interface" related to its Simple Storage Service (S3), and it's not clear if the company will eventually take legal action against those using the APIs in their own products.
We can argue all day about the U.S. patent system being broken, but the point is that Amazon Web Services (AWS) users are locked into the platform, and if the patent is granted, users may well end up without an alternative.
Sun is absolutely doing the right thing in avoiding the risk of Amazon's patent attempt (though it's surprising that it couldn't do some kind of covenant deal) as well as creating true open cloud standards. But the Amazon APIs are the dominant force--in fact, the only real option for the cloud. Unless they become legitimate standards, cloud access will potentially end up in a morass of competing APIs and methods.
I can't see a reason why Amazon wouldn't take the step of making their APIs actual standards. Besides the goodwill, it would also mean that their own services would be accessible to every other system. For now, however, its patent application states the following:
United States Patent Application 20070156842
Distributed storage system with Web services client interface
A distributed, Web services-based storage system. A system may include a Web services interface configured to receive, according to a Web services protocol, a given client request for access to a given data object, the request including a key value corresponding to the object.
The system may also include storage nodes configured to store replicas of the objects, where each replica is accessible via a respective unique locator value, and a keymap instance configured to store a respective keymap entry for each object.
For the given object, the respective keymap entry includes the key value and each locator value corresponding to replicas of the object. A coordinator may receive the given client request from the Web services interface, responsively access the keymap instance to identify locator values corresponding to the key value and, for a particular locator value, retrieve a corresponding replica from a corresponding storage node.
Follow me on Twitter @daveofdoom