Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[p2-dev] Clarification of greedy-ness (especially with respect to feature patches)

p2 committers,

For this year's Simultaneous Release document, I wanted to add a sentence or two on why it was important ... in the context of our Simultaneous Release ... to specify (or publish) greedy="false" for runtime-optional dependencies.  

In the past, we just said "do it" and for the reasoning pointed to bug 247099 [1] and the wiki page [2] both of which are pretty complicated. One thing I'd like to confirm with you experts is that ... as far as I know ... it is not possible for an adopter to provide a customer with a "feature patch" for something that was installed via greedy=true. Right so far? So some adopters would have to jump through hoops (that I don't even know) to maintain some installed products if their customers happened to install some particular thing from some particular repository -- if it caused a critical bug in their product. Sound right? I've not provided a reason why someone would want to have greedy=true and am not sure I know one ... for the common repo. I do see the rationale mentioned in the bug for "services" where an OSGi server with a tightly controlled repository might want to roll-out changes that way ... but ... if any of you have a (brief) reason or example of when to use greediness in the Simultaneous Release, I'd appreciate hearing that too.

My full write-up is at

http://wiki.eclipse.org/SimRel/Simultaneous_Release_Requirements#Provide_optimized_p2_repository_.28partially_tested.29

But I've pasted the relevant section below [3] for your ease of reviewing.

And ... please note! ... I do not want to re-start the long debate in bug 247099 ... I just want to make sure the brief reasons I have stated are accurate and adequate.

Thank you for any review/confirmation you can provide (and apologies in advance if I've asked before and its already been explained to me and documented elsewhere),


[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=247099
[2] http://wiki.eclipse.org/Equinox/p2/Publisher
[3]
= = = = = =
... the repositories produced and contributed must use p2 publishers that produce greedy='false' in the content metadata for runtime-optional dependencies. See bug 247099 and the p2 Publisher wiki for some history and details on this issue of greedy vs. non-greedy requirements. But in brief, to have a runtime-optional dependency be non-greedy is important for several reasons, especially in an IDE environment. First it gives ultimate control over what is installed to the user, based on their feature selection, instead of depending on what happens to be available from the repositories they are pointing to at that moment it time. It also makes it much easier for adopters to be able to predict (and maintain) what their users have installed. In fact, if something is runtime-optional, but pulled into an install because someone did not specify greedy='false' meta-data, there is no way an adopter can provide a patch feature to one of their customers if that optional bundle causes a bug.
= = = = = =


Back to the top