Roassal next steps.

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

Roassal next steps.

Squeak - Dev mailing list
Hi folks.

First, thank you for your help. Very cool to see a Roassal3 thing in Squeak

RSChartExample new example01Markers open.
WOOT!


Next up. How do you recommend I proceed to contribute to this project?

As a first step, I tried Roassal3-Global-Tests-Core   and all fail on Announcer(Object) DNU

Do we need Announcments? Or AXAnnouncements in squeak?

What then?

Work from the inside out of the Metacello install specs?


cheers.


t





Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Jakob Reschke
"We" might not need Announcements, but Roassal uses them, so "it" needs them.
:-)

Is AXAnnouncements still API-compatible with the Pharo Announcements (or
should I phrase this the other way around)? Either way, it would be nice to
have a working Pharo-Announcements-API implementation for Squeak, at least
for compatibility's sake. It doesn't have to be in the Trunk, but once you
have an implementation or shim, one would extend the BaselineOfRoassal to
include this dependency for Squeak only.



--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html

Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Tom Beckmann
Hi,

@timothy, happy to hear that Roassal now loads for you! :)

Concerning Announcements: when I initially tried to load Roassal, I included AXAnnouncements from Squeaksource. However, there are some extension methods from Roassal on Announcements that assume a different data layout. In the version on Github I just made sure the extensions compiled at all. Looking at the failing tests now, here are the two hopefully correct implementations for the extension methods (code is mostly copied from the Pharo version, you may want to consider having these make better use of our stdlib if we want to keep those :)):

SubscriptionRegistry>>getInteractionsForClass: eventClass
"Return the list of subscription for a given Event class"
| answer |
answer := OrderedCollection new.
subscriptionsByAnnouncementClasses values do: [ :collection |
collection do: [:subscription |
(subscription action receiver class includesBehavior: eventClass) ifTrue: [answer add: subscription subscriber]]].
^ answer

SubscriptionRegistry>>handleSubscriberClass: eventClass
"Return true if the receiver has a callback subscripbed for the event class"
^ subscriptionsByAnnouncementClasses values anySatisfy: [ :subCollection |
subCollection anySatisfy: [:subscriber | subscriber action receiver class includesBehavior: eventClass ]]

With these two, the two RSRoassal3Test methods pass for me.

I think the most helpful next step would be to go through each package, make sure the package can be loaded without stumbling over stray pharo-only symbols and getting all the tests to pass.

Best,
Tom

On Sun, Oct 11, 2020 at 9:58 PM Jakob Reschke <[hidden email]> wrote:
"We" might not need Announcements, but Roassal uses them, so "it" needs them.
:-)

Is AXAnnouncements still API-compatible with the Pharo Announcements (or
should I phrase this the other way around)? Either way, it would be nice to
have a working Pharo-Announcements-API implementation for Squeak, at least
for compatibility's sake. It doesn't have to be in the Trunk, but once you
have an implementation or shim, one would extend the BaselineOfRoassal to
include this dependency for Squeak only.



--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html



Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Squeak - Dev mailing list
Hi Tom and Jakob

I look forward to returning to work on Roassal this weekend.

Thank you for your help.

Cheers

t


---- On Mon, 12 Oct 2020 02:25:20 -0400 [hidden email] wrote ----

Hi,

@timothy, happy to hear that Roassal now loads for you! :)

Concerning Announcements: when I initially tried to load Roassal, I included AXAnnouncements from Squeaksource. However, there are some extension methods from Roassal on Announcements that assume a different data layout. In the version on Github I just made sure the extensions compiled at all. Looking at the failing tests now, here are the two hopefully correct implementations for the extension methods (code is mostly copied from the Pharo version, you may want to consider having these make better use of our stdlib if we want to keep those :)):

SubscriptionRegistry>>getInteractionsForClass: eventClass
"Return the list of subscription for a given Event class"
| answer |
answer := OrderedCollection new.
subscriptionsByAnnouncementClasses values do: [ :collection |
collection do: [:subscription |
(subscription action receiver class includesBehavior: eventClass) ifTrue: [answer add: subscription subscriber]]].
^ answer

SubscriptionRegistry>>handleSubscriberClass: eventClass
"Return true if the receiver has a callback subscripbed for the event class"
^ subscriptionsByAnnouncementClasses values anySatisfy: [ :subCollection |
subCollection anySatisfy: [:subscriber | subscriber action receiver class includesBehavior: eventClass ]]

With these two, the two RSRoassal3Test methods pass for me.

I think the most helpful next step would be to go through each package, make sure the package can be loaded without stumbling over stray pharo-only symbols and getting all the tests to pass.

Best,
Tom

On Sun, Oct 11, 2020 at 9:58 PM Jakob Reschke <[hidden email]> wrote:
"We" might not need Announcements, but Roassal uses them, so "it" needs them.
:-)

Is AXAnnouncements still API-compatible with the Pharo Announcements (or
should I phrase this the other way around)? Either way, it would be nice to
have a working Pharo-Announcements-API implementation for Squeak, at least
for compatibility's sake. It doesn't have to be in the Trunk, but once you
have an implementation or shim, one would extend the BaselineOfRoassal to
include this dependency for Squeak only.



--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html





Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Squeak - Dev mailing list
In reply to this post by Tom Beckmann
Hi Tom , Jakob

Concerning Announcements: when I initially tried to load Roassal, I included AXAnnouncements from Squeaksource. However, there are some extension methods from Roassal on Announcements that assume a different data layout. In the version on Github I just made sure the extensions compiled at all. Looking at the failing tests now, here are the two hopefully correct implementations for the extension methods (code is mostly copied from the Pharo version, you may want to consider having these make better use of our stdlib if we want to keep those :)):

SubscriptionRegistry>>getInteractionsForClass: eventClass
"Return the list of subscription for a given Event class"
| answer |
answer := OrderedCollection new.
subscriptionsByAnnouncementClasses values do: [ :collection |
collection do: [:subscription |
(subscription action receiver class includesBehavior: eventClass) ifTrue: [answer add: subscription subscriber]]].
^ answer

SubscriptionRegistry>>handleSubscriberClass: eventClass
"Return true if the receiver has a callback subscripbed for the event class"
^ subscriptionsByAnnouncementClasses values anySatisfy: [ :subCollection |
subCollection anySatisfy: [:subscriber | subscriber action receiver class includesBehavior: eventClass ]]

With these two, the two RSRoassal3Test methods pass for me.


I will use yours as I have no idea how to "make better use of our stlib"  (:
I did some quick checking and found, as you did, that Pharo has rolled their own: https://github.com/pharo-project/pharo-core/tree/6.0/Announcements-Core.package



Is AXAnnouncements still API-compatible with the Pharo Announcements (or
should I phrase this the other way around)? Either way, it would be nice to
have a working Pharo-Announcements-API implementation for Squeak, at least
for compatibility's sake. It doesn't have to be in the Trunk, but once you
have an implementation or shim, one would extend the BaselineOfRoassal to
include this dependency for Squeak only.



I remember reading years ago that Announcements and AXAnnouncements where API compatible, I have no idea on Pharo.

So, to compare the API, just make sure each implements the messages and returns the same stuff? Check that tests implemented in AXA work in Pharo and tests in Pharo Announcments work in AXA Squeak?


I think the most helpful next step would be to go through each package, make sure the package can be loaded without stumbling over stray pharo-only symbols and getting all the tests to pass.

I will do that this weekend! 

cheers,

t





Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Jakob Reschke
Squeak - Dev mailing list wrote
> So, to compare the API, just make sure each implements the messages and
> returns the same stuff? Check that tests implemented in AXA work in Pharo
> and tests in Pharo Announcments work in AXA Squeak?

Only for those classes and messages for public use (by libraries and
applications). Also I think the "AXA tests in Pharo" direction does not
provide us a benefit at the moment.



--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html

Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Squeak - Dev mailing list
In reply to this post by Squeak - Dev mailing list
Hi Jakob

"We" might not need Announcements, but Roassal uses them, so "it" needs them.
:-)

Is AXAnnouncements still API-compatible with the Pharo Announcements (or
should I phrase this the other way around)? Either way, it would be nice to
have a working Pharo-Announcements-API implementation for Squeak, at least
for compatibility's sake. It doesn't have to be in the Trunk, but once you
have an implementation or shim, one would extend the BaselineOfRoassal to
include this dependency for Squeak only.
I think this is worth working on.

One problem, is that I have no idea how to access the pharo Announcements repo so I can get it into squeak.

The pharo-local/package-cache is empty for the Announcments-Core(tonel-1)  and I don't know where to look on the web for pharo stuff.

Any pointers much appreciated, thx






Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Squeak - Dev mailing list

update...

I figured out how to clone the pharo-project/pharo repo and it is downloading now.

I should be able to figure it out from there..



---- On Sun, 18 Oct 2020 07:18:29 -0400 gettimothy <[hidden email]> wrote ----

Hi Jakob

"We" might not need Announcements, but Roassal uses them, so "it" needs them.
:-)

Is AXAnnouncements still API-compatible with the Pharo Announcements (or
should I phrase this the other way around)? Either way, it would be nice to
have a working Pharo-Announcements-API implementation for Squeak, at least
for compatibility's sake. It doesn't have to be in the Trunk, but once you
have an implementation or shim, one would extend the BaselineOfRoassal to
include this dependency for Squeak only.
I think this is worth working on.

One problem, is that I have no idea how to access the pharo Announcements repo so I can get it into squeak.

The pharo-local/package-cache is empty for the Announcments-Core(tonel-1)  and I don't know where to look on the web for pharo stuff.

Any pointers much appreciated, thx








Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Tom Beckmann
Hey timothy,

in theory, after loading Roassal3 from the fork I had sent you, you should already have a somewhat working Announcements installed. The two patches that I sent you, I believe, last week, fixed the two test cases that you pointed out were failing.
The package I'm loading on Squeak is this one: http://www.squeaksource.com/AXAnnouncements.html (but it should already be installed if you used Metacello to get Roassal3, you can check in your image to see if there already in an "Announcer" class).

Are there other roadblocks concerning Announcements that you are encountering?

Best,
Tom

On Sun, Oct 18, 2020 at 1:25 PM gettimothy via Squeak-dev <[hidden email]> wrote:

update...

I figured out how to clone the pharo-project/pharo repo and it is downloading now.

I should be able to figure it out from there..



---- On Sun, 18 Oct 2020 07:18:29 -0400 gettimothy <[hidden email]> wrote ----

Hi Jakob

"We" might not need Announcements, but Roassal uses them, so "it" needs them.
:-)

Is AXAnnouncements still API-compatible with the Pharo Announcements (or
should I phrase this the other way around)? Either way, it would be nice to
have a working Pharo-Announcements-API implementation for Squeak, at least
for compatibility's sake. It doesn't have to be in the Trunk, but once you
have an implementation or shim, one would extend the BaselineOfRoassal to
include this dependency for Squeak only.
I think this is worth working on.

One problem, is that I have no idea how to access the pharo Announcements repo so I can get it into squeak.

The pharo-local/package-cache is empty for the Announcments-Core(tonel-1)  and I don't know where to look on the web for pharo stuff.

Any pointers much appreciated, thx









Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Squeak - Dev mailing list
In reply to this post by Squeak - Dev mailing list
Hi Tom



Hey timothy,

in theory, after loading Roassal3 from the fork I had sent you, you should already have a somewhat working Announcements installed. The two patches that I sent you, I believe, last week, fixed the two test cases that you pointed out were failing.
The package I'm loading on Squeak is this one: http://www.squeaksource.com/AXAnnouncements.html (but it should already be installed if you used Metacello to get Roassal3, you can check in your image to see if there already in an "Announcer" class).

Are there other roadblocks concerning Announcements that you are encountering?

Best,
Tom

I tried loading those methods into AXAnnouncments...
SubscriptionRegistry>>getInteractionsForClass: eventClass
"Return the list of subscription for a given Event class"
| answer |
answer := OrderedCollection new.
subscriptionsByAnnouncementClasses values do: [ :collection |
collection do: [:subscription |
(subscription action receiver class includesBehavior: eventClass) ifTrue: [answer add: subscription subscriber]]].
^ answer

SubscriptionRegistry>>handleSubscriberClass: eventClass
"Return true if the receiver has a callback subscripbed for the event class"
^ subscriptionsByAnnouncementClasses values anySatisfy: [ :subCollection |
subCollection anySatisfy: [:subscriber | subscriber action receiver class includesBehavior: eventClass ]]
and saw that SubscriptionRegistry is AXSubscriptionRegistry in AXAnnouncements...so, I unloaded AXAnnouncements and loaded Announcements from the same repo.

I failed , for some reason that I forget, so I decided to see if I could just get the pharo Announcments into Squeak.

If that fails, I will return to the Annoucements/AXAnnouncments .

I got the repo downloaded from pharo-project/pharo using Jakib's Git Browser (thank you Jakob) and I ill next figure out how to get that "package" into squeak from that interface.

cheers,

tty





Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Squeak - Dev mailing list
In reply to this post by Squeak - Dev mailing list
Hi folks,


Announcements-Help loaded fine with the clone of the git browser thingy....

Now, I want to clone the -Core and -Tests, but I get dependency warnings that I would like to attempt to resolve if possible.

The first hurdle in that is how to use the BaseLineOf  stuff....



and trying and flailing randomly...


I cloned BaselineOfManifest into the Squeak and I am looking at it in the Browser as I type this....



contains the BaselineOfManifest too....

Metacello new
githubUser: 'pharo-project' project: 'pharo' commitish: 'master' path: 'Pharo9.0/src/';
baseline: 'Manifest';
load

GoferRepositoryError: Error downloading https://github.com/pharo-project/pharo/zipball/master to /tmp/github--pharoprojectpharomaster.zip. Server said: 404: Not Found

Anybody see the obvious thing that I am missing?

I will continue attempts after I wake up later this afternoon.

cheers.





Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Jakob Reschke
Squeak - Dev mailing list wrote

> https://github.com/pharo-project/pharo/tree/Pharo9.0/src
>
>
>
> contains the BaselineOfManifest too....
>
>
> Metacello new
>
> githubUser: 'pharo-project' project: 'pharo' commitish: 'master' path:
> 'Pharo9.0/src/';
>
> baseline: 'Manifest';
>
> load
>
>
>
>
> GoferRepositoryError: Error downloading
> https://github.com/pharo-project/pharo/zipball/master to
> /tmp/github--pharoprojectpharomaster.zip. Server said: 404: Not Found
>
>
>
>
> Anybody see the obvious thing that I am missing?


https://github.com/pharo-project/pharo/tree/Pharo9.0/src is of branch
'Pharo9.0', so you would have to put that as commitish and not 'master'.



--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html

Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Jakob Reschke
Jakob Reschke wrote
> https://github.com/pharo-project/pharo/tree/Pharo9.0/src is of branch
> 'Pharo9.0', so you would have to put that as commitish and not 'master'.

For those wondering why you have to put a branch as a "commit"ish:
"Commitish" means anything that denotes a single commit at one moment. It
can be
- the sha1 of a commit (always resolves to that commit),
- the name of a branch (resolves to the commit at which the branch currently
is -- or the top commit on the branch if you will), or
- the name of a tag (resolves to the tagged commit).

And if you further wonder why the URL neither says branch nor commitish, but
"tree" instead: because the page shows a tree, which is basically a
directory listing. The path after the commitish in the URL (/src) identifies
the subtree to view.



--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html

Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Jakob Reschke
In reply to this post by Jakob Reschke
Jakob Reschke wrote

>>
>> Metacello new
>>
>> githubUser: 'pharo-project' project: 'pharo' commitish: 'master' path:
>> 'Pharo9.0/src/';
>>
>> baseline: 'Manifest';
>>
>> load
>
> https://github.com/pharo-project/pharo/tree/Pharo9.0/src is of branch
> 'Pharo9.0', so you would have to put that as commitish and not 'master'.

Oh, and since Pharo9.0 is the branch, this does not belong to the path.
Should probably look something like this:

Metacello new
    githubUser: 'pharo-project' project: 'pharo' commitish: 'Pharo9.0' path:
'src';
    baseline: 'Manifest';
    load



--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html

Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Squeak - Dev mailing list
In reply to this post by Tom Beckmann
Hi Tom,

I will probably revert to your version.

I just want to torture myself grokking the Pharo tools and getting fluent in transposing from Git to Monticello in both environments.

Jakob's Monticello config worked...


Metacello new
githubUser: 'pharo-project' project: 'pharo' commitish: 'Pharo9.0' path:'src';
baseline: 'Manifest';
load


This package depends on the following classes:
  AbstractTool
  PackageManifest
  RGMetaclassDefinition
  RGPackageDefinition
  RPackageTag
  RGMethodDefinition
  RPackage
  RGClassDescriptionDefinition
and I want to see what it takes to get the dependencies installed.

I will probably give up when I see the dependency tree growing towards infinity, but I have a stubborn streak in me.

cordially,

t





---- On Sun, 18 Oct 2020 08:04:32 -0400 Tom Beckmann <[hidden email]> wrote ----

Hey timothy,

in theory, after loading Roassal3 from the fork I had sent you, you should already have a somewhat working Announcements installed. The two patches that I sent you, I believe, last week, fixed the two test cases that you pointed out were failing.
The package I'm loading on Squeak is this one: http://www.squeaksource.com/AXAnnouncements.html (but it should already be installed if you used Metacello to get Roassal3, you can check in your image to see if there already in an "Announcer" class).

Are there other roadblocks concerning Announcements that you are encountering?

Best,
Tom

On Sun, Oct 18, 2020 at 1:25 PM gettimothy via Squeak-dev <[hidden email]> wrote:

update...

I figured out how to clone the pharo-project/pharo repo and it is downloading now.

I should be able to figure it out from there..



---- On Sun, 18 Oct 2020 07:18:29 -0400 gettimothy <[hidden email]> wrote ----

Hi Jakob

"We" might not need Announcements, but Roassal uses them, so "it" needs them.
:-)

Is AXAnnouncements still API-compatible with the Pharo Announcements (or
should I phrase this the other way around)? Either way, it would be nice to
have a working Pharo-Announcements-API implementation for Squeak, at least
for compatibility's sake. It doesn't have to be in the Trunk, but once you
have an implementation or shim, one would extend the BaselineOfRoassal to
include this dependency for Squeak only.
I think this is worth working on.

One problem, is that I have no idea how to access the pharo Announcements repo so I can get it into squeak.

The pharo-local/package-cache is empty for the Announcments-Core(tonel-1)  and I don't know where to look on the web for pharo stuff.

Any pointers much appreciated, thx











Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Squeak - Dev mailing list
In reply to this post by Tom Beckmann
heh...

fun fact...try to load the dependency "Kernel-BytecodeEncoders" via Monticello and watch your image evaporate into thin air!

I will revert to Tom's suggestion.

Unfortunately it is a short weekend for me, so I will have to leave it there for now.

Thanks all for your help.



Reply | Threaded
Open this post in threaded view
|

Re: Roassal next steps.

Squeak - Dev mailing list
In reply to this post by Tom Beckmann
Hi Tom,

I just reinstalled from zero and the Announcements are installed.

I will apply your patches now.

cheers,




---- On Sun, 18 Oct 2020 08:04:32 -0400 Tom Beckmann <[hidden email]> wrote ----

Hey timothy,

in theory, after loading Roassal3 from the fork I had sent you, you should already have a somewhat working Announcements installed. The two patches that I sent you, I believe, last week, fixed the two test cases that you pointed out were failing.
The package I'm loading on Squeak is this one: http://www.squeaksource.com/AXAnnouncements.html (but it should already be installed if you used Metacello to get Roassal3, you can check in your image to see if there already in an "Announcer" class).

Are there other roadblocks concerning Announcements that you are encountering?

Best,
Tom

On Sun, Oct 18, 2020 at 1:25 PM gettimothy via Squeak-dev <[hidden email]> wrote:

update...

I figured out how to clone the pharo-project/pharo repo and it is downloading now.

I should be able to figure it out from there..



---- On Sun, 18 Oct 2020 07:18:29 -0400 gettimothy <[hidden email]> wrote ----

Hi Jakob

"We" might not need Announcements, but Roassal uses them, so "it" needs them.
:-)

Is AXAnnouncements still API-compatible with the Pharo Announcements (or
should I phrase this the other way around)? Either way, it would be nice to
have a working Pharo-Announcements-API implementation for Squeak, at least
for compatibility's sake. It doesn't have to be in the Trunk, but once you
have an implementation or shim, one would extend the BaselineOfRoassal to
include this dependency for Squeak only.
I think this is worth working on.

One problem, is that I have no idea how to access the pharo Announcements repo so I can get it into squeak.

The pharo-local/package-cache is empty for the Announcments-Core(tonel-1)  and I don't know where to look on the web for pharo stuff.

Any pointers much appreciated, thx