Hi David,
I think you may have already addressed the following issues in email,
but I don't see the results rolled onto the wiki page. Please pardon my
nitpicking. This kind of discussion turns me into a tiresome, pedantic
Mr. Hyde:
1) The cardinal rule. I recommend wordsmithing the cardinal rule: "The
goal is to allow any application written against the public interfaces
an older version of Derby can run, without any changes, against a newer
version of Derby." To me the following formulation reads better "This is
our goal: An application which ran against Derby yesterday will run
against a higher version of Derby tomorrow."
But is that really the cardinal rule? Maybe we really mean this: "This
is our goal: An application which runs against a Derby release today
will also run tomorrow against the next minor release. We strive to
minimize churn for applications migrating to the next major release of
Derby. However these migrations may entail application changes."
2) Bug fixing policy.
I think that the Exceptions section should say explicitly that "It is OK
for minor releases to fix bugs in our implementation of the standards,
even if those fixes break existing applications." Bugfixes can and do
break applications and so violate the cardinal rule. Here are some more
examples:
2a) Wrong query results. The correct results may break applications
which are either unaware of the problem or which have already written
compensatory logic to patch over our error. Correct results may slow
down the query's performance and the customer may consider this
degradation intolerable.
2b) Our DRDA implementation may incorrectly transport datatypes not
recognized by DRDA. Conforming to the DRDA spec may mean removing this
transport capability and breaking applications which select the
unsupported datatypes.
3) Client/server compatibility.
I would expect to find these rules spelled out on the wiki page. It is
not clear to me that you can deduce client/server compatibility from the
cardinal rule. Are these the rules?
3a) A major release number defines a family of compatible Derby clients
and servers. Derby clients and servers can interoperate provided that
they share the same major release number. Say that an application
currently runs using a client and server from the same family. The
application will continue to run if the client upgrades to the next
minor release. The application will also run if the server upgrades to
the next minor release.
3b) We strive to minimize incompatiblities across release families.
However, we do not guarantee that a client will interoperate with a
server having a different major release number. If an application
upgrades its client to a new major release, the server may have to
upgrade to the new release family too. Similarly, if an application
upgrades its server to a new major release, the client may need to
upgrade too.
4) Interface table.
Here my pedantry goes super-nova: The Comments column for the System
catalogs notes that adding columns is considered a compabible change.
Parallel remarks should be added to the Comments columns for SQL
language, JDBC, Published API, DRDA, Metadata Procedures, SQLStates,
Tools, and various Properties: For instance, a minor release can
implement additional SQL features, additional JDBC methods, add new
methods to the Published API, implement additional DRDA datatypes, add
new Metadata Procedures, add more SQLStates, add more Tools, add more
commands and arguments to Tools, and add more Properties..
5) Copy editting.
In the Interface Table, "Jar file manifest entires" should read "Jar
file manifest entries".
Thanks,
-Rick
David W. Van Couvering wrote:
It's been awfully quiet out there. Are there really no other opinions
about this. One little peep from Dan and another from Kathey, and
we're done? Is this the derby-dev alias I know and love?
I mean, maybe it's just *that* good that there is no debate, but
somehow, I wonder...
I'll give it another 24 hours, and if there are no other comments, I'm
going to basically take the contents of these page and put them up for
a vote. If the vote passes, I'll migrate the contents of the vote to
the "main" web site so that our "contracts" around these interfaces
stabilities are more or less set in stone, as it were.
David
David W. Van Couvering wrote:
Hi, all. I would like to propose that we have a discussion, in
preparation for (at some time in the future) a vote on the interface
table I put together at
http://wiki.apache.org/db-derby/ForwardCompatibility
The approach I was thinking of is:
- everybody who is interested take a look at this table, and raise
issues as needed
- discussion ensues as needed
- I will incrementally update the Wiki page when it seems there is a
consensus on a particular issue
Once things have somewhat stabilized (and where there is contention,
people are starting to repeat themselves :)), I'll then I'll hold a
vote. The vote email will contain the relevant text and the
interface table from the Wiki page, so that we know what we're voting
on and so that it ends up in the archives.
This interface table would be for the next release of Derby (10.1.3
or 10.2, whichever comes first).
I would like to suggest that if you want to discuss the stability
classification of a *particular* interface, you do so with a
separate, specific email subject line, so that those who may be
interested will notice and participate.
How does this sound?
Does anyone think we need to vote on the interface taxonomy and the
definition of an interface separate from the stability
classifications given to each interface?
David