<div dir="ltr"><div dir="ltr"><div>This is very interesting! I think what you say makes sense.</div><div><br></div><div>You leave me thinking about that distinction (i.e. a method that we strongly expect to be there, vs. a method that <i>could</i> be there for completeness, but which is not really necessary). I guess this is something I don't think too much about when I consider the "type" of an object (i.e. which messages it should be able to correctly understand). I think I tend to view each message as either part or not part of the expected protocol, not something in between (like "maybe/probably part of the protocol").</div><div><br></div><div>Other things that I have in my mind:<br><ul><li>I'm not sure if we should have another marker for these "nice to have" messages. My first reaction is "no", just because we'd be adding more elements to think about in the system; but then I come back to the original distinction, which is something we should think about anyway (even if implicitly)!</li><li>One concrete "middle ground" in this case could be to implement SystemWindow>>#buildMorphicWindow as an empty method, maybe with a comment mentioning that it's just a non-essential extension point which <i>could</i> be overridden by subclasses (but it's not necessary to do so to have e.g. #open:label: work, etc.).</li></ul></div><div><br></div><div>I hope my comments make sense (mostly things to ponder, we don't necessarily need to act on them right now).</div><div><br></div><div>Cheers!</div><div>Facu</div><div><br></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">El mar, 7 abr 2026 a las 15:39, Juan Vuletich (<<a href="mailto:juan@jvuletich.org">juan@jvuletich.org</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Facu,<br>
<br>
I don't like adding a send to #subclassResponsibility in the abstract <br>
class in this case. #subclassResponsibility is a strong assertion from <br>
the system that all subclasses should reimplement that method. It is a <br>
message directed to any developer adding a new subclass. And in this <br>
case, that's not true. There are subclasses that don't need that method <br>
at all. It is true, #open:label: will fail. That only means that <br>
#open:label: is not appropriate for them. Adding the call to <br>
#subclassResponsibility would not change this fact.<br>
<br>
Hope this makes sense to you.<br>
<br>
Thanks,<br>
<br>
On 2026-04-02 4:14 PM, Facundo Javier Gelatti via Cuis-dev wrote:<br>
> The #buildMorphicWindow message is sent from SystemWindow class >> <br>
> #open:label:, and the method is on many window classes on the system, <br>
> so I thought it'd be nice to have the abstract method in SystemWindow. <br>
> I attach a (very small) change that adds that method.<br>
><br>
> I also noticed this method is missing in TranscriptWindow, <br>
> WorkspaceWindow and PreDebugWindow, so the #open:label: message is <br>
> failing on those classes. I'm not sure what we should do about them.<br>
><br>
> Cheers!<br>
> Facu<br>
><br>
-- <br>
Juan Vuletich<br>
<a href="http://www.cuis.st" rel="noreferrer" target="_blank">www.cuis.st</a><br>
<a href="http://github.com/jvuletich" rel="noreferrer" target="_blank">github.com/jvuletich</a><br>
<a href="http://researchgate.net/profile/Juan-Vuletich" rel="noreferrer" target="_blank">researchgate.net/profile/Juan-Vuletich</a><br>
<a href="http://independent.academia.edu/JuanVuletich" rel="noreferrer" target="_blank">independent.academia.edu/JuanVuletich</a><br>
<a href="http://patents.justia.com/inventor/juan-manuel-vuletich" rel="noreferrer" target="_blank">patents.justia.com/inventor/juan-manuel-vuletich</a><br>
<br>
</blockquote></div></div>