On Sat, Jun 27, 2020 at 9:20 PM Robert Ramey via Boost < boost@lists.boost.org> wrote:
On 6/27/20 3:46 PM, Jeff Garland via Boost wrote:
On Sat, Jun 27, 2020 at 9:02 AM Glen Fernandes via Boost < boost@lists.boost.org> wrote:
It used to not just be a bonus -- it's the prime reason Boost exists. If it no longer has that mission we should make that clearer.
It was the reason Boost was founded, but once C++ standard absorbed most of Boost foundational libraries, Boost needed a new purpose. There was
I must have missed something bc I never got the change of mission memo -- despite being at 'future of boost' in Aspen every year. Still, I mean it's pretty clear that the mission has adjusted over time. Part of the role became supporting std library equivalents on older versions of the standard. Part of it is offering useful extensions that aren't in the standard. Part of it is offering useful libraries that won't ever go into the standard. But the original mission stands. Before C++20 it was the case that a big part of the new content was still rolling in older Boost libraries (aka filesystem in 17). Networking still hasn't made it there - it is a 23 priority. Stacktrace might have a shot at 23 -- was close in 20, but ran out of time. Peter and Glen moved some shared_ptr facilities into 20. I'm helping to shepherd Process, because I believe that it should be there as well. So the pipeline isn't completely dead, but it's no longer the primary input.
That is a decision for the Boost community to make, while there is still a community.
That Boost must supply high quality software, and only such software, has been a fundamental premise of Boost since it's inception. The decision was made long ago. Of course the community could decide that quality could be de-emphasized in order to promote some other value(s) and that would be a decision for the community to make. But so far I don't recall anyone proposing that.
If all C++ library development goes elsewhere then there won't
be much left.
Hmmm - I don't understand what that means. Is C++ library development going somewhere?
Yes it has -- standalone repos on github. As it stands, boost has NO implementations of the c++20 major library changes (ranges, format, span, chrono). Maybe we will get jthread incorporated? How about synchronization primitives like barriers and semaphores? The container erase algorithms? Do we have scope_guard from the fundamentals TS that someone might propose to go 23 - no we don't. Will we have range library extensions already being evaluated for 23 -- seems unlikely, given that we don't have base ranges. So the part of the community that in the past has looked to Boost for 'bridge to a newer standard' is no longer being served going forward. And the part of the community looking at the future isn't being served either. Let me be clear that I'm not suggesting that we reduce quality and consistency. I'm just saying maybe we should think outside the box, like you were with the incubator, for encouraging the rapid incorporation of libraries proposed for the standard. Maybe there needs to be some concerted effort to make a case to library authors that it's worth their time to be part of Boost. Maybe the path doesn't 'start' with the standard review process. Maybe it's a Boost23 package that can be unpacked on top of the usual distro and has a set of boostified proposal libraries. If they go through the review then they would just go into the distro of course.
Putting a bunch of experimental libraries into a Boost release just
because people have proposed them for standardization is not something we should do.
Hmmm - what does experimental mean in this context? If means that quality has been compromised to get the job finished, we shouldn't do it. If means some software which no one would ever think of putting into the standard (symbolic differentiation?), I wouldn't have any problem with it at all. If someone want's to strike out with a whole new direction for character encoding, I would OK with that. But what I would not be happy with is an incomplete/buggy/low quality of any of these things.
People use boost because: a) it's documented b) it works c) it has passed a review process which certifies the above
The above saves user time - which the fundamental thing that they care about.
Let's consider the format library which went into c++20. It's substantial and useful work moving output past i/o streams. It's something that will impact most c++ developers. It's not in Boost, but in my view it would have been even better if it had been in Boost. There would have been more scrutiny of some aspects earlier in the process. The documentation would have been better because a boost review would have forced that to happen. And now there are extensions of that work being proposed -- but Boost isn't in the loop at all. Anyway, the 'implicit assumption' that the proposals and implementations are necessarily of low quality bc they are not in Boost is incorrect. But as mentioned elsewhere the standard deviation is higher -- the level of testing for most is clearly less bc they don't have 20 test runners on top of the standard github CI to test their code. Which means it may, or may not actually compile and work in my environment. Documentation is often a casualty as the effort is in preparation of materials for the committee and not for users.
contribute to the review proposed libraries for the C++ standard. And by that I mean, go and use the implementation. In my case I was doing this for c++20 -- it was super painful. Aside from the time it took to go
I disagree. Consider how painful it is for a c++ programmer that wants to pull
from different places, compiler support and library quality/robustness was all over the map.
How would Boost changing it's mission address this problem?
I see it more as getting back to the core mission, but adapting to the new realities.
After sleeping on it I like the idea more than ever -- so maybe I'll work on it. And if Boost doesn't want to distribute it then it's more of the same mind share drain away from Boost. I think it would be fine to ship the proposed elements outside the main distro until it went thru a normal review. Ideally we'd get more authors to submit to a boost review and come under the tent. Maybe we could have some of the 'boostification' work done by Summer of Code students. Maybe this will led to more libraries like asio that can ship standalone and in Boost as well.
Note that the Boost Library Incubator (www.blincubator.com) was conceived to fulfill a role similar to that which you describe. The requirements to be accepted into the incubator are objective and require not subject review. The web site could/should be simplified/updated as much of the functionality is now better implemented within github itself. But in principle it seems similar to what you have in mind.
Yeah, I agree there's a similarity. I think the difference is I'm thinking of an entire collection of libraries and not a single proposal.
Understood, but we should care about his effort to standardize. Unicode is hard, it's a mess in C++, and average programmers could use a Boost (sorry, so sorry, not sorry :). Ideally what Zach proposes will ship under the Boost banner first. Why? So more than the maybe 20 people on the committee will look at it before the ink is dried and it ships with compilers.
All true, but it should be good enough to pass a boost review before the committee decides to consider it.
The reality of the order is different -- the committee is already looking at it and that is informing the design. Robert Ramey
PS: Off topic
TL;DR
The role, goals, methods, of the C++ library committee have been the subject of much discussion of late. To many of us, it seems very clear that the process is not scaling and the committee as it currently operates can't keep up while still maintaining the level of quality that we and other users demand. Something is going to have to change here, but of course we can never agree.
Sure -- scaling is hard. And yeah, it's how the committee deals with that
is off topic for this list -- but it is clearly on committee members minds. On topic for this list is how WE, the boost community, deal with that scaling and velocity of the current process in the committee. Since at least one of the missions is to in fact help said committee ensure the highest quality library additions possible we might need some new approaches in the current context. Jeff