<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Dec 12, 2013 at 1:59 AM, Frank Shearar <span dir="ltr">&lt;<a href="mailto:frank.shearar@gmail.com" target="_blank">frank.shearar@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">That is largely true, but I have a little voice in my head screaming<br>
&quot;no! no! no!&quot; because the change is just too easy.<br>
<br>
So far we have +1.5 from Chris and I, and -1 from Nicolas. Eliot?<br></blockquote><div><br></div><div>I like the Announcements route.  SystemChangeNotifier is a dog.  Compatibility with Pharo is in the long-term very important (but it has to be a two-way street, and not blind).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Bert? Everyone else?<br>
<span class="HOEnZb"><font color="#888888"><br>
frank<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On 12 December 2013 00:04, Chris Muller &lt;<a href="mailto:asqueaker@gmail.com">asqueaker@gmail.com</a>&gt; wrote:<br>
&gt; Moving it to Kernel scratches the immediate dependency itch without<br>
&gt; inhibiting any future ideas.  There&#39;s no rush.  There&#39;s plenty of time<br>
&gt; to think about and discuss changing it into something that can<br>
&gt; satisfies everyone&#39;s functional and aesthetic needs.<br>
&gt;<br>
&gt; On Tue, Dec 10, 2013 at 3:45 PM, Nicolas Cellier<br>
&gt; &lt;<a href="mailto:nicolas.cellier.aka.nice@gmail.com">nicolas.cellier.aka.nice@gmail.com</a>&gt; wrote:<br>
&gt;&gt; I don&#39;t like it much. It&#39;s not really a Kenel thing.<br>
&gt;&gt; For Compiler, that&#39;s very simple, remove the logging facility.<br>
&gt;&gt; A Compiler is there to Compile and/or Evaluate, and that&#39;s well enough.<br>
&gt;&gt; If you want logging ask any ad-hoc class in the System - Utilities for<br>
&gt;&gt; example (no no! I&#39;m joking).<br>
&gt;&gt;<br>
&gt;&gt; For all the Kernel classes wanting to trigger some system change events, I<br>
&gt;&gt; don&#39;t know.<br>
&gt;&gt; Maybe it&#39;s a sign that System has to be split.<br>
&gt;&gt; Or we could have kernel methods doing only kernel things, and higher level<br>
&gt;&gt; methods classified in System doing more housekeeping.<br>
&gt;&gt; Like basicRemoveSelector: (Kernel) vs removeSelector: (System), maybe with<br>
&gt;&gt; better names...<br>
&gt;&gt; Or Behavior&gt;&gt;removeSelector: (Kernel) ClassDescription&gt;&gt;removeSelector:<br>
&gt;&gt; (System)<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 2013/12/10 Frank Shearar &lt;<a href="mailto:frank.shearar@gmail.com">frank.shearar@gmail.com</a>&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 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;&gt;&gt; &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;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; Move SystemChangeNotifier to Kernel.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Well that&#39;s certainly a step at least approximately forwards. It&#39;s not<br>
&gt;&gt;&gt; &gt; just SystemChangeNotifier that would need to move though: all of<br>
&gt;&gt;&gt; &gt; System-Change Notifications and System-Object Events would have to move too.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Which is why I&#39;d prefer something that didn&#39;t bloat up Kernel. Because<br>
&gt;&gt;&gt; &gt; one day we&#39;ll have to untangle Kernel, too.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; But it does at least rid several packages of their dependency on System.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Pulling the thread back to its original topic!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Moving SystemChangeNotifier to Kernel would solve my immediate package<br>
&gt;&gt;&gt; problems, at the cost of<br>
&gt;&gt;&gt; * preserving the inflexible logging<br>
&gt;&gt;&gt; * adding _17_ classes to Kernel.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I would still prefer to make the Compiler &quot;loggable&quot;, so you&#39;d inject<br>
&gt;&gt;&gt; whatever logger you wanted. However, that (a) requires someone to<br>
&gt;&gt;&gt; actually do the work and (b) would take quite a while. Oh, and (c)<br>
&gt;&gt;&gt; mucking around with Compiler means being very careful or breaking<br>
&gt;&gt;&gt; things very badly.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; So I&#39;m kind&#39;ve +0.5 about moving SystemChangeNotifier to Kernel. It<br>
&gt;&gt;&gt; _does_ remove a bunch of dependencies on System. (Reminder: depending<br>
&gt;&gt;&gt; on System is only bad^Wproblematic because System depends on too many<br>
&gt;&gt;&gt; other packages. If you&#39;re one of these packages, hey, cycle time!)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Step up! Vote!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; frank<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; frank<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; Really, it&#39;s something not only the Compiler NEEDS, there&#39;s also<br>
&gt;&gt;&gt; &gt;&gt; ClassDescription and ClassOrganizer, and the uses are more than just<br>
&gt;&gt;&gt; &gt;&gt; incidental.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &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;<br>
&gt;&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt;&gt; Compiler depends on System because changing stuff - adding methods,<br>
&gt;&gt;&gt; &gt;&gt;&gt; changing classes, etc. - sends messages to SystemChangeNotifier<br>
&gt;&gt;&gt; &gt;&gt;&gt; uniqueInstance.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; While convenient, it (a) is inflexible and (b) causes a cycle. The<br>
&gt;&gt;&gt; &gt;&gt;&gt; correct relationship is that System uses Compiler.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; With that in mind, _a_ solution to this problem is to log things<br>
&gt;&gt;&gt; &gt;&gt;&gt; through a callback/registration mechanism of some kind. If you care<br>
&gt;&gt;&gt; &gt;&gt;&gt; about logging, you create a Compiler, say &quot;log here&quot; and off you go.<br>
&gt;&gt;&gt; &gt;&gt;&gt; (This means that you remove the log: part of a lot of methods in<br>
&gt;&gt;&gt; &gt;&gt;&gt; Compiler - if you don&#39;t have a logger/loggers attached, nothing<br>
&gt;&gt;&gt; &gt;&gt;&gt; happens, rather than logThis ifTrue: [] blocks. (Because you by<br>
&gt;&gt;&gt; &gt;&gt;&gt; default have a null logger.))<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Thoughts? Other possible approaches?<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; frank<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>