On Tue, 1 Feb 2005 21:33:02 +0900, Dick Davies
<rasputnik / hellooperator.net> wrote:
> * Francis Hwang <sera / fhwang.net> [0221 02:21]:
> 
> > What about compatibility with previous versions in the std lib? I wrote
> > a Ruby-driven e-commerce site in 2002, using Ruby 1.6, and those
> > versions of Marshal and Eruby. When the host upgraded to 1.8.2, the
> > site fell down like a ton of bricks, because those libraries were
> > massively backwards incompatible. Luckily, I was available to fix it
> > posthaste, but if I had been, say, on vacation, or no longer working
> > with that company, they would have been screwed.
> 
> But surely if they'd made that bump when you were away they'd only have
> themselves to blame. This isn't really any different to a 1.1.8 -> Java2
> upgrade in essence.
> 
> If the breakage wasn't documented in the release notes, that's another
> matter, of course.
> 

The issues I see are:
* Code that works for version x breaks *without prior warning* when
you upgrade to version x+1.  This case is hard to defend, and may have
been the case for Marshal.

* Code that works for version x breaks *as documented* when you
upgrade to version x+1.  This case is unpleasant but hardly unique to
Ruby.

* New code requires you to have the latest stable release, and all you
have is latest - n  (because you are not root or The Boss or what have
you). Sad, but unless you are paying someone you shouldn't expect
developers to be too concerned with writing new code that runs on
older versions of Ruby. (And I expect this is true in most developer
communities, so nothing scary about Ruby in this regard.)

* A patch is released for some current lib, and it breaks things
*without prior warning*. Even harder to defend than the first case.

* A patch is released for some current lib, and it breaks things *as
documented*.   Sometimes required, but there should be a good reason.

The OP was, I believe, concerned with the second case, that too many
applications and libraries require version 1.8.x, and there are
presumably some number of people still living in 1.6 land.  I really
don't see this as all that different from other language environments.
 Java(tm) 5 comes out, people start taking advantage of the nice new
features, and people stuck on 1.3 or 1.4 are left out in the cold. It
happens, and truthfully those people are no worse off than if those
new apps were never written. (It's probably worse in Javaland; I
recently did work on a j2ee app, and the code had to run on Java 1.3
because the app server still didn't handle 1.4.   And this was a
fairly recent version of the app server.)

In Francis' case,  I'd change hosting providers if they are updating
software without sufficient warning for customers to check and update
their code.  (Ideally, I'd be running my business off a box where I
was root and controlled the environment.)

That's not to excuse any cases where code simply breaks without any
documented warning, but overall I don't see anything happening in the
Ruby development path that is all that different from other languages.
   (Look, if you dare, at PHP 5. Older code might break, or, worse,
keep running but with unexpected behavior.)


James