Currently properties are read/write by default; the programmer has to annotate with @Disabled (or equivalent) to make read-only.
While this "subtractive programming" approach is nice for demo's, the truth is that with larger applications, if not rigorously and completely tested, the end-user may get the opportunity to change something that they ought not; potentially corrupting data.
It would be better (and safer) for properties to be read-only by default.
The presence of the modifyXxx(...)/clearXxx() supporting methods would then indicate that they are read-write.
Another possible benefit is that - if we implement
ISIS-273 (to read from fields) then the amount of boilerplate would substantially be reduced if a tool like Lombok was used. That is, read-only properties would consist solely of a private field; read-write properties would be the field plus the modify/clear.
It might also make sense for the clearXxx() method to be optional; that is, to allow modifyXxx(..) to be called with null.
NB: for view models, properties could (perhaps) remain as read-write; there are no side-effects.
This change requires discussion on the mailing list.