Hi, Brad.
First: Thanks! I really appareciate your willingness to share, and expect to contribute back whatever functionality I can to the community. Given that nearly every OpenACS project I'm working on needs this functionality, I can only assume that I'm doing something horribly wrong or that we should try to get a version of this folded into the main OpenACS system in the near future.
I've just spent about 2-3 hours playing with the "attributes" package, including porting it to PostgreSQL. I hard-coded the changes in the Tcl, and hope to move them out .xql files alongside the Oracle code in the near future, but I first wanted to play with the code to see how it worked.
I'm not sure how much I like the idea of using a single table for both attributes and their values, but (a) your generosity is appreciated and (b) what you've done is more than good enough for my current needs. In particular, the Tcl API that lets me set and retrieve attributes is a godsend.
My biggest concern right now is that attributes are completely global. I haven't looked through your Tcl code that much, but how difficult do you think it would be to get this working on a per-subsite basis, rather than a global one? I expect that we would only need to add a context ID to the table, and then grab (and use) that context ID in the Tcl procs, but I'm not sure.