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 -~----------~----~----~----~------~----~------~--~---
