[squeak-dev] Roassal3 "action plan"

Eliot Miranda eliot.miranda at gmail.com
Mon Oct 26 13:46:49 UTC 2020


Hi Timothy,

> On Oct 25, 2020, at 8:43 AM, gettimothy via Squeak-dev <squeak-dev at lists.squeakfoundation.org> wrote:
> 
> 
> Hi Tom
> 
> thanks for the reply.
> 
> 
> 
> 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.
> 
> 
> Athens becomes Balloon....
> 
> 
> 
> 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.
> 
> 
> 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:
> 
> 
> 
> ===modify messages for pharo-isms===
> need stdev  from pharo   in Collection 
> 
> stdev
> | avg sample sum |
> "In statistics, the standard deviation is a measure that is used to quantify the amount of variation or dispersion of a set of data values.
> For details about implementation see comment in self sum."
> avg := self average.
> sample := self anyOne.
> sum := self inject: sample into: [ :accum :each | accum + (each - avg) squared ].
> sum := sum - sample.
> ^ (sum / (self size - 1)) sqrt
> 
> flatCollect: becomes 'gather:'.
> Browse Collection, add bogus method, flatCollect: aBlock. find senders...
> RPackageOrganizer becomes PackageOrganizer
> (repeat until all changed)
> ClassDescription, add method category *Roassal-Squeak
> add method 'numberOfMethods' >> ^self  localSelectors size.
> BalloonPathBuilder add method cateogry *Roassal3-Squeak ad method
> >>close
> self closePath.
> 
> 
> ===run examples ===
> 
> RSChartExample new example01Markers open.
> RSChartExample new example02ScatterPlot open.
> RSChartExample new example03Plot open.
> RSChartExample new example04WithTick open.
> RSChartExample new example05WithTick open.
> RSChartExample new example06CustomNumberOfTicks open.
> RSChartExample new example07AdjustingFontSize open.
> RSChartExample new example08TwoCharts open.
> RSChartExample new example09LinearSqrtSymlog open.
> RSChartExample new example10BarPlot open.
> RSChartExample new example11BarplotCombinedWithLine open.
> RSChartExample new example12ScatterPlotAndNormalizer open.
> RSChartExample new example13AreaPlot open.
> RSChartExample new example14AreaPlotWithError open.
> xRSChartExample new example15AreaBox open.
> xRSChartExample new example16Series open.
> xRSChartExample new example17CLPvsUSD open.
> xRSChartExample new example18Animation open.
> 
> 
> 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.
> 
> 
> 
> I will leave that to you, but I will contribute when I encounter that stuff.
> 
> Best,
> Tom
> 
> 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.

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.  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20201026/a15312d1/attachment.html>


More information about the Squeak-dev mailing list