Hi,
My suggestion is that modules could reference a particular version of another module.
This would allow teams to keep developing and evolving their modules and not being concerned about apps that are not currently being worked on becoming broken or needing someone to manually update them.
This is a very common scenario in larger factories and even with proper architecture it will happen.
The way I see this working in practice is tagging module versions as "stable" and any consumer could choose to reference "current version", which would be the same as it is now, or one of the "stable version".
This extra concept of "stable version" might be needed otherwise we would always be selecting from a list of hundreds or thousands of versions.
From a platform perspective I believe this is quite doable! We can already just clone any module and reference that one (thus creating a kind of stable version), the platform could do this behind the scenes and have that "hidden clone" as the Stable version.
The biggest difference from what we can do now is that these clones MUST use the same physical tables of the main module! (as in: not creating new ones)
It goes without saying that what I'm suggesting here is also the way most "traditional" languages work!
Cheers,
Hermínio