|
Boost : |
Subject: [boost] Some statistics about the C++ 11/14 mandatory Boost libraries
From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2015-05-13 12:19:38
Tomorrow at 11am after Eric's talk I'll be presenting at C++ Now a
review of the upcoming C++ 11/14 mandatory Boost libraries. I looked
at fifteen libraries and decided ten were worth further
investigation. I'm sure you all remember my colour coded ranking of
those ten libraries by "nearness" to entering Boost:
I sadly only have time to review four of those libraries during my
talk, but one (APIBind) enables an alternative Boost 2.0 approach and
I will spend 45 mins on that library alone. And here is my
alternative Boost 2.0 vision:
Boost 2.0 is a alternative distro of modular standalone Boost
libraries which can be each downloaded separately. Each has
contemporary per commit CI testing and is nightly dashboarded by
quality score by a web service under the 19 quality score headings
listed at https://svn.boost.org/trac/boost/wiki/BestPracticeHandbook
(still unfinished, but nearly there).
APIBind allows the library end user to dependency inject what
dependencies that library uses. This allows a Boost library, in a
single codebase, to be part of both the monolithic Boost 1.x distro
and to be modular and standalone and part of the Boost 2.x distro.
Motivated library maintainers port their Boost 1.x library to the
APIBind platform, and therefore can be part of both 1.x and 2.x
distros if they want.
Those libraries not ported to APIBind remain in the 1.x distro, which
I would assume will gradually fade into obsolescence over time. This
makes sense, as if a maintainer is not motivated to do the port then
it seems proper that library should gracefully deprecate.
There is some empirical data supporting the inevitability of this
alternative vision of Boost 2.0. Of the ten libraries I examined in
any detail:
* Just 1.5 libraries have any dependencies on Boost headers at all
(the 0.5 is because that library is currently removing its Boost
dependencies).
* Just 3 libraries can use Boost.Test.
* Just 3 libraries use Boost Docs.
* Just 2 libraries require using Boost.Build. The rest are header
only, or use cmake.
* Just 6 libraries use Travis/Appveyor for free CI testing on Linux,
OS X and Windows.
* Just 3 libraries use valgrind as part of their unit testing (two
are mine!).
* Just 3 libraries use coveralls for coverage reporting (two are
mine!).
Personally speaking, I think the new library authors are
overwhelmingly voting for a complete break with Boost 1.x. It makes
no sense to bundle these new libraries into a 1.x monolithic distro
when they have no dependencies on Boost.
I believe now is the time we start establishing the infrastructure to
shape the new Boost 2.0 distro instead of wasting resources on trying
to refactor the 1.x distro. APIBind is there for maintainers wanting
to be part of both distros. Let's make a clean break.
Niall
-- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk