Package Browser (AKA 6-paned Browser) and Pharo package organization

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Package Browser (AKA 6-paned Browser) and Pharo package organization

Stephen Pope

Hello friends,

I’m getting started with Pharo after decades using VisualWorks and Squeak; it’s pretty wonderful what you all have assembled!

My question is related to what we used to teach as the first law of software reuse: “You can’t reuse it if you can’t find it,” and the related software engineering "principle of least astonishment."

When I fire up Pharo, the system browser presents me with a list of several hundred categories (from AST to Zodiac) in a system with over 8000 classes.  The system categorization makes no sense since I don’t know the naming conventions and so many packages have cute but quite non-descriptive names (Zinc? Metacello? Calypso?).

In Smalltalk-80, the class category names were organized as a 2-level hierarchy where the top-level were items such as Magnitudes, Collections, Streams, Graphics, Text, System, Tools, Files, etc.  This made it easy to find (e.g.,) the browser source code by looking in the Tools package for the class category Tools-Browser.  Even packages with cute names (like my own “Siren”), were categorized for ease of finding; e.g., the Siren classes were in class categories like Music-Events and Music-Magnitudes.

Parsing the class category names on the first instance of $- made it possible to build 6-paned Browsers (called package pane browser in Squeak).  (We acknowledged that this violates the “zero/one/infinity" rule.) Is something like this available for Pharo? I looked through the Calypso browser code and it’s so over-engineered (IMHO) that it’d take me several days to figure out how to implement this (it was about 1.5 pages of code in Smalltalk-80).

If Pharo had a browser that scaled better and a reorganization/simplification of the class categories to use names that were more self-explanatory, it would be *much* easier for new users (in fact, for all users) to find their way around.

I apologize for the stepping on toes...

Stephen Pope


--

                    Stephen Travis Pope   Santa Barbara, California, USA    

Reply | Threaded
Open this post in threaded view
|

Re: Package Browser (AKA 6-paned Browser) and Pharo package organization

Noury Bouraqadi-2
Hi Stefen,

Welcome to Pharo :-) 

Here are 2 tips that whould help you find your way :
- Spotter (open it with Shift+Enter). It searches the whole image for names (classes, methods...) that include the given substring
- Finder (Menu Tools) : Allows various kinds of searches. Searching with examples does allow finding a message that provides a given outcome given a receiver, and parameters.

 Please note that the image does include only a small subset of what you can do with Pharo. There's much more out there. One way to discover cool stuff, is to visit this catalog:

Cheers,
Noury

On 30 Apr 2020, at 21:00, [hidden email] wrote:


Hello friends,

I’m getting started with Pharo after decades using VisualWorks and Squeak; it’s pretty wonderful what you all have assembled!

My question is related to what we used to teach as the first law of software reuse: “You can’t reuse it if you can’t find it,” and the related software engineering "principle of least astonishment."

When I fire up Pharo, the system browser presents me with a list of several hundred categories (from AST to Zodiac) in a system with over 8000 classes.  The system categorization makes no sense since I don’t know the naming conventions and so many packages have cute but quite non-descriptive names (Zinc? Metacello? Calypso?).

In Smalltalk-80, the class category names were organized as a 2-level hierarchy where the top-level were items such as Magnitudes, Collections, Streams, Graphics, Text, System, Tools, Files, etc.  This made it easy to find (e.g.,) the browser source code by looking in the Tools package for the class category Tools-Browser.  Even packages with cute names (like my own “Siren”), were categorized for ease of finding; e.g., the Siren classes were in class categories like Music-Events and Music-Magnitudes.

Parsing the class category names on the first instance of $- made it possible to build 6-paned Browsers (called package pane browser in Squeak).  (We acknowledged that this violates the “zero/one/infinity" rule.) Is something like this available for Pharo? I looked through the Calypso browser code and it’s so over-engineered (IMHO) that it’d take me several days to figure out how to implement this (it was about 1.5 pages of code in Smalltalk-80).

If Pharo had a browser that scaled better and a reorganization/simplification of the class categories to use names that were more self-explanatory, it would be *much* easier for new users (in fact, for all users) to find their way around.

I apologize for the stepping on toes...

Stephen Pope


--

                    Stephen Travis Pope   Santa Barbara, California, USA    
 <pastedGraphic.tiff>         http://HeavenEverywhere.com        http://FASTLabInc.com

--




Reply | Threaded
Open this post in threaded view
|

Re: Package Browser (AKA 6-paned Browser) and Pharo package organization

Sven Van Caekenberghe-2
http://books.pharo.org
https://github.com/topics/pharo

> On 1 May 2020, at 14:37, Noury Bouraqadi <[hidden email]> wrote:
>
> Hi Stefen,
>
> Welcome to Pharo :-)
>
> Here are 2 tips that whould help you find your way :
> - Spotter (open it with Shift+Enter). It searches the whole image for names (classes, methods...) that include the given substring
> - Finder (Menu Tools) : Allows various kinds of searches. Searching with examples does allow finding a message that provides a given outcome given a receiver, and parameters.
>
>  Please note that the image does include only a small subset of what you can do with Pharo. There's much more out there. One way to discover cool stuff, is to visit this catalog:
> https://github.com/pharo-open-documentation/awesome-pharo
>
> Cheers,
> Noury
>
>> On 30 Apr 2020, at 21:00, [hidden email] wrote:
>>
>>
>> Hello friends,
>>
>> I’m getting started with Pharo after decades using VisualWorks and Squeak; it’s pretty wonderful what you all have assembled!
>>
>> My question is related to what we used to teach as the first law of software reuse: “You can’t reuse it if you can’t find it,” and the related software engineering "principle of least astonishment."
>>
>> When I fire up Pharo, the system browser presents me with a list of several hundred categories (from AST to Zodiac) in a system with over 8000 classes.  The system categorization makes no sense since I don’t know the naming conventions and so many packages have cute but quite non-descriptive names (Zinc? Metacello? Calypso?).
>>
>> In Smalltalk-80, the class category names were organized as a 2-level hierarchy where the top-level were items such as Magnitudes, Collections, Streams, Graphics, Text, System, Tools, Files, etc.  This made it easy to find (e.g.,) the browser source code by looking in the Tools package for the class category Tools-Browser.  Even packages with cute names (like my own “Siren”), were categorized for ease of finding; e.g., the Siren classes were in class categories like Music-Events and Music-Magnitudes.
>>
>> Parsing the class category names on the first instance of $- made it possible to build 6-paned Browsers (called package pane browser in Squeak).  (We acknowledged that this violates the “zero/one/infinity" rule.) Is something like this available for Pharo? I looked through the Calypso browser code and it’s so over-engineered (IMHO) that it’d take me several days to figure out how to implement this (it was about 1.5 pages of code in Smalltalk-80).
>>
>> If Pharo had a browser that scaled better and a reorganization/simplification of the class categories to use names that were more self-explanatory, it would be *much* easier for new users (in fact, for all users) to find their way around.
>>
>> I apologize for the stepping on toes...
>>
>> Stephen Pope
>>
>>
>> --
>>
>>                     Stephen Travis Pope   Santa Barbara, California, USA    
>>  <pastedGraphic.tiff>         http://HeavenEverywhere.com        http://FASTLabInc.com
>>                        https://vimeo.com/user19434036/videos      http://heaveneverywhere.com/Reflections
>>
>> --
>>
>>
>>
>


Reply | Threaded
Open this post in threaded view
|

Re: Package Browser (AKA 6-paned Browser) and Pharo package organization

Sean P. DeNigris
Administrator
In reply to this post by Stephen Pope
Stephen Pope wrote
> When I fire up Pharo, the system browser presents me with a list of
> several hundred categories (from AST to Zodiac) in a system with over 8000
> classes.  The system categorization makes no sense since I don’t know the
> naming conventions and so many packages have cute but quite
> non-descriptive names (Zinc? Metacello? Calypso?).

Even after using Pharo (and this probably applies somewhat to current Squeak
too, but I haven't opened an image in a while so forgive me if I'm wrong)
for over a decade, I still feel your pain on this issue! The problem IMHO is
the ugly Monticello SCM hack hijacking *logical* categories to use for
packaging, which is an orthogonal concern. Here is a a fuller description
from a previous thread [1]:


Sean P. DeNigris wrote

>> we have overloaded system categories to package code for SCM. System
>> categories should be tags (preferably multiple allowed)
>> which offer a logical view of the system. Packages, the POV we show now,
>> are orthogonal and much less useful for users.
> (edited)
> and another:
>> I feel more and more that the standard "Package" pane is only useful
>> for... packaging, and when one takes off the dependency management hat
>> and
>> puts the user hat on (i.e. most of the time), what you really want there
>> is a logical view of the system. So I see three use cases:
> - Logical view of the system - I guess this was the original intention of
> Categories, but has been hijacked by Monticello
> - By project - which, as you just showed, we have now, yay!
> - By package - the least useful, but primary (up til now), view
> (edited)
> and regarding Nautilus' tree package pane (when it first arrived):
> I noticed that right now, separate packages within the same project are
> not
> collapsed. E.g. if I have MyProject-Core and MyProject-Platform, they will
> be siblings in the tree, instead of both under MyProject. It seems like it
> would be more useful to have
> - MyProject
>   - Core
>   - Platform
> in the tree
>
>> it seems that the tree is primarily about chunking information into
>> manageable pieces.
>
> A primary difficulty here is that packages are often divided for reasons
> that have nothing to do with the domain model, e.g. the ubiquitous
> MyPackage-Platform, which is an artifact of Metacello that is not all that
> relevant to a user wanting to understand the system.
>
> From the naive user perspective, if I'm exploring from the top level of
> the
> system, I want to see things like:
> - CodeImport
> - Collections
> - Compiler
>
> From this perspective, the 14 entries for Collections, multiplied by a few
> dozen top-level categories make the list unwieldy and only marginally less
> daunting than the flattened list we used to have (see
> http://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two )

1.
http://forum.world.st/Why-can-t-we-use-in-protocol-for-package-extension-tp5073597p5073663.html



-----
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: Package Browser (AKA 6-paned Browser) and Pharo package organization

Stephen Pope
In reply to this post by Stephen Pope

As a side note, the Cuis fork of Squeak simplifies and reorganizes the core system categories in the style of Smalltalk-80, see the screen shot below.

stp
 



--

                    Stephen Travis Pope   Santa Barbara, California, USA    

On Apr 30, 2020, at 12:00 PM, [hidden email] wrote:


Hello friends,

I’m getting started with Pharo after decades using VisualWorks and Squeak; it’s pretty wonderful what you all have assembled!

My question is related to what we used to teach as the first law of software reuse: “You can’t reuse it if you can’t find it,” and the related software engineering "principle of least astonishment."

When I fire up Pharo, the system browser presents me with a list of several hundred categories (from AST to Zodiac) in a system with over 8000 classes.  The system categorization makes no sense since I don’t know the naming conventions and so many packages have cute but quite non-descriptive names (Zinc? Metacello? Calypso?).

In Smalltalk-80, the class category names were organized as a 2-level hierarchy where the top-level were items such as Magnitudes, Collections, Streams, Graphics, Text, System, Tools, Files, etc.  This made it easy to find (e.g.,) the browser source code by looking in the Tools package for the class category Tools-Browser.  Even packages with cute names (like my own “Siren”), were categorized for ease of finding; e.g., the Siren classes were in class categories like Music-Events and Music-Magnitudes.

Parsing the class category names on the first instance of $- made it possible to build 6-paned Browsers (called package pane browser in Squeak).  (We acknowledged that this violates the “zero/one/infinity" rule.) Is something like this available for Pharo? I looked through the Calypso browser code and it’s so over-engineered (IMHO) that it’d take me several days to figure out how to implement this (it was about 1.5 pages of code in Smalltalk-80).

If Pharo had a browser that scaled better and a reorganization/simplification of the class categories to use names that were more self-explanatory, it would be *much* easier for new users (in fact, for all users) to find their way around.

I apologize for the stepping on toes...

Stephen Pope


--

                    Stephen Travis Pope   Santa Barbara, California, USA    
 <pastedGraphic.tiff>         http://HeavenEverywhere.com        http://FASTLabInc.com

--




Reply | Threaded
Open this post in threaded view
|

Re: Package Browser (AKA 6-paned Browser) and Pharo package organization

ducasse
In reply to this post by Noury Bouraqadi-2
In the past when hovering the package list, we could see the package mini description and it would be good to resurrect it. 

Now stephen I suggest you try Pharo and see because many times when I reopened VW it looks like my fingers
were cut. Because I could not go super fast navigation. 

Pharo is far from perfect but this is what we have and we take care of it. Now if you give us some thousands of Euros 
you will not recognise it :). 

So learn and have fun and you can improve Pharo with us. 
S. 


Hi Stefen,

Welcome to Pharo :-) 

Here are 2 tips that whould help you find your way :
- Spotter (open it with Shift+Enter). It searches the whole image for names (classes, methods...) that include the given substring
- Finder (Menu Tools) : Allows various kinds of searches. Searching with examples does allow finding a message that provides a given outcome given a receiver, and parameters.

 Please note that the image does include only a small subset of what you can do with Pharo. There's much more out there. One way to discover cool stuff, is to visit this catalog:

Cheers,
Noury

On 30 Apr 2020, at 21:00, [hidden email] wrote:


Hello friends,

I’m getting started with Pharo after decades using VisualWorks and Squeak; it’s pretty wonderful what you all have assembled!

My question is related to what we used to teach as the first law of software reuse: “You can’t reuse it if you can’t find it,” and the related software engineering "principle of least astonishment."

When I fire up Pharo, the system browser presents me with a list of several hundred categories (from AST to Zodiac) in a system with over 8000 classes.  The system categorization makes no sense since I don’t know the naming conventions and so many packages have cute but quite non-descriptive names (Zinc? Metacello? Calypso?).

In Smalltalk-80, the class category names were organized as a 2-level hierarchy where the top-level were items such as Magnitudes, Collections, Streams, Graphics, Text, System, Tools, Files, etc.  This made it easy to find (e.g.,) the browser source code by looking in the Tools package for the class category Tools-Browser.  Even packages with cute names (like my own “Siren”), were categorized for ease of finding; e.g., the Siren classes were in class categories like Music-Events and Music-Magnitudes.

Parsing the class category names on the first instance of $- made it possible to build 6-paned Browsers (called package pane browser in Squeak).  (We acknowledged that this violates the “zero/one/infinity" rule.) Is something like this available for Pharo? I looked through the Calypso browser code and it’s so over-engineered (IMHO) that it’d take me several days to figure out how to implement this (it was about 1.5 pages of code in Smalltalk-80).

If Pharo had a browser that scaled better and a reorganization/simplification of the class categories to use names that were more self-explanatory, it would be *much* easier for new users (in fact, for all users) to find their way around.

I apologize for the stepping on toes...

Stephen Pope


--

                    Stephen Travis Pope   Santa Barbara, California, USA    
 <pastedGraphic.tiff>         http://HeavenEverywhere.com        http://FASTLabInc.com

--