How does ams_attribute_values work; is it for use when the acs_attributes storage type is set to 'generic'? is it an implementation of Lars' skinny table spec? (the acs-content-repository code above takes the dml approach and uses acs_attributes 'type_specific' storage type - that was the route I was following).
This is my implementation of skinny storage - which is similar to any other ideas for skinny storage. It is a "generic" type of acs_attribute storage that isn't the same type of generic that is implemented in core, its more complex than that.
Why did you choose to make ams_attributes subtypes of acs_object?
Because all the acs_objects i know of used in openacs are subtypes of acs_objects. And they need to be objects because i need them to be able to have permissions.
when do you expect release of Contacts 0.2a and when the final release of AMS?
Full AMS should probably happen within the next 2-4 weeks. It is partially dependent on contacts since contacts is being used to test ams functionality. Testing of AMS is needed and right now and if other people can test it and find bugs it might be sooner rather than later.
For contacts I could speculate, but the honest answer is I don't know. I am working on contacts with two other people and I don't have lots of time to work on it, and I don't know how much time the others have. So realisitically within the next 2 months for sure probably sooner than that, possibly significantly sooner than that.
If I understand you right. In future when creating a new package I define only the objects by myself and all it attributes by AMS?
That's right except AMS due to the nature of skinny storage isn't very efficient at sorting data. We are working on the best possible solution with contacts and the response to this issue we come up with will be in the docs. Right now i'm leaning towards ams managing attribute values and updating your acs_object table with sortable field data.
If yes, do you have a small working example I could take a look at (contacts maybe)?
A small working example of contacts is hidden in the ams/www/index.tcl file. Uncomment out the lines. In that example i associated ams_attributes to the ams_list object and then it generates a form and can return the values as a list or in an upvarred array.