[ANN] Documentation for Omnibrowser

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

[ANN] Documentation for Omnibrowser

Bergel, Alexandre
Dear Squeakers,

Our paper on Omnibrowser has been published finally.
http://www.iam.unibe.ch/~scg/Archive/Papers/Berg07cOmnibrowser.pdf

Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.software-artist.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Damien Cassou-3
Very cool. Good work.

2007/4/24, Bergel, Alexandre <[hidden email]>:

> Dear Squeakers,
>
> Our paper on Omnibrowser has been published finally.
> http://www.iam.unibe.ch/~scg/Archive/Papers/Berg07cOmnibrowser.pdf
>
> Cheers,
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.software-artist.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
>


--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Brad Fuller-3
In reply to this post by Bergel, Alexandre
Bergel, Alexandre wrote:
> Dear Squeakers,
>
> Our paper on Omnibrowser has been published finally.
> http://www.iam.unibe.ch/~scg/Archive/Papers/Berg07cOmnibrowser.pdf 

Thanks for this, Alexandre. I'm reading the paper and I'd also like to
install the Omnibrowser on squeakmap but it doesn't want to load in 3.9.
Does it not work for 3.9?

--
brad fuller
www.bradfuller.com
+1 (408) 799-6124


Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Colin Putney

On Apr 25, 2007, at 3:59 PM, Brad Fuller wrote:

> Thanks for this, Alexandre. I'm reading the paper and I'd also like to
> install the Omnibrowser on squeakmap but it doesn't want to load in  
> 3.9.
> Does it not work for 3.9?

OmniBrowser is included in Squeak 3.9, so you don't have to load  
anything. In the open menu, select 'Image Browser.'

Colin

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Brad Fuller-3
Colin Putney wrote:
>
> On Apr 25, 2007, at 3:59 PM, Brad Fuller wrote:
>
>> Thanks for this, Alexandre. I'm reading the paper and I'd also like to
>> install the Omnibrowser on squeakmap but it doesn't want to load in 3.9.
>> Does it not work for 3.9?
>
> OmniBrowser is included in Squeak 3.9, so you don't have to load
> anything. In the open menu, select 'Image Browser.'
Gee.. that makes  a log of sense ;-)  Why not name it OmniBrowser?
Because it's now a framework?

And, why does most class browsers you bring up have their title as
"System Browser"? I realize they are browsing the "system", but don't
you think it ought to reflect what you just selected in the menu? (not
specially asking you, Colin). So, for instance, to get the
"OmniBrowser", you select the "Image Browser" in the menu and the
resulting application window title is "System Browser". Hmm... that's
gotta be confusing. Application naming should be consistent throughout
the environment, don't you think?

--
brad fuller
www.bradfuller.com
+1 (408) 799-6124


Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Damien Cassou-3
In reply to this post by Brad Fuller-3
Hi,

2007/4/26, Brad Fuller <[hidden email]>:
> Thanks for this, Alexandre. I'm reading the paper and I'd also like to
> install the Omnibrowser on squeakmap but it doesn't want to load in 3.9.
> Does it not work for 3.9?

OmniBrowser is installed and updated in the squeak-dev image:
http://damien.cassou.free.fr/squeak-dev/

For an image based on 3.9, you have version 95-2.
Newer versions are in folder beta/ and are based on Squeak 3.10-alpha.

OmniBrowser has changed a lot between the original 3.9 release and the
version on the squeak-dev image. For example Actors and Actions are
not used anymore. Commands replace them.

With the squeak-dev image, you'll also get syntax-highlighting, code
completion, refactorings...

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Derek O'Connell-2
Thanks for providing this document. I still wading my way through it
but it's nice to have such in-depth information. Thanks also to Damien
for including it in squeak-dev, which is shaping up very nicely!
However, I have a problem which may or may not be related but it
seemed to appear after I installed OB. On opening "image browser" or
indeed "class browser" I get "MessageNotUnderstood:
Array>>similarSpeciesInstance:". As far as I can tell
"similarSpeciesInstance:" was added some time ago but I suspect also
that other things I have installed may have removed/over-written it.
Any tips on how this problem has arisen and what to do about it?

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Damien Cassou-3
2007/5/3, Derek O'Connell <[hidden email]>:
> However, I have a problem which may or may not be related but it
> seemed to appear after I installed OB. On opening "image browser" or
> indeed "class browser" I get "MessageNotUnderstood:
> Array>>similarSpeciesInstance:". As far as I can tell
> "similarSpeciesInstance:" was added some time ago but I suspect also
> that other things I have installed may have removed/over-written it.
> Any tips on how this problem has arisen and what to do about it?

Can you give more information?

- What is your image?
- How did you installed OmniBrowser?
- Why did you installed OmniBrowser?

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Derek O'Connell-2
The original image is squeak-dev 95-2 updated a few times, so I did
not install OB but simply updated it along with other packages. Have
to admit to a bit of confusion since the Package Universe Browser
shows the following installed (and the fact that until this doc was
posted I ignored OB altogether):

OmniBrowser 0.337
OmniBrowser-Full 0.7
OmniBrowser-Morphic 0.5
OmniBrowser-Standard 0.183
ShoutOmniBrowser tween.5

Things I may actually have installed include: null, DuoSystemBrowser,
VPVideoMorph, MultiColumn Lists, OSProcess, RIO, GraphViz, FSM,
Connectors... I think that's it :-0

Happy to help you track down what has happened but since my Squeak/ST
experience is patchy a bit of hand-holding will be needed.

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Damien Cassou-3
2007/5/3, Derek O'Connell <[hidden email]>:

> The original image is squeak-dev 95-2 updated a few times, so I did
> not install OB but simply updated it along with other packages. Have
> to admit to a bit of confusion since the Package Universe Browser
> shows the following installed (and the fact that until this doc was
> posted I ignored OB altogether):
>
> OmniBrowser 0.337
> OmniBrowser-Full 0.7
> OmniBrowser-Morphic 0.5
> OmniBrowser-Standard 0.183
> ShoutOmniBrowser tween.5
>
> Things I may actually have installed include: null, DuoSystemBrowser,
> VPVideoMorph, MultiColumn Lists, OSProcess, RIO, GraphViz, FSM,
> Connectors... I think that's it :-0
>
> Happy to help you track down what has happened but since my Squeak/ST
> experience is patchy a bit of hand-holding will be needed.

I think the problem comes from the upgrades. In fact, OB has changed a
lot since 95-2 and you have different implementations loaded together
in your image.  I sent a mail about this. I would advice you to use a
more recent image (http://damien.cassou.free.fr/squeak-dev).

Even with a new image, upgrading OB is currently not a good solution.
This is because at least two installed packages (DynamicProtocols and
OmniBrowserFixes) overrides some methods. Upgrading OB would then
remove those overrides. I don't know what I can do for this :-(

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Derek O'Connell-2
Oh dear. This is one of my pet niggles about the current state of
affairs re various releases, ie, it's difficult, for me at least and I
suspect others, to choose and stick to one image. A quick search of my
top level Squeak directory gives me ~1G of image files! I'm partly to
blame since during my experiment-by-loading-everything-in-sight
sessions I will typically download and use the image that
works/supports whatever particular package I'm investigating at that
time. Consequently I have various experimental code scatter over many
of these 32 images and you can guarantee that if I export a change-set
it won't cleanly import into another image. Hopefully I will
eventually reach the skill level that allows me to fix things on the
fly in these situations but I have to say even when I reach that level
I still won't look forward to doing it because it happens too often
and would be a distraction from my whatever I'm doing (Squeak-wise).
True it would provide good learning experience but for a newbie(ish)
it sorely dents my motivation.

I not blaming you, Damien, or anyone else specifically for this but
then the multitude of ways to load stuff into Squeak or update
existing packages, not to mention the "Update" button, leaves me in
total confusion about the best way to keep current without breaking
things. Thoughts on this as well as ways to manage various unrelated
bits of code are more than welcome!

PS: Downloading another image now my rant is over ;-)

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Damien Cassou-3
2007/5/3, Derek O'Connell <[hidden email]>:

> Oh dear. This is one of my pet niggles about the current state of
> affairs re various releases, ie, it's difficult, for me at least and I
> suspect others, to choose and stick to one image. A quick search of my
> top level Squeak directory gives me ~1G of image files! I'm partly to
> blame since during my experiment-by-loading-everything-in-sight
> sessions I will typically download and use the image that
> works/supports whatever particular package I'm investigating at that
> time. Consequently I have various experimental code scatter over many
> of these 32 images and you can guarantee that if I export a change-set
> it won't cleanly import into another image. Hopefully I will
> eventually reach the skill level that allows me to fix things on the
> fly in these situations but I have to say even when I reach that level
> I still won't look forward to doing it because it happens too often
> and would be a distraction from my whatever I'm doing (Squeak-wise).
> True it would provide good learning experience but for a newbie(ish)
> it sorely dents my motivation.
>
> I not blaming you, Damien, or anyone else specifically for this but
> then the multitude of ways to load stuff into Squeak or update
> existing packages, not to mention the "Update" button, leaves me in
> total confusion about the best way to keep current without breaking
> things. Thoughts on this as well as ways to manage various unrelated
> bits of code are more than welcome!

I have exactly the same problem :-) I want to have the very last
possible versions of the tools I use. This is why I maintain
squeak-dev and squeak-web. Everyday, before starting working, I
decompress the last squeak-dev image version and I load my code in
using Monticello. I even change my image more than once a day. This is
to be sure my code can be loaded from scratch.

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Derek O'Connell-2
Interesting. Do you run your own Monticello server? It might help
others if you do a "Day in the life of..." type article.

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Damien Cassou-3
2007/5/3, Derek O'Connell <[hidden email]>:
> Interesting. Do you run your own Monticello server? It might help
> others if you do a "Day in the life of..." type article.

Why would I need another monticello server than squeaksource?

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Derek O'Connell-2
Hmmm, maybe for stuff not ready for release or not meant to be
released. Don't know, that's why I ask.

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Damien Cassou-3
2007/5/3, Derek O'Connell <[hidden email]>:
> Hmmm, maybe for stuff not ready for release or not meant to be
> released. Don't know, that's why I ask.

I don't use SqueakSource for releases. So, I commit often directly to
squeaksource without wondering if it's a release or not.

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Daniel Vainsencher-3
In reply to this post by Damien Cassou-3
Damien Cassou wrote:

> Even with a new image, upgrading OB is currently not a good solution.
> This is because at least two installed packages (DynamicProtocols and
> OmniBrowserFixes) overrides some methods.
Ouch
> Upgrading OB would then
> remove those overrides. I don't know what I can do for this :-(
>
Not include packages that include overrides?
At least for fixes, move them into their intended permanent home...

For extensions, refactor them and the base package until the override is
no longer needed.

Daniel

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Damien Cassou-3
2007/5/4, Daniel Vainsencher <[hidden email]>:

> Damien Cassou wrote:
>
> > Even with a new image, upgrading OB is currently not a good solution.
> > This is because at least two installed packages (DynamicProtocols and
> > OmniBrowserFixes) overrides some methods.
> Ouch
> > Upgrading OB would then
> > remove those overrides. I don't know what I can do for this :-(
> >
> Not include packages that include overrides?

Sometimes there is no other solution than doing an override.

> At least for fixes, move them into their intended permanent home...

This is not possible because the fixes are trait-specific and OB must
be backward compatible.


> For extensions, refactor them and the base package until the override is
> no longer needed.

I refactored DynamicProtocols so that I don't have an override for it
anymore. The code is really ugly however.

OBSystemBrowser>>addTo: root class: classSel comment: commentSel
metaclass: metaclassSel
        "Adds the dynamic protocols to the metagraph"
        |class metaclass method|
        super addTo: root class: classSel comment: commentSel metaclass: metaclassSel.
       
        "Get back the meta nodes from the root. Really ugly"
        class := root children detect: [:node | node name =  'Class'].
        metaclass := root children detect: [:node | node name =  'Metaclass'].
        method := class children anyOne children first.
       
        DynamicProtocols
                installDPOnClass: class
                metaClass: metaclass
                method: method.
        ^ root

I have exactly the same code in OBHierarchyBrowser. It can be enhanced
a bit but I think a bigger refactoring is needed in methods creating
metagraphs.

If you have time and solutions, you can commit to OmniBrowser,
OmniBrowserFixes and DynamicProtocols. They are all open to
modifications.

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Daniel Vainsencher-3

Damien Cassou wrote:


> If you have time and solutions, you can commit to OmniBrowser,
> OmniBrowserFixes and DynamicProtocols. They are all open to
> modifications.
If you help me get into it, I'll have a look and see if I can help.
Overrides are evil, and I'd like to help kill them.

> 2007/5/4, Daniel Vainsencher <[hidden email]>:
>> Damien Cassou wrote:
>>
>> > Even with a new image, upgrading OB is currently not a good solution.
>> > This is because at least two installed packages (DynamicProtocols and
>> > OmniBrowserFixes) overrides some methods.
>> Ouch
>> > Upgrading OB would then
>> > remove those overrides. I don't know what I can do for this :-(
>> >
>> Not include packages that include overrides?
>
> Sometimes there is no other solution than doing an override.
I doubt that - the world of possible solutions is so large. Do you want
to talk about a particular example?Sorry, I can't, so I have only opinions.
>
>> At least for fixes, move them into their intended permanent home...
>
> This is not possible because the fixes are trait-specific and OB must
> be backward compatible.
Why is it better to maintain the fixes in parallel to the OB mainline as
overrides, rather than as a branch of the OB?
>
>> For extensions, refactor them and the base package until the override is
>> no longer needed.
>
> I refactored DynamicProtocols so that I don't have an override for it
> anymore. The code is really ugly however.
I don't feel I really understand this example. What I see below looks
like an override. Opening a squeak-dev 118 image, OBSB does not seem to
have a method #addTo:*.

>
> OBSystemBrowser>>addTo: root class: classSel comment: commentSel
> metaclass: metaclassSel
>     "Adds the dynamic protocols to the metagraph"
>     |class metaclass method|
>     super addTo: root class: classSel comment: commentSel metaclass:
> metaclassSel.
>    
>     "Get back the meta nodes from the root. Really ugly"
>     class := root children detect: [:node | node name =  'Class'].
>     metaclass := root children detect: [:node | node name =  
> 'Metaclass'].
>     method := class children anyOne children first.
>    
>     DynamicProtocols
>         installDPOnClass: class
>         metaClass: metaclass
>         method: method.
>     ^ root
>
> I have exactly the same code in OBHierarchyBrowser. It can be enhanced
> a bit but I think a bigger refactoring is needed in methods creating
> metagraphs.
>
>

Nor does OBHB have code that looks like that in this image. Give me a
specific image, package, class and overriding method, and preferably an
explanation why its needed, and I'll see if there's anything I'd do
different. At the minimum, we'll all learn something about a difficult
packaging subject...

Daniel

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Documentation for Omnibrowser

Damien Cassou-3
2007/5/5, Daniel Vainsencher <[hidden email]>:
> Damien Cassou wrote:
> > If you have time and solutions, you can commit to OmniBrowser,
> > OmniBrowserFixes and DynamicProtocols. They are all open to
> > modifications.
>
> If you help me get into it, I'll have a look and see if I can help.
> Overrides are evil, and I'd like to help kill them.


Please ask any specific question you might have.

OmniBrowser repository: http://source.wiresong.ca/ob
OmniBrowser fixes: http://www.squeaksource.com/OmniBrowserFixes/


> > 2007/5/4, Daniel Vainsencher <[hidden email]>:
> >> Damien Cassou wrote:
> > Sometimes there is no other solution than doing an override.
> I doubt that - the world of possible solutions is so large. Do you want
> to talk about a particular example?Sorry, I can't, so I have only opinions.


You are right. There is always a solution. Sometimes, it's not that
easy to implement however. For example:

OBCmdFindClass>>findClassIn: anEnvironment pattern: pattern
   ...
   potentialClassNames := anEnvironment classNames asArray.
   ...

I want the traits too in this variable. Do you have a better solution
than my override:

OBCmdFindClass>>findClassIn: anEnvironment pattern: pattern
   ...
   potentialClassNames := (anEnvironment classNames, anEnvironment
traitNames) asArray.
   ...

If you have a better solution, please commit to the above
repositories. I would really like to get rid of those overrides.


> >> At least for fixes, move them into their intended permanent home...
> >
> > This is not possible because the fixes are trait-specific and OB must
> > be backward compatible.
>
> Why is it better to maintain the fixes in parallel to the OB mainline as
> overrides, rather than as a branch of the OB?

I don't know. Why not :-) Is it possible to maintain a branch in a
different repository? I think this would solve our overriding
problems. Can you help me in this direction?

> > I refactored DynamicProtocols so that I don't have an override for it
> > anymore. The code is really ugly however.
>
> I don't feel I really understand this example. What I see below looks
> like an override. Opening a squeak-dev 118 image, OBSB does not seem to
> have a method #addTo:*.

OBSB does not have this method currently. DynamicProtocols adds it to
install itself in the browser. So, it's not an override anymore.
However, I have to manually get the nodes I want from the root. I
didn't have this problem before because I added the line installing
the dynamic protocols directly in OBCodeBrowser>>addTo*

> > OBSystemBrowser>>addTo: root class: classSel comment: commentSel
> > metaclass: metaclassSel
> >     "Adds the dynamic protocols to the metagraph"
> >     |class metaclass method|
> >     super addTo: root class: classSel comment: commentSel metaclass:
> > metaclassSel.
> >
> >     "Get back the meta nodes from the root. Really ugly"
> >     class := root children detect: [:node | node name =  'Class'].
> >     metaclass := root children detect: [:node | node name =
> > 'Metaclass'].
> >     method := class children anyOne children first.
> >
> >     DynamicProtocols
> >         installDPOnClass: class
> >         metaClass: metaclass
> >         method: method.
> >     ^ root
> >
> > I have exactly the same code in OBHierarchyBrowser. It can be enhanced
> > a bit but I think a bigger refactoring is needed in methods creating
> > metagraphs.
> >
> >
>
> Nor does OBHB have code that looks like that in this image. Give me a
> specific image, package, class and overriding method, and preferably an
> explanation why its needed, and I'll see if there's anything I'd do
> different. At the minimum, we'll all learn something about a difficult
> packaging subject...

Is it clearer now ? The package DynamicProtocols has to modify the
meta graph. I can do it when the meta graph is constructed in
OBCodeBrowser>>addTo* but this would be an override. My current
solution is to reimplement #addTo: in the subclasses I want:
OBSystemBrowser and OBHierarchyBrowser.

Hope you can help.

Bye

--
Damien Cassou

12