Before this goes into another db abstraction discussion, I would 
like to point out that the ACS/OpenACS shared viewpoint now is 
that true abstraction isn't going to happen (we've had a couple of 
meetings about this). SQL is already supposed to *be* an 
abstraction, and it's not implemented in a standard way from 
RDBMS to RDBMS. In terms of switching the SQL depending on 
what DB is being used, that is an issue being discussed in 
a 
separate thread.
The important point Peter raises here is the idea of "fat binary" 
APMs for OpenACS/ACS. I *absolutely* would like to see this 
happen in a way that is hopefully backwards compatible with 
current APM packages (for ACS classic). Basically, the package 
manager should be able to say "I am running on Postgres, and 
this package does have Postgres compatibility, so let me set up 
the Postgres data-model for it" and same thing with the same 
"fat binary" APM, but Oracle. We assume that a package that 
declares being Oracle *and* Postgres compatible will have both 
sets of data model files, and will follow whatever convention we 
come up with for replacing queries for one DB with queries for 
the other.
Backwards-compatibility, again, would be great. This means that 
while OpenACS would implement a slightly augmented, 
RDBMS-aware package manager, ACS Classic could look at a 
fat binary package and still find the correct Oracle data model 
files and all. This could be tricky, but is worth the effort to get 
single APMs.
Peter, since you and your team have looked at APMs already, can 
you propose a solution to this? Basically,