DynamicProtocols

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

DynamicProtocols

Damien Cassou-3
Hi,

DynamicProtocols are available for Squeak OmniBrowser on:

MCHttpRepository location: 'http://www.squeaksource.com/DynamicProtocols' user: '' password: ''


A dynamic protocol is a category (displayed in the 3rd pane of your
browser) whose content is computed dynamically based on the class
currently selected. If a dynamic protocol is empty then it is not shown.
Here is a small list of dynamic protocols currently implemented:

- HaltUsage: displays all methods containing a call to #halt.
- Override: contains methods that are defined in the superclasses and
redefined in the current class.
- RecentlyModified: contains recently modified methods (< 5 minutes).
- SuperSend: displays methods sending a message to 'super'

Thanks to Marcus Denker for his help in some protocols.

Future work:
-------------

- Listen to your feedback (on top of my todo list)
- Should work for other browsers (not sure if this is easy, maybe using
services)
- Implements new dynamic protocols (give me ideas)
- Add a GUI to select the dynamic protocols you want to activate (maybe
through Preferences)


Waiting for your feedback now


Bye

--
Damien


Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

Diego Gomez Deck
Great!

> Here is a small list of dynamic protocols currently implemented:
>
> - HaltUsage: displays all methods containing a call to #halt.
> - Override: contains methods that are defined in the superclasses and
> redefined in the current class.
> - RecentlyModified: contains recently modified methods (< 5 minutes).
> - SuperSend: displays methods sending a message to 'super'

More ideas:

      * UncommentedMethods: Methods with the comment missing.
      * MethodsToSee: Methods with #todo, #fixThis or #bob.
      * LargeMethods: More than 20 lines of code.
      * DuplicatedMethods: Same implementation in the superclass
        hierarchy
      * MethodsWithSlips: Transcript, #halt, etc
      * MethodsToImplement: Methods with #subclassResponsibility in the
        superclass but not yet implemented.
      * LastChanged: The list of N last changed methods.

(from http://minnow.cc.gatech.edu/squeak/2419 )

Cheers,

-- Diego



Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

Daniel Vainsencher-2
In reply to this post by Damien Cassou-3
Look at/integrate/complete the TraitsBrowser virtual categories:
- Required methods (MethodsToImplement as described by Diego, but also
includes methods self sent but never implemented and more)
- Methods from Traits
- ... if you're interested, look at the SCG papers and ask about the
existing code.

Considering that we have Traits in the image, and the tools in the image
hardly support them at all, this would be pretty important. In the
current state, there is probably a constant slow "leaking" code
duplication, as people update methods inherited from Traits, when they
should have changed the Trait, but didn't know it.

Daniel

Damien Cassou wrote:

> Hi,
>
> DynamicProtocols are available for Squeak OmniBrowser on:
>
> MCHttpRepository location:
> 'http://www.squeaksource.com/DynamicProtocols' user: '' password: ''
>
>
> A dynamic protocol is a category (displayed in the 3rd pane of your
> browser) whose content is computed dynamically based on the class
> currently selected. If a dynamic protocol is empty then it is not
> shown. Here is a small list of dynamic protocols currently implemented:
>
> - HaltUsage: displays all methods containing a call to #halt.
> - Override: contains methods that are defined in the superclasses and
> redefined in the current class.
> - RecentlyModified: contains recently modified methods (< 5 minutes).
> - SuperSend: displays methods sending a message to 'super'
>
> Thanks to Marcus Denker for his help in some protocols.
>
> Future work:
> -------------
>
> - Listen to your feedback (on top of my todo list)
> - Should work for other browsers (not sure if this is easy, maybe
> using services)
> - Implements new dynamic protocols (give me ideas)
> - Add a GUI to select the dynamic protocols you want to activate
> (maybe through Preferences)
>
>
> Waiting for your feedback now
>
>
> Bye
>


Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

Damien Cassou-3
In reply to this post by Damien Cassou-3
Diego Gomez Deck a écrit :
> Great!
>

Thank you. Hope you will use it.

> More ideas:
>
>       * UncommentedMethods: Methods with the comment missing.
>

Done

>       * MethodsToSee: Methods with #todo, #fixThis or #bob.
>

Do you mean a call to this methods, a call to #flag: with this
parameters or a pragma ? Maybe all of them. But there is no
'standard' so I don't really see what I can use.

>       * LargeMethods: More than 20 lines of code.
>

Done

>       * DuplicatedMethods: Same implementation in the superclass
>         hierarchy
>

Done

>       * MethodsWithSlips: Transcript, #halt, etc
>

Already done for #halt.

>       * MethodsToImplement: Methods with
#subclassResponsibility in the
>         superclass but not yet implemented.
>

I would like to have the full 'required' protocol discussed in
'A Browser For Incremental Programming'
by Nathanael Shärli and Andrew P. Black. If someone wants to
do it then it would be cool (the package
on squeak source can be written by everybody).



Cet été, pensez aux cartes postales de laposte.net !



Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

Damien Cassou-3
In reply to this post by Damien Cassou-3
> Look at/integrate/complete the TraitsBrowser virtual categories:
> - Required methods (MethodsToImplement as described by
Diego, but also
> includes methods self sent but never implemented and more)


The idea of DynamicProtocols come from 'A Browser For
Incremental Programming' by Nathanael Shärli and Andrew P.
Black. I already read this paper and really would like this
'required' protocol.


> - Methods from Traits


good idea


> - ... if you're interested, look at the SCG papers and ask
about the
> existing code.


I already read the paper two time. But the description of the
algorithm is uncomplete in the paper and I was not able to
implement it.

Everybody is free to implement new protocols and publish them.
This is really easy.

--
Damien Cassou

Cet été, pensez aux cartes postales de laposte.net !



Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

Daniel Vainsencher-2
I miscommunicated -

The "required methods" computation already exists, and is either in the
image already or in a SqS package called TraitsOmniBrowser. Last summer,
while I was doing an internship at Andrew Black's, we took an initial
implementation done by Nathanael and adapted it for real time
computation in a live OmniBrowser. The TraitsOmniBrowser contains the
OB-derived browser that shows that category.

The real-time part requires a little extra integration with the OB which
is demonstrated there, but adapting this to DynamicProtocols is probably
not very hard, just not in my focus. If someone is interested in getting
this code in use, though, I'll be glad to help with questions.

Daniel

damien.cassou wrote:

>> Look at/integrate/complete the TraitsBrowser virtual categories:
>> - Required methods (MethodsToImplement as described by
>>    
> Diego, but also
>  
>> includes methods self sent but never implemented and more)
>>    
>
>
> The idea of DynamicProtocols come from 'A Browser For
> Incremental Programming' by Nathanael Shärli and Andrew P.
> Black. I already read this paper and really would like this
> 'required' protocol.
>
>
>  
>> - Methods from Traits
>>    
>
>
> good idea
>
>
>  
>> - ... if you're interested, look at the SCG papers and ask
>>    
> about the
>  
>> existing code.
>>    
>
>
> I already read the paper two time. But the description of the
> algorithm is uncomplete in the paper and I was not able to
> implement it.
>
> Everybody is free to implement new protocols and publish them.
> This is really easy.
>
>  


Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

Damien Cassou-3
In reply to this post by Damien Cassou-3
> I miscommunicated -
>
> The "required methods" computation already exists, and is
either in the
> image already or in a SqS package called TraitsOmniBrowser.
Last summer,
> while I was doing an internship at Andrew Black's, we took
an initial
> implementation done by Nathanael and adapted it for real time
> computation in a live OmniBrowser. The TraitsOmniBrowser
contains the
> OB-derived browser that shows that category.
>
> The real-time part requires a little extra integration with
the OB which
> is demonstrated there, but adapting this to DynamicProtocols
is probably
> not very hard, just not in my focus. If someone is
interested in getting
> this code in use, though, I'll be glad to help with questions.


Oh, thank you for this. I will had a look.

--
Damien Cassou

Cet été, pensez aux cartes postales de laposte.net !



Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

stéphane ducasse-2
In reply to this post by Damien Cassou-3
this is cool, keep pushing. We need to improve our tools.
We should be able to specify what we want to see :)

Then I would love to have a recategoriser or automatic method  
categorization (improving the one diego did).

Stef


On 7 sept. 06, at 17:54, Damien Cassou wrote:

> Hi,
>
> DynamicProtocols are available for Squeak OmniBrowser on:
>
> MCHttpRepository location: 'http://www.squeaksource.com/ 
> DynamicProtocols' user: '' password: ''
>
>
> A dynamic protocol is a category (displayed in the 3rd pane of your  
> browser) whose content is computed dynamically based on the class  
> currently selected. If a dynamic protocol is empty then it is not  
> shown. Here is a small list of dynamic protocols currently  
> implemented:
>
> - HaltUsage: displays all methods containing a call to #halt.
> - Override: contains methods that are defined in the superclasses  
> and redefined in the current class.
> - RecentlyModified: contains recently modified methods (< 5 minutes).
> - SuperSend: displays methods sending a message to 'super'
>
> Thanks to Marcus Denker for his help in some protocols.
>
> Future work:
> -------------
>
> - Listen to your feedback (on top of my todo list)
> - Should work for other browsers (not sure if this is easy, maybe  
> using services)
> - Implements new dynamic protocols (give me ideas)
> - Add a GUI to select the dynamic protocols you want to activate  
> (maybe through Preferences)
>
>
> Waiting for your feedback now
>
>
> Bye
>
> --
> Damien
>
>


Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

stéphane ducasse-2
In reply to this post by Damien Cassou-3
It should be in the PhD of nathanael

Stef

> I already read the paper two time. But the description of the
> algorithm is uncomplete in the paper and I was not able to
> implement it.
>
> Everybody is free to implement new protocols and publish them.
> This is really easy.
>
> --
> Damien Cassou
>
> Cet été, pensez aux cartes postales de laposte.net !
>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

Damien Cassou-3
In reply to this post by stéphane ducasse-2
stéphane ducasse a écrit :
> this is cool, keep pushing. We need to improve our tools.
> We should be able to specify what we want to see :)

I would advise you to install this tool and tell me what you would like,
what doesn't work...

Looking for users and feedback


--
Damien

Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

Diego Fernández
In reply to this post by stéphane ducasse-2
Cool! (and Damien thanks for the package "ImageForDevelopers" is very useful)

On 9/7/06, stéphane ducasse <[hidden email]> wrote:
> Then I would love to have a recategoriser or automatic method
> categorization (improving the one diego did).

I have uploaded a new version of the automatic method categorizer to
Squeaksource and SquakMap.
The new version works with the default system browser, the refactoring
browser and omnibrowser :)
So each time that you save a method... it's auto recategorized :)

Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

Raymond Asselin
Le 2006/09/11, Diego Fernandez <[hidden email]> écrivait :

>Cool! (and Damien thanks for the package "ImageForDevelopers" is
very useful)
>
>On 9/7/06, stéphane ducasse <[hidden email]> wrote:
>> Then I would love to have a recategoriser or automatic method
>> categorization (improving the one diego did).
>
>I have uploaded a new version of the automatic method categorizer
to
>Squeaksource and SquakMap.
>The new version works with the default system browser, the
refactoring
>browser and omnibrowser :)
>So each time that you save a method... it's auto recategorized :)
Hi Diego,
    a big thank for this,
may I use it in 3.8 or is it just for 3.9 ? It seems to be only for 3.9
(automatic version) if I believe what is written in the comments of
SqueakMap.

Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

stephane ducasse-2
Cool


>> Cool! (and Damien thanks for the package "ImageForDevelopers" is
> very useful)
>>
>> On 9/7/06, stéphane ducasse <[hidden email]> wrote:
>>> Then I would love to have a recategoriser or automatic method
>>> categorization (improving the one diego did).
>>
>> I have uploaded a new version of the automatic method categorizer
> to
>> Squeaksource and SquakMap.
>> The new version works with the default system browser, the
> refactoring
>> browser and omnibrowser :)
>> So each time that you save a method... it's auto recategorized :)
> Hi Diego,
>     a big thank for this,
> may I use it in 3.8 or is it just for 3.9 ? It seems to be only for  
> 3.9
> (automatic version) if I believe what is written in the comments of
> SqueakMap.
>


Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

Diego Fernández
In reply to this post by Diego Fernández
The MC package depends on the services framework (included in 3.9) so
it doesn't work "as is" in 3.8.
The services system category (AutomaticMethodCategorizer-Services) can
be removed, it's not a "core" part.
The rest doesn't use any special feature of 3.9, so maybe it works in
3.8, I didn't test it.

I will try it in 3.8 this weekend, until them.. if you want to use in
3.8 you have to do some handwork.

On 9/11/06, Raymond Asselin <[hidden email]> wrote:

> Le 2006/09/11, Diego Fernandez <[hidden email]> écrivait :
>
> >Cool! (and Damien thanks for the package "ImageForDevelopers" is
> very useful)
> >
> >On 9/7/06, stéphane ducasse <[hidden email]> wrote:
> >> Then I would love to have a recategoriser or automatic method
> >> categorization (improving the one diego did).
> >
> >I have uploaded a new version of the automatic method categorizer
> to
> >Squeaksource and SquakMap.
> >The new version works with the default system browser, the
> refactoring
> >browser and omnibrowser :)
> >So each time that you save a method... it's auto recategorized :)
> Hi Diego,
>     a big thank for this,
> may I use it in 3.8 or is it just for 3.9 ? It seems to be only for 3.9
> (automatic version) if I believe what is written in the comments of
> SqueakMap.
>
>

Reply | Threaded
Open this post in threaded view
|

Re: DynamicProtocols

[ Luc Fabresse ]
In reply to this post by Damien Cassou-3
Hi,

  A small bug with DynamicProtocol and OB.
  Select a dynamic protocol and use the mouse button to choose the
"browse" menu entry. It will crash.

Luc.

Damien Cassou a écrit :

> Hi,
>
> DynamicProtocols are available for Squeak OmniBrowser on:
>
> MCHttpRepository location:
> 'http://www.squeaksource.com/DynamicProtocols' user: '' password: ''
>
>
> A dynamic protocol is a category (displayed in the 3rd pane of your
> browser) whose content is computed dynamically based on the class
> currently selected. If a dynamic protocol is empty then it is not shown.
> Here is a small list of dynamic protocols currently implemented:
>
> - HaltUsage: displays all methods containing a call to #halt.
> - Override: contains methods that are defined in the superclasses and
> redefined in the current class.
> - RecentlyModified: contains recently modified methods (< 5 minutes).
> - SuperSend: displays methods sending a message to 'super'
>
> Thanks to Marcus Denker for his help in some protocols.
>
> Future work:
> -------------
>
> - Listen to your feedback (on top of my todo list)
> - Should work for other browsers (not sure if this is easy, maybe using
> services)
> - Implements new dynamic protocols (give me ideas)
> - Add a GUI to select the dynamic protocols you want to activate (maybe
> through Preferences)
>
>
> Waiting for your feedback now
>
>
> Bye
>