RubyConf 2008: Waves: a Resource-Oriented Framework

Posted in Conferences, Development, Frameworks, Databases, Web Technologies on November 26, 2008

RubyConf 2008: Waves: a Resource-Oriented Framework

Most Web application frameworks today focus on a single basic architectural style, a variation of the MVC architecture popularized by Sun. In many respect, MVC is fundamentally at odds with the intrinsic architecture of the Web itself, which is a resource-oriented model based on HTTP. This architecture forms the basis of REST and has been widely adopted, forcing Web frameworks to retrofit MVC to support REST. Meanwhile, rich client architectures are emerging that essentially migrate MVC to the client. Numerous other architectural styles are emerging, including view or template-oriented architectures, and distributed, highly-scalable models. All of these challenge the basic MVC premise for Web frameworks.

Waves addresses these variations with two principal innovations. First, requests are handled in terms of Resources, not a Controller. This better reflects the nature of HTTP and makes it easier to finely control how requests are handled. Second, Waves extends Ruby's Module concept by providing Layers, which allow elements of a given architectural style to be "mixed in" to an application like an ordinary module. For example, MVC is supported by including the MVC Layer along with an ORM Layer into your application module. Ultimately, Waves decouples the framework from the architectural style, providing developers with a rich development environment that does not include libraries they aren't using or dictating how to build their application.

This session will provide an overview of Waves and walk through building a simple application. The focus is on the resource-oriented nature of Waves and how we can support multiple architectural styles easily within the same framework. In particular, we will show how Waves can effortlessly support REST, rich client, and template-based architectures. We will also highlight key innovations in Waves, such as inheritable configurations and true code reloading, and discuss briefly how it compares to other emerging frameworks, such as Merb or Sinatra. Finally, we will discuss some of the key technical challenges we faced, how we overcame them, and the opportunities arising out of the continuing innovation within the Ruby community.

About Dan Yoder
Dan has over two decades of experience in all aspects of the software business. He has been using Ruby for over three years and is the author of the resource-oriented Web application framework Waves as well as numerous other gems, including AutoCode, Functor, and Filebase. He also is the author of the popular DateJS and Behavioral Stylesheet libraries for JavaScript. He is the Director of R&D Solutions at (YPC), where Ruby and Rails applications handle several million HTTP requests every day. Dan helped start the LA Ruby users' group, with YPC as a major sponsor. His work on Waves has attracted interest and attention from Matz (who mentioned Waves in a blog post when it was initially released), Ruby Inside, and InfoQ, among others. Waves remains the only Ruby framework to offer numerous innovative features, including inheritable configurations, true code reloading via AutoCode, and direct support for layered architectures. He is speaking on Waves and resource-oriented development at the LoneStar RubyConf in September.

Watch Video Watch Video Watch Video Watch Video on External Site

Tags: Conferences, Ruby, Frameworks, MVC, Databases, REST, ORM, RESTful, Confreaks, RubyConf 2008, Waves