Sean E. Russell wrote:

>Hello,
>
>I didn't see a CC in the email Matz sent me, so I'm forwarding it on to the 
>group.
>
>The context is that I'm contemplating some optimizations to REXML that will, 
>by necessity, cause some API changes which will break some code using REXML.  
>I emailed Matz and asked for his opinion on how to proceed, and asking him 
>whether he wanted to discuss it in private, or in Core.  He responded that 
>he'd like to see it in Core, so here is his response to my email.  My 
>response to him is after the forwarded part.
>
>----------  Forwarded Message  ----------
>
>Subject: Re: Question about massive API changes
>Date: Friday 27 January 2006 22:35
>From: Yukihiro Matsumoto <matz / ruby-lang.org>
>To: "Sean E. Russell" <ser / germane-software.com>
>
>Hi,
>
>On 1/27/06, Sean E. Russell <ser / germane-software.com> wrote:
>  
>
>>Hello Matz,
>>
>>If you think this is better discussed in core, let me know, and I'll repost
>>it there.
>>    
>>
>
>Let us discuss there.  I'd like to hear opinions from others.
>
>  
>
>>As I see it, I have three options:
>>
>>0) Warn everybody, make the changes in 1.9, and have Ruby 2.0 break a lot
>>of applications that use REXML.  This will Piss People Off (tm).
>>
>>1) Create a new package.  REXML2, or something, and add it to the tree.  
>>This is, basically, a fork. People can migrate their apps to the new API as
>>they see fit.  This would mean:
>>        a) A duplicate REXML tree, which bloats the Ruby distribution,
>>        b) A semi-duplicate tree, containing only the files which have
>>changed and which references the base REXML installation.
>>        c) Use a library versioning tool, like Thomas Sawyer's Roll
>>(http://roll.rubyforge.org)
>>
>>3) Don't do anything.  Which sucks, because it means no optimizations.
>>    
>>
1) I personally like total duplication,  the code is all in one place
      when you start searching a library for something.  Considering the
      state of low cost of transfer and storage -- I see no problem.
2) Now for the "I will probably be stoned answer" -- If anybody employed
    either full time or consultant UPGRADES Language Release without
    being aware of any compatility issues between one version and the next
    I'd fire his butt.
3) Nobody is FORCED to Upgrade and break code.  It is a CHOICE beween
    Adjusting your code or living with your current verion (say 1.8.4). 
Which
    by the way works very well.  I only languages I know of that don't break
    something between major releases are DEAD ONES.

4) Please  excuse any ranting that might bleen thru :-)