Dan and all,
Does anyone want to propose a spec for what needs to be done?
Yes. Let's do the simplest thing that could possibly work. We do have environments. They're responding to messages. Let's very simply add:
a) an extension to the change set format that allows us to specify "global Foo is contained in package Bar at location http://squeak.org/packages/Bar.cs" [which will automatically install a place holder environment] b) make the default response to any access to an undefined global be a message asking whether we should download the package or not (if the user wants it then we just download and install it; otherwise we abort the computation).
At this point, we can go ahead and start actually modularizing the system. The above won't deal with any of the esoteric things that were discussed ... but to me it appears as the simplest thing that could possibly work. If we just do the above, we can start to define packages, we can test if they're still working, we can even ship Squeak in a shrunken form.
Cheers, - Andreas