From: David Abrahams (dave_at_[hidden])
Date: 2008-07-16 14:45:46
on Tue Jul 15 2008, "Robert Ramey" <ramey-AT-rrsd.com> wrote:
>> B) it allows for breaking changes in non-frozen libs to be treated as
>> features and not bugs.
> LOL - this view point is shared by many, perhaps the majority, of
> people in the software development community. It is the bane
> of modern software, leading to composition of components that
> together produce, quirky applications that can be made work
> only with a disproportional amount off effort and frustration.
Most developers don't break interfaces lightly, but occasionally a
breaking interface change can be better for the overall health of
software. At least two of my libraries have had a ground-up redesign
since they were accepted into Boost and I believe that they are better,
easier to use, and the revision produced minimal additional frustration
or effort for users.
Also, avoiding all interface breakage may restrict a developer's
flexibility more than you imagine. Consider:
* Adding an optional argument to a function or an optional class
template argument, which should be a non-breaking change for most
everybody, can break user code.
* Adding an overload can break user code.
* Adding a new name to a namespace can break user code.
* Will you continue to support MSVC6 et al forever? :-)
-- Dave Abrahams BoostPro Computing http://www.boostpro.com