Join the 85,000 open source advocates who receive our giveaway alerts and article roundups.
Interview with Rackspace's Everett Toews on Apache jclouds
Simplifying application development in the cloud
Get the newsletter
Everett Toews is a Developer Advocate at Rackspace, where he works every day to make OpenStack at large and the Rackspace Cloud specifically easier for both developers and operators to use. He is co-author of the OpenStack Operations Guide from O'Reilly, which we profiled earlier this year.
Everett is also a core contributor to the Apache jclouds project, an open source tool designed to make it easier for developers to build applications which are able to reap the benefits of cloud computing while being agnostic to which cloud infrastructure project lies underneath.
In this interview, we caught up with Everett to learn more about the Apache jclouds project and get a sneak peak at his talk next week at OpenStack Summit.
What is Apache jclouds?
Let's start with the jclouds mission statement. Apache jclouds® is an open source multi-cloud toolkit for the Java platform that gives you the freedom to create applications that are portable across clouds while giving you full control to use cloud-specific features.
These words actually mean something to us and were carefully chosen. "open source" more on this under community. "multi-cloud" jclouds works with a lot of clouds both public and private, including all of the major ones out there. "toolkit" we're more than just a language binding, we also have stuff like Chef integration and a CLI. "Java platform" we run on the JVM and work with Scala, Groovy, and Clojure. "portable" more on this under cloud-agnostic. "cloud-specific" not only is jclouds portable but we also cover features that are specific to some clouds allowing developers to use what they need. "full control" the point is to use jclouds in the way that makes the most sense for your use case, you have the freedom to use portable or cloud-specific features.
What brought you to jclouds? What do you work on within the project?
When Rackspace needed a Java SDK for OpenStack and the Rackspace Cloud, we decided to look outward into the open source community to see what was there. We didn't want to succumb to not-invented-here syndrome. We found that jclouds was already established as a leader and had a healthy community around it. We support open source whole-heartedly and joined the project.
I started on jclouds by doing lots of development. Writing code that works with the OpenStack and Rackspace APIs. Then I moved on to documentation and helped redesign our website and documentation. Lately, I've been focused on advocating for jclouds and have given talks about it in London, New York, and most recently in San Francisco at JavaOne.
Being in the Apache Software Foundation (ASF), I get the fancy title of Project Management Committee (PMC) member and Committer.
Why Java? Are there similar libraries available for other languages?
Simply put, Java is everywhere. By most accounts it's the most popular language in the world. To provide a great developer experience we need to go where the developers are and a great many of them are coding in Java. These are our people and we're here to support them.
There are similar open source projects in other languages. Notably Fog in Ruby, pkgcloud in Node.js, and libcloud in Python.
What kinds of applications are people creating with jclouds?
We have a lot of users, and that page is only a small subset of our users. It's not always easy to know who is using your open source project. Most developers integrate it into their projects, get up and running, and we never hear from them. That's why we get excited when we learn about new users and new use cases. A couple of recent examples are discovering that Google now recommends jclouds as one of its Community Libraries for Google Compute Engine and that the open source project Mesosphere uses jclouds to create clusters on clouds. Developers are depending on jclouds and creating all kinds of production ready applications with it.
What are some of the advantages of jclouds being cloud-agnostic?
There are lots of advantages, but to me they boil down to two primary reasons, avoiding lock-in and not having all of your eggs in one basket.
Smaller organizations with a small engineering team (e.g. a startup) are very likely to use the cloud. As they grow, they may come to realize that the cloud provider they started on isn't the best fit for their business anymore. There can be lots of reasons for this such as cost, performance, and support. At the same time they may come to realize they are locked-in to the cloud provider they started on. If they take advantage of cloud-agnostic tools like jclouds from the start, they can reduce their cost of switching. I spoke about this extensively at OSCON 2013 and wrote about it in Keep the Cloud Honest.
Larger organizations with larger engineering teams (e.g. enterprises) are also likely to use the cloud. In some cases for them it's not just about avoiding lock-in. It's about not having all of your eggs in one basket and using cloud-agnostic tools jclouds from the beginning. Either they work with multiple cloud providers for a disaster recovery scenario or they want their cloud providers to compete with each other a bit more vigorously for their business. Either way it's a win for the users.
Tell me a little bit about the community. Who writes jclouds? What does it mean to be under the ASF now?
jclouds was founded over 5 years ago by Adrian Cole, who is still active in the project.
We have a solid core of PMC members and many committers, some are individual contributors and some are working for different organizations including various cloud providers. Apart from that core, we get contributions from all over the globe too. Over the history of the project we've had 8,500+ commits from 100+ contributors. You can learn more about how to take part from our Community page.
The transition to the ASF was a pretty big change for us. Technically speaking there was some change but we still take contributions via GitHub pull requests and our continuous integration pipeline stayed intact. The bigger change was around our project processes. Prior to the ASF we had processes in place but the transition forced us to formalize these with help from the process structures already in place at the ASF. There were growing pains to be sure but ultimately it resulted in a better project, managed by a group of individuals with jclouds' best interests in mind.
If I wanted to start using jclouds to interface with my private OpenStack cloud, how would I go about getting started?
jclouds is the official Java SDK for OpenStack. Following the links from developer.openstack.org will take you to the jclouds Getting Started Guide for OpenStack. That gives developers a gentle introduction to installing jclouds, the terminology differences, and some example code. After you've got your feet wet, it's a good idea to take a step back and read about the Core Concepts otherwise you might miss the forest for the trees. If your use case requires portable and cloud-agnostic code, you'll need to delve into the ComputeService and BlobStore.
Anything else you'd like to share about jclouds?
It wouldn't be an open source project if I didn't end this by saying "pull requests accepted!" We're always open to contributions from anyone at anytime. The best way to learn how is to have a look at our How to Contribute wiki page. We also highly value contributions to our documentation too. Notice in the footer of every page on our website there is a link that reads "Fix This Page". If you click on that link, it will drop you into the GitHub editor of the markdown source code for that very page, and you can make a fix right then and there. Presto, you've made a contribution and the world of open source is a better place because of you.
Let's jump ahead to what you're talking about at OpenStack Summit. Care to give us a preview?
I'll be speaking at the upcoming OpenStack Summit in Paris in a session called Ciao: Continuous Integration for Apps on OpenStack. It's an introductory session to doing continuous integration on OpenStack with Jenkins and jclouds. After working with these technologies for a long time it's tempting to try to cover some advanced topic. However, it's important to remember that there are a lot of application developers new to OpenStack at the Summits so we need to have sessions to help them better understand how to use OpenStack to create higher quality applications.