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

ken.dickey at whidbey.com ken.dickey at whidbey.com
Tue Oct 6 08:00:01 PDT 2020


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


More information about the Cuis-dev mailing list