<br><font size=2 face="Courier New">Stéphane,</font>
<br>
<br>
<br><font size=2><tt>Oh me, oh my! I must apologize here. I know that I am coming across</tt></font>
<br><font size=2><tt>here as calling your baby "ugly". 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. 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. 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. 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 "The object of this</tt></font>
<br><font size=2><tt>game is to remain employed." I think this was good advice.</tt></font>
<br>
<br>
<br><font size=2 face="Courier New">>Traits support a better factoring of code and reuse within and among <br>
>classes.</font>
<br>
<br><font size=2 face="Courier New">Agreed. Please, teach us why this is important. It is not</font>
<br><font size=2 face="Courier New">"intuitively obvious" even to some fairly sophisticated observers.</font>
<br>
<br>
<br><font size=2 face="Courier New">>> The other idea that I was trying to get across is that code reuse <br>
>> is a double-edged sword. While it can reduce maintenance effort, <br>
>> and improve the overall quality of a code base, it also makes the <br>
>> codebase more brittle by introducing heavily loaded single points <br>
>> of failure.<br>
><br>
>I do not buy that.<br>
>I know a company that duplicated 3 millions of C++ code 15 times and <br>
>they are in trouble.<br>
</font>
<br><font size=2 face="Courier New">Three million lines of C++ code is a disaster already. They wouldn't</font>
<br><font size=2 face="Courier New">need to duplicate it 15 times to get in trouble. I would even say</font>
<br><font size=2 face="Courier New">3 million lines of any kind of code is trouble. 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. 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. When resources are abundant, people tend to be carefree</font>
<br><font size=2 face="Courier New">regarding their use of the resources. 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. 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">>> My point is <br>
>> that common behavior that COULD be reused and benefit from Traits <br>
>> is not usually identified until quite late in the game, after a lot <br>
>> of code has already been written, if it can be identified at all.<br>
><br>
>then?<br>
</font>
<br><font size=2 face="Courier New">Then nothing. You guys don't need a pat on the back. You already know</font>
<br><font size=2 face="Courier New">that your work is significant and has value. And just to state it</font>
<br><font size=2 face="Courier New">clearly, "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."</font>
<br><font size=2 face="Courier New">That doesn't mean I love it. It is new and you should expect to</font>
<br><font size=2 face="Courier New">have to do some "marketing" 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">>> So, in this <br>
>> respect I don't think that the Collection hierachy is a very strong <br>
>> example for showing the benefits of Traits. You had my attention <br>
>> more with the RectangleMorph example. There you were going to save <br>
>> 70 methods with only 3 classes involved.<br>
><br>
>What can I say?<br>
>You can use Smalltalk as it was 20 years ago.<br>
>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 "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." ?</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. 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">>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. 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">>> Traits shows clear value in refactoring, but refactoring is "code <br>
>> cleaning", and it doesn't happen much in the real world. In fact, <br>
>> it is sometimes "forbidden" because it is seen as a high risk to <br>
>> touch code that is "field proven".<br>
><br>
>So what you are saying is that we shoudl not do anything.<br>
</font>
<br><font size=2 face="Courier New">No. 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 "field proven" trumps "better designed, more easily maintained,</font>
<br><font size=2 face="Courier New">or more efficient", 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">>So with that state of mind do you think that we would programming in <br>
>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. 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), 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. He gave a very nice, constructive,</font>
<br><font size=2 face="Courier New">diplomatic reply to my concerns. 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"> -Dean</font>
<br>
<br>
<br>
<br>
<br>