Many people keep talking about modularity or about modularization. Especially in OOo, which really is a huge project. Problems which may be addressable with (more) modularity are
- backwards compatibility,
- build times and
In this sense modularity implies exchangability, being able to replace one module with another. Bringing this into relation with data respectively persistent data, modularity very well may mean, that one could just implement new modules for new features, insteand of constantly changing olders, avoiding pittfalls wrt backwards compatibility. Combining this with some kind of automatic deployment, and automatic management of data (user data, code, etc.), allows e.g. to keep code as long available, as there instances of its types (the data), while still being able to completly revise a system.
So, basically the point is, keep every data related to some version of the creating implementation. In case you need to become incompatible, just create a new implementation, and let the newly created data be bound to a new version. In some cases converter functions for forward or backward transformation may be desirable.