"You guys have been working like
mad to port ACS over to Postgres. This is a lot of work. It's a lot of work because there seems to be only a thin
layer of abstraction between the code that makes up ACS and the database table structures. "
This isn't an intrinsic problem in the ACS, and even less so of the thin-layer paradigm used in its (cough) design. aD has no motive to abstract out the database queries. We do. It will happen.
So I view this as something of a red herring when considering the overall problem. Just as Zope's documentation problem is a bit of a red herring - there's nothing about the paradigm or approach Zope takes that necessitates poor documentation, it simply hasn't been a priority.
"Jim Fulton is something of an OO "zealot", so using an RDBMS to store
object data was not an option in his mind. So... he made his own OODB
Mine is not to question why. He did it,
it's solid, and it's pretty damn useful. "
Zealotry is a sin in engineering. Your comment nicely illustrates my point that the Zope folks seem to have a need to build mountains out of molehills.
The ACS wasn't designed, it simply grew out of client-driven work. You might say that aD has had a tendency to ignore the existence of molehills. I prefer this sin to the sin of inventing needless complexity.