The Apache Software Foundation has released the first full 1.0 release of Libcloud, a Python library designed to provide a common set of abstractions for working with services on over 30 different cloud providers -- including container services and backup-as-a-service.
The premise is that a developer can use Libcloud to access and manipulate any number of clouds in their software without having to worry about the low-level details of how each cloud implements its features. Libcloud works with Amazon Web Services, Microsoft Azure, Google Compute Engine, and any OpenStack-based cloud.
Four basic kinds of cloud resources are available through Libcloud: servers and block storage (e.g., Amazon EC2); object storage and CDN (Amazon S3); load balancing (Amazon Elastic Load Balancer); and DNS-as-a-service.
Working with each type of resource takes a roughly similar syntax, i.e., obtaining a driver, initializing it with an API key or other credentials, then using many standard Python idioms, like context managers, to manipulate the resources on the cloud. A "Deployment" API in the compute library makes it simple to set up SSL-based software on the target server, although it isn't intended as a full-blown replacement for deployment technologies like Puppet or Chef.
Version 1.0 adds two new types of service APIs, both still in the experimental stage. The container API lets the user deploy containers onto platforms that support them, but also works with local instances of Docker as well as cloud platforms that have container APIs. A new API for backup manages backup-as-a-service for clouds that offer it.
Originally developed at Cloudkick, where CoreOS' Alex Polvi was a founding member, Libcloud was released as open source in 2009 and entered the Apache Incubator later that year. Until 2011, it supported only compute; after that it began to add support for other services, like DNS. Libcloud has since added third-party service drivers for many smaller providers, and external projects to manage Libcloud itself have also sprung up (e.g., Libcloud.rest, a RESTful API for Libcloud).
Libcloud isn't the only multi-cloud library for a given language. Node.js has pkgcloud, and Java has another Apache project, jClouds. (Apache Deltacloud, for Ruby developers, was retired in favor of a non-Apache project called Fog.) Python's popularity as both a scripting and an app-development language all but guarantees Libcloud will find an audience.