I popped by the Dovetail office today and had a conversation with Ryan about ripple and nuget I thought I'd share while I breathlessly wait for EC2 to decide to wake up and build FubuCore....
If you've used ripple on a project with more than one developer or branch, you've probably encountered the fact that ripple and nuget can make for some absolutely dreadful merge hell issues with the csproj and packages.config files. You've also probably noticed that mixing in the usage of the Nuget VS addin quickly gets you into snarls where different projects depend on different versions of the same upstream nuget.
Ryan's idea (and I know the Extend Health guys do or used to do this) is to make ripple store the
exploded nugets into a folder structure without the version number so that the csproj files never have to change and keeping the entire app on the same version gets a lot easier. That might not help with the packages.config file issue, unless we can simply remove the usage of packages.config altogether. What if we had a folder somewhere where each nuget was listed as a file like "Bottles.version" and it had only a single line of text denoting the version? That should be about the cleanest possible merge I can think of.
Of course, all of the above pretty well dictates that we would need to completely drop the usage of "nuget.exe" and the VS nuget addin for projects using ripple. My thoughts on that:
* Today ripple uses the "nuget.exe" codebase a couple versions back as a linked library. The nuget.exe code is, um, challenging to work with as an API. I wouldn't shed a
tear if it completely disappeared from my life
* We *could* build our very own, limited client for the nuget package spec and server API. We'd also need to be able to edit VS.Net project and solution files (MonoDevelop too????). The cool thing is that we could do it intelligently and get a much more Mono-friendly approach than anything MS will ever do.
* Ryan also talked about making the ripple command line be more unix-like where you could pipe output from ripple to other CLI commands. I'll let him worry about that one;)
* I'd like to consider having a model where we don't have to put the "ripple.exe" and the associated support into a git submodule. I'd kind of like git submodules to disappear from my life if it's all the same to you folks. Maybe ripple2 could get rid of that some how.
* I wouldn't mind having a small OWIN hosted fubu app in ripple to be a simple GUI to do more
complicated nuget type operations. We'd almost have to have that if we eliminate the usage of the nuget VS addin. I really kind of like it for an example FubuMVC app anyway
* I would really like "ripple" to be able to import and update JavaScript/asset packages. Whether that means CommonJS, AMD, NPM, or something that doesn't even exist yet, I don't know. I really like being able to do "ripple update" on .Net code. It'd be nice to be able to do the same thing w/ assets
I absolutely cannot tackle any of this stuff until after Pablo's, but either some one else can run with it or at least we can start talking about it. It's a huge departure from the .Net mainstream.
Jeremy D. Miller
The Shade Tree
Developerjeremy...@yahoo.com