[Cuis-dev] [RFC] Namespaces, changes to SystemDictionary, Object and a dictionary class for tracking environment implementations

Gerald Klix cuis.01 at klix.ch
Tue Oct 6 08:52:25 PDT 2020

On 2020-10-06 17:00, ken.dickey--- via Cuis-dev wrote:
> On 2020-10-05 23:49, Gerald Klix wrote:
>> On 2020-10-05 21:47, ken.dickey--- via Cuis-dev wrote:
> ..
>>> In my mind, one uses Environments (Namespaces) to allow multiple 
>>> classes with the same name to exist without problems.
> ..
>> Each environment implementation - yours, mine, anybody's -- should
>> register an instance of a environment manager class with this
>> dictionary, which in turn, dispatches most of SystemDictionary's
>> retrieving and helper
>> methods to various environment *implementations*. In many cases the first
>> answer is taken.
>> Clearly if two environment implementations
>> manage an environment and a class with the same names each -- what a
>> "name" is, is up the implementation -- we have a conflict,
>> but I presume this will happen seldomly.
> OK.  We have very different views about Environments/Namespaces.
>  From https://github.com/KenDickey/PackageEnvironments README.md
> ==vv==
> Goals:
> - Multiple Classes with same name coexist in different package environments
> - Unburden Smalltalk SystemDictionary by reducing the number of 
> helper/support class names
> Weak Goals:
> - Cuis users won't notice until they need it
> - Introduce fewest new concepts and mechanisms
> - Work as expected with current tools
> ==^^==
> And from the section "The Story So Far"
> ==vvv==
> Tools:
> - Class & Hierarchy Browsers, Package Browser, ChangeSorter, Debugger 
> seem to work OK.
> - Package Save/FileOut working (same for Feature or Environment).
> - ChangeSets seem OK.
> - Packages which create multiple Categories seem OK.
> - Find Class works in (System) Browser.
> ==^^^==
> Most of the work so far has been teaching tools to look up 
> classes/methods in the object's #environment (a method that returns 
> either an Environment or the value of Smalltalk).
> Aside from visibility, Environments and Packages are the same, so the 
> concept of a packaged Feature does not change.
> Also, when a package is loaded, if it requires any packages which are 
> Environments, it "uses" them, meaning that their names are visible to 
> the using Environment.
> ===
> It seems that your proposed changes satisfy neither of the major goals 
> that I was looking for.
> The basic questions I have are:
> - What is your goal set?
> - How does this help me?
> - Does the result carry its weight?
> ===
> Sorry to come down on you with a hammer, but without answers to these 
> questions I really don't know what you are proposing.
> Note that I do a number of experiments, many of which I throw away.
> Don't let me talk you out of exploring an experimenting.  I get many 
> half or quarter baked ideas and until I build things I don't fully 
> understand some of them.  Building things is good.  Sharing is good.
> Part of sharing is sharing of the ideas and context, and I am just not 
> getting it.  Can you help me out here?
> Thanks a bunch!
> -KenD


Obviously I still haven't made myself clear.
Please bear with me until I can provide a simple example implementation 
that handles environments. I will have to reimplement my proposed change 
set, because I came to the conclusion, that Juan's approach is much better.

I am sure, that all your goals will be met.

Best Regards,


More information about the Cuis-dev mailing list