Not long after the RTM release of ASP.NET MVC and NuGet, Paul Stovell has come up with an alternative approach to dependency management – “Tape”. Basically what Paul’s tool does is merge all the source files in a particular directory into a single file that can be easily referenced into a project. So why is this helpful, and better than adding assembly references?
Well the first thing to point out is that Paul is only half serious, but what he is doing attacks a particular problem that the .NET community is already facing with interdependencies between open source projects. Consider the following scenario:
- Your project [A] depends on open source projects [B] and [C].
- One of your dependencies [B] also depends on [C], but a different version.
- You project depends on [C2], and the open source project depends on [C1].
- There are incompatibilities between [C1] and [C2].
Here the developer has to either down-grade their code, or try to upgrade the open source project either by recompiling it with new dependencies, or worse, having to delve into the open source projects code and make adjustments.
With the introduction of various packaging formats into the community this is a problem that is likely going to get worse because the chances of people actually using a particular open source project is only going to increase (the barriers for entry just got lower). The upside is that it will create pressure for active open source projects to keep their dependencies moving forward.
Still, I actually think what Paul has done has some merit. I am constantly impressed with what the guys at GitHub are doing with “gist” which is a quick way of sharing snippets of code. Tape would be a great client for gists that you wanted to include in your project.