<br><font size=2 face="Courier New">Stéphane,</font>
<br>
<br>
<br><font size=2><tt>Oh me, oh my! &nbsp;I must apologize here. &nbsp;I know that I am coming across</tt></font>
<br><font size=2><tt>here as calling your baby &quot;ugly&quot;. &nbsp;And I can easily see how you might</tt></font>
<br><font size=2><tt>think I am advocating some of the counterpoints I offer. &nbsp;That isn't</tt></font>
<br><font size=2><tt>my intent.</tt></font>
<br>
<br><font size=2><tt>I'm glad that Jecel can afford to quit jobs like the one I describe.</tt></font>
<br><font size=2><tt>I am not so lucky. &nbsp;I don't necessaryily agree with the way things</tt></font>
<br><font size=2><tt>are done, but they still manage to make a sizeable deposit my bank</tt></font>
<br><font size=2><tt>acount every other Friday and give me interesting problems to solve</tt></font>
<br><font size=2><tt>every day, so they must be doing something right. &nbsp;So I give them</tt></font>
<br><font size=2><tt>the benefit of the doubt and continue trying nudge the whole thing</tt></font>
<br><font size=2><tt>towards a better state.</tt></font>
<br>
<br><font size=2><tt>Early in my career, a marketing manager told me &quot;The object of this</tt></font>
<br><font size=2><tt>game is to remain employed.&quot; &nbsp;I think this was good advice.</tt></font>
<br>
<br>
<br><font size=2 face="Courier New">&gt;Traits support a better factoring of code and reuse within and among &nbsp;<br>
&gt;classes.</font>
<br>
<br><font size=2 face="Courier New">Agreed. &nbsp;Please, teach us why this is important. &nbsp;It is not</font>
<br><font size=2 face="Courier New">&quot;intuitively obvious&quot; even to some fairly sophisticated observers.</font>
<br>
<br>
<br><font size=2 face="Courier New">&gt;&gt; The other idea that I was trying to get across is that code reuse &nbsp;<br>
&gt;&gt; is a double-edged sword. &nbsp;While it can reduce maintenance effort, &nbsp;<br>
&gt;&gt; and improve the overall quality of a code base, it also makes the &nbsp;<br>
&gt;&gt; codebase more brittle by introducing heavily loaded single points &nbsp;<br>
&gt;&gt; of failure.<br>
&gt;<br>
&gt;I do not buy that.<br>
&gt;I know a company that duplicated 3 millions of C++ code 15 times and &nbsp;<br>
&gt;they are in trouble.<br>
</font>
<br><font size=2 face="Courier New">Three million lines of C++ code is a disaster already. &nbsp;They wouldn't</font>
<br><font size=2 face="Courier New">need to duplicate it 15 times to get in trouble. &nbsp;I would even say</font>
<br><font size=2 face="Courier New">3 million lines of any kind of code is trouble. &nbsp;I don't believe that</font>
<br><font size=2 face="Courier New">there are many problems that people are currently trying to solve</font>
<br><font size=2 face="Courier New">with computers that justify this much code. &nbsp;It's just too much</font>
<br><font size=2 face="Courier New">code for most people to understand.</font>
<br>
<br><font size=2 face="Courier New">I also assign some responsibility to the advancement of hardware</font>
<br><font size=2 face="Courier New">design. &nbsp;When resources are abundant, people tend to be carefree</font>
<br><font size=2 face="Courier New">regarding their use of the resources. &nbsp;If we didn't have hardware that</font>
<br><font size=2 face="Courier New">can run 3 million lines of C++, people wouldn't write 3 million line</font>
<br><font size=2 face="Courier New">solutions.</font>
<br>
<br><font size=2 face="Courier New">I am not trying to say that duplication is universally good. &nbsp;I am</font>
<br><font size=2 face="Courier New">saying that 100% elimination of duplication ***can be*** very bad.</font>
<br>
<br><font size=2 face="Courier New">&gt;&gt; My point is &nbsp;<br>
&gt;&gt; that common behavior that COULD be reused and benefit from Traits &nbsp;<br>
&gt;&gt; is not usually identified until quite late in the game, after a lot &nbsp;<br>
&gt;&gt; of code has already been written, if it can be identified at all.<br>
&gt;<br>
&gt;then?<br>
</font>
<br><font size=2 face="Courier New">Then nothing. &nbsp;You guys don't need a pat on the back. &nbsp;You already know</font>
<br><font size=2 face="Courier New">that your work is significant and has value. &nbsp;And just to state it</font>
<br><font size=2 face="Courier New">clearly, &quot;I think that Traits is a significant development and has</font>
<br><font size=2 face="Courier New">significant value in advancing the state of software composition.&quot;</font>
<br><font size=2 face="Courier New">That doesn't mean I love it. &nbsp;It is new and you should expect to</font>
<br><font size=2 face="Courier New">have to do some &quot;marketing&quot; if you want to see it accepted by the</font>
<br><font size=2 face="Courier New">masses.</font>
<br>
<br><font size=2 face="Courier New">&gt;&gt; So, in this &nbsp;<br>
&gt;&gt; respect I don't think that the Collection hierachy is a very strong &nbsp;<br>
&gt;&gt; example for showing the benefits of Traits. &nbsp;You had my attention &nbsp;<br>
&gt;&gt; more with the RectangleMorph example. &nbsp;There you were going to save &nbsp;<br>
&gt;&gt; 70 methods with only 3 classes involved.<br>
&gt;<br>
&gt;What can I say?<br>
&gt;You can use Smalltalk as it was 20 years ago.<br>
&gt;You can also use a trait image without using traits.</font>
<br>
<br><font size=2 face="Courier New">Oh come now Stef, you don't have to go getting all French on me. ;-)</font>
<br>
<br><font size=2 face="Courier New">You could say &quot;Gee, maybe we could work on another paper that more</font>
<br><font size=2 face="Courier New">strongly shows the strengths of Traits and convinces the skeptics.&quot; ?</font>
<br>
<br><font size=2 face="Courier New">It's a strange phenomenon that there will always be detractors when</font>
<br><font size=2 face="Courier New">you try to introduce something new. &nbsp;Often they are people who you</font>
<br><font size=2 face="Courier New">really don't like, but nevertheless, in order to prevail you must</font>
<br><font size=2 face="Courier New">still try to win them over.</font>
<br>
<br>
<br><font size=2 face="Courier New">&gt;C++ is not flexible it is complex, complex and complex.</font>
<br><font size=2 face="Courier New"><br>
It is both, but we don't need to belabor this point. &nbsp;I think we agree</font>
<br><font size=2 face="Courier New">that C++ is an abomination and scourge of good software development</font>
<br><font size=2 face="Courier New">everywhere.</font>
<br>
<br><font size=2 face="Courier New">&gt;&gt; Traits shows clear value in refactoring, but refactoring is &quot;code &nbsp;<br>
&gt;&gt; cleaning&quot;, and it doesn't happen much in the real world. &nbsp;In fact, &nbsp;<br>
&gt;&gt; it is sometimes &quot;forbidden&quot; because it is seen as a high risk to &nbsp;<br>
&gt;&gt; touch code that is &quot;field proven&quot;.<br>
&gt;<br>
&gt;So what you are saying is that we shoudl not do anything.<br>
</font>
<br><font size=2 face="Courier New">No. &nbsp;What I am saying is that there are very real, and significant</font>
<br><font size=2 face="Courier New">barriers to acceptance of Traits and the benefits thereof in real,</font>
<br><font size=2 face="Courier New">heavily funded and profitable projects, in spite of C++ and all</font>
<br><font size=2 face="Courier New">of the other ugliness that they are comprised of.</font>
<br>
<br><font size=2 face="Courier New">You need to know that there are really people out there who think</font>
<br><font size=2 face="Courier New">that &quot;field proven&quot; trumps &quot;better designed, more easily maintained,</font>
<br><font size=2 face="Courier New">or more efficient&quot;, and many of these people are our bosses, and</font>
<br><font size=2 face="Courier New">they aren't completely wrong.</font>
<br>
<br><font size=2 face="Courier New">&gt;So with that state of mind do you think that we would programming in &nbsp;<br>
&gt;OOP today or still in assembly.<br>
</font>
<br><font size=2 face="Courier New">I think a lot of people program in C++ and Java. &nbsp;I think very few</font>
<br><font size=2 face="Courier New">people engage in OOP, even though many may think that they do.</font>
<br>
<br><font size=2 face="Courier New">So if you've stuck with me this far (I know, I can be verbose, to say</font>
<br><font size=2 face="Courier New">the least), &nbsp;I would just like to say you guys are very fortunate to</font>
<br><font size=2 face="Courier New">have Daniel Vainsencher on your side. &nbsp;He gave a very nice, constructive,</font>
<br><font size=2 face="Courier New">diplomatic reply to my concerns. &nbsp;And his reply more than anything else</font>
<br><font size=2 face="Courier New">persuades me that it is good to make the use of Traits possible in</font>
<br><font size=2 face="Courier New">Squeak.</font>
<br>
<br><font size=2 face="Courier New">And while I respect Daniel's reverence to Tracy Kidder, Ed Yourdon is</font>
<br><font size=2 face="Courier New">also worth consideration.</font>
<br>
<br><font size=2 face="Courier New">I still don't want to see anything get slower. ;-)</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; -Dean</font>
<br>
<br>
<br>
<br>
<br>