Data Context Interaction: The Evolution of the Object Oriented Paradigm (published on rubysource.com)

This article is a practical introduction to DCI (Data Context Interaction). I’m not going to explain all theory behind it. Instead, I’m going to show you what kind of problems DCI is trying to solve and how it can be implemented in Ruby.


James Coplien - The DCI Architecture: Supporting the Agile Agenda.

This is a fantastic talk (or rather a lecture) James Coplien gave a few years ago. It’s informative and entertaining at the same time. This talk is a good introduction into DCI.

James Coplien on DCI

Another awesome talk by James Coplien, but this one is more recent. This talk is provocative. It makes you think about object-oriented programming and software in general. It’s inspiring. You’ll want to try out DCI right after you finish watching. You definitely should check this talk out.

Jim Gay - It’s Business Time

This talk is more ruby-focused than the previous two. Jim briefly introduces the core concepts of the Data Context Interaction paradigm and gives some advice on how to implement it in Ruby. My recommendation is to check this talk out after you’ve watched one of Coplien’s talks.


Lean Architecture: for Agile Software Development by James O. Coplien and Gertrud Bjørnvig

"This is not only the market's first book on Lean Architecture and Agile development, but it clarifies the difference between these two powerful approaches and shows how they can be combined. It is also the first book to present Trygve Reenskaug's new software architecture called DCI: Data, Context, and Interaction. DCI is to the programmer as the classic MVC architecture is to the end user: a software approach that puts people first."

Clean Ruby by Jim Gay

"Make your code more obvious and put the logic right where you expect it; read “Clean Ruby” and enhance your MVC design with DCI."

This book is filling the need for a practical introduction to DCI for Rubyists. It’s still work in progress, but it looks very promising.


A DCI Execution Model by Trygve Reenskaug

"This article is about an execution model for DCI. An important aspect is the handling of DCI Contexts at runtime; where they are stored and how they are accessed. DCI in general and the DCI Context in particular make data communication a first class citizen of computer programming.""

Blog Posts

There are a dozen or so of blogs posts about DCI in the Internet. I found these two being particularly useful.


One more resource that you should probably add to your bookmarks is Object Composition Google Group. If you have any questions, this is the place to ask them.