<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"></head><body ><div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt;"><div>Hi Tom,<br><br>Eliot has chimed in with a resounding, <b><i><span class="size" style="font-size: 18.666666666666664px">"Oh! The Humanity!!!"</span></i></b> Hindenburg level Disaster alert, so port to Balloon(?) is the way to go and Cairo is a no go.<br><br>So then, should we mirror the Athen's heirarchy with Balloon stuff?<br><br>What I am saying, is that, rather than hacking a hodge-podge, I would feel better with a structure to adhere to.<br><br>In my Browser, I see "Balloon-Collections, Engine, Fills, Geometry, Simulations and then I see Graphics-Display, Primitives....etc.<br><br><br>I also see the RSAthensMorph....<br><br><br>For that "install log " list of messages/classes that must be implemented, I am more than happy to create the methods in appropriate places and go from there. I just do not know the appropriate places.<br><br>Some mapping strategy...I guess I could try to intuit it, but others who know this stuff may have better ideas.<br><br><br>cheers,<br><br><br><br><br><br><br><br><br><div dir="ltr"><br></div></div><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; background-color: rgb(245, 245, 245);"><div><div>Hi timothy,<br></div><div><br></div><div>my personal opinion is that, for Squeak, it would be more interesting to get a working implementation in Balloon going, rather than porting Athens. Having Athens-Cairo would bring higher quality graphics (as of right now), but it's also a rather large dependency that may introduce portability issues, while we know for sure that Balloon "just works". Staying with Balloon could also make running the Roassal port in some of the Squeak derivatives such as SqueakJS, GraalSqueak or RSqueak simpler than depending on FFI.<br></div><div><br></div><div>Note, however, that I have not dug deep into Athens' code, so I may be over- or underestimating the complexity it would introduce. I do know that the Balloon backend for Athens (porting which would also be an option) was very incomplete when I last looked at it.<br></div><div><br></div><div>Best,<br></div><div>Tom<br></div></div></blockquote><div><br><div class="x_-240211159gmail_quote"><div class="x_-240211159gmail_attr" dir="ltr">On Sun, Oct 25, 2020 at 2:24 PM gettimothy via Squeak-dev <<a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank">squeak-dev@lists.squeakfoundation.org</a>> wrote:<br></div><blockquote style="margin: 0.0px 0.0px 0.0px 0.8ex;border-left: 1.0px solid rgb(204,204,204);padding-left: 1.0ex;" class="x_-240211159gmail_quote"><u></u><div><div style="font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 10.0pt;"><div>Hi Tom (and others),<br></div><div><br></div><div>From an earlier email, you remarked that you where able to get an example up and running quickly by ignoring Athens (?) and rolling your own.<br></div><div><br></div><div>Is this approach "optimal" ?<br></div><div><br></div><div><br></div><div>Here is an example of things we cannot do until dependencies are resolved...heck, at the bottom of this email* is the entire Roassal install "log" that I saved when I installed the package:<br></div><div><br></div><div><br></div><blockquote style="border: 1.0px solid rgb(204,204,204);padding: 7.0px;background-color: rgb(245,245,245);"><div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  AthensCairoPathBuilder>>arcDegreeStart:sweep:centerX:y:radius:<br></div><div>  AthensCairoPathBuilder>>arcRadianStart:sweep:centerX:y:radius:<br></div><div>  AthensCairoPathBuilder>>ellipticalArc3:xrot:large:sweep:to:<br></div><div>  AthensCairoPathBuilder>>ellipticalArc:xrot:large:sweep:to:<br></div><div>  AthensCairoPathBuilder>>ellipticalArc:xrot:large:sweep:to:relative:<br></div></div></blockquote><div>I can either port the AthensCairoPathBuilder or I can move the functionality to your BalloonPathBuilder.<br></div><div><br></div><div><br></div><div>Since I know nothing about either, it will be equally painful to implement either, so the question becomes, which path yeilds the best results going forward?<br></div><div><br></div><div><br></div><div>Consider too, that "grok FFI" is on my skillset todo-list and Athens-Cairo looks like it would put a checkmark on that todo-list item.<br></div><div><br></div><div>I do not know enough to make an informed decision (I intuitively prefer to get the base right, but as we discovered with the pharo kernel bytes fiasco, that is not always possible)<br></div><div><br></div><div>Your thoughts?<br></div><div><br></div><div>cheers,<br></div><div><br></div><div>tty.<br></div><div><br></div><div><br></div><div><br></div><div>*Install log follows:<br></div><div><br></div><blockquote style="border: 1.0px solid rgb(204,204,204);padding: 7.0px;background-color: rgb(245,245,245);"><div><div>This package depends on the following classes:<br></div><div>  AthensCairoPathBuilder<br></div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  AthensCairoPathBuilder>>arcDegreeStart:sweep:centerX:y:radius:<br></div><div>  AthensCairoPathBuilder>>arcRadianStart:sweep:centerX:y:radius:<br></div><div>  AthensCairoPathBuilder>>ellipticalArc3:xrot:large:sweep:to:<br></div><div>  AthensCairoPathBuilder>>ellipticalArc:xrot:large:sweep:to:<br></div><div>  AthensCairoPathBuilder>>ellipticalArc:xrot:large:sweep:to:relative:<br></div><div><br></div><div>This package depends on the following classes:<br></div><div>  PackageManifest<br></div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  ManifestGeometryTests<br></div><div>  ManifestGeometryTests class>>ruleRBStringConcatenationRuleV1FalsePositive<br></div><div><br></div><div><br></div><div>This package depends on the following classes:<br></div><div>  GradientPaint<br></div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  GradientPaint>>interpolateTo:at:<br></div><div><br></div><div><br></div><div>This package depends on the following classes:<br></div><div>  AthensCairoPathBuilder<br></div><div>  AthensCairoSurface<br></div><div>  RPackage<br></div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  AthensCairoPathBuilder>>arcAround:radius:startAngle:endAngle:<br></div><div>  AthensCairoPathBuilder>>arcAround:radius:startAngle:endAngle:cw:<br></div><div>  AthensCairoPathBuilder>>arcCos:<br></div><div>  AthensCairoPathBuilder>>ellipticalArc2:xrot:large:sweep:to:<br></div><div>  AthensCairoSurface>>hasBeenFreed<br></div><div>  RPackage>>dependentPackages<br></div><div>This package depends on the following classes:<br></div><div>  PharoDarkTheme<br></div><div>  ClyBrowserToolMorph<br></div><div>  UITheme<br></div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  PharoDarkTheme>>classBoxBackgroundColor<br></div><div>  RSUMLCalypso<br></div><div>  RSUMLCalypso>>activationPriority<br></div><div>  RSUMLCalypso>>applyTheme:<br></div><div>  RSUMLCalypso>>build<br></div><div>  RSUMLCalypso>>classes<br></div><div>  RSUMLCalypso>>defaultIconName<br></div><div>  RSUMLCalypso>>limitedClasses:<br></div><div>  RSUMLCalypso>>tabOrder<br></div><div>  RSUMLClassCalypso<br></div><div>  RSUMLClassCalypso class>>classUmlTapActivation<br></div><div>  RSUMLClassCalypso>>classes<br></div><div>  RSUMLClassCalypso>>defaultTitle<br></div><div>  RSUMLClassCalypso>>isSimilarTo:<br></div><div>  RSUMLClassCalypso>>setUpModelFromContext<br></div><div>  RSUMLClassCalypso>>targetClass<br></div><div>  RSUMLPackageCalypso<br></div><div>  RSUMLPackageCalypso class>>classUmlTapActivation<br></div><div>  RSUMLPackageCalypso>>classes<br></div><div>  RSUMLPackageCalypso>>defaultIconName<br></div><div>  RSUMLPackageCalypso>>defaultTitle<br></div><div>  RSUMLPackageCalypso>>isSimilarTo:<br></div><div>  RSUMLPackageCalypso>>packages<br></div><div>  RSUMLPackageCalypso>>setUpModelFromContext<br></div><div>  UITheme>>classBoxBackgroundColor<br></div><div>  UITheme>>methodsLimitUML<br></div><div><br></div><div><br></div><div>This package depends on the following classes:<br></div><div>  GLMMorphicWidgetRenderer<br></div><div>  GLMPresentation<br></div><div>  GLMMorphicRenderer<br></div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  GLMMorphicRenderer>>renderRoassal3Presentation:<br></div><div>  GLMMorphicRoassal3Renderer<br></div><div>  GLMMorphicRoassal3Renderer>>render:<br></div><div>  GLMPresentation>>roassal3<br></div><div>  GLMRoassal3Presentation<br></div><div>  GLMRoassal3Presentation>>canvas<br></div><div>  GLMRoassal3Presentation>>initialize<br></div><div>  GLMRoassal3Presentation>>initializeCanvas:<br></div><div>  GLMRoassal3Presentation>>renderGlamorouslyOn:<br></div><div>  GLMRoassal3Presentation>>setUpInteractions<br></div><div><br></div><div><br></div><div>This package depends on the following classes:<br></div><div>  RPackage<br></div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  RPackage>>dependentPackagesWithOccurences<br></div><div>  RPackage>>numberOfDependenciesToward:<br></div><div><br></div><div>This package depends on the following classes:<br></div><div>  ParametrizedTestCase<br></div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  RSPAnimationTest<br></div><div>  RSPAnimationTest class>>testParameters<br></div><div>  RSPAnimationTest>>animationClass<br></div><div>  RSPAnimationTest>>animationClass:<br></div><div>  RSPAnimationTest>>setUp<br></div><div>  RSPAnimationTest>>testBasic<br></div><div>  RSPAnimationTest>>testBasicInCanvas<br></div><div>  RSPAnimationTest>>testDelay<br></div><div><br></div><div>This package depends on the following classes:<br></div><div>  ParametrizedTestCase<br></div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  RSPBoundingTest<br></div><div>  RSPBoundingTest class>>testParameters<br></div><div>  RSPBoundingTest>>setUp<br></div><div>  RSPBoundingTest>>shapeClass<br></div><div>  RSPBoundingTest>>shapeClass:<br></div><div>  RSPBoundingTest>>testDraw<br></div><div>  RSPBoundingTest>>testDrawBorder<br></div><div>  RSPBoundingTest>>testPosition<br></div><div>  RSPLinesTest<br></div><div>  RSPLinesTest class>>testParameters<br></div><div>  RSPLinesTest>>setUp<br></div><div>  RSPLinesTest>>shapeClass<br></div><div>  RSPLinesTest>>shapeClass:<br></div><div>  RSPLinesTest>>testDraw<br></div><div>  RSPLinesTest>>testDrawMarkers<br></div><div><br></div><div>This package depends on the following classes:<br></div><div>  AthensLineSegment<br></div><div>  AthensCubicSegment<br></div><div>  AthensCloseSegment<br></div><div>  AthensPathSegment<br></div><div>You must resolve these dependencies before you will be able to load these definitions:<br></div><div>  AthensCloseSegment>>visitWith:<br></div><div>  AthensCubicSegment>>durationFor:<br></div><div>  AthensCubicSegment>>pointsWithStart:duration:<br></div><div>  AthensCubicSegment>>visitWith:<br></div><div>  AthensLineSegment>>durationFor:<br></div><div>  AthensLineSegment>>pointsWithStart:duration:<br></div><div>  AthensPathSegment>>durationFor:<br></div><div>  AthensPathSegment>>pointsWithStart:<br></div><div>  AthensPathSegment>>pointsWithStart:duration:<br></div></div></blockquote><div><br></div></div><br></div><br></blockquote></div></div><div><br></div></div><br></body></html>