I've been thinking a lot about this post.  In the last 18 months I
have used NHibernate a lot.  The main product I develop where I am
employed is an internal ordering system used by as many as 17,000
employees, and it uses NHibernate for the data access layer.  It's not
a HUGE project or an ENORMOUS database (there are about 50 tables),
but it's significant to me, and significant to my company.  It's a
highly visible application within the company.  It has also received
much praise.  Also, there are 5 or 6 other smaller projects I have
created that use NHibernate as well.  I've developed my own base class
that I use for all entities that I want to be persisted, and my own
base class that I use as a central DAL class, to make creating new
projects based on NH even easier for me.

That being said, I think my future with NH is limited.  Some of the
smaller projects I've created with NH will probably be migrated over
to some other technology in the future, and perhaps even our large
ordering system.  Then again, perhaps not.  I might be maintaining
this ordering system for years to come, and if it stays with
NHibernate, I will likely keep a cursory interest in future NH
developments.

Here's what I'm getting at (and I'm not being negative here, just
subjective).  NH is like many open source projects I have
encountered.  When new users notice shortcomings or bugs, they start
to ask questions.  Many times the question is just "Why?".  This users
group is full of these "why" questions from new users.  These
questions cause the developers and seasoned users of the technology to
get defensive sometimes, whereupon they accuse the new user of
"complaining", or even better, spreading FUD for Microsoft, and tell
the new user that they are more than welcome to fix it themselves,
submit a bug report, or a failing unit test that illustrates the
problem.  I have never been able to agree with this advice.  Not all
users of open source technology necessarily have the time to
contribute.  Some of them don't have the skill to contribute either.
NHibernate is a very advanced product with many many complexities.
Understanding the codebase takes a lot of time.  They aren't
necessarily part of the "movement", as it were.  They are simply paid
by some company to choose the best technology when developing software
for them.  Many times the best choice is an open source option.  Many
people have suggested that users of open source software "owe"
something back to the OSS community.  I've never been able to agree
with that either.  If people are willing to take something as-is, and
it's being given away for free, then there are no strings attached.
Now, users that don't want to give back probably don't have a right to
free support, or even really the right to complain.  However, they
usually DON'T complain, they just get accused of it when they ask
"why?" regarding some shortcoming of the technology that they don't
understand.  This is a recurring pattern and a common attitude I have
seen with many open source projects.  It seems many OSS developers
walk around with large chips on their shoulders and jaded attitudes.
NH is no exception.

Not all open source products are equal.  Personally, I divide them
into 2 categories.  Ones with paid developers, and ones without.  That
seems like an odd metric to go by, but consider the differences.
Looking at projects like Mozilla, Subversion, and Ubuntu, all of these
projects have sought for some kind of corporate sponsorship, and have
full time developers that are paid salaries to develop the
technology.  The result is a very polished, very stable, very high
quality end product.  It doesn't mean that open source projects
without commercial support can't be successful too, but if you had to
generalize, and go by statistics, then that would be the conclusion to
draw.  Many open source technologies fall by the wayside, because the
"4 crazy guys" that have developed it eventually lose interest, or
even lose the ability to continue to give away their time and effort
for free.  NHibernate has a lot of bugs and shortcomings (I'm not
complaining, just stating an observation) that could certainly be
fixed if it had paid, full time developers.  I personally think NH has
the potential to be THE ORM of all ORMs, but that it never will be
able too without full time developers.  Now that's all opinion and
conjecture, so take it with a grain of salt.  Just like I don't like
others forcing their values and opinions on me, I try not to do the
same to others.

Companies like guarantees.  They like a guarantee that something will
work if they use it.  That something will give them value if they buy
it.  In 5 years, I have no idea if NHibernate will even be around.  I
don't think anyone does.  However, I DO know that the company I work
for will be around in 5 years.  They are the world's largest firm of
their kind.  We'll have to keep making technology decisions for
products that will potentially have a very long lifetime.  The
specific ordering system we've developed may or may not still be used,
but if it's not, some other ordering system will definitely be in its
place.  Commercial products like LLBLGen or the Microsoft Entity
Framework -- those are safer bets when it comes to future support and
development for current technology decisions.

A long time ago, on this same group, I made a few comparisons between
NHibernate and the Entitry Framework (before it was released with .NET
3.5).  I was asked to please not compare the two technologies, because
MS is able to spend millions of dollars and pay dozens of full time
developers to advance their technology, while NH is just 4 crazy guys
who squeeze the work in when they can.  The problem is, I have an
obligation to compare all of the options available to me, because my
employer expects me to make the best technology decision when I design
and develop software for them.  They don't care about the underdog
"virtue" of open source software.

The first version of the Entity Framework had many limitations, and
lacked in many areas, and in my opinion was a little difficult to
use.  It was also still in beta when many of the core decisions were
being made for our ordering system, and we were wary to develop to
that technology.  I have been playing around a lot with the Visual
Studio 2010 beta, and the .NET 4.0 framework beta, which has the
Entity Framework v4 (they simply call it v4 to match .NET 4.  It's
really only the 2nd major release).  I am very impressed with the
changes they have made.  Some of the new features I like include:

+ Much improved visual modeling tools
+ Lazy loading
+ Mapping to POCO classes (you don't have to inherit from their base
classes any longer)
+ Custom code generation for mapped classes, using templates
+ Build the model first, let it create the databases script, as
opposed to create a model from an existing database

There are many more, but those were specific features I liked in NH
that EFv1 did not offer me at first.  Now it does.  When VS2010 goes
RTM, I will likely be developing new projects using EFv4, and possibly
migrating existing projects.

Again, I'm not trying to start a flame war with this post, or be
overly negative.  I am trying to be objective, and just offer my
observations.  I continue to be impressed with NH, and I've mostly had
a good experience using it.  However, I no longer think that it's the
best technology decision, and my company pays me to make the best
choice.  I hope NH has a long, successful life.  What I really hope is
that NH seeks out corporate sponsorship, and becomes a tool of the
caliber that Subversion and Mozilla are.  Why is Subversion
successful?  Because CollabNet's revenue for 2005 was over $20M (I
don't have newer figures, sorry).  Why is Firefox successful?  Because
the Mozilla Foundations 2007 revenue was $75M.  They have paid, full
time developers who can spend the time it takes to make a polished,
stable, successful product.

On May 22, 10:27 pm, Fabio Maulo <[email protected]> wrote:
> Do you really want a stable version of NHibernate ?
> Think about the answer.... take your time...
>
> Now think which is the way to prevent that a bug can reappear or that a
> feature will be reverted.
>
> Starting from now apply your thinking when you are going to create a new
> JIRA ticket.
>
> Thanks.
> Fabio Maulo
>
> P.S. for those who haven't guessed the answer : attach a failing test to
> your JIRA ticket.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to