views:

118

answers:

2

Hi everyone,

I encountered a very embarassing problem yesterday. My particular experience is with NHibernate and Mono, but I see similar cases involving other projects everywhere.

While everyone seems to claim that NHibernate is working on Mono, I must admit that I actually tried yesterday, and the 3.0 trunk doesn't work. To me, this is a blocking issue, because it prevents me from using NHibernate for my Mono-based projects.
I had a conversation with the Mono people who directed me to an old bug report in the NH bug tracker, and its Mono counterpart.

What bothers me most is that neither of the two groups actually wanted to fix the issue. Instead, they just pointed fingers to each other. In the end, it was fixed in NHibernate, but it seems that in 3.0 they re-introduced it again.

Anyways, I wanted to avoid debating about whether NHibernate or Mono is at fault and created a working patch for NHibernate that fixes the issue.
Guess what! They didn't accept it, saying that Mono is errornous...

The people at Mono say that NHibernate only works on Microsoft.NET because of an undocumented bug. I asked them if they would accept a patch if I fixed this in Mono, but they said no, too...

In my opinion, this is simply not right. While they are debating about who's guilty, the ones who s*ck this the most are always the average application developers (like me). Especially when I'm willing to fix the issue myself for free, and I'm also willing to contribute the patch to them, for free. All it would take is two clicks to apply the patch. Despite this, they don't care.

So, what do you guys think about it?
Should I start looking for a new ORM, or I'm better off using a custom patched version of NHibernate?

A more general question, why do these people have this attitude? It is not helping anyone.

EDIT:

Two days later, it appears that they changed their minds and accepted the patch in revision 5170. So from then on, NHibernate should work for Mono users, too. :)

+2  A: 

They have the attitude because, just like you, they're sure they're right. No real mystery to it. They may also have more constraints than you're considering (other programs that depend on a feature working a certain way, or other platforms).

Given that you can run your own patched version, I don't really see a reason not to patch it locally if it solves your problem, frankly that seems obvious to me.

jkerian
You are right, but if you read my explanation on my patch, it doesn't break anything. I'm currently doing as you say (running a patched version), but it would be more in the spirit of open source if they simply accepted the patch.
Venemo
http://xkcd.com/386/
Pierre 303
+2  A: 

I looked at the patch diff. This doesn't look like a subtle one, that's a heckofalot [XmlIgnores]. With potentially wide-ranging effects on devs that expect those classes to xml-serialize like they always did before. Patches need to follow the Hippocratic oath: first do no harm. This has an 'operation succeeded, patient dead' smell.

I don't want to get bogged down in the technicalities, it sounds like your patch just didn't pass the smell test. It's the team's prerogative to make the call, you have to fork if you don't like their call. Forking requires getting support from other devs that have the same problem. Could happen, but "just make it work" is rarely good enough. Good luck.

How is the Mono patch coming along?

Hans Passant
If you actually cared to read the description, you would know that those properties were never ever got serialized even under MS.NET.
Venemo
Also, if you check the properties to which the [XmlIgnore] got applied, you could see that they only have a getter that returns some values from fields that are actually serialized.
Venemo
I didn't make much of a scratch on your determination that your patch is Hippocratic. How many peers do you hang out with agree with you? If there are many, why did you post this question? FOSS is quite Darwinian. Lots of programmers prefer the Big Company Sucks angle. As opposed to the "I don't suck, I'll take care of it" angle. Which ought to make you feel good, not resentful.
Hans Passant
@Hans - I prefer neither of the two angles. I simply would like to create software that works. As I said, those properties don't get serialized on MS.NET either, so no harm is done by the patch. The only difference between the two implementations is that MS.NET silently fails and Mono throws an exception.
Venemo