links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
What are environments for?
Last updated at 3:09 am UTC on 5 March 2017
[squeak-dev] What are environments for

September 2016

Nicolas Cellier
Wed, Sep 28, 2016 at 11:02 PM
Reply-To: The general-purpose Squeak developers list
To: The general-purpose Squeak developers list

Environment carry great promise and potential...
But for now, it's only that.

I recently read "let's fix environments".
+1 too to that generous idea.
But what does it mean?

Without clear goals or vision, fixing could essentially mean "let Environment be transparent", that is let it remain a promise, a potential, whithout too many side effects... Not exactly YAGNI, just a bit of over-engineered nice piece of code that might serve later. OK this sounds like a mandatory first step.

But then, what feature are we after?
I have read bootstrapping, sandboxing, letting concurrent packages and/or versions co-exist, stop prefixing class names with pseudo namespace...
So environment are about reducing global variable scope.

For me, the essential decisions are in these questions:
  • how will environments and source-code-management interfere?
  • how are we going to specify reproducible artifacts (images)?

Are we going to use environment "statically" like in VW, just like namespaces are in many languages? That somehow means that the SCM will have to be environment aware.

Or are we going to transfer this responsibility at a higher level, like Metacello for example? In this later case, we have greater flexibility, but assembling an image means telling which package is installed into which environment, then which import are necessary for each environment.
But it's even more complex than that, because the way we create classes: by subclassing another class. So we don't need one environment, we need at least two, one source environment for picking the super class, one destination environment for hosting the subclass. Hmm, the metacello configuration is going to be verbose...
OK, OK, but how would we designate an environment in the configuration, is it by name in a sort of Environment registry?

All this is strongly related to Newspeak mechanisms for contructing a module, http://bracha.org/newspeak-modules.pdf. Newspeak was conceived with solid foundations. Can we reach a solid design by small iterations? Will we converge to the same economy of concepts? I just wonder, or should I say wander?

That's very interesting. So who has a vision?
No urge to asnwer this, let's rather make environment transparent ;)