- Regarding resolver behavior:
The goal is actually to replace the behavior of the objective function with the behavior of the resolver. This is the best way to guarantee that both p2 and the OSGi runtime agree on what is a consistent set of bundles. For example p2 does not take into account package uses constraints which leads to p2 selecting bundles that later fail to resolve at runtime. It does not matter which way to resolve is better, so long as they agree. Since the OSGi resolver is very unlikely to change it falls on p2 to match it's behavior. My current company (software ag) has had quite a number of issues where essentially p2 sets up the resolver to fail.
- Regarding resolver scalability:
The resolution is split between the resolver which processes the current set of resources and the resolver context which selects candidates when asked. If the goal is to support a very high number of candidates - a resolver context impl optimized for searches in a large candidate space can be provided. If the goal is to produce a solution that includes a very high number of resources - more research is required. Even if the initial set is 10,000 the resolver can be asked to process them not all at once, but incrementally in batches or even one by one. Which is in fact what equinox does today.
I am trying to determine if it makes sense to invest effort in prototyping this given that subtle changes in behavior are in fact a goal, rather than an issue.