<div dir="ltr">Hi Chris,<br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 1, 2016 at 7:55 AM, Chris Muller <span dir="ltr">&lt;<a href="mailto:ma.chris.m@gmail.com" target="_blank">ma.chris.m@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">&gt;&gt;&gt;&gt; I guess the distinction between “Kernel” and “System” isn’t quite clear<br>
&gt;&gt;&gt;&gt; to me.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I guess, for me, Kernel contains those things that are essential to a<br>
&gt;&gt;&gt; running Smalltalk image. System contains stuff that&#39;s generally useful<br>
&gt;&gt;&gt; to most things - most, but not all.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;ve long thought that we&#39;ll eventually move Array, OrderedCollection,<br>
&gt;&gt; Set and Dictionary to Kernel so that Collections could be unloaded...<br>
&gt;&gt;<br>
&gt;<br>
&gt; You&#39;d also have to move their superclass hierarchy,<br>
<br>
</span>Of course.  That was implied.<br>
<span class=""><br>
&gt; so that wouldn&#39;t really<br>
&gt; work.<br>
<br>
</span>Why not?<br>
<span class=""><br>
&gt; There&#39;s no need to have a single &quot;kernel&quot; package containing all essential<br>
&gt; classes, so IMHO it&#39;s better to have many kernel packages.<br>
<br>
</span>&quot;Many kernel packages&quot; is what we have now.  So what are we talking<br>
about then?  Just moving things around to different packages based on<br>
some &quot;improved&quot; notion of subjective semantic classification, with no<br>
regard for the physical system dependencies?  Why would that be<br>
beneficial?<br>
<br>
Are Symbols part of any Smalltalk&#39;s Kernel?  Yes, so what benefit is<br>
it to have it in Collections?<br>
<br>
Is LRUCache part of any Smalltalk&#39;s Kernel?  No, but if its in<br>
Collections along with Symbol, then I&#39;m forced to remove it manually<br>
after loading &quot;many kernel packages&quot; if I just want a Kernel system...<br></blockquote><div><br></div><div>So let&#39;s imagine we&#39;re wise and we look forward and we structure the classes in Collections to play well with the category names in Collections, so that all the superclasses of classes in Collections-Abstract, Collections-Arrayed, Collections-Exceptions, Collections-Sequenceable, Collections-Strings and Collections-Support that are themselves Collections classes are in just those categories.  Now I can unload all Collections-blah categories except Collections-Abstract, Collections-Arrayed, Collections-Exceptions, Collections-Sequenceable, Collections-Strings and Collections-Support.  Because when I look at Collections I see that those six categories are those that provide the minimal subset of Collections that supports the core language&#39;s set of literal collections.  It provides more, but it is the minimum to provide Array, ByteArray, ByteString, WideString, Symbol, ByteSymbol and WideSymbol.</div><div><br></div><div>Now, if that analysis is correct would it be better to change the package structure to have Collections-Kernel and Collections-PotPourri, with categories like Collections-Kernel-Abstract, Collections-Kernel-Arrayed and so on, or have some other convention such as a class-side method on Collection that defines the kernel categories?  I don&#39;t know.  I do know that there&#39;s real pedagogical value in having the six (and other) categories above, and I don&#39;t think we should reduce the navigability and comprehensibility of the system to make package structure serve the needs of decomposition rather than the needs of the newbie.  The bug is that packages use categories.  It&#39;s a functional compromise, but it&#39;s a little uncomfortable.  But the key point is that your point above about LRUCache is a bit of a straw man.  If we manage the categories in Collections wisely we can do what you want without too much difficulty.</div></div><div><br></div><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>