<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Martijn Boland &#187; Open Source</title>
	<atom:link href="http://blogs.taiga.nl/martijn/tag/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.taiga.nl/martijn</link>
	<description>New adventures in .NET</description>
	<lastBuildDate>Wed, 25 Jan 2012 22:27:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Staying out of .NET Open Source dependency hell</title>
		<link>http://blogs.taiga.nl/martijn/2010/04/14/staying-out-of-net-open-source-dependency-hell/</link>
		<comments>http://blogs.taiga.nl/martijn/2010/04/14/staying-out-of-net-open-source-dependency-hell/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 16:01:13 +0000</pubDate>
		<dc:creator>martijn</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://blogs.taiga.nl/martijn/2010/04/14/staying-out-of-net-open-source-dependency-hell/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2010/04/14/staying-out-of-net-open-source-dependency-hell/' addthis:title='Staying out of .NET Open Source dependency hell '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Probably all consumers of Open Source .NET libraries have run into the following situation: you’re using specific versions of library X and library Y in your application but library X also uses library Y, but a different incompatible version. Aaarrrghh!!! A classic example of Dependency Hell. There are technical solutions out there that address this <a href="http://blogs.taiga.nl/martijn/2010/04/14/staying-out-of-net-open-source-dependency-hell/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2010/04/14/staying-out-of-net-open-source-dependency-hell/' addthis:title='Staying out of .NET Open Source dependency hell '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>Probably all consumers of Open Source .NET libraries have run into the following situation: you’re using specific versions of library X and library Y in your application but library X also uses library Y, but a different incompatible version. Aaarrrghh!!!</p>
<p>A classic example of <a href="http://en.wikipedia.org/wiki/Dependency_hell">Dependency Hell</a>.</p>
<p>There are technical solutions out there that address this issue such as <a href="http://hornget.net">Horn</a> or <a href="http://maven.apache.org/">Maven</a> for Java, but I think there is an alternative non-technical solution: Just reduce the amount of libraries that you depend on. </p>
<p>This might sound silly because why re-invent the wheel? Well, you don’t have to. Let’s take a concrete example. I was using <a href="http://mvccontrib.codeplex.com">MvcContrib’s</a>&#160;<a href="http://www.castleproject.org/container/">Castle Windsor</a> controller factory in a project, but then, when I upgraded Castle Windsor it didn’t work anymore. Of course there wasn’t a new version of MvcContrib released yet that depended on the new Castle Windsor, so I had to build a new version from source. Then I started looking at the code and realized that it was just one simple class from the library that I was using. So I <strike>created</strike> <em>copy &amp; pasted</em> a Windsor Controller factory class in my own project and got rid of one external dependency. Yes, I’m promoting Copy &amp; Paste development here!</p>
<p>Of course, I’m not advocating that you should get rid of all your dependencies, but it might be wise to have a look at the dependencies and evaluate if you can get without some of them with just a little bit of work. This can save you from a lot of trouble, especially when you’re the type of programmer like me that wants to run the latest and greatest version of everything but <em>not </em>wants to build everything from source over and over again.</p>
<p>What works for me is the following guideline: try to keep away from libraries that use other (non-Microsoft base class) libraries if there are reasonable alternatives.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.taiga.nl/martijn/2010/04/14/staying-out-of-net-open-source-dependency-hell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

