Recently Billy McCafferty wrote a post on Horn, a package manager that Paul Cowan and Dave the Ninja have developed, similar to the idea of Ruby’s Gem. Although it’s a step in the right direction, it does have issues. To be able to use it, you need to download Horn and build it. But not only that, you also need to install Subversion, Git, Powershell, Rake, PSake, Cake, Fake…and a whole slew of SCM’s and build tools. Why? Because Horn builds from source. As such, it needs to access the SCM a specific project uses, download the files locally and run the build script. Since OSS projects are free to choose what build script they use, that also adds to the complexity. Some are happy with MSBuild, which isn’t normally an issue since it’s part of every .NET install. However, others use Rake, which in turn requires Ruby. You get the picture…
Although this isn’t necessarily an issue for some people, for others, it is. Forgetting for a moment scenarios such as those imposed by IT departments on corporate networks (permissions to install software, firewall, etc..), there are many that are not too comfortable with building from source, something beyond running an MSBuild file or compiling a VS solution inside the IDE.
Welcome to Horn Server-Side
In order to ease some of these concerns, the Horn team developed a server-side solution. A service now takes care of figuring out all dependencies and building packages and since it does this on a scheduled basis, it saves you the time of having to wait for a project to be built. This also saves you from having to install anything on your machine, including SCM’s and build tools. In fact, you don’t need to install anything if you don’t want to. For you to interact with this server, Dave built an ASP.NET MVC application that shows all the OSS packages in their respective categories. For each package there is normally the official released version and the trunk. iMeta has gracefully offered to host the server up in clouds. Go see for yourself.
If you prefer a command line version, I hacked one together in a morning and it’s available from the Horn repository. This allows you to issue commands like:
horn-get –u http://hornget.net –c orm –d nhibernate-2.1
which will download NHibernate 2.1 zip for you with the necessary binaries.
Take a look, experiment and provide feedback to the Horn team. There is still room for improvement, but no doubt, Horn is helping remove some of the barriers in the adoption of Open Source.