Fog Aims to Advance Ruby in the Cloud

October 15, 2010

The current state of the cloud does not provide clear interoperability for all types of application development languages or frameworks. But for open source Ruby developers, the Fog project is now offering a path to help navigate through issues of cloud interoperability.

This week, commercial Ruby on Rails platform vendor Engine Yard announced formal support for Fog, providing new stability and resources for the open source effort. With Fog, the goal is to help accelerate cloud development by abstracting away the differences among various cloud technologies.

"It would be great if deploying to different clouds was as simple as swapping endpoints, unfortunately each platform has vastly different interfaces," Fog creator Wesley Beary, an engineer at Engine Yard, told InternetNews.com. "When provisioning resources on different clouds -- Amazon, Rackspace, vCloud, et cetera -- the target and the data sent over the wire needs to be completely changed."

Beary added that as the number of clouds grows, so does the complexity of the multi-cloud deployment problem. With Fog, the idea is that instead of developing only for Amazon (NASDAQ: AMZN), developers can have the same application code access to all other clouds as well.

"Cloud interoperability is a difficult problem," Beary said. "Fog smoothes out the differences between provisioning APIs and provides a consistent higher-level interface."

From a technical implementation perspective, Fog is a Ruby library that can be used by any Ruby project or Ruby on Rails application. Beary noted that some of the API decisions for Fog were made to make it feel familiar with the way that Ruby on Rails applications are written.

"By abstracting away the nitty gritty, Fog provides a wonderful opportunity for developers to provision and configure their own infrastructure," he said.

Engine Yard is now using Fog in its AppCloud service for Ruby on Rails in the cloud, and the company's newfound interest in the project could help speed along its evolution.

"Fog was a hobby project for me for over a year and a half, so it suffered from my availability and variable interest," Beary said. "Some aspects of the project, like documentation or in-depth testing, suffered most as they cannot easily be done in small periods of hobby time."

Now with Engine Yard's support, Beary has a strong focus on making adoption and contribution easier, both by simplifying the code and improving the documentation. He also plans to do some outreach by speaking at conferences and user groups. To date, Beary has written much of Fog's code himself, though he commented that the number of outside contributors has been growing steadily.

"Making it easier for people to contribute and participate is a major goal moving forward, and we already have nearly 30 contributors," Beary said.

With the new development time and focus that Engine Yard affords Beary, he plans on tackling a number of key technical challenges.

"Beyond implementing quality interfaces for all the different clouds, one of the biggest technical challenges has been refining and stabilizing shared interfaces between the different cloud interfaces," he said.

One such shared interface is a new addition in Fog called Server#bootstrap, which provides a method for universal SSH key placement to quicken the process of provisioning and accessing a server on any cloud.

"The other really big challenge is in Fog's mocks, a system that simulates cloud provider behavior," he explained. "This system allows a developer to emulate the cloud in testing without paying for or waiting on real resources."