<div dir="ltr"><div><div><div><div>I don&#39;t like it much. It&#39;s not really a Kenel thing.<br></div>For Compiler, that&#39;s very simple, remove the logging facility.<br>A Compiler is there to Compile and/or Evaluate, and that&#39;s well enough.<br>
</div><div>If you want logging ask any ad-hoc class in the System - Utilities for example (no no! I&#39;m joking).<br></div><div><br></div>For all the Kernel classes wanting to trigger some system change events, I don&#39;t know.<br>
</div>Maybe it&#39;s a sign that System has to be split.<br>Or we could have kernel methods doing only kernel things, and higher level methods classified in System doing more housekeeping.<br></div><div>Like basicRemoveSelector: (Kernel) vs removeSelector: (System), maybe with better names...<br>
</div><div>Or Behavior&gt;&gt;removeSelector: (Kernel) ClassDescription&gt;&gt;removeSelector: (System)<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/12/10 Frank Shearar <span dir="ltr">&lt;<a href="mailto:frank.shearar@gmail.com" target="_blank">frank.shearar@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 9 December 2013 19:34, Frank Shearar &lt;<a href="mailto:frank.shearar@gmail.com">frank.shearar@gmail.com</a>&gt; wrote:<br>

&gt; On 09 Dec 2013, at 0:10, Chris Muller &lt;<a href="mailto:asqueaker@gmail.com">asqueaker@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; Move SystemChangeNotifier to Kernel.<br>
&gt;<br>
&gt; Well that&#39;s certainly a step at least approximately forwards. It&#39;s not just SystemChangeNotifier that would need to move though: all of System-Change Notifications and System-Object Events would have to move too.<br>

&gt;<br>
&gt; Which is why I&#39;d prefer something that didn&#39;t bloat up Kernel. Because one day we&#39;ll have to untangle Kernel, too.<br>
&gt;<br>
&gt; But it does at least rid several packages of their dependency on System.<br>
<br>
</div>Pulling the thread back to its original topic!<br>
<br>
Moving SystemChangeNotifier to Kernel would solve my immediate package<br>
problems, at the cost of<br>
* preserving the inflexible logging<br>
* adding _17_ classes to Kernel.<br>
<br>
I would still prefer to make the Compiler &quot;loggable&quot;, so you&#39;d inject<br>
whatever logger you wanted. However, that (a) requires someone to<br>
actually do the work and (b) would take quite a while. Oh, and (c)<br>
mucking around with Compiler means being very careful or breaking<br>
things very badly.<br>
<br>
So I&#39;m kind&#39;ve +0.5 about moving SystemChangeNotifier to Kernel. It<br>
_does_ remove a bunch of dependencies on System. (Reminder: depending<br>
on System is only bad^Wproblematic because System depends on too many<br>
other packages. If you&#39;re one of these packages, hey, cycle time!)<br>
<br>
Step up! Vote!<br>
<span class="HOEnZb"><font color="#888888"><br>
frank<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
&gt; frank<br>
&gt;<br>
&gt;&gt; Really, it&#39;s something not only the Compiler NEEDS, there&#39;s also<br>
&gt;&gt; ClassDescription and ClassOrganizer, and the uses are more than just<br>
&gt;&gt; incidental.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Sun, Dec 8, 2013 at 4:46 PM, Frank Shearar &lt;<a href="mailto:frank.shearar@gmail.com">frank.shearar@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt; Compiler depends on System because changing stuff - adding methods,<br>
&gt;&gt;&gt; changing classes, etc. - sends messages to SystemChangeNotifier<br>
&gt;&gt;&gt; uniqueInstance.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; While convenient, it (a) is inflexible and (b) causes a cycle. The<br>
&gt;&gt;&gt; correct relationship is that System uses Compiler.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; With that in mind, _a_ solution to this problem is to log things<br>
&gt;&gt;&gt; through a callback/registration mechanism of some kind. If you care<br>
&gt;&gt;&gt; about logging, you create a Compiler, say &quot;log here&quot; and off you go.<br>
&gt;&gt;&gt; (This means that you remove the log: part of a lot of methods in<br>
&gt;&gt;&gt; Compiler - if you don&#39;t have a logger/loggers attached, nothing<br>
&gt;&gt;&gt; happens, rather than logThis ifTrue: [] blocks. (Because you by<br>
&gt;&gt;&gt; default have a null logger.))<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Thoughts? Other possible approaches?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; frank<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
<br>
</div></div></blockquote></div><br></div>