Epicea Feedback

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

Epicea Feedback

Sean P. DeNigris
Administrator
Not complaining at all and appreciate everyone's hard (mostly-unpaid) work,
but providing raw feedback in case it's helpful...

- Browser awkward: filters disappear whenever left selection changed; no
multi-select of sessions, which led to a host of difficulties described
below.
- What is the heuristic to find API access points? Epicea package has no
comment, 'Browser' tag doesn't seem to have an XyzBrowser class, no
particular class in the 'Model' tag jumps out at me as an access point; as
above Browser about text not set. I finally bring up Morphic halos on the
browser and after flopping around, find subclasses of EpLogNode; I browse it
and find EpLogNodeGraphModel, which sounds interesting and turns out to be a
spec. I figure out how to list the log files, but not how to get the entries
- I was expecting a term like that and the relevant method (#log it turns
out) has no comment to indicate it's what I'm looking for. Now that I'm
starting to understand the project organization, back to the browser to
explore EpUnifiedBrowserModel. After a bit of poking around, I suspect
(correctly) that #log is what I'm after.
       
Based on code I extract from the browsers and a bit of experimenting in GT,
I come up with the following seemingly very complex script:

nodes := EpFileLogNode fromAllLogsIn: EpMonitor current sessionStore
baseLocator.
nodes do: [ :node | node populateReferencedNodesWith: nodes ].
nodes flatCollect: [ :n | n log events select: [ :e | e affectedPackageName
beginsWith: 'Magritte' ] ]

I now run into a series of problems because, although EpCodeChange declares
#affectedPackageName as an abstract method, not all events are
EpCodeChanges. I exclude EpUndos. Easy enough. Now I come to an
EpGenericRefactoring. This one is harder because
       
p.s. <rant>Code names for internal projects seem extremely
counterproductive. Hiedra tells me absolutely nothing about functionality.
It might as well be called XyzWidgetThing</rant>



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

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

Re: Epicea Feedback

Sean P. DeNigris
Administrator
In case it helps anyone in the future, here is the "poor man's" browser I
hacked together to find all Magritte changes that needed to be rescued from
an image where those changes got out-of-sync so I couldn't use Iceberg:

nodes := EpFileLogNode fromAllLogsIn: EpMonitor current sessionStore
baseLocator.
relevantNodes := nodes reject: [ :n | (n globalName endsWith: 'g3') or: [ n
globalName endsWith: 'ng' ] ].
relevantNodes do: [ :node | node populateReferencedNodesWith: relevantNodes
].
entries := relevantNodes flatCollect: [ :n | n log entries ].
filter := EpAndFilter withAll: {
        EpImpactCodeChangeFilter new environment: self class environment; yourself.
        EpPluggableFilter new condition: [ :e |
                        e content isCodeChange and: [
                        e content affectedPackageName beginsWith: 'Magritte' ] ].
        EpPluggableFilter noTriggerFilter }.
filteredEntries := entries select: [ :e | filter accepts: e ].
filteredEntries sort: [ :a :b | (a tagAt: #time) > (b tagAt: #time) ].
groups := filteredEntries groupedBy: [ :e | (e content respondsTo:
#methodAffected) ifFalse: [ '?' ] ifTrue: [ e content methodAffected ] ].
events := groups collect: [ :col | col first content ] as:
OrderedCollection.
events collect: [ :e | "{ e." DiffModel new
                showOptions: true;
                leftText: (e accept: EpOldStateVisitor new);
                rightText: (e accept: EpNewStateVisitor new);
                contextClass: e class;
                buildWithSpec "}" ].



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

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

Re: Epicea Feedback

ducasse
Thanks sean for the feedback
Now pay attention that we cannot digest fast non PRs because we are super busy with P8 alpha.
Can you open an issue so that martin can get an idea of what should be improved?

Stef

> On 18 Aug 2019, at 21:41, Sean P. DeNigris <[hidden email]> wrote:
>
> In case it helps anyone in the future, here is the "poor man's" browser I
> hacked together to find all Magritte changes that needed to be rescued from
> an image where those changes got out-of-sync so I couldn't use Iceberg:
>
> nodes := EpFileLogNode fromAllLogsIn: EpMonitor current sessionStore
> baseLocator.
> relevantNodes := nodes reject: [ :n | (n globalName endsWith: 'g3') or: [ n
> globalName endsWith: 'ng' ] ].
> relevantNodes do: [ :node | node populateReferencedNodesWith: relevantNodes
> ].
> entries := relevantNodes flatCollect: [ :n | n log entries ].
> filter := EpAndFilter withAll: {
> EpImpactCodeChangeFilter new environment: self class environment; yourself.
> EpPluggableFilter new condition: [ :e |
> e content isCodeChange and: [
> e content affectedPackageName beginsWith: 'Magritte' ] ].
> EpPluggableFilter noTriggerFilter }.
> filteredEntries := entries select: [ :e | filter accepts: e ].
> filteredEntries sort: [ :a :b | (a tagAt: #time) > (b tagAt: #time) ].
> groups := filteredEntries groupedBy: [ :e | (e content respondsTo:
> #methodAffected) ifFalse: [ '?' ] ifTrue: [ e content methodAffected ] ].
> events := groups collect: [ :col | col first content ] as:
> OrderedCollection.
> events collect: [ :e | "{ e." DiffModel new
> showOptions: true;
> leftText: (e accept: EpOldStateVisitor new);
> rightText: (e accept: EpNewStateVisitor new);
> contextClass: e class;
> buildWithSpec "}" ].
>
>
>
> -----
> Cheers,
> Sean
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html
>



Reply | Threaded
Open this post in threaded view
|

Re: Epicea Feedback

ducasse
In reply to this post by Sean P. DeNigris
Are you in P8?

Stef

> On 18 Aug 2019, at 21:21, Sean P. DeNigris <[hidden email]> wrote:
>
> Not complaining at all and appreciate everyone's hard (mostly-unpaid) work,
> but providing raw feedback in case it's helpful...
>
> - Browser awkward: filters disappear whenever left selection changed; no
> multi-select of sessions, which led to a host of difficulties described
> below.
> - What is the heuristic to find API access points? Epicea package has no
> comment, 'Browser' tag doesn't seem to have an XyzBrowser class, no
> particular class in the 'Model' tag jumps out at me as an access point; as
> above Browser about text not set. I finally bring up Morphic halos on the
> browser and after flopping around, find subclasses of EpLogNode; I browse it
> and find EpLogNodeGraphModel, which sounds interesting and turns out to be a
> spec. I figure out how to list the log files, but not how to get the entries
> - I was expecting a term like that and the relevant method (#log it turns
> out) has no comment to indicate it's what I'm looking for. Now that I'm
> starting to understand the project organization, back to the browser to
> explore EpUnifiedBrowserModel. After a bit of poking around, I suspect
> (correctly) that #log is what I'm after.
>
> Based on code I extract from the browsers and a bit of experimenting in GT,
> I come up with the following seemingly very complex script:
>
> nodes := EpFileLogNode fromAllLogsIn: EpMonitor current sessionStore
> baseLocator.
> nodes do: [ :node | node populateReferencedNodesWith: nodes ].
> nodes flatCollect: [ :n | n log events select: [ :e | e affectedPackageName
> beginsWith: 'Magritte' ] ]
>
> I now run into a series of problems because, although EpCodeChange declares
> #affectedPackageName as an abstract method, not all events are
> EpCodeChanges. I exclude EpUndos. Easy enough. Now I come to an
> EpGenericRefactoring. This one is harder because
>
> p.s. <rant>Code names for internal projects seem extremely
> counterproductive. Hiedra tells me absolutely nothing about functionality.
> It might as well be called XyzWidgetThing</rant>
>
>
>
> -----
> Cheers,
> Sean
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html
>


Reply | Threaded
Open this post in threaded view
|

Re: Epicea Feedback

Sean P. DeNigris
Administrator
In reply to this post by ducasse