|
Boost : |
Subject: Re: [boost] Breaking existing libraries
From: Ravi (lists_ravi_at_[hidden])
Date: 2008-11-21 12:20:24
On Friday 21 November 2008 10:00:44 Dean Michael Berris wrote:
> We all want to have well tested code, but the best tests
> we can run/write are those tests that actually test the software we do
> write -- because only these tests are the ones that really matter in
> the context of the software we are writing and in deciding whether to
> upgrade the libraries we use or not.
Well said. From a mere user's point of view, most of the complaints about
interface changes are bogus:
1. No one forces anyone else to upgrade from one boost version to another;
some of the projects I work on use 1.33.1 and others use svn versions; every
change in external dependencies must be validated against internal tests (of
the client software). Whenever external dependencies (even compilers) change,
be prepared for breakage unless you have a rigorous test suite.
2. One person's bug fix is another's breaking change. The only arbiter is
the library author. Boost explicitly avoids design by committee and unless
that policy is changed, there cannot be multiple arbiters. The only valid
claim that can be made is that all changes must be properly documented.
3. In a corporate environment, building a new version of boost is extremely
simple; as Volodya said, only 5-10min of actual human time is required. The
only real work is in validating local conformance tests, which must be done
for every change in external dependencies anyway.
4. Boost interfaces have been pretty stable for the most part. The core
Boost libraries whose interface will rarely ever change are the ones supplied
by your compiler vendor, i.e., the ones accepted by the C++ committee. All
others are in continuous improvement; changes are made by the authors because
they believe it improves the library. Judgements regarding library upgrades
(e.g., trading off interface changes for the benefits of upgrading that accrue
to that particular user) are subjective; see point 2 above about arbiters.
Boost goes through similar discussions every few months almost as if on
schedule, and the regardless of the conensus (if any), the procedure simply
has stayed unchanged because any change requires more manpower which is simply
not available. I don't believe any changes will be precipitated by this
discussion either.
Regards,
Ravi
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk