<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">Hi Timothy,<div dir="ltr"><br><blockquote type="cite">On Oct 25, 2020, at 6:24 AM, gettimothy via Squeak-dev <squeak-dev@lists.squeakfoundation.org> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"><div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt;"><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></div></blockquote><div><br></div>No; strategically it would be a disaster.  First, as I understand it the Athens library is built above Cairo, a large foreign dependency, implemented in C, several times larger than the VM itself.  Second, Juan Vuletich is making good progress with Morphic3, a Smalltalk implementation (a Smalltalk compiler) did similar functionality, running on the GPU.  This dependency would be much like our dependency on the VM, in that it used our own technology stack , and therefore we can modify it, and do so quite quickly.<div><br></div><div>So for the moment you should roll you own or host above BitBLT until we can move to Morphic3.  This is essential.  Under no circumstances should you release something using Athens/Cairo.  If will do lasting damage to this community and its strategic direction and viability.<br><div><br><blockquote type="cite"><div dir="ltr"><div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt;"><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: 1px solid rgb(204, 204, 204); padding: 7px; 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?</div><div><br></div><div>cheers,<br></div><div><br></div><div>tty.</div><div><br></div><div><br></div><div><br></div><div>*Install log follows:</div><div><br></div><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; 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:</div></div></blockquote></div></div></blockquote></div><div><br></div><div>_,,,^..^,,,_ (phone)</div></div></body></html>