Should collection based properties be read only?

"urn:schemas-microsoft-com:office:office" />An
interesting question came up today on the issue of making all collection based properties
read only. In the usability studies we’ve done up to now, we’ve primarily focused
on collection based properties where the class exposing the property can truly claim
responsibility for populating the collection (e.g., the Files collection of a Folder
object). In such scenarios it makes sense to communicate to the user that the class
that exposes the property is (and must be) responsible for populating the collection.
This was shown to be reasonably intuitive in the studies we’ve done.

Making a collection read
only communicates additional semantics about the API that can help users understand
how the API works. In the Files collection, by making the Files property read only
we are communicating to some extent that we don’t want to allow the user to delete
all the files in a directory by assigning a new Files collection. In other words,
the user needs to be much more explicit about taking such potentially catastrophic
actions. This is one of the advantages of making the collection read only in this
case. Of course, making the property read only also protects the user from doing this
by mistake.

However, if responsibility
for populating the collection lies solely on the user, then making the property read/write
might communicate to the user that they are responsible for populating the collection
and that the class exposing the property can do nothing to help (as well as making
things more convenient for the user). If the responsibility for populating the collection
is shared between the class and the user, then I might consider exposing helper methods
that allow the developer to replace the collection, without setting it directly. But
I would not consider doing either of these for collection properties in which the
class exposing the property assumes responsibility for populating the collection.

It's unclear to me though
what the general expectations are for collection based properties. Do you always expect
these to be read only, or does it depend on the scenario or class exposing the property?
It would be great to hear your comments.