Hi folks,
I loaded Moose in Pharo1.1
Here are problems I have, and their hacking resolution:
- MooseModel>>registerInWorldMenu does not work anymore: we should remove it. no ?
- Moose depends on OSProcess, I think we do not want this. What are your opinion ?
- MoosePanel needs TreeMorph from Momo10, so I loaded latest Momo10, but I don't know the impact on the rest of system. (project Momo does not have TreeMorph)
When these three things are fixed, all Moose works with Pharo1.1.
Cheers
---
Jannik Laval
It's a question about the spec of Distribution Map.
We know that the order of properties is fixed and the same across all
containers. That is, elements with property A always come before elements
with property B.
But, how does one choose the order among properties? In the original VW
code, it appears that this order is the increasing order of properties by
the size of their corresponding elements.
That is (in the code below): we sort elements in each part according to the
importance of their property, importance in increasing order.
part elements: (eachPartElements value sort: [ :a :b | a property importance
< b property importance ])
I hope it is clear :)
Cyrille & Simon
Hi Cyrille
When I ran the infusion wizard to import Java source code, I got an error because the importer cant find the file 'project.mse', which I guess is the one generated by infusion. Where should this file be?
Other issues:
1) right now there are some deprecation warnings when opening the wizard
2) it would be good if the wizard (or Moose) remember the place of the infusion script after running once
--
Simon
Hello everyone, I'm Gabriel Camby.
I'm currently working on Maispion (made by François Stephany of University
of Mons (Belgium)) for my master thesis.
I have a question for all EyeSee gurus out there; I want to make an history
diagram with a labelled X axis, is that possible?
The X labels do not necessarily need to be in accordance with the data. The
labels are here only to give an idea of time.
Such diagram could show us the evolution of several projects (each project Y
is calculated using its number of code lines for example) in regard to the
time.
I tried to experiment a bit but it's not really great or clean.
Do you have any ideas?
Hello,
In which cases should we describe a property with a pragma ?
I guess that property-pragmas will be used to set the list of attributes to
the FM3MetaDescription of the class.
But by looking quikly to the famix implementation, it seems that some
properties are described and other not.
For example, in FAMIXPackage, the method 'classes' is not described.
Therefore it does not appear in the FAMIXPackageMetaDescription
listOfAttributes.
I don't know the reason?
Hi I'm new to MOOSE and was wondering if anyone can point me in the
direction of a "Getting Started Guide". Failing that any help at all as to
what does what in Moose and how to get started analyzing some code.
Is there any documentation (other than technical papers) anywhere??? I
couldn't see any links in the Docs section.
Hi!
I had fun implementing a spring layout in mondrian. Try:
-=-=-=--=-=-=-=--=-=-=-=--=
| view |
view := MOViewRenderer title: 'Spring layout example'.
view interaction refreshLayoutEvery: 30.
view shape rectangle size: 15.
view nodes: (1 to: 30).
view edges: (1 to: 30) from: #yourself to: [:v | v \\ 5].
view springLayout.
view open
-=-=-=--=-=-=-=--=-=-=-=--=
A spring layout was my very first program in Smalltalk, about 10 years
ago. It was fun to show it to Michele. Fortunately for me, he spoke
French :-)
In its actual state, the layout does not scale. If you have more than
100 nodes, it will become very slow. The algorithm complexity is quite
bad. I had some ideas on making it a bit more scalable.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi all,
I try to use Moose in a pharo1.1.
I have a small bug in Mondrian:
It uses the method clone, which is no more defined in pharo1.1,
To resolve the bug, I replace it by copy, but I don't now what are the ripple effects.
With this, I do well a DSM.
Cheers,
---
Jannik Laval
Hi guys
Since moose is a platform it is not obvious that you are forced to refer to it when writing papers.
May be you are working on representing the evolution of mushrooms grow in sahara and your
competitors will kill you if you do not cite their previous great and fabulous work on mushrooms
drying in sahara sub-mediteranean.
Now please not forget that you can model mushrooms often because you use Moose, so adding a
reference to Moose, Mondrian and others is important too. More important that you believe
so please remember it to yourself. Be nice with your friends.
Because if you are only nice with your competitors then may be this is better after all but we
do not share the same idea of life (and deontology).
Stef
one possible way to refer to moose is
@incollection{Duca05a,
Abstract = {Software systems are complex and difficult to
analyze. Reverse engineering is a complex analysis
that usually involves combining different techniques
and tools. Moreover, oftentimes the existing tools
are not perfectly suitable for the task, and
customization of existing tools, or development of
new tools is required. Moose is an extensible
reengineering environment designed to provide the
necessary infrastructure for tool integration. Moose
centers on a language independent meta-model, and
offers services like grouping, querying, navigation,
and advanced tool integration mechanism.},
Address = {Milano},
Aeres = {OS},
Aeresstatus = {aeres08},
Annote = {articlebook},
Author = {St\'ephane Ducasse and Tudor G\^irba and Michele
Lanza and Serge Demeyer},
Booktitle = {Tools for Software Maintenance and Reengineering},
Inria = {hors},
Isbn = {88-464-6396-X},
Keywords = {moose-pub scg-pub skipdoi jb05 recast05 stefPub
jointERCIM girba},
Pages = {55--71},
Publisher = {Franco Angeli},
Series = {RCOST / Software Technology Series},
Title = {Moose: a Collaborative and Extensible Reengineering
Environment},
Url =
{http://scg.unibe.ch/archive/papers/Duca05aMooseBookChapter.pdf},
Year = {2005},
Bdsk-Url-1 =
{http://scg.unibe.ch/archive/papers/Duca05aMooseBookChapter.pdf}
}
Is there a place where 'mcc' (fact extractor that parses C/C++ code) can
be accessed? I tried on the homepage of the LOOSE project, but it was
not accessible. It also didn't seem to be a part of the MOOST suite or
inFusion tools.
(I am working on Ubuntu.)
Thank you!
--
Marc Toussaint, Ph.D.
TU Berlin
Franklinstr. 28/29 FR6-9
10587 Berlin, Germany
+49 (0)30 314 24470
http://ml.cs.tu-berlin.de/~mtoussai/
Hi,
I exchanged a number of emails with Jaayer and Norbert regarding some
improvements of XMLSupport and its port to Gemstone.
It may be a bit difficult for people to follow this, but I think it is
important to not discuss privately.
>>>>> I already changed
>>>>>
>>>>> XMLTokenizer>>nextName
>>>>> ....
>>>>> ^ self fastStreamStringContents: nameBuffer
>>>>>
>>>>> to
>>>>>
>>>>> XMLTokenizer>>nextName
>>>>> ....
>>>>> ^ (self fastStreamStringContents: nameBuffer) asSymbol
>>>>>
>>>>> in the gemstone parser to be more consistent.
>>>>
>>>> Have you noticed any slow down for this?
>>>>
>>> No I didn't do any tests. But if internally all names are symbols
>>> than I guess converting it while reading is the best way to do.
>>
>> I added benchmark1 in XMLParserTest. Really simple way to measure
>> progress (or slowdown).
>> On my machine, I have:
>> XMLParserTest new benchmark1
>> => 2097
>>
>> Adding "(self fastStreamStringContents: nameBuffer) asSymbol"
>> increase the bench to 2273
>>
> I don't believe this ;) you read them as string from the stream. If
> they are managed as symbols somehow they need to be converted. If
> not at this place then on some other. I would suspect that there are
> doubled calls to asSymbol. Could you check the sources?
There is indeed a slowdown. I am not sure where it comes from however.
Executing twice "XMLParserTest new benchmark1" does not return the
same result. Actually, it increases at each execution! I thought that
a garbage collect before running the bench would help, does apparently
it does not.
Calling asSymbol on a symbol should not be perceptible I believe.
Cheers,
Alexandre
>>> anElement attributes class (I wrote species but that will fail in
>>> gemstone too I guess. Hell!)
>>
>> I just committed with species. Let me know. This is easy to adjust.
>>
> Ok.
>
>>>>> The gemstone XML Parser decides somehow to use
>>>>> IdentityDictionary internally. I think this should be allowed. I
>>>>> just changed Dictionary to IdentityDictionary so the = test
>>>>> reflects the right type. If you change it it is clear that it
>>>>> fails. Because pharo uses Dictionary internally. So you might
>>>>> see that it is not a question of using Dictionary or
>>>>> IdentityDictionary but a question of the wrongness of using =
>>>>
>>>> How the XMLNodeTest should look like to accommodate your situation?
>>>>
>>> I need to recheck this. The problem is really that the XML Parser
>>> creatios instances of class Association but { #key->'value' }
>>> creates an instance of class SymbolAssociation. That means I would
>>> know how to fix the test but I want to understand the implications
>>> of all of this. I'll get to you if I know anything new.
>>
>> Ok.
>>
> My mail to the gemstone list led to a ticket about removing class
> checks from Association. That would be easing the handling a lot.
>
> Norbert
>>>
>>>
>>>> Alexandre
>>>>
>>>>>
>>>>>>> Here there is an assumption about the allAttributes collection
>>>>>>> while using = as comparsion. But there is also an assumption
>>>>>>> about the order of the content. I changed this to
>>>>>>>
>>>>>>> self assert: (firstPerson allAttributes includesAllOf:
>>>>>>> #(#'first-name' #'employee-number' #'family-name')).
>>>>>>> self assert: (firstPerson allAttributeAssociations asArray
>>>>>>> includesAllOf: {(#'first-name'->'Bob'). (#'employee-number'-
>>>>>>> >'A0000'). (#'family-name'->'Gates')}).
>>>>>>
>>>>>> Very right. My mistake. But wouldn't an asSortedCollection do
>>>>>> the thing? Do you not test the size of the array.
>>>>>>
>>>>>>> This is not the best way to do because the check is only in
>>>>>>> one direction but for this test it is ok. Somehow the second
>>>>>>> assert fails and I have to check what is going on here.
>>>>>>
>>>>>> Yeah, my mistake. Sorry. The elements may be differently
>>>>>> ordered. Would a asSortedCollection help?
>>>>>>
>>>>>> I have now granted you an access to the repository. You should
>>>>>> be able to directly commit in it.
>>>>>>
>>>>>> Jaayer, what is your Squeaksource account?
>>>>>>
>>>>>> Cheers,
>>>>>> Alexandre
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 28.02.2010, at 02:01, Alexandre Bergel wrote:
>>>>>>>
>>>>>>>>> thanks for now. I did a first merge attempt. It will be
>>>>>>>>> quite a bit of work. For me the xml parser is an important
>>>>>>>>> component. With the newest changes it became biased towards
>>>>>>>>> pharo. There are things like ClassTestCase, Unicode
>>>>>>>>> CharacterSet. These are for sure improvements/changes in
>>>>>>>>> pharo you like to use. But they make porting a lot more
>>>>>>>>> difficult. I would be glad if we could find some way to
>>>>>>>>> lower the porting barrier. The necessary class I could put
>>>>>>>>> in the squeak compat package in gemstone. But then the xml
>>>>>>>>> parser will depend on the squeak package which I don't like.
>>>>>>>>
>>>>>>>>
>>>>>>>> Hi Norbert,
>>>>>>>>
>>>>>>>> XMLParser effectively depends on Squeak specific classes. I
>>>>>>>> wrote a small script that identify the squeak classes used in
>>>>>>>> XML-Support. Here is the list: LanguageEnvironment, Unicode,
>>>>>>>> LocaleID, CharacterSet
>>>>>>>>
>>>>>>>> I guess that porting the whole multilingual support may not
>>>>>>>> be that easy. The tag xml:lang is used to select the proper
>>>>>>>> support. It should be easy for you to ignore it I guess.
>>>>>>>>
>>>>>>>> CharacterSet seems to be one that has to be ported. It is not
>>>>>>>> a big class. It depends on WideCharacterSet. I am not sure
>>>>>>>> whether this is useful in your case however.
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Alexandre
>>>>>>>>
>>>>>>>> --
>>>>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>>>>>> Alexandre Bergel http://www.bergel.eu
>>>>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>>>> Alexandre Bergel http://www.bergel.eu
>>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>> --
>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>> Alexandre Bergel http://www.bergel.eu
>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>>
>>
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi!
Apparently, WizardPart>>contents: is deprecated, but it get invoked
when do you a ChooseFilePart new.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi!
I wanted to load the last version of Moose to try Cyrille code, but I
bumped into:
This package depends on the following classes:
MAMatrix
MAVector
MASymetricMatrix
You must resolve these dependencies before you will be able to load
these definitions:
DudeBooleanMatrix
DudeBooleanSymetricMatrix
DudeBooleanVector
Select Proceed to continue, or close this window to cancel the
operation.
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi!
Here is a short script excerpt I use.
view shape rectangle
size: 10;
fillColor: [ :aMethod | aMethod isCovered ifTrue: [ Color lightRed ]
ifFalse: [ Color white ]].
view nodes: (aClass methods sortedAs: #isCovered).
I feel the way the color is set is very verbose.
The following are equivalent
fillColor: { #isCovered -> #lightRed }
fillColor: { [:m | m isCovered] -> #lightRed }
fillColor: { #isCovered -> #lightRed . [:m | m isCovered not ] ->
#white}
The white color could be the default color is no color is picked up.
In the script above, I also use #sortedAs: to sort my elements. I find
this method quite handy. It is defined as an extension of Collection.
It is more flexible than Jannik's #sortedBy: and Moose's #sorted:.
#sortedAs operates on boolean as well.
Any opinion?
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi all,
Using todays moose and pharo rc2. See the image below to understand what the title means. I'd like the entire mondrian pane to be white, as it was in previous versions. How do I do this? Thanks in advance!
--
Johan Fabry
jfabry(a)dcc.uchile.cl - http://dcc.uchile.cl/~jfabry
PLEIAD Lab - Computer Science Department (DCC) - University of Chile
Hi,
I would like to announce "The Moose Book", a small book I have been
working on since a couple of months. It is freely accessible online at:
http://themoosebook.org
The book is very much a work in progress, with only a few chapters
being close to a reasonable state. Among them, the Glamour chapter was
the one in which I invested the most effort.
I will continue to write more contents during the following weeks.
Feedback is more than appreciated :).
Cheers,
Doru
p.s. Btw, the website is powered by Pier. Thanks, Lukas :)
--
www.tudorgirba.com
"Be rather willing to give than demanding to get."
Hi all,
Installing ConfigurationOfMetacello requires the installation of OB.
However, OB does not properly install in Core 1.1.
Is there something we can do against that? It would be great to do so.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi!
I do not have a solution, but Object>>initialExtent was recently
deprecated and this causes great usability problem. This deprecation
is very valuable for a clean UI separation. However, I have a warning
deprecation each time a window is open. The reason stems from the
method:
SystemWindow>>initialExtent
^ model initialExtent
For now, in my image, I suppressed this deprecation.
Again, I do not have a clean solution.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi!
Moose depends on the refactoring browser. I added in baseline40beta6::
spec project: 'Refactoring browser' with: [
spec
className: 'ConfigurationOfRefactoringBrowser';
file: 'ConfigurationOfRefactoringBrowser';
version: '1.1';
repository: 'http://www.squeaksource.com/rb' ].
Version 68 of ConfigurationOfMoose is in the repository.
I also copied it to MonticelloRepository.
With this dependency, Moose loads in PharoCore 1.1!
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Dear List,
Yesterday evening I found the time between two ground shakes to have a
chat with Doru about porting some of the Glamour ideas in Mondrian.
I would like to have a better support for interaction, useful for
animation.
In Glamour, the essential idea for interaction rely on 4 notions:
Pane, Presentation, Port and Transmission. (Please, correct me if I am
wrong).
The Mondrian equivalent of Pane and Presentation are MOGraphElement
and MOShape, respectively. Port and Transmission are left to be
implemented. You can find them in the version 384.
Here is a short test I wrote (all the test methods given here may be
found in MOInteractionTest).
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
testSimpleTransmission
| node1 node2 transmission |
node1 := MONode on: 'test1'.
node2 := MONode on: 'test2'.
transmission := (MOTransmission new)
origin: (node1 interaction port: #output);
destination: (node2 interaction port: #input);
yourself.
(node1 interaction port: #output) value: 42.
self assert: (node1 interaction port: #output) value = 42.
self assert: (node2 interaction port: #input) value = nil.
transmission transmit.
self assert: (node1 interaction port: #output) value = 42.
self assert: (node2 interaction port: #input) value = 42
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Then, I can write:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
testEmittingOnAPort2
| view transmission nodeSet1 nodeSet2 globalVariable node1 node2
interaction1 |
view := MOViewRenderer new.
interaction1 :=
view interaction
on: MOMouseEnter do: [:ann | ann transmit: 42 onPort: #output ];
yourself.
nodeSet1 := view nodes: (1 to: 20).
node1 := nodeSet1 first.
view interaction
from: interaction1 port: #output do: [:ann | globalVariable := ann
value ].
nodeSet2 := view nodes: (21 to: 40).
node2 := nodeSet2 first.
window := view open.
self assert: (globalVariable isNil).
node1 announce: (MOMouseEnter new).
self assert: (globalVariable = 42).
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
But there is something wrong. In the second script, interaction1
should not be necessary, shouldn't it? Else it defeats the whole
purpose of having port and transmission.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi guys
here is a list of the next topic I would like cyrille to work on
Radu's pyramid
Better UI (for me this is still difficult to interact with moose - I will discuss with doru - sunday)
How to apply visualizations to a group
Does distribution map work?
Porting EyeSee
Report builder
User Interface for Squale model
Saving model to database (we have openDBX expert / Glorp?)
Support for C#
Algorithm librarie of VW
Collection iterator -> Pharo
YellowSubmarine (http://moose.unibe.ch/tools/yellowsubmarine) qui permet l'analyse de SVN.
Alien help
Rome for Moose
Interface for
Support for remediation
Cost estimation
Do you have other needs?
Stef
Hi,
I do not know exactly what happened, but it looks like simple graphs
are not displayed anymore in Mondrian. Try the following and nothing
happens:
view := MOViewRenderer new.
view nodes: #(1 2 3).
view open
However, this works:
view := MOViewRenderer new.
view node: 5 forIt: [view nodes: #(1 2 3)].
view open
Alex, do you know what the problem is?
Cheers,
Doru
--
www.tudorgirba.com
"There are no old things, there are only old ways of looking at them."