Hi Marcus,




On Sat, Nov 2, 2013 at 7:17 AM, Marcus Denker <marcus.denker@inria.fr> wrote:

On 01 Nov 2013, at 22:49, Tudor Girba <tudor@tudorgirba.com> wrote:

> Hi,
>
> I am trying to set the GTInspector as the default explorer.
>
> However, I see that the inspector registration has changed. It seems to me that registering to #objectExplorer has no effect. Instead, we are now sending #inspect: and #explore to the #inspector:
>
> Object>>explore
> � � � ^Smalltalk tools inspector explore: self
>
> I do not quite see the rationale behind the current design.

With the new inspector, the inspector and explorer are the same tool. If you open a normal inspector, you can even turn it into an explorer with a keyboard shortcut.
Therefore it makes conceptually no sense to have a #objectExplorer tool. There was a basicInspector in the tools, too, which is now gone.

Explorers are just special inspectors, like the special inspectors for CompiledMethod or Dictionary, just available for all classes.

I agree that the explorer is like the inspector. But, if now they are the same, I do not see why we need to distinguish between them. I would leave only #inspect (no more #explore) around.

However, a stripped down basic inspector can still be useful as a fallback solution in case the fancy one fails given that it relies on much more widgets that can cause exceptions. For example, try this in a fresh Pharo 3.0 image:

� � �Smalltalk tools explore

You will get an exception. Having a basic inspector around is useful in this case.

As it is now, the basic inspector is wrapped in a more complex widget which can induce errors in the future, and we get stuck. So, all in all, I argue that we need a basic inspector mapped on a more complicated keyboard shortcut.

> Furthermore, Smalltalk tools still has an entry for #objectExplorer:
> (Smalltalk tools instVarNamed: #tools) at: #objectExplorer ==> ObjectExplorer
>
It should not. I thought I removed it. ObjectExplorer should be removed eventually (it is now only used for the PointerExplorer, which is a subclass).

Yes, I know. I was just pointing this out to show that I looked and that I was not sure of the current state.
> Anyway, I added #inspect: and #explore: to GTInspector class, and I registered it as the #inspector. It seems fine, but the problem now is that the default Spec-based debugger relies on a #inspectorSpec method in the inspector class.
>
> This is highly problematic and I am stuck. I think we should not introduce Spec-specific requirements at such a basic level.
>

It should normally not �leak� that the inspector is implemented with Spec, you should be able to replace the inspector (via Smalltalk tools) with another one.
So this should be checked and fixed.

Ok.
But it is clear that we can not have all the tools �in a crap version in the kernel� and �that version that everyone uses�. This Philosophy is *wrong* just the same
for tools as it is for libraries.

+100. I completely agree that the core needs powerful tools. That is why I actually argued for Glamour in that base image a long time ago. I still want to make that argument, but this is a discussion for another time :).

Doru

� � � � Marcus





--
www.tudorgirba.com

"Every thing has its own flow"