To clarify: I was never was for the dot and always favoured the :: notation for 
namespaced classes. With that one one could 
create classes like:

  Seaside::Component
  Core::Boolean
  Model::Person
  GLM::BrickListModel
  Tx::FontAttribute

(see my post on http://forum.world.st/Separator-in-class-names-td4926162.html 
from 2016). I know this from SmalltalkMT 
system and it worked nicely. 


Anyhow: Namespace discussion pop up each year - often in December and mostly 
because we still not have them ;)

The oldest reference you can find is from 2010:   
http://www.jarober.com/blog/blogView?entry=3462762798
mentioning a Google summer of code project.

Then Germán Leiva demonstrates this Namespaces project in Pharo 
https://www.youtube.com/watch?v=n4I7fSVNX2A
then it was declared dead:   
http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2012-June/066765.html

Then there was a discussion from 2012:    
http://forum.world.st/Pharo-and-Namespaces-td4636635.html
and one in 2016  http://forum.world.st/Separator-in-class-names-td4926162.html


Having proper namespaces would avoid such strange things as in 
https://github.com/pharo-spec/Spec/issues/813
and solve many other issues (but introduce new ones as well). 

But as always it is a question of time and resources. It's not only about 
introducing the namespaces itself - 
it would also mean to change the tools to support them.


With Pharo 8 now more experiments are possible into bootstrapping an own Pharo 
(possibly with Namespaces):

  1. One can bootstrap an own image / have it's own personal "Pharo" using 
Bootstrap to do experiments

            https://github.com/pharo-project/pharo/tree/Pharo8.0/bootstrap
            
https://rmod.inria.fr/archives/papers/Poli15a-Onward-Bootstrapping.pdf

  2. A class now knows about its environment

            environment
                "Return the environment in which the receiver is visible"
                 ^Smalltalk globals

     and OpalCompiler supports an environment in the CompilationContext.
     
     So basically you can compile into a second environment withing the 
existing running image.

  3. There is an experiment on modules called Metalo:

      https://github.com/guillep/metalo

    According to what Stef wrote on Discord in #bootstrap channel:

      "The idea is that we want to be able to edit dynamically module (package 
+ namespace) without for example having to 
       remove a full hierarchy of classes when just we change an import 
statement in a module.
       Our goal is to split Smalltalk globals into multiple namespaces one per 
module."
      "Metalo includes also supports for editing module, bootstrapping a kernel 
with modules and new class definitions."

     Dont know about its state.
 
  4. There is a tool called "Candle" to help you bootstrapping own images:

       https://github.com/carolahp/pharo/tree/candle

     so one could bootstrap an own kernel with namespace support or other.


Bye
T.




> Gesendet: Montag, 23. Dezember 2019 um 01:18 Uhr
> Von: "Esteban Maringolo" <emaring...@gmail.com>
> An: "Any question about pharo is welcome" <pharo-users@lists.pharo.org>
> Betreff: Re: [Pharo-users] Namespaces (was Re: Behold Pharo: The Modern 
> Smalltalk)
>
> There are two uses for namespacing:
> 1. Avoiding class name collisions between different packages
> 2. Modularization
> 
> I don't have the use cases for 2, but Torsten had an idea to support
> the dot in the class name, that'd solve the problem 1. (e.g.
> Chronology.Date and YourPackage.Date).
> 
> Esteban A. Maringolo
> 
> On Sun, Dec 22, 2019 at 8:57 AM ponyatov <dponya...@gmail.com> wrote:
> >
> > What is the modern state of namespaces support? Maybe in Pharo 8 (or 9)
> >
> > I'm going to model some generic async Smalltalk in Pharo, package-bounded
> > namespaces can save me from prefixing every class name.
> >
> >
> >
> > --
> > Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
> >
> 
>

Reply via email to