Planning NH next

20 views
Skip to first unread message

Fabio Maulo

unread,
Oct 12, 2010, 2:49:22 PM10/12/10
to nhibernate-...@googlegroups.com
Hi team.

You have around 30 days to talk with people to have some ideas about what each one is thinking about NH next.
The main matter is not about improvements, features or issues in general but about the "other" big JUMP.
Perhaps after 3.0.0, this time, we may wait a little bit before open the 3.x branch and start developing NH4...
Perhaps we have to plan only a little minor release after 3.0.0GA... something like one month or month and half to release 3.0.1 with some bug fix.

Personally I would release NH4.0.0 very quickly with one mayor change: Remove Iesi.Collection (sig) for external usage...
That mean (phase1):
1) a separated ICollectionTypeFactory for back draw compatibility and to give the opportunity to convert existing projects
2) Adios no strongly typed <set> (no Iesi ? well... only the ISet<T> will be supported)
3) The <set> will mean .Net4 ISet<T> by default
4) No more support for .NET3.5

(phase2)
After NH4.0.0 we can start the real hard work but it will be "only" internal... the remotion of the reference to Iesi.Collection
We may walk some others routes but I prefer a drastic cut instead a long torture.

During phase2 I would implements some others ideas but that will be matter of appropriate discussions.

The other possibility is to give support to both (Iesi and .Net) ISet differentiating it through a specific <type>... in any case it mean: bye bye .NET3.5

Please try to avoid a quick answer and take your time to "digest" the matter. 

--
Fabio Maulo

Frans Bouma

unread,
Oct 13, 2010, 5:41:02 AM10/13/10
to nhibernate-...@googlegroups.com
Major releases (e.g. 3.0, 4.0) should have a significant amount of features,
otherwise it's just a point release. I wouldn't go for 4.0 with just 1
change, that should be a point release (e.g. 3.1). As the assembly is
signed, people have to manually upgrade from 3.0 to 3.1 anyway, so it's not
as if people will run into big problems when installing 3.1 next to 3.0

For 4.0, as I've said in the NHusers list before (but I got ripped apart
because of it), what's really needed is a turn-key package, so when someone
downloads NHibernate, everything is in there, and the developer can just
turn things on or off through configuration. No more hunting down contribs
from all over the place, which have mismatching dependencies (e.g. what was
the case with FNH 1.0 for example), just 1 package, 1 source for the goods,
and nothing else.

The longer you wait, the harder it will be to get new users in and keep
existing users on-board. In todays world, developers don't want to spend
hours looking for libraries supporting their NH code, if a competing o/r
mapper has everything in 1 box: time is money.

Another, IMHO major, point is that it should be forbidden to post a blogpost
about a new feature unless the new feature is also properly documented with
official docs. The current docs are outdated, and it's a massive job to get
it up to par, but the longer you wait, the bigger this gap will become, and
it will again turn into a situation where a developer has to hunt down
blogposts for documentation about that specific feature or setting.

If NH takes itself serious and as a professional framework, it should get
itself together and promote itself as one: proper, up to date docs, proper
one-stop download site and configuration so getting started and getting up
and running with all cilinders running is easy and quick.

I know this all will take a lot of time, but IMHO it's time well spend, at
least better spend than on some edge case feature only 3 people will ever
use or yet another way to query your domain.

FB

Valeriu Caraulean

unread,
Oct 13, 2010, 6:30:47 AM10/13/10
to nhibernate-...@googlegroups.com
I would really appreciate having a "native" fluent/code mapping solution, that is coming together with NHibernate. 

On Tue, Oct 12, 2010 at 8:49 PM, Fabio Maulo <fabio...@gmail.com> wrote:
Hi team.

You're not restricting who wants/can to give opinions, right?

Valeriu Caraulean

unread,
Oct 13, 2010, 6:37:07 AM10/13/10
to nhibernate-...@googlegroups.com
I agree with idea of NHibernate "package", but only along with a traditional "NHibernate only" one.

What do you think about NuPack package management? 
Will it be practical to have a package with NH, NH Contrib, Fluent/codeconform and what else people uses the most?

Pablo Ruiz

unread,
Oct 13, 2010, 7:14:13 AM10/13/10
to nhibernate-...@googlegroups.com
+1

Diego Mijelshon

unread,
Oct 13, 2010, 10:49:13 AM10/13/10
to nhibernate-...@googlegroups.com
Well, I don't know if I can call myself "team" yet, but here's my 2 cents anyway.

First of all, everything that can be read as criticism in the following lines should actually be read as "I'm willing to help with that". Here it goes.

1. It would be important to change the release/support policy, especially if the mentioned breaking changes are to be included. The current situation is, there hasn't been a stable, supported NHibernate version for many months (2.x is not maintained anymore, 3.x is not released yet).
2. While a part of me loves getting rid of legacy libs and using the latest and coolest stuff, I also know that big companies are usually more conservative and it will take some time for .NET 4 to be "available" for everyone (put another way, many companies won't buy VS2010 for their developers yet). Now, I'm fine with making NH 4.x a .NET4 lib only, *if* 3.x is kept around and actively maintained (bug fixes; not necessarily new features)
3. On the more technical side of things, there should be a way to do a progressive migration from Iesi to .Net 4 ISet<T>. Thinking out loud:
- Add a "default_set_type" to NH Config
- Add types for both, so you can override them one by one
- This essentially means we mean an additional release to get rid of Iesi. How about deprecating it in 4.x and removing it in 4.5.x or 5.x?
4. On top of this, we really need to do something about documentation. There are lots of things that are only documented in blogs (all of LINQ, for example), and many outdated examples and java-isms. I can try to take charge of this myself, but I need a little help getting started. If anybody wants to start working with me in this, I have some free time on weekdays before 14 and after 23 UTC; just send me an email.

    Diego

Fabio Maulo

unread,
Oct 13, 2010, 11:52:51 AM10/13/10
to nhibernate-...@googlegroups.com
To community.
If there is a lesson learned in the past of NHibernate is that we (team) can't maintain not only two mayor versions for long time, but even we can't maintain two set of solutions (VS2008, VS2010 for example).

Perhaps we can try again but I'm inclined to think that it will be not possible, we have suffered it from VS2003(net1.1) to VS2005 (net2.0) and we then avoid to suffer the same from VS2005 (net2.0) to VS2008 (net3.5), I'm inclined to avoid it again.

This is OSS and who want maintain an old NH version can do it without any kind of problems at list from our side (team).

We can't stop the evolution. NET4 is out there since long time and in a poll we saw 50% of users voting to have NH3 pointing .NET4.
We will follow the evolution with courage and without pay a high cost for back-draw compatibility.
--
Fabio Maulo

Rory Plaire

unread,
Oct 13, 2010, 1:24:32 PM10/13/10
to nhibernate-...@googlegroups.com
In regards using a package system in Windows:

There appear to be 2 choices: CoApp and NuPack. CoApp appears to be a proper package management system for use platform-wide, and NuPack appears to be targeted towards developers finding and getting dependencies.

I'd be more inclined to make a choice towards a system which will allow NH to be installed system-wide and then available for use by all .Net apps.

-r

Stephen Bohlen

unread,
Oct 13, 2010, 2:44:17 PM10/13/10
to nhibernate-...@googlegroups.com
Also don't forget Openwrap as well (re: package managers).

This landscape is significantly fractured right now and from my observations many of these projects are quite dissimilar in re: the problems they are trying to solve and their approach to solving them once you start to dig beneath the surface.  I suspect that near-term the term 'package manager' will prove too broad to (properly) describe them all :)

Steve Bohlen
sbo...@gmail.com
http://blog.unhandled-exceptions.com
http://twitter.com/sbohlen

Diego Mijelshon

unread,
Oct 13, 2010, 3:47:17 PM10/13/10
to nhibernate-...@googlegroups.com
And horn, and gems, and...

Yeah, "fractured" is putting it mildly...

In any case, the best would be to support all the popular ones... only I have no idea which one is more popular.
In most cases, though, I believe the package managers' maintainers can help with most of the work.
 
    Diego

Stephen Bohlen

unread,
Oct 13, 2010, 4:05:08 PM10/13/10
to nhibernate-...@googlegroups.com
Agreed :)

My observation thus far is that most (if not all) of these package manager projects are going to create package descriptors for NH without our needing to lift a finger (at least initially).  It would be hard for any package manager attempting to deliver OSS for .NET to claim ubiquity without their having a package descriptor for NH.  At least for the time being NH is in the position of being courted by the package management projects rather than the other way around :)

After the landscape settles down a bit and successes and failures emerge from the ashes its probably worth investing the time in trying to maintain 'official package descriptors' for the one or more of these that manage to gain traction in the broader community...unless we find that existing package descriptors are in some way incorrect, defective, resulting in a poor experience for adopters, etc.  But for the mean time, the package descriptor formats are in heavy flux, early beta, and other slippery states where trying to chase them all at this point is probably a lot of work with low (relative) ROI.

Diego Mijelshon

unread,
Oct 13, 2010, 5:34:26 PM10/13/10
to nhibernate-...@googlegroups.com
I understand the concerns.
Still, I'd like to point out a few things that put us in a better position this time:
- We can have VS2010 as a requirement for NH _development_, but still produce 3.5 assemblies (VS2010 finally has _real_ multitargeting). Maybe we can switch versions with a small script.
- The differences between .NET 3.5 and .NET 4.0 are limited to a couple files that might reference ISet<T> (unless we start messing with dynamic and things like that). 

That's for the technical side...
Now, if _only_ 50% of the users want to target .NET 4, it means the other half are still on 3.5, which means it should still be supported (again, maybe NH 4 can change that, but only if NH 3 is supported until most developers are using .NET 4)
 
    Diego

Ayende Rahien

unread,
Oct 13, 2010, 5:50:02 PM10/13/10
to nhibernate-...@googlegroups.com
Rory,
That is a VERY bad idea. I am using some app with NH 2.0 and some app with NH 3.1
Putting it in the GAC means that I have to install the app in the destination server.
Better to use XCOPY model

Rory Plaire

unread,
Oct 13, 2010, 7:17:09 PM10/13/10
to nhibernate-...@googlegroups.com
Ayende -

It's not necessarily a bad idea. Linux distros have been doing this for over a decade. Upgrade issues are handled by the package management system. Windows and .Net (via Fusion) even has side-by-side installs, and it appears that CoApp is trying to make a package management system which manages upgrades both along the same lines as the existing world of package management as well as using side-by-side versioning.

Honestly, I'd love a package management system which allows me to pull in whatever version of whatever dependencies I need and keeps them separate, as long as I can delegate version binding to my tools/platform. It looks to me that CoApp is trying to do this.

-r

Fabio Maulo

unread,
Oct 14, 2010, 12:15:01 AM10/14/10
to nhibernate-...@googlegroups.com
This thread seems to go to "how deploy" but the original question was about "what deploy".

--
Fabio Maulo 

Fabio Maulo

unread,
Oct 14, 2010, 12:33:29 AM10/14/10
to nhibernate-...@googlegroups.com
I don't want see a single #ifdef inside NH sources.
Here, in Argentina, I know at least a big company where the tech department have not approved the usage of .NET3.5... well they must be happy with NH2.1.2
If the company where you are working can't approve the usage of .NET4 well... you must be happy with NH3.0.x or you have to find somebody to maintain NH3.0 for you.

Make happy everybody is outside NH scope.

--
Fabio Maulo 

Julian

unread,
Oct 14, 2010, 12:39:59 AM10/14/10
to nhibernate-development
You've raised a good point. So who do we want to make happy? If NH
doesn't make anybody happy, it will be consigned to obscurity by
Entity Framework.
> > On Tue, Oct 12, 2010 at 3:49 PM, Fabio Maulo <fabioma...@gmail.com> wrote:
>
> >> Hi *team*.

Roy Jacobs

unread,
Oct 14, 2010, 4:24:25 AM10/14/10
to nhibernate-development
> If the company where you are working can't approve the usage of .NET4
> well... you must be happy with NH3.0.x or you have to find somebody to
> maintain NH3.0 for you.

It's not just the company IT department who needs to approve this. It
involves upgrading build systems, developer tools, etc. Furthermore,
you're also forcing all of your customers to upgrade to .NET4.

I agree that NH should move to .NET4, but if there can be at least
some degree of backwards compatibility with .NET3.5, even at the cost
of a reduced featureset, that would be very beneficial in terms of
getting people to adopt NH, or to keep them using it.

Roy

Wenig, Stefan

unread,
Oct 14, 2010, 6:54:35 AM10/14/10
to nhibernate-...@googlegroups.com

erratum: but right now they are definitely focused on getting LAMP apps running on Windows of course, not Linux.

I.e., they try to package Apache, PHP and Python so that applications can use these prerequisites.

 

From: nhibernate-...@googlegroups.com [mailto:nhibernate-...@googlegroups.com] On Behalf Of Wenig, Stefan
Sent: Thursday, October 14, 2010 12:35 PM
To: nhibernate-...@googlegroups.com
Subject: RE: [nhibernate-development] Planning NH next

 

Hi

 

I love CoApp, but right now they are definitely focused on getting LAMP apps running on Linux. They want to release next spring, and only then they’ll start looking into installing .NET apps.

Also, while building, installing and updating libraries is a big-time goal for them, it’s more in the context of application prerequisites, not installing libs on a dev machine.

 

Don’t get me wrong, I love the vision of CoApp, but it’s not there yet and it really serves a different purpose. (Garret said they are looking at integrating NuPack code in CoApp. We’ll see.)

 

You’ll eventually want NH packages to be available so that NH-based applications can install with CoApp. If you also want to support build from source and updating, there’s probably a lot of work to do for both the CoApp project and the packager.

 

 

NuPack will come with VS. It solves a simple problem: it just installs binaries and configures your VS project. So it might look less ambitious than horn & co, but ambition comes at a price: that stuff just doesn’t work. With NuPack, building is the packager’s problem. (However, I’d like to know what NuPack does when, say, two libraries come with different versions of the same dependency, such as Castle…)

 

CoApp is really fascinating, while NuPack looks like a marketing tool (gallery) + automation of a few simple steps. Still, if you want my advice:

 

·         Make official packages for NuPack, because it is easy and will have impact.

·         Let others like OpenWrap handle NH themselves. (OpenWrap announced it will support NuPack format, btw)

·         Just wait and see where CoApp goes.

 

Hope this helps,

Stefan

Wenig, Stefan

unread,
Oct 14, 2010, 6:34:48 AM10/14/10
to nhibernate-...@googlegroups.com

Hi

 

I love CoApp, but right now they are definitely focused on getting LAMP apps running on Linux. They want to release next spring, and only then they’ll start looking into installing .NET apps.

Also, while building, installing and updating libraries is a big-time goal for them, it’s more in the context of application prerequisites, not installing libs on a dev machine.

 

Don’t get me wrong, I love the vision of CoApp, but it’s not there yet and it really serves a different purpose. (Garret said they are looking at integrating NuPack code in CoApp. We’ll see.)

 

You’ll eventually want NH packages to be available so that NH-based applications can install with CoApp. If you also want to support build from source and updating, there’s probably a lot of work to do for both the CoApp project and the packager.

 

 

NuPack will come with VS. It solves a simple problem: it just installs binaries and configures your VS project. So it might look less ambitious than horn & co, but ambition comes at a price: that stuff just doesn’t work. With NuPack, building is the packager’s problem. (However, I’d like to know what NuPack does when, say, two libraries come with different versions of the same dependency, such as Castle…)

 

CoApp is really fascinating, while NuPack looks like a marketing tool (gallery) + automation of a few simple steps. Still, if you want my advice:

 

·         Make official packages for NuPack, because it is easy and will have impact.

·         Let others like OpenWrap handle NH themselves. (OpenWrap announced it will support NuPack format, btw)

·         Just wait and see where CoApp goes.

 

Hope this helps,

Stefan

 

From: nhibernate-...@googlegroups.com [mailto:nhibernate-...@googlegroups.com] On Behalf Of Rory Plaire
Sent: Thursday, October 14, 2010 1:17 AM
To: nhibernate-...@googlegroups.com
Subject: Re: [nhibernate-development] Planning NH next

 

Ayende -

Fabio Maulo

unread,
Oct 14, 2010, 7:18:36 AM10/14/10
to nhibernate-...@googlegroups.com
if you want compare NH with EF, in some way, you need at least EF4
(running on .net4)

--
Fabio Maulo

Stephen Bohlen

unread,
Oct 14, 2010, 8:23:43 AM10/14/10
to nhibernate-...@googlegroups.com
Interesting point...though I wonder (aloud) if surrendering the advantage of "NH can be your fully-featured ORM solution if you're not on .NET 4 yet whereas EF4 requires .NET 4" is the right choice from an adoption standpoint...?

Having a hard requirement on .NET 4 is empowering for the project's (potential) capabilities, but is likely to be limiting in its potential adoption -- at least for a while.

My own prediction (remains to be seen, of course) is that the present (and immediate future) financial climate in the global economy will make the adoption-curve of .NET 4 a lot flatter than the adoption of .NET 2 was (meaning that taking a hard dependency on .NET 4 is likely to be adoption-limiting for a longer period of time than it had been for just about any prior .NET upgrade cycle).

Based on what I'm hearing out there, very few people are looking longingly at .NET 4 and saying "I have to have that in my company immediately" and I'm skeptical that EF4, MVC3, and a few other MS technologies that are .NET 4-only will (quickly) change their minds.

Though the next obvious question is "how many of these stuck-in-the-mud, trapped-in-the-past enterprises are even candidates for adopting something like NH in the first place?"

All that said, as a non-commercial software project, adoption is merely one of many metrics NH can chase, so I think a choice either way is entirely defensible.

My two cents.

-Steve B.
>> - We can have VS2010 as a requirement for NH_development_, but still
>> produce 3.5 assemblies (VS2010 finally has_real_ multitargeting). Maybe we
>> can switch versions with a small script.
>> - The differences between .NET 3.5 and .NET 4.0 are limited to a couple
>> files that might reference ISet<T> (unless we start messing with dynamic and
>> things like that).
>>
>> That's for the technical side...
>> Now, if_only_ 50% of the users want to target .NET 4, it means the other
.

Fabio Maulo

unread,
Oct 14, 2010, 8:45:21 AM10/14/10
to nhibernate-...@googlegroups.com
Perhaps we can have an "active" NH3.x.x branch, we will see the activity there...
Each committer can chose to fix something there and MUST fix it even in trunk (NH4).
Each committer can fix something in the trunk and then CAN backport it in the branch (it can be backported even by another committer).

If the NH3.x.x has enough activity we can maintain it alive; if the NH3.x.x has no activity we will release it and the rip it.

Something saying to me that this is a "dejá vu"... the good intention are great... the reality does not match always
--
Fabio Maulo

Johannes Gustafsson

unread,
Oct 14, 2010, 9:35:51 AM10/14/10
to nhibernate-...@googlegroups.com
Think of it this way: how much support do you believe that MS will put into .net 3.5 onwards with regard to new features :-)

I dont see a problem in that NH4.0 would target .net 4 only, at least if some level of support for NH3.x is kept. This support could in its simplest form be accepting patches and an occasional service pack release or something. 

Since the team has small resources I think it is a bit up to the community how much NH3.x should be supported.

IMHO, In order to stay competitive, the latest stable .NET version should always be used when developing the next version of a framework. If multitargeting is possible with minimal effort(which it never is) then by all means, go ahead. If not, then the team should not waste any precious time and just stick to the latest version.

Regards,
Johannes

Valeriu Caraulean

unread,
Oct 14, 2010, 9:45:02 AM10/14/10
to nhibernate-...@googlegroups.com
What if you'll give people more choice? 
If there is no branch maintained/updated regularly by NH commiters, anybody can fork* it and start maintaining it himself. This means no "official" branch releases unless back-ported. But at least you'll leave a choice to community - if somebody wants it, he should have it with minimal fuss... 

* fork is available in D(eveloper-friendly)VCS and best used with github/bitbucket.

Diego Mijelshon

unread,
Oct 14, 2010, 9:49:19 AM10/14/10
to nhibernate-...@googlegroups.com
So far, the consensus seems to be in the compromise solution: keep the 3.x branch targeting .NET 3.5 and 4.x targeting .NET 4.0.
That does imply a bit of additional work (backporting patches), but it keeps things simple enough. A guideline for submitted patches should be established, so the contributors do the work themselves when fixing bugs, instead of deferring everything to the committers.
We could then establish a threshold of .NET 4.0 adoption that will result in killing the 3.x branch, like 90% (I have no idea how to measure it, but I'm wearing my free brainstorming hat at the moment. Maybe downloads/month)
 
    Diego

Julian Maughan

unread,
Oct 14, 2010, 9:50:59 AM10/14/10
to nhibernate-development
We can't even get (most) contributors to write patches for one code
line, nevermind for two.

Julian Maughan

unread,
Oct 14, 2010, 9:52:21 AM10/14/10
to nhibernate-development
The reality is that if we have two code lines, the NH3.x code will not
be maintained.

...but the point is that we don't *have* to go to .NET 4. We can stay
(for now) on .NET 3.5 which, as Stephen points out, actually gives NH
an advantage over EF4. And we don't have two code lines hurting
productivity.

Replacing the Iesi ISet implementation doesn't seem like a strong
enough reason to move framework. What are the other benefits of moving
to .NET 4 now (or soon)?

I'm not suggesting we never move to .NET 4; just questioning the
timing. Plus take a look at the issues Frans raised (at the start of
this thread). There are actually some very basic things that NH is not
doing right, before we start move onto 'the next big thing'. For
NHibernate to be taken seriously it really need to be presented much
better - like the serious, capable, enterprise-ready product it is,
rather than a hobby-shop project.

Diego Mijelshon

unread,
Oct 14, 2010, 9:56:39 AM10/14/10
to nhibernate-...@googlegroups.com
You can apply the "Fabio Rule" ;-) there: "send me a patch".
The compromise from the committers does not need to be "we will fix everything in both branches for free and send you a postcard to say we're sorry for the bug", but "we will accept patches for the 3.x branch".
Remember the patches for _bugs_ will be identical for both branches in most cases (3.x does not need to add new features once released)
 
    Diego

Frans Bouma

unread,
Oct 14, 2010, 9:59:19 AM10/14/10
to nhibernate-...@googlegroups.com
> So far, the consensus seems to be in the compromise solution: keep the 3.x
> branch targeting .NET 3.5 and 4.x targeting .NET 4.0.

I don't see that. IMHO the consensus is that focusing on .NET 4.0
will limit adaption for that version, unless .net 4 is used everywhere,
which I don't see happening soon (I agree with the description Bohlen gave)

> That does imply a bit of additional work (backporting patches), but it
keeps
> things simple enough. A guideline for submitted patches should be
> established, so the contributors do the work themselves when fixing bugs,
> instead of deferring everything to the committers.
> We could then establish a threshold of .NET 4.0 adoption that will result
in
> killing the 3.x branch, like 90% (I have no idea how to measure it, but
I'm
> wearing my free brainstorming hat at the moment. Maybe downloads/month)

Remember that killing a branch or 'leaving it up to the user to
patch things' won't help the acceptance rate among enterprises and large
teams: they don't want to spend time (and thus money) on poking into a
codebase they're not familiar with to get data in/out of a database.

FB

Wenig, Stefan

unread,
Oct 14, 2010, 10:00:40 AM10/14/10
to nhibernate-...@googlegroups.com
Just a little observation from the outside: I think you should really try and agree whether you, as a team, actually care about NH being a marketable product, competing with EF and others, and keeping or increasing its number of users. Because right now, I think that some of you just don't care, or at least they say so. But this argument is never really settled, you're just oscillating between discussing what NH needs marketing-wise, and claiming indifference to attracting users. It's hard to make a plan when you don't know what the goal is.

Cheers,
Stefan

Julian Maughan

unread,
Oct 14, 2010, 10:02:58 AM10/14/10
to nhibernate-development
I was trying to make this point when I asked, "So who do we want to
make happy?"...but perhaps it was too subtle :)
> ...
>
> read more »

Frans Bouma

unread,
Oct 14, 2010, 10:12:47 AM10/14/10
to nhibernate-...@googlegroups.com
Excellent point.

Just my 2 cents (also from the outside! ;)): if you don't start seeing NH as
a professional system which cares about users and strives for being seen and
act as a professional toolkit (that's not equal to being a 'mature'
library), decline in usage numbers will, over time, be the end result,
simply because alternatives become more mature and the gap between NH and
alternatives will become smaller if not non-existent.

I.o.w.: you shouldn't hide behind the 'but it's OSS so we can't get to the
level of professionalism commercial / MS can deliver' anymore.

again, just my 2cts, do with it what you want.

FB

Wenig, Stefan

unread,
Oct 14, 2010, 10:18:20 AM10/14/10
to nhibernate-...@googlegroups.com
Oh, admitted, I missed that. But still, I think you're asking "how do we attract users to prevent NH from falling into obscurity" while I think you should ask "do we even care about attracting users, and are we willing to direct some effort to that?"

There's a constant flow of arguments here that more or less says that there's no reason to. You build whatever you think makes sense, and if users don't like that, too bad. NH will not fall into obscurity any time soon, so do you care?

Diego Mijelshon

unread,
Oct 14, 2010, 10:18:38 AM10/14/10
to nhibernate-...@googlegroups.com
Good point.
Everyone has different goals with NHibernate, ranging from scratching own product/intellectual itches, to selling related tools and books, to compete with Microsoft, to anything else or a combination of all the others.

The truth is, it's impossible to satisfy everyone's desires at the same time. But any compromises made should consider the needs of the broad community if we want to keep NH alive:
- NHibernate won't maintain itself without the committers. We overburden them, we lose them.
- NHibernate won't go far without contributors. We reject the contributions, we lose them.
- NHibernate won't be useful without the users. We don't support their needs (like compatibility), we lose them.
- NHibernate won't be valuable without its ecosystem (products, people answering questions, etc). We don't listen to them, we lose them.

I'll stop before this becomes entirely rethorical and philosophical. But you get the point.

    Diego

Fabio Maulo

unread,
Oct 14, 2010, 11:04:03 AM10/14/10
to nhibernate-...@googlegroups.com
Why you are thinking that NH is not already a professional toolkit ?
Do you really think that 100000 downsloads of NH2.1.2 binaries are
because a lot of students likes NH for their school tasks ?

--
Fabio Maulo

Frans Bouma

unread,
Oct 14, 2010, 12:18:53 PM10/14/10
to nhibernate-...@googlegroups.com
> Why you are thinking that NH is not already a professional toolkit ?
> Do you really think that 100000 downsloads of NH2.1.2 binaries are because
a
> lot of students likes NH for their school tasks ?

read my 1st reply in this thread. You asked a question, I gave my
input. You don't have to use it. To rehash:
- proper docs which are up to date
- decent supported codebase, so you aren't left in the code right after
release because a new version is started
- all functionality needed in 1 box, so you can focus on what you're payed
to do.

FB

Fabio Maulo

unread,
Oct 14, 2010, 12:24:45 PM10/14/10
to nhibernate-...@googlegroups.com
On Thu, Oct 14, 2010 at 1:18 PM, Frans Bouma <fr...@sd.nl> wrote:
- all functionality needed in 1 box, so you can focus on what you're payed
to do.

the last one is not the definition of toolkit, here we call it as "masacote".
To have all "functionalities  needed" (and here I would know the definition of "needed where and to do what") in all places/applications where NH is used, more than 1 box we need a truck.

--
Fabio Maulo

Frans Bouma

unread,
Oct 14, 2010, 1:19:02 PM10/14/10
to nhibernate-...@googlegroups.com
1st: I'd like to state that if I post here, I don't like it when I see what
I posted questioned on twitter. if you have questions, ask them in a reply

2nd: I meant: if I want for example:
- auditing,
- validation
- INotifyPropertyChanged
- security

in my application which uses NH, I'd like to do that with e.g. configuration
elements in the config file, and not having to worry whether I have the
latest nightly build of a 0.x versioned lib tucked away in some dark corner
of sourceforge: that's bad because:
1) what if the lib gets abandoned in a year? Will I still be able to
maintain my app?
2) what happens if I update NH because of a bugfix release?

FB

Fabio Maulo

unread,
Oct 14, 2010, 1:39:55 PM10/14/10
to nhibernate-...@googlegroups.com
- auditing <= outside NH scope. There are various interpretations of what mean "auditing". In the NH3 cookbook you have 3 solutions without need to add external references. Simon and Roger are working on the port of Envers that is another interpretation about what mean "auditing".

- validation <= outside NH scope and, btw, you have at least others 4 frameworks we the specific responsibility of validate objects. DataAnnotations, VAB, Castle, Spring, FluentValidation and so on. Validation is a cross cutting concern, NH give you the ability to inject the validation of your objects before persist it (on Save, update.... or just before flush the session).

INotifyPropertyChanged <= I have no idea about what mean to give support to INotifyPropertyChanged. NH is not a code-generator to generate entities. If your entities implements INotifyPropertyChanged for NH there is no problem. If, in your opinion, you can take some advantage implementing INotifyPropertyChanged you can do it with less than 50 code lines:

- security <= I'm inclined to say that again it is outside NH scope but I would understand which kind of "security" you are talking about.
--
Fabio Maulo

Frans Bouma

unread,
Oct 14, 2010, 2:31:27 PM10/14/10
to nhibernate-...@googlegroups.com
The examples I mentioned are not things you expect on the core O/R mapper
level, however they're all services which build on top of the O/R mapper
core and utilize it, which also means that if you use NHibernate, and you
want to use the features I mentioned, you need to implement them somehow so
they utilize NHibernate.

That initially takes time, which shouldn't be necessary.

> - auditing <= outside NH scope. There are various interpretations of what
> mean "auditing". In the NH3 cookbook you have 3 solutions without need to
> add external references. Simon and Roger are working on the port of Envers
> that is another interpretation about what mean "auditing".

to track which user read / wrote which property, you need to emit
code in the proxies, there's no way around that. If you want to auto-persist
audit info in entities when the transaction commits, you need to write
interceptors (IIRC). I'm sure it's already been done a couple of times, but
that's not the point. The point is: the user now has to hunt down where to
get the auditing functionality so it's added to the complete stack of
persisting and reading entities.

> - validation <= outside NH scope and, btw, you have at least others 4
> frameworks we the specific responsibility of validate objects.
> DataAnnotations, VAB, Castle, Spring, FluentValidation and so on.
Validation
> is a cross cutting concern, NH give you the ability to inject the
validation
> of your objects before persist it (on Save, update.... or just before
flush
> the session).

Same thing as auditing: it's been done before, but what if someone
wants to enable it, e.g. enable field level validation with IDataErrorInfo
without having to write endless piles of code? Or auto string/bytearray
length checks based on mapping info, or decimal precision/scale checks?
That's stuff that's 'very handy to have', and should be enableable through a
setting, not by hunting down code which might be outdated.

> - INotifyPropertyChanged <= I have no idea about what mean to give support
> to INotifyPropertyChanged. NH is not a code-generator to generate
entities.
> If your entities implements INotifyPropertyChanged for NH there is no
> problem. If, in your opinion, you can take some advantage implementing
> INotifyPropertyChanged you can do it with less than 50 code lines:
> http://fabiomaulo.blogspot.com/2010/10/turbo-nhibernate-with-domain-
> invaders.html

I was refering to auto emitting the interface in the proxies. You
refer to a blogpost, which proves my point.

> - security <= I'm inclined to say that again it is outside NH scope but I
> would understand which kind of "security" you are talking about.

yes, security on the persistence level.

Additionally, if someone wants to 2-way bind entities in an asp.net
page with a datasourcecontrol, is that available? I'm sure someone has
written it, but where is it? Things like that make developing code _easier_.
'less friction' is a term I have heard often, well, this is a big friction
releaving thing.

Diego Mijelshon

unread,
Oct 14, 2010, 2:39:00 PM10/14/10
to nhibernate-...@googlegroups.com
Frans,

All the features you mentioned are definitely outside the bounds of NH _core_
That doesn't stop people from creating higher level projects like Sharp Architecture, which include ready-to-go stacks.
In fact, they don't even have to be F/OSS: LGPL allows you to include NHibernate as part of a commercial tool/framework that does that and more.
 
    Diego

pvginkel

unread,
Oct 14, 2010, 3:29:21 PM10/14/10
to nhibernate-development
I've followed the discussion concerning .NET4, also the poll, and I
was wondering what the advantage would be of using .NET4? I can't
think how dynamic would really help NHibernate, and, is there much
else that could be of use?

Frans Bouma

unread,
Oct 15, 2010, 4:51:32 AM10/15/10
to nhibernate-...@googlegroups.com
First of all, I saw Fabio again mocking my answers on twitter. I can't
believe how stupid and shortsighted this is. Fabio, do you really think I
know jack shit about building and releasing software, what O/R mapper using
people need?

On NHUsers some french **** insulted me deeply and mr. Maulo just said
nothing, as if he approved. Here, he asks a question, I answer, try to help
out, and from all the answers, mr. Maulo finds it necessary to mock my
answers on twitter, as if I'm an overpayed consultant living in MS Word all
day. I'm not expecting anyone to agree with me, but I don't expect from
professional developers who debate a serious topic to make fun of my
answers. Why, Maulo? Felt threatened? You think I'm stupid and you want
confirmation from others?

Now let's get back to Diego's reply, which is honest and decent (see, mr.
Maulo? You can also simply debate about technical points of view, and learn
from it perhaps.)

> All the features you mentioned are definitely outside the bounds of NH
> _core_ That doesn't stop people from creating higher level projects like
> Sharp Architecture, which include ready-to-go stacks.
> In fact, they don't even have to be F/OSS: LGPL allows you to include
> NHibernate as part of a commercial tool/framework that does that and more.

I'm not arguing they should be part of the core. That's why I some
time ago said on NHusers, in another endless stupid debate with mr. Maulo
and said french ****, that you have core O/R mapping and entity services. A
couple of years ago we had a meeting between 5-6 O/R mapper developers on a
conference, and debated what direction O/R mapping would go, what things
people would be interested in, just software devs talking tech, not
marketing. We all agreed that the core O/R mapping problem was solved and
done with, but to use it in today's software applications, you need services
on top of that, or better: developers will build functionality on top of the
O/R mapping core, utilizing that core and even wanting to integrate with it,
like validation, security on the db level, auditing, concurrency control,
subclass/proxy functionality etc. etc. It's key for these functionality
elements that they work well with the O/R mapper of choice and work
seamlessly.

It's therefore key to see 'using NHibernate' equal to 'using
NHibernate as O/R mapper core and additional NHibernate targeting services'.
Because, they're tied together: you can't use LLBLGen Pro's
auditing/authorization system which is integrated in our core with
NHibernate's and vice versa.

So it's not about a question whether there IS functionality out
there, I'm sure it's all there somewhere, it's that it:
1) has to integrate well with the NH core used by the developer
2) has to be updated when the NH core updates
3) comes in the same package or at least without the necessity of looking
for all the libs out there. I don't mean, in the same NHibernate.dll, but
shipped with it, so when you download NHibernate, you get everything, and
the _developer_ decides what to use.

Sure there are high-level stacks, but often they surpass what the
developer is looking for, i.e., they don't want a top-to-bottom framework
where they have to color in some blanks, they want to 'outsource' some parts
of their architecture to 3rd party libraries: db access to NHibernate,
auditing, validation etc. to nhcontrib stuff etc. and what is picked from
that big box of chocolates could be different for every project, that's the
beauty of it. The point is that it is easy selectable for the developer, so
the developer knows what he's using is up to date, works together and is
right there, so no hunting across an endless stream of
sites/blogposts/defunct sourceforge projects etc.

FB

Fabio Maulo

unread,
Oct 15, 2010, 7:26:34 AM10/15/10
to nhibernate-...@googlegroups.com
ok
--
Fabio Maulo

Petrov Peter

unread,
Oct 18, 2010, 2:55:42 AM10/18/10
to nhibernate-...@googlegroups.com
I think Frans Bouma has unbelievable patience. We aren't far from the time when Frans will say "enough is enough" and I fear it will soon stop following this dev group. It will be a loss for the NHibernate project. With his attitude Fabio will force back other people too. For mr. Maulo it's time to reconsider his attitude toward others and his sharp tone.


Fabio Maulo

unread,
Oct 18, 2010, 9:33:20 AM10/18/10
to nhibernate-...@googlegroups.com
On Mon, Oct 18, 2010 at 3:55 AM, Petrov Peter <codema...@gmail.com> wrote:
I think Frans Bouma has unbelievable patience. We aren't far from the time when Frans will say "enough is enough" and I fear it will soon stop following this dev group. It will be a loss for the NHibernate project. With his attitude Fabio will force back other people too. For mr. Maulo it's time to reconsider his attitude toward others and his sharp tone.



Perhaps you can add some opinion about the initial post of the thread instead try to be "the paladin of justice".
Frans can say that he want see auditing, validation, INotifyPropertyChanged and security inside NH-core and I can write my opinion and ask for clarifications, then the decision is not mine but of the team.

--
Fabio Maulo

Frans Bouma

unread,
Oct 18, 2010, 9:59:13 AM10/18/10
to nhibernate-...@googlegroups.com

I wrote on Thursday:


"The examples I mentioned are not things you expect on the core O/R mapper
level, however they're all services which build on top of the O/R mapper
core and utilize it, which also means that if you use NHibernate, and you
want to use the features I mentioned, you need to implement them somehow so
they utilize NHibernate."

Google groups link:
http://groups.google.com/group/nhibernate-development/msg/e91d2b8e8bd202bd?h
l=en

I never said it should be part of the core, as those aren't core NH
services. You have apparently no clue whatsoever I was talking about, which
explains your replies.

Anyway, you have a narrow focus on where NH should go to, but you
don't realize that this focus only targets core O/R mapper functionality, a
problem solved years ago already, which means that there's little to nothing
to do in the future except re-inventing wheels, like we see already with yet
another xml / code based mapping system and yet another query system.

IF I'll eventually say "Enough is enough", I'll fork NH and do what
I explained here. But that takes time and I've to look into what it brings
me, compared to the effort to invest.

FB

Fabio Maulo

unread,
Oct 18, 2010, 11:41:05 AM10/18/10
to nhibernate-...@googlegroups.com
I'm already doing (doing mean exactly doing) some of those works where
I think is the right place.
- audit : talking with Simon and Roger and helping with some code
- validation: working in NHibernate.Validator that has very few few
things in common with Hibernate.validator
- INotifyPropertyChange writing a post to demostrate how do the
integration having a little performance advantage in less then 50 code
lines. I'm ignoring any other possible support.
- security: I have asked explication and I'm still waiting

About fork NH: I have invited people to do it more than one time,
after NH3.x we will move to Hg or Git and who want can do it even more
easy.

To resume:
I still waiting the definition of
- NH "look like depends on the direction where the wind comes from"
- "professional toolkit" and why NH can't be defined a "professional
toolkit" already
- "security" what exactly mean for NH

--
Fabio Maulo

Carlos cubas

unread,
Oct 18, 2010, 11:45:00 AM10/18/10
to nhibernate-...@googlegroups.com
I guess the real question is whether the team wants to explore nhibernate outside of the ORM domain.  Does the team want nhibernate to be nhibernate framework or continue to keep it nhibernate orm?

-Carlos
 
Practice makes perfect, but if no one is perfect, why practice?





> From: fabio...@gmail.com
> Date: Mon, 18 Oct 2010 12:41:05 -0300
> Subject: Re: [nhibernate-development] Re: Planning NH next

Frans Bouma

unread,
Oct 18, 2010, 12:17:27 PM10/18/10
to nhibernate-...@googlegroups.com
> I'm already doing (doing mean exactly doing) some of those works where I
> think is the right place.
> - audit : talking with Simon and Roger and helping with some code
> - validation: working in NHibernate.Validator that has very few few things
> in common with Hibernate.validator
> - INotifyPropertyChange writing a post to demostrate how do the
integration
> having a little performance advantage in less then 50 code lines. I'm
> ignoring any other possible support.
> - security: I have asked explication and I'm still waiting

and I've answered. that you won't listen to what I've to say, that's
your problem really...

to recap: security at the entity and field level, e.g. who can read
/ write property X, who can read / write entity INSTANCE Y etc. this can be
done at the db level (rhino security?) but also at the property level in
memory with intercepting code which consults an 'authorizer' which is
injected into the entity. I don't know if that last bit exists for
NHibernate, if it does, it needs to emit code into the proxies, hence my
remark about it being something one would want to use WITH Nhibernate.

You keep on talking about NHibernate core, but that's not the point
of my argument: I'm arguing that the O/R mapping problem has been solved a
long time ago and when someone wants to use 'NHibernate' the whole scope of
features EXPECTED to be covered with 'using NHibernate' is bigger than the
core O/R mapping problem, i.e. NHibernate dll + contrib stuff + all kinds of
other features scattered all over the place in 3rd party libs.

> About fork NH: I have invited people to do it more than one time, after
> NH3.x we will move to Hg or Git and who want can do it even more easy.

IF I fork it, it won't be a private repository nor will it be aimed
at 'just an nh fork like many others'. But we'll see...

> To resume:
> I still waiting the definition of
> - NH "look like depends on the direction where the wind comes from"

Not sure where this out-of-context remark is coming from, but as you
don't answer/reply to my questions/remarks as well, why should I reply to a
remark which isn't 1) in context and 2) it's not even clear who said it and
when.

> - "professional toolkit" and why NH can't be defined a "professional
> toolkit" already

I gave you 'a' definition, do I have to rehash myself every time ?

Anyway, AGAIN: you asked for input, I gave some input. It's up to
YOU to do something with it. However instead of constructively use knowledge
from the O/R mapper field around you, you block everything out, and more
importantly, your fellow team members don't pick it up either.

Now, why don't you tunnel the energy you've invested in picking
apart my reply instead towards your teammembers who haven't come up with a
list of ideas for 'vNext' ?

FB

Fabio Maulo

unread,
Oct 18, 2010, 12:30:03 PM10/18/10
to nhibernate-...@googlegroups.com
The team haven't said something because perhaps the team can understand: "Please try to avoid a quick answer and take your time to "digest" the matter."

btw, Stephen Bohlen, who probably has a better biorhythm, gave his point of view giving us another possibility that translated in work to do means:
NH can stay on .NET3.5 and we can implements/deploy a ICollectionTypeFactory for .NET4 with the IPersistentCollection for System.Collection.Generics.ISet
--
Fabio Maulo

Fabio Maulo

unread,
Oct 18, 2010, 12:44:35 PM10/18/10
to nhibernate-...@googlegroups.com
ah..
and Julian Maughan have voted for the same point of Steve plus put some effort in better documentation.

Even if not so public, we already done some investigation to re-write the documentation paying a professional-writer.
--
Fabio Maulo

Reply all
Reply to author
Forward
0 new messages