<html><body bgcolor="#FFFFFF"><div>Hey,</div><div>Happy new year. I hope all is well with you and yours :-)</div><div><br></div><div><br><br>Sent from my iPhone<div>Sean Glazier</div><div>Live with Passion</div><div><br></div></div><div><br>On Jan 3, 2010, at 7:58 PM, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>&gt; wrote:<br><br></div><div></div><blockquote type="cite"><div><br><br><div class="gmail_quote">On Sun, Jan 3, 2010 at 7:49 AM, Andreas Raab <span dir="ltr">&lt;<a href="mailto:andreas.raab@gmx.de"><a href="mailto:andreas.raab@gmx.de">andreas.raab@gmx.de</a></a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">Mariano Martinez Peck wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
As a "repeater offender" you will probably don't answer be. But anyway... we were discussing a couple of days ago with the Pharo guys about unloading and the biggest problem we found were the overrides of the packages. Do you handle this situation?<br>

</blockquote>
<br></div>
Sure: Don't use overrides. Overrides are a necessary evil when you can't change the underlying system to use proper means of composing the desired behavior. However, if you are in control it's plain insanity to use overrides. Why in the lord's name would you use overrides unless you absolutely, positively had to?<br>
</blockquote><div><br></div><div>Because one is experimenting. &nbsp;I agree with you Andreas that overrides are evil and that in a well-designed system they can be eliminated by well-designed extensibility conventions. &nbsp;However, in experimentation phases before such extensibility schemes have been engineered or been justified economically, good support for overrides are a reasonable substitute, and as you admit, necessary. &nbsp;The problem with Monticello's overrides is simply with their implementation above method versions. &nbsp;As we've discussed recently an alternative implementation of a dictionary from overridden item (method reference or class definition reference) to a dictionary from package name to version in that package, along with a global package load order, would allow the system to compute all the overridden items reliably at any time, and compute the most recent previous version when unloading a package that overrides. &nbsp;The modifications to Monticello would be minimal - maintain a global load order, enter overridden definitions into the override map on load, and remove entries from the override map on unload.</div>
<div><br></div><div>I know, code speaks louder than words. &nbsp;I'll see what I can do in my copious spare time ;)</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Cheers,<br><font color="#888888">
 &nbsp;- Andreas<br>
<br>
</font><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div><div class="h5">
On Sun, Jan 3, 2010 at 3:09 PM, Andreas Raab &lt;<a href="mailto:andreas.raab@gmx.de" target="_blank"><a href="mailto:andreas.raab@gmx.de">andreas.raab@gmx.de</a></a> &lt;mailto:<a href="mailto:andreas.raab@gmx.de" target="_blank"><a href="mailto:andreas.raab@gmx.de">andreas.raab@gmx.de</a></a>&gt;&gt; wrote:<br>

<br>
 &nbsp; &nbsp;Folks -<br>
<br>
 &nbsp; &nbsp;I've been going through various packages, and we're actually capable<br>
 &nbsp; &nbsp;of unloading quite a bit of them cleanly by now. I've attached my<br>
 &nbsp; &nbsp;unload script which (on a most recent updated trunk image with no<br>
 &nbsp; &nbsp;additional packages loaded) will be able to unload the following<br>
 &nbsp; &nbsp;packages:<br>
 &nbsp; &nbsp;- ReleaseBuilder, ScriptLoader<br>
 &nbsp; &nbsp;- 311Deprecated, 39Deprecated<br>
 &nbsp; &nbsp;- Universes, SMLoader, SMBase, Installer-Core<br>
 &nbsp; &nbsp;- VersionNumberTests, VersionNumber<br>
 &nbsp; &nbsp;- Services-Base, PreferenceBrowser, Nebraska<br>
 &nbsp; &nbsp;- CollectionsTests, GraphicsTests, KernelTests, MorphicTests<br>
 &nbsp; &nbsp;- MultilingualTests, NetworkTests, ToolsTests, TraitsTests<br>
 &nbsp; &nbsp;- XML-Parser, Traits<br>
 &nbsp; &nbsp;After these packages been unloaded there are no Undeclared<br>
 &nbsp; &nbsp;references or obsolete behaviors or modified MC packages. There are<br>
 &nbsp; &nbsp;several more candidate packages, some of which I could use some help<br>
 &nbsp; &nbsp;with:<br>
<br>
 &nbsp; &nbsp;* Tests: The tests package is currently not unloadable because it<br>
 &nbsp; &nbsp;includes ClassTestCase which is used from several other places.<br>
 &nbsp; &nbsp;There is a fundamental question here whether we should aim for<br>
 &nbsp; &nbsp;making all tests as well as SUnit unloadable or not. If the former,<br>
 &nbsp; &nbsp;then we need to move tests out of packages like Files, System or MC<br>
 &nbsp; &nbsp;in order to make them unloadable. If we're not shooting for making<br>
 &nbsp; &nbsp;SUnit unloadable it may be worthwhile to promote ClassTestCase up to<br>
 &nbsp; &nbsp;SUnit so that the Tests package becomes unloadable. Comments?<br>
<br>
 &nbsp; &nbsp;* Morphic-Extras: I don't understand the intent of this package. The<br>
 &nbsp; &nbsp;name implies to me that it includes "extras" which I'd expect to be<br>
 &nbsp; &nbsp;optional content that should be unloadable at will but the reality<br>
 &nbsp; &nbsp;is that even attempting to unload it (I foolishly tried) blows up<br>
 &nbsp; &nbsp;left and right. Question: Is the intention of Morphic-Extras to<br>
 &nbsp; &nbsp;contain unloadable content? If so, it's not doing its job currently.<br>
 &nbsp; &nbsp;If that's not the intention of Morphic-Extras, I'd appreciate a<br>
 &nbsp; &nbsp;heads-up of what the rationale for the structure is.<br>
<br>
 &nbsp; &nbsp;* ST80: This is still a bit off but we're getting there. It can<br>
 &nbsp; &nbsp;actually be unloaded but there are still several Undeclared<br>
 &nbsp; &nbsp;variables and obsolete behaviors after unloading MVC. But the good<br>
 &nbsp; &nbsp;news is that the system is still functioning (!) instead of horribly<br>
 &nbsp; &nbsp;dying as it used to be. We could use a bit of additional help from<br>
 &nbsp; &nbsp;people with an interest in this area.<br>
<br>
 &nbsp; &nbsp;Cheers,<br>
 &nbsp; &nbsp; - Andreas<br>
<br>
<br>
<br>
<br>
<br></div></div>
------------------------------------------------------------------------<br>
<br>
<br>
</blockquote>
<br>
<br>
</blockquote></div><br>
</div></blockquote><blockquote type="cite"><div><span></span><br></div></blockquote></body></html>