Forum OpenACS Improvement Proposals (TIPs): TIP #95 (proposed): Rewrite acs-mail-lite to make it aware that we send emails to parties

Well, this is more a post commit TIP, but I'm at least trying to show my willingness to please certain factions in the OCT by opening discussion on that.

Acs-mail-lite bounce handling assumes that you are sending e-mails to users (foreign key on users) instead of parties. I changed that at most places already, but I think only on HEAD. Furthermore, I am of the opinion that this is a bugfix. But as it constitutes a data modell change along with API and I have slight suspicion that some people might disagree if this constitutes a bug fix, I ask the OCT to vote whether I can go ahead and leave the changes in CVS which get rid of the foreign key constraint on users and make this a foreign key constraint on parties.

No, this sounds like a bug fix. The kernel datamodel is set up to handle non-user objects that have e-mail addresses, in particular groups. I see no reason why acs-mail-lite should not implement the same flexibility.

Yes, it's a kernel datamodel change, but one without consequence for upgrade scripts, i.e. a user_id is guaranteed to point to a person object, which itself points to a party object. So any user_id currently in the acs-mail-lite tables (say unsent mail) will be guaranteed to not fail a change of the constrataint to party_id.

And client code that searches for (say) a set of users and spams them will still work. In other words, there's no reason for client code to make use of the additional flexibility if the author doesn't care to. The change will be transparent to such code.

Of course, along with making your change, you need to write upgrade scripts for both Postgres and Oracle and to make sure they're tested (potentially a hassle if you don't have Oracle convenient).

And you need to test to make sure there aren't other code dependencies, i.e. in select queries or Tcl code within acs-mail-lite, that depends on the users table ...