Hi Tom, After thinking on it, it makes sense to port all the pharo Athens calls to methods in "some appropriate class" in the Balloon or Graphics area and modifying the pharo call to those methods to use the Balloon/Graphics methods. AND when doing that, duplicate the Tests for those calls. All the while asking for pointers on specific instances. The approach gives me a needed structure, instead of doing "stupid stuff" like cloning in the GraphicsPaint class from Athen's directly into squeak, just to make things work. Sound like a plan? |
Hi timothy, what I could gleam from the Roassal codebase, my assumption is that their design initially started out with an arbitrary graphics backend in mind but, gradually, some lower-level aspects leaked into the domain-specific high-level code. You can see that the codebase contains two or three classes specifically with "Athens" in their name, which typically aim to abstract and collect the interface needed by Roassal to produce graphics. So, our goal would be to extend these abstractions to serve the use cases where Athens-specific code currently exists in the Roassal domain layer. Then, we can "simply" go in, provide a second interface that uses Balloon as its backend and we're done! Since an incremental process is obviously beneficial here and will yield the fastest sense of progress, starting out by creating this Balloon interface and making it just about serviceable is what we currently have in our repo. I believe Balloon as an engine should be able to express just about all the requirements that Roassal puts on Athens, even though I'm rather sure we'll have to employ some trickery for e.g. text. To make it more concrete: I think your approach of going test by test or example by example should work well. Ideally, you would compare the output of each example with what you find in Pharo and see where things are currently entirely broken or missing. If you then encounter a test/example that uses Athens-specific code, try to isolate the code in one of the abstraction classes, such as the RSAthensMorph or RSAthensRenderer and try to provide an equivalent implementation for our own RSBalloonMorph and RSBalloonRenderer classes. Eventually, we can then simply not load the RSAthensMorph and RSAthensRenderer were all Athens-specific code is isolated and should thus no longer encounter code that cannot load in Squeak. Additionally, it may be worthwhile to keep a separate document in case we encounter larger architectural issues where Roassal and Athens code are intertwined, such that the Roassal team can review the document rather than having to sift through a pull request of thousands of lines. Best, Tom On Sun, Oct 25, 2020 at 3:12 PM gettimothy via Squeak-dev <[hidden email]> wrote:
|
In reply to this post by Squeak - Dev mailing list
Hi Tom thanks for the reply.
Athens becomes Balloon....
cool! That's what I am doing now. The emphatic "NO" on Cairo is what I needed to hear to proceed down this path. btw, I got two more of those tests working by adding a method to BallonPathBuilder...steps to get all but the four last ones are:
I will leave that to you, but I will contribute when I encounter that stuff.
cheers. p.s. I am saving to a local monticello repo as I go. Its easier than me having to relearn Metacello and the Git is just a reference at this point. |
Hi Timothy, it's great that you are working on this! Once it's (somewhat) running, I can write some wrappers for the vizualizations to make them work in Vivide (http://github.com/hpi-swa/vivide). Best, Marcel
|
In reply to this post by Squeak - Dev mailing list
Hi Timothy,
On Oct 25, 2020, at 8:43 AM, gettimothy via Squeak-dev <[hidden email]> wrote:
Why not create a project on SqueakSource.com so you can easily share and collaborate? No need to use metacello. But working in splendid isolation in a local repository doesn’t seem particularly productive. |
Hi Eliot.
If somebody wants to open it up, that is great by me. Tom's working off of a git repo...and, it is Tom's project, so I will let him decide. cheers. |
Hi timothy, thank you for asking for my opinion here :) I would say please move to whichever stack you are most comfortable with. I can adapt accordingly for when I find time to contribute again. Eventually, we will have to move back to git to propose upstream changes but until then I see no reason not to use Monticello. I agree with Elliot that it would be very useful to always have your most up-to-date changes somewhere publicly accessible. So please feel free to create a project on squeaksource.com and maybe you could even add me (tobe) and also Eliot (?) as contributors right away. Best, Tom On Mon, Oct 26, 2020 at 2:54 PM gettimothy via Squeak-dev <[hidden email]> wrote:
|
I will do that now, cheers! ---- On Mon, 26 Oct 2020 10:10:43 -0400 Tom Beckmann <[hidden email]> wrote ----
|
In reply to this post by Tom Beckmann
Hi folks, A Roassal project already exists on Squeaksource. Not my project. Found this when I went to create the project. How to proceed? Create Roassal3 project? cheers. ---- On Mon, 26 Oct 2020 10:10:43 -0400 Tom Beckmann <[hidden email]> wrote ----
|
Free forum by Nabble | Edit this page |