From: Robert Ramey (ramey_at_[hidden])
Date: 2008-08-27 01:02:50
David Abrahams wrote:
> on Tue Aug 26 2008, "Robert Ramey" <ramey-AT-rrsd.com> wrote:
> 2. Robert, you're sounding a lot less flexible about this than you
> ended up being in this thread:
I've that in some cases its unavoidable.
My problem is really the idea that breaking an interface is OK
and normal. With a library in wide use, this creates a lot of
new work for hundreds, thousands, tens of thousands? of people
and prevents or delays users from upgrading until they can find
time to put in that effort. Developers who engage in this practice
will find that they lose users. To obsolete all the code that uses
a library is a very costly decision which I believe developers don't
take seriously enough.
I drive an 11 year old Ford Taurus. I just had new spark plugs
put in it. Imagine how I would feel if I was told - we don't make
spark plugs for that model any more. The new design is much,
much better. What do I do - replace the engine?
Of course pollution laws could change and I might be required
purchase some expensive upgrade - as I said, sometimes
and interface change is unavoidable - but it is still costly and
only to be take as a last resort.
I understand that we want to make our works of art perfect.
And its really, really annoying to live with a mistake knowing
that we could have done better. But its self indulgent not to
consider the impact of those who are counting on you to
deliver the benefits of using your library. I'm sure that lots
of projects are stuck with boost 1.33 because of this problem
and I think that's a shame.
And the most annoying thing is that many times its not
really necessary. A new name could be created. Not
as aesthetically pleasing perhaps, but still very effective.
So, I think this is done more often than is really necessary
because the impact of doing so is not sufficiently appreciated.