Notes on Project Inheritance

Inheritance as it pertains to data entry:

Downward Inheritance (Project --> Resource):

When users enter data for a resource, they will, by default inherit the data from the project.  As the project is updated, the resource will always match the project's values. Ideally, users will be able to disable this by section of the edit form.  That is, they might inherit location, but not material type.  When users disable inheritance for a section, the system will allow users to customize the project data instead of starting from scratch.  When a user re-enables the inheritance it would clear all local values.

Upward Inheritance (Resource --> Project):

When a user edits a project page, they might be provided with a series of terms or values that represent the unique, additional, values from resources that are in that project.  That is, they're not automatically added, but they're listed if the user wants to add them explicitly.   When a user saves a record, the system could check to see if values that are in the record occur frequently in all records in that project, if so, it might suggest to the user that those terms be added to the project with a simple, yes/no. I view upward inheritance as a low priority.

Inheritance as it pertains to searching and display: 

Searching for Resources

When finding resources, it should work the same way as described in 1a. that is, a resource should be "found' whenever the project or its values are in the resource based on the above inheritance model.  Those values should always display to the user.  We need to decide whether they display differently or not.

Searching for Projects

When finding a project, we discussed leaving things the way they are now for the moment (that is that a project includes the metadata of all of the resources within it for searching (but not display).  But, that once upward inheritance is implemented that we should move to this model more explicitly.  We still need some clear use-cases for why people would search for a "project" to help guide this.