
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. Robert Ramey