I am against the very idea of special syntax. Even python uses special syntax as nothing more than syntactic sugar to make the code more readable from the point of view of not everything looking the same. I agree with the concept of everything being an Object.��
I also dont like the idea that we tend to not have a clear cut border between the IDE and the language/library. Of course I think IDE functionality as much as namespaces is concerned (within the borders of my understanding) is essential. But should be seperate and the IDE act mostly as a visualisation tool and automation tool.��
My problem , is that the Pharo operates on a global space , so lets say i do what I said above I still dont avoid name collisions. Because MyInstance outside MyModule should diffirent from MyInstance inside MyModule.��
It could become possible by masking the names from the user.��
So that there is no conflict between��
MyModule MyInstance��
and
MyModule2 MyInstance
unless you introduce of couse similar to python the optional feature of collapsing the scope.��
We already have Packages which tie in with Metacello, so I was think about Modules or however we want to call them as a layer between. I am fine with metacello personally. Its the name collisions that only concerns me and not forcing me to use unique names. Of course a module can contain other modules.��
I know how to do this for my projects , I would manipulate the IDE into displaying Modules as a seperate row in System Browswer , Packages will continue being the the up most container. And for name of a class I would add the name of the Module to the class , if I wanted to keep supporting the existing enviroment , but hack it so it appears to the user as 2 seperate things
so for user will see
MyModule MyInsance myMessage:
��but it�� Would be for the system
MyModuleMyInstance myMessage:
which would make sense from naming persepctive even to an outsider not using the module system and would not require for him to install the modue library
and essentially��
MyModule MyInstance��
act as you said via Message not understood as a reference to MyModuleMyInstance . A unary message returning a reference to an instance or class or other object.
of course you will have a class like ModuleGenerator to handle the technical details for you
Version control , dependencies and other technicallities would be handled normally as usually by Metacello with MyModule pointing also to the correct configuration , baseline, whatever.��
At least thats my general idea of it.����