This is not about the mutability of properties. We'd need a separate thread here and I don't want to start too many on one day, especially after four months of silence 8-)
When I say properties in the subject, I'm actually talking about data types in general as properties will only be a special case of data types in Ant2. Possible scopes for properties: (1) Hierarchical scope - properties that are available everywhere in the build file that defines them as well as in all subbuilds that are invoked from this buildfile (and subbuilds invoked from subbuilds and so on). This basically is the Ant 1.x model, as long as we leave the inheritall attribute of <ant> aside. (2) Global scope - properties that are available throughout the whole build process. The difference to (1) would be that subbuild defined properties could be accessed in the parent build file. (3) Build file scope - properties that are available everywhere in the build file that defines them, but not in subbuilds - this is Ant 1.x with inheritall="false" on <ant> tasks. (4) Target scope - properties that are available only in the target that defines them. (5) Container scope - even finer grained than (4) for things like <parallel> or similar. Are there other scopes? Which of these do we really need? We should think about syntax, after we've decided which scopes we need to cover by syntax IMHO. Stefan
