Aleksi Niemela wrote:

# On Wed, 21 Feb 2001, Conrad Schneiker wrote:
# 
# > James T. Vradelis wrote:
# > # then I'd volunteer to fix whatever that breaks.
# > 
# > Fixing libraries is the easy part--that is just the lookout tower on 
the
# > mountain of Ruby code in the world. And most of the rest of that code
# > people don't want to hand over to strangers to fix. 
# 
# Good point.
# 
# > Indeed, they don't want it broken in the first place. And they don't
# > want the door opened to repeated breaks for other good ideas. This
# > is an unfortunate fact of life that must be a high priority decision
# > criteria if Ruby is to become widely regarded as a serious
# > development programming language.
# 
# I think things are regular enough, if we just keep them that way in
# the future too. The usual story is
# 
#   major version update probably breaks some code
#   minor version update shouldn't

From what I've seen over the last year+ is that the usual story is to
never knowingly break code. And now there is the added incentive not
to invalidate books (published or in the works). 

# If you have production system which runs fine, you _dont_ want to
# upgrade to a newer version. Because if you do, and it happens to be a
# major revision then you have to accept the fact life you might have to
# update your source code too. You have to accept the fact of life you
# might have to update your source code even when doing minor upgrades.

You omitted to quote the most important reasons for not breaking code, 
which is that (for a great many people) it is a big disincentive to use 
Ruby for production programming. 

# No gains without potential pains.

This is a slogan, not a reason, and there are lots of obvious
counterexamples. But if you are one of those people who believe that
the main path of progress is suffering, why not suffer the pain of
backwards compatibility like Perl, Python, and Java mostly do?

# I agree we should minimize even major release griefs, but I think it's
# completely understandable to have them. No one forces anyone to take
# updates.

But if you are continually creating disincentives to use the latest and
greatest stuff, you are also creating major disincentives to use Ruby
in the first place.

# OTOH, if upgrading to a newer version proves to be too difficult but
# still wants the candies there's a way. This is open source after
# all. Just wrap up your own 1.6.2_with_1.7_gc version by backlogging
# 1.7 enhancements into earlier part of source tree. If it's useful
# enough you'll get many fans by giving out it to other people having
# same problems.

This is not the sort of recommendation that makes Ruby a viable sell to 
management relative to (say) Perl or Python or Java. If I were in such a 
management position and read your post and thought it was the standard 
policy, there is no way I would let people use Ruby for major projects. 

In years past, I was willing, able, and allowed to use Perl on a lot of 
stuff because (among other reasons) we could count on stuff that ran once 
to keep on running without having to worry that an upgrade would break 
stuff. (At least as long as you didn't try to use experimental features or 
very tricky stuff that was never previously clearly specified--which 
aren't the sorts of Ruby changes we are talking about.)

I  am all for backwards-incompatible language changes, but if you want 
Ruby to overtake Python and Perl, such changes should all be combined 
together and should only occur about once a decade or so, when you have a 
Perl4 to Perl5 sort of transition.

Conrad Schneiker
(This note is unofficial and subject to improvement without notice.)