On 15 May 2015 at 0:38, Peter Dimov wrote:
Boost 1.x is obsolete.
I have to admit that for a long time I hadn't the faintest idea what you were talking about.
I think I get it now. You're saying that most of Boost's internal dependencies are to libraries that are now part of the C++11 standard library, and can therefore be eliminated, so that a newer, cleaner, Boost can have no internal dependencies, and its libraries can therefore be deployed independently of each other.
I don't want the dependencies eliminated. I want them loosened such they can be substituted by users for with STL11 alternatives. I think that a maintainer, when implementing that, would probably also take some measures to reduce dependencies. For many Boost libraries there is a minimal set of course.
You view this as an obvious good thing, because in your opinion, monolithic Boost releases are a pure cost and offer no benefits.
Totally wrong. Monolithic releases are very convenient. I keep one at https://github.com/ned14/boost-release for git submoduling.
All this is questionable. You have access to the dependency report and can - given enough motivation - evaluate, on its basis, whether Boost libraries can feasibly be expected to not depend on other Boost libraries, under the assumption that a C++11 standard library is available. Some of them can, others cannot. You haven't done this research.
No, I'm saying it's up to the maintainer to maintain their library. I believe that means making it able to use as much STL11 as possible if they want to keep it fresh and relevant. Or else they completely rewrite it in C++ 11/14. I don't mind which.
Even though many compilers are now sufficiently C++11 capable, not all of them are, so Boost "1.x" still does have an audience and is, I'd posit, far from obsolete yet.
I don't see why people keep thinking this is an either-or. You don't just convert your library exclusively to STL11. You make it give users the choice to externally select what your library uses. They can still choose Boost as the STL11, and be 98 compatible.
Plus, monolithic Boost releases are a delivery mechanism that puts libraries into the hands of users who could otherwise not have heard of them, or not have had the opportunity to use them due to company policy that requires vetting each dependency. "Boost 1.x" is seen as one entity and this has its downsides but it also has its benefits.
TL;DR: It's not that simple.
I'm not underestimating the effort involved. It cost me 60 hours to port a 18k line library to APIBind. Porting a 50k line library would be considerably longer. But I still claim that if a maintainer is maintaining their library to the ideal level, full STL11 usage is something they have done, are doing, or are planning to do soon, or alternatively are making a C++ 11/14 total rewrite of their library. As a corollary, those maintainers not fully embracing STL11 usage are not maintaining their libraries as well as they should. I could name libraries and maintainers right now who are reaching this ideal and which are not, but I'll leave them volunteer themselves if they choose. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/