<!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-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif;'><div>---- On Tue, 03 Jun 2014 09:48:02 -0700 <b>tim Rowledge&lt;tim@rowledge.org&gt;</b> wrote ----</div><div><br></div><div>&gt;&gt;It seems to me this is stuff that ought to be in the main vm files really.<br></div><div id="1"><br>&nbsp;<br></div><div>Which segues into the larger problem--how do we maintain &nbsp;&lt;assume voice of Zeus&gt; "The Canononical List Of Plugins" &lt;/assume voice of Zeus&gt; &nbsp; such that this does not happen?<br></div><div><br></div><div>I have this on my list as a refactoring TODO and thought I would broach it now.</div><div><br></div><div>If you look at the pharo CMakeVMMaker source tree under each platform (CMakeVMMaker-MacOS, CMakeVMMaker-UNIX...etc) you will at times see overrides of the CPlatformConfig's two methods for the list of available plugins.</div><div><br></div><div><br></div><blockquote style="border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-top-width: 1px; border-left-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-style: solid; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; background-color: rgb(245, 245, 245);"><div><div>&nbsp;defaultExternalPlugins<br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self shouldBeImplemented </div><div><br></div><div>defaultInternalPlugins<br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self shouldBeImplemented</div></div></blockquote><div> Subclasses then populate those with an array of plugins to use--thing plugins.int and plugins.ext in the current build tree. The CmakeVMMaker-IOS tree shows how it gets cluttered up. Nowhere in the source code is there a &nbsp;&lt;assume voice of Zeus&gt; "The Canononical List Of Plugins" &lt;/assume voice of Zeus&gt;, so we end up with what we have--missing plugins.</div><div><br></div><div>Now, there is an interesting techique in CogUnixNoGLConfig that subtracts from its parent's list of plugins:&nbsp;<br><blockquote style="border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-top-width: 1px; border-left-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-style: solid; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; background-color: rgb(245, 245, 245);"><div>CogUnixNoGLConfig&gt;defaultExternalPlugins&nbsp;</div><div>&nbsp; &nbsp; &nbsp; ^ (super defaultExternalPlugins copyWithout: #B3DAcceleratorPlugin)</div></blockquote> I like this approach. Start with the superset defined somewhere and then have the subclasses subtract out what they do not want. This way, as plugins are added, they are put in one spot and Zeus is happy.</div><div><br></div><div>The issue then becomes what/where is that Canononical List of Plugins. My thoughts is that it should be self-assembling from whatever plugins are in the system.</div><div>Something "like" <br><blockquote style="border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-top-width: 1px; border-left-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-style: solid; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; background-color: rgb(245, 245, 245);"><div>InterpreterPlugin selectSubclasses:[:e | e isPluginClass] &nbsp; "which gives me a bunch of nils in the set, but its a start"</div></blockquote> <br>Thoughts? ideas?&nbsp;</div><div><br></div><div>thx.</div><div><br></div><div>tty</div><div><br></div><div><br></div><div><br></div><div>tty</div><div> </div></div></body></html>