﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>Patrick Smacchia commented on The NHibernate Community</title><description>Alwin, Fabio, apologize for the misunderstanding.
  
  
Like you I am currently buried under work but yes, it would be nice to componentize the NH code base. From my experience, componentizing is not something too time consumming. The reason is that developers instinctively know what is high and low level and usually avoid doing call from low level to high level. But any code base ands up being roted more or less because this 'instinct' cannot replace a rigorous check with a tool. I would estimate a week of work for the 36K LoC of the NH project. 
  
  
By looking at the DSM of direct dependencies...
  
[codebetter.com/.../...encyMatrixSnapshotDirect.jpg](http://codebetter.com/blogs/patricksmacchia/NHibernate2/DependencyMatrixSnapshotDirect.jpg)  
  
I think NHibernate, NHibernate.Engine, NHibernate.Utils, NHibernate.Types are the 4 low level components and the first thing to do is to eliminate their efferent dependencies, menaning they should not use any high level component. Concretely their black cell in their respective rows should become blue. This is done usually by creating interfaces and doing injection of code. Also a level order must be defined amongst these 4 namespaces.
  
  
</description><link>http://ayende.com/3716/the-nhibernate-community#comment15</link><guid>http://ayende.com/3716/the-nhibernate-community#comment15</guid><pubDate>Tue, 25 Nov 2008 14:53:43 GMT</pubDate></item><item><title>alwin commented on The NHibernate Community</title><description>Patrick, of course it would be good for NH to promote good coding styles. But who is going to make it happen? 
  
  
Not Fabio, as he has enough on his plate and is already doing great work for NH. 
  
Not me, because I don't care enough.
  
Maybe you can do it? Apparently you think it is very important?
  
  
If you think NH should have better componentization, you should make the effort.
  
  
Many people want important things to happen, but when replied 'please do it yourself' it suddenly isn't that important anymore.
  
  
  
(BTW I love NH and it's codebase, and I love NDepend too!)
</description><link>http://ayende.com/3716/the-nhibernate-community#comment14</link><guid>http://ayende.com/3716/the-nhibernate-community#comment14</guid><pubDate>Tue, 25 Nov 2008 00:05:54 GMT</pubDate></item><item><title>Fabio Maulo commented on The NHibernate Community</title><description>@Patric
  
You had jumped the first phrase.
  
"Take a look on the left-top of this page."
  
Translated mean:
  
  
"Send me a patch for this"
  
</description><link>http://ayende.com/3716/the-nhibernate-community#comment13</link><guid>http://ayende.com/3716/the-nhibernate-community#comment13</guid><pubDate>Mon, 24 Nov 2008 20:46:42 GMT</pubDate></item><item><title>Sidar Ok commented on The NHibernate Community</title><description>Should have been L2S being abondoned :)
</description><link>http://ayende.com/3716/the-nhibernate-community#comment12</link><guid>http://ayende.com/3716/the-nhibernate-community#comment12</guid><pubDate>Mon, 24 Nov 2008 16:51:38 GMT</pubDate></item><item><title>Sidar Ok commented on The NHibernate Community</title><description>Abundance of Linq to SQL has also a good effect in this, imho. 
</description><link>http://ayende.com/3716/the-nhibernate-community#comment11</link><guid>http://ayende.com/3716/the-nhibernate-community#comment11</guid><pubDate>Mon, 24 Nov 2008 16:49:53 GMT</pubDate></item><item><title>Patrick Smacchia commented on The NHibernate Community</title><description>&gt;A simple critic is not enough and become something heavy when is repeated again and again without a solution.
  
  
Fabio , the critic is not simple since it comes with proven facts such as this dependency matrix:
  
[codebetter.com/.../...cyMatrixSnapshotIndirect.jpg](http://codebetter.com/blogs/patricksmacchia/NHibernate2/DependencyMatrixSnapshotIndirect.jpg)  
  
My only concern is the fact that very popular OSS code bases such as the one of NH should promote good coding style such at the very least good componentization and layering. Beside that, I am sure that the NH code base comes with great things such as injectability, extensibility...
  
  
  
&gt;If you don't like something, do your better to change it or accept it.
  
  
At our level, the only thing we (the NDepend team) can do to help on this, is to give free license of NDepend to OSS developers. Also, here I wrote an article to explain how we layerized the NDepend code base itself:
  
[www.theserverside.net/.../showarticle.tss](http://www.theserverside.net/tt/articles/showarticle.tss?id=ControllingDependencies)</description><link>http://ayende.com/3716/the-nhibernate-community#comment10</link><guid>http://ayende.com/3716/the-nhibernate-community#comment10</guid><pubDate>Mon, 24 Nov 2008 13:27:53 GMT</pubDate></item><item><title>Steve Bohlen commented on The NHibernate Community</title><description>I think what we are seeing here is exactly what I would have predicted would come from MS trying to enter the O/RM space with Entity Framework: all kinds of developers who previously had no idea there even WAS an acronym 'O/RM' are becoming 'aware' of the category's existence and exploring the space to see what its all about.
  
  
As they explore EF they either become aware of alternates due to general 'buzz' in the air about other choices (like NHib, LLBLGEN, etc) or else they try to use EF in a non-trivial, non-demo situation and rapidly bump into some of its more aggregious limitations.
  
  
Just as MS providing UNITY as an IoC container has opened the eyes of many to what IoC stands for and why they might want to consider an IoC container to assist them in their work, the same phenomenon is manifesting itself in the O/RM space as well (IMHO).
  
  
NHibernate, by providing a viable alternate to EF that handily addresses many of the EF shortcomings, is in a good position to offer a practical, useful alternate that is available and solves problems for people who have to produce real software solutions TODAY rather that at some future, indeterminate point when MS may have gotten around to extending EF to resolve some of its present foibles.
  
  
Its a testament to the efforts of both past and present NHibernate contributors that a (comparatively) small band of independent OSS contributors has managed to produce a piece of software with capabilities that even something that is now an actual part of the .NET framework BCL cannot match in re: capability, flexibility, or extensibility.  This is the (largely) unheralded story of NHibernate -- not that it was 'there first', but that even now it remains in most ways that matter a significantly better O/RM tool that even Microsoft has yet to produce.
</description><link>http://ayende.com/3716/the-nhibernate-community#comment9</link><guid>http://ayende.com/3716/the-nhibernate-community#comment9</guid><pubDate>Sun, 23 Nov 2008 22:11:08 GMT</pubDate></item><item><title>Gokhan Demir commented on The NHibernate Community</title><description>btw summer of  nhibernate casts are also help a lot of people to dive into nhibernate world. At least for my colleagues :)
</description><link>http://ayende.com/3716/the-nhibernate-community#comment8</link><guid>http://ayende.com/3716/the-nhibernate-community#comment8</guid><pubDate>Sun, 23 Nov 2008 20:34:40 GMT</pubDate></item><item><title>Fabio Maulo commented on The NHibernate Community</title><description>@Patrick
  
Take a look on the left-top of this page.
  
A simple critic is not enough and become something heavy when is repeated  again and again without a solution.
  
If you don't like something, do your better to change it or accept it.
</description><link>http://ayende.com/3716/the-nhibernate-community#comment7</link><guid>http://ayende.com/3716/the-nhibernate-community#comment7</guid><pubDate>Sun, 23 Nov 2008 17:44:18 GMT</pubDate></item><item><title>Patrick Smacchia commented on The NHibernate Community</title><description>Tuna, no this is no excuse indeed. It is still time to make the right abstractions and rationalize the dependencies.
  
  
Fabio, my family name is Smacchia, from Perugia, and I love Spaghetti too as long as I can eat them :o)
</description><link>http://ayende.com/3716/the-nhibernate-community#comment6</link><guid>http://ayende.com/3716/the-nhibernate-community#comment6</guid><pubDate>Sat, 22 Nov 2008 21:23:20 GMT</pubDate></item><item><title>Fabio Maulo commented on The NHibernate Community</title><description>@Patrick Smacchia
  
  
I'm Italian and I like spaghetti.
  
  
BTW I would like to see the injectability, extensibility, less dependency of NHibernate in many others projects. 
</description><link>http://ayende.com/3716/the-nhibernate-community#comment5</link><guid>http://ayende.com/3716/the-nhibernate-community#comment5</guid><pubDate>Sat, 22 Nov 2008 20:42:27 GMT</pubDate></item><item><title>Fabio Maulo commented on The NHibernate Community</title><description>And this the last 2 months
  
[sourceforge.net/.../detail.php](http://sourceforge.net/project/stats/detail.php?group_id=73818&amp;ugn=nhibernate&amp;type=prdownload&amp;mode=60day&amp;package_id=73969&amp;release_id=629506&amp;file_id=1492346)  
  
NH2.0.1GA binaries (20,623 downloads in less of two months)
</description><link>http://ayende.com/3716/the-nhibernate-community#comment4</link><guid>http://ayende.com/3716/the-nhibernate-community#comment4</guid><pubDate>Sat, 22 Nov 2008 20:36:15 GMT</pubDate></item><item><title>Tuna Toksoz commented on The NHibernate Community</title><description>Patrick, the real reason behind this is the java brother hibernate. This is not an excuse, of course, but i think this is the thing.
</description><link>http://ayende.com/3716/the-nhibernate-community#comment3</link><guid>http://ayende.com/3716/the-nhibernate-community#comment3</guid><pubDate>Sat, 22 Nov 2008 20:36:06 GMT</pubDate></item><item><title>Patrick Smacchia commented on The NHibernate Community</title><description>This is great news, congratulation for this tremendous success!
  
  
However, when I analyzed the NH code base with NDepend I figured out that  63 namespaces on 65 depend (directly or indrectly) on all others namespaces.
  
  
[codebetter.com/.../...te-2-0-changes-overview.aspx](http://codebetter.com/blogs/patricksmacchia/archive/2008/08/26/nhibernate-2-0-changes-overview.aspx)  
  
In other words, there is no layering nor componentization strategy. As a consequence the code base is a big plate of spaghettis. Juts have a look at this dependency matrix if you don't believe me:
  
[codebetter.com/.../...cyMatrixSnapshotIndirect.jpg](http://codebetter.com/blogs/patricksmacchia/NHibernate2/DependencyMatrixSnapshotIndirect.jpg)  
  
NH developers and users can live with that (for a while at least) but IMHO it fosters bad practices amongst the community. Read this post for example:
  
[jrwren.wrenfam.com/.../lack-of-value-of-code-me...](http://jrwren.wrenfam.com/blog/2008/09/07/lack-of-value-of-code-metrics/)  
  
I quote
  
"Who care if namespaces are cross dependent?  I don’t. Namespaces are for logical groupings of behaviors. If your behaviors are cross dependent, so will your namespaces."
  
  
Huh :o/
  
  
  
  
  
  
  
</description><link>http://ayende.com/3716/the-nhibernate-community#comment2</link><guid>http://ayende.com/3716/the-nhibernate-community#comment2</guid><pubDate>Sat, 22 Nov 2008 20:32:31 GMT</pubDate></item><item><title>Tuna Toksoz commented on The NHibernate Community</title><description>Moreover, the interest in NHForge is rising too. Just check the google analytics
</description><link>http://ayende.com/3716/the-nhibernate-community#comment1</link><guid>http://ayende.com/3716/the-nhibernate-community#comment1</guid><pubDate>Sat, 22 Nov 2008 19:30:44 GMT</pubDate></item></channel></rss>