Package Source Fallback Behavior

From Issue: http://nupack.codeplex.com/workitem/204

Scenario: I have a package (mypackage.nupkg) on my local machine in my c:\packages folder. That package depends on some online packages such as log4net. When I change my default package source to c:\packages and try to install mypackage, it should be able to resolve log4net from the online package source.

Design:

Feed Aggregation

Web requests for each feed is done in parallel, but merging the sources happens when all the results have returned.

When installing a package, iterate through each package source looking for the dependency, starting in the current package source. 

Order of aggregation:
  1. Look in specified feed (if specified via -Source).
  2. Look in active feed.
  3. Look in all others in the order they're specified in settings (we'll need to allow re-ordering feeds).

Perf issues with Feed Aggregation

Potential perf problems with aggregating multiple feeds and paging. looking at doing a bit of pre-fetching for the pages surrounding the current page in order to improve perf since most people won't page across more than two or three pages after doing a search in the first place.
Something like:

  1. Unfiltered. Pre-cache first 3 pages.
  2. User types search term: pre-cache 7 pages

Keep in mind that the exact number of pages to cache can be tuned later.

Open Questions

  1. Should we apply this behavior to List-Package. For example, should we merge all the packages from the package sources. I think we should not do this for v1. No, we're not going to do this for v1.
  2. Should we apply this behavior to installing the package itself? Yes. Obviously this doesn't apply to the dialog since you can't specify an arbitrary package.

Last edited Oct 27, 2010 at 9:30 PM by Haacked, version 4