I just had a discussion with Fabio about the fact that the current build process for NHibernate is fragile and error prone. We have far too many situations where all of the sudden the build breaks. Some reasons include
- the OS (Windows XP, VISTA, Server 2003 or 2008 32bit versus 64bit) - Visual Studio (VS 2005 versus 2008) - .NET framework (.NET 2.0 versus 3.5) - nant (do I have the right version on my system and is the environment path variable configured correctly) - tests (do I have an SQL Server and do I have created the [test] and [test2] databases - human errors: some times a committer just checks in some thing that only "works on his machine" - etc. all these factors accumulate to a situation which is far from optimal! It's a while ago but I have written an article about how to configure/ prepare the system for NHibernate. http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/03/31/prepare-your-system-for-nhibernate.aspx There I described how to download the latest source from trunk and build it as well as for .NET 2.0 as for .NET 3.5. But today I tried to follow this step-by-step guide and I miserably failed... :-( (not for the first time!) I think that we can agree that we have now reached a broad adoption of NHibernate. The more people are using NHibernate the better the build has to be (did I hear "friction-less"?). And yes I am aware that most of the people just take the available GA (currently 2.0) but there is still quite a big number of people living on the trunk (myself included). As Fabio told me: "..nobody is willing to (really) maintain the nant based build..." My suggestion is now to completely re-work the build of NHibernate and implement it e.g. with a "better" build tool that xml-based nant or msbuild files. My suggestion would be "rake" (other suggestions are welcome). In a first phase we can run this new build in parallel to the current nant based build until every body can feel the difference (by the way: the guys maintaining fluent-nhibernate did already base their build on rake... ;-) ) Before I start implementing something I would love to hear some feedback about this. a) do you agree that the current situation is a pita? b) do you think completely re-working the build and use a different tool (e.g. rake) is adequate? c) did I forget some thing? d) are you willing to help?
