Ayende @ Rahien

It's a girl

Cuyahoga

The Cuyahoga Project is a .Net CMS based on NHibernate. It used to be the best application to look for NHibernate patterns for beginners. Now I suggest people should look at this as a great sample app in general, not just for NHibernate patterns.

Among other things, it has been the engine behind ayende.com for the last four years or so. Along the way, it gave me very little trouble, and allowed me to manage my site without much trouble. A CMS, by nature, is an extensible system. But it is a tribute to Cuyahoga (and to what I am doing in the main site) that up until now, I didn't actually have to go into the code to make it do what I want.

I did my usual read-the-code-before-use, of course, but that was about it.

Today, I spent several hours implementing a very simple module in Cuyahoga. This module simply displays and redirect links. You can access the source for this module here, and general instructions about how to build Cuyahoga modules can be found here.

The reason for this post is that I had a change of mind regarding Cuyahoga. Before, I thought about it just as a good application. After, I think about it as a great framework. There is very little need for me to actually do anything in the module except what I actually want, and the overall design is clean, easy to understand and easy to follow. The hardest part was doing the UI, and that is as it should be.

But I do wonder about the name, why Cuyahoga?

Comments

Calamitous
11/17/2008 01:14 PM by
Calamitous

Cuyahoga (river)

"the river which caught fire"

Martijn Boland
11/17/2008 02:50 PM by
Martijn Boland

Thanks for the kind words :)

About the name: the previous commenter is right: it's about the river that caught fire, but R.E.M. had to write a song about it before I knew about that. Unfortunately there is no deep philosophy behind it. I just happened to like the name. BTW, it's also fun hearing people struggle with the pronunciation. Not everybody seems to know the song :)

jbland
11/17/2008 03:32 PM by
jbland

Martijn,

any further movement on 2.0 ?

Chris Cyvas
11/17/2008 05:42 PM by
Chris Cyvas

Being from Cleveland - where the river caught fire, I thought for sure, when I found the Cuyahoga CMS that it was written by someone else from Cleveland. When I saw Martijn's name on it, I knew he wasn't from Cleveland.

I subsequently used Cuyahoga as the model for a few CMS's I have built, including the one in dashCommerce.

It's a clean, solid model and, as you point out, very easily extended for whatever content widget you can think of. Glad to see it's getting some props from others. :)

Martijn Boland
11/17/2008 06:08 PM by
Martijn Boland

@jbland: yes, I've finally got some time to pick up the 2.0 stuff. You can expect some news in the coming weeks.

Gauthier Segay
11/17/2008 10:27 PM by
Gauthier Segay

"The hardest part was doing the UI"

and the hardest part is the sole that you documented in the code (and that is as it should be):

BindUrl();// I HATE WebForms

Ayende Rahien
11/17/2008 10:38 PM by
Ayende Rahien

That was when I realized that I need to to overcome stupid stateful model in the app.

Bryan
11/18/2008 05:22 AM by
Bryan

Snake River

Paul Cowan
11/18/2008 12:29 PM by
Paul Cowan

It always struck me as strange there were no unit tests in Cuyahoga.

That is my only criticism. I learnt a lot of my NH, IOC stuff from the project.

Hats off

Yitzchok
11/19/2008 05:20 AM by
Yitzchok

I tried N2Cms (n2cms.com) it uses NHibernate and Castle Windsor and is very easy to setup and works quite nicely basically it manages the Admin side of things and the structure of the site and you have to create the View to display the info. But you do have to inherit from ContentItem and add attributes

Comments have been closed on this topic.