Henrik,
I agree with much of what you've said here, but have a bit of a problems with:
(*) This means no more "String asUrl", because this makes the core module with String depend on the much less vital module PWS or whatever, so you have to load PWS to use strings. _Maybe_ we need to allow outer layers to add code in inner-layer-classes
One of the big advantages that a dynamically typed language gives us is the ability to add class extensions without pain. For the module system to ignore this would be a real shame. Let's not impose on ourselves, through our tools or through our best practices patterns, the same constraint that the Java folks have.
but this creates spurious sideways interactions between modules. Perhaps only applications should be allowed to do this.
I've heard this before, by intelligent people, but I haven't seen convincing evidence. I've made several base class extensions over the last 8 years, and have never been bitten. Can you give an example of the problem?
Thanks, Bob