David W. Van Couvering wrote:
You say Java does this -- is this documented somewhere? I'd love to have
that as a reference.
Do you mean the JVM impl or the general philosophy? I think the
versioning model is defined in the language spec but would have to go
digging.
First of all, Kathey was concerned we wouldn't be able to follow this
kind of discipline.
http://mail-archives.apache.org/mod_mbox/db-derby-dev/200509.mbox/[EMAIL PROTECTED]
It is on us and our users to police ourselves.
But I'll also show where I saw this get tripped up:
> * a consumer expecting X.Y will work with X.Y' when Y' < Y by version
> detection and degraded functionality (Y' level). If Y level function
> is required then it will gracefully die (able to detect rather
> than AbstractMethodError)
In my original proposal:
* compatibility will be strongly encouraged but not guaranteed
against previous minor versions (e.g. a 10.2 consumer works
with 10.1 common classes, but a 10.3 consumer has a hard
dependency on new methods, it can not work with 10.2
common classes).
Perhaps I remember incorrectly, but I remember us (or enough of us)
generally agreeing that gracefully dying when Y level function was
required was not acceptable, as this was a regression of existing
behavior. This was the "nail in the coffin" for my original proposal.
http://mail-archives.apache.org/mod_mbox/db-derby-dev/200509.mbox/[EMAIL PROTECTED]
http://mail-archives.apache.org/mod_mbox/db-derby-dev/200509.mbox/[EMAIL PROTECTED]
Unless you can address these issues I think we're back at square one...
I'd put this as part of the discipline. The Y consumer, as the newer
version, knows about earlier Y' versions and hence can be coded to
accept the downrev dependency - it can downgrade itself, it can offer
different behaviour, it can implement the functionality itself, it can
die gracefully, or we can just make it X+1.
Bear in mind there are no guarantees. For example, someone else could
have modified Y' themselves without any regard to compatibility and just
stuck it on the classpath.
Also, let's not forget that this is only in the case where we have
multiple applications with poor classpath discipline installed
concurrently. (And I haven't forgotten the request for a writeup on
stuff like ClassWorlds).
--
Jeremy