Thursday, 17 September 2009

Horn Rant and a cry for help

This is a recession busting blog post, you get two opposing emotions in the same blog post. I am ranting at the community and asking for help from the community at the same time. Look upon it as an unusual social experiment.

Further more, I am writing this post for a few reasons:

  1. As a cry out to the community for some help with the maintenance side of horn

  2. A cathartic aside to myself in order to vent my frustrations with the project or perhaps my failings at generating enough interest or perhaps providing a less than optimal solution to the problem.

  3. A bit of a shout or a moan at the recent trend of many OSS projects changing SCM or build tool in a group like nature that resembles a herd.


A lot of the OSS projects have suddenly changed from subversion to git. I find it quite a stretch of the imagination to believe that each of the new git converts made this choice individually and did not follow on from (a)nother OSS project doing the same. The obvious pattern being once one flips, you can bet your bottom dollar that several will make the same decision based more on envy or curiosity than sound judgement. If the move to git had been spread over a larger timescale then I would not have formed this opinion but the close proximity of the migration of the various OSS projects leads me to the last comment.

A lot has changed in a short time with the descriptors and with my day job thankfully so busy right now, I have totally lost track with all the movements.
MVCContrib has changed, rhino has changed and sharp architecture has changed to name but three. I also noticed a recent thread on the castle development list were people were getting equally hot and bothered about a similar change. I’ve observed Jimmy Bogard tweeting that automapper will move to git and I have even had people ask me when is horn moving to git? We have at the most about 5 active developers, what the hell do I need DVCS for? Somebody please tell me this is not the herd talking here.

One of the objectives of horn is to shield the developer from the SCM details and the various build tools that each OSS will inevitably favour and change on a less than predictable basis.

We could really do with some people to take charge or help with the upkeep of the descriptors. Without community input horn is not going to work. To be honest, if it does not work then so be it, at least we tried and got reasonably far or at least got further than most in the .NET space in what is the most puzzling development problem I have ever faced. If you are interested in the challenge, I urge you to get involved, please join the Horn user group.

For those not in the know, the horn descriptors are the database of package or project information that manifest themselves as DSL files on the client machine. For example below is the automapper descriptor. The horn runtime knows after parsing this file which SCM to get the files from and which build engine to use in order to build the source.

1install automapper:
2    get_from svn("http://automapperhome.googlecode.com/svn/trunk/")
3    build_with nant, buildfile("AutoMapper.build"), FrameworkVersion35
4
5    with:
6        tasks full
7
7    build_root_dir "build"
8    shared_library "lib"

We could also do with code patches for some of the new build engines like psake which I really have no wish to learn and could do with somebody in the know to enable psake support for horn.

One of the huge disappointments with horn is that I thought we might get some sort of buy in or even recognition from some of the bigger players in .NET OSS but it seems people get more excited about updating their SCM to DVCS or build engine to rake or powershell or whatever is du jour than providing a standard means for the community getting it’s binaries and perhaps alleviating the upgrade path which as stands is excruciating.

I do have some sympathy with the want to upgrade to the new and shinny, after all OSS is meant to be fun, you get to do things here you might not get a chance to do. git does not work on the corporate model and you might not get a chance to use it otherwise. I also have total respect for anybody who sacrifices their spare time for OSS or the community as a whole. I also do buy into the logic of DVCS (distributed version control system) but I am not sold on git or maybe it is that I am not sold on the tooling and I am definitely not sold on github. I do not like the git tooling period, and my limited experience of github seems to suggest that it can go down enough times to suggest it will be frustrating. My DVCS of choice would have been with mercurial. It has google support and you can guarantee the google infrastructure will not be down that often. But hey Ruby On Rails uses git so it must be good, right? That said, I am not suddenly going to change SCM just because another project has, I need sound reasons to do so.

Not a lot can be done about this, developers including myself will always want to use the shinny and new but essentially my interest in the project is dropping and maybe it is just low down in the wish list of the .NET OSS space or maybe somebody can come up with a better solution. I am willing to share what I have learnt with anybody wanting to mount an attempt at providing a soution.

I am really not sure how much more of my ever decreasing spare time I can put into the project. I have an expectant girlfriend and my own business to run, OSS is dropping down my priority list.

I will say this though, my respect for the contributors of OSS projects has risen tenfold, the very fact that we have Nhibernate, castle and rhino and it is free is mind blowing. I urge every developer out there to think twice before writing a lazy assed post to an OSS forum along the lines of BUGZ, PLEAZZE HELPP MEEE. If you have a query, first search the forum. Nine times out of ten, you will find the answer and if not provide a detailed description or better still, a failing test if you can.

I almost feel better after this rant. Cathartic it was.

If any of this is of interest to you then please join the Horn user group for updates or check out the source here.