On Wed, Mar 27, 2024 at 3:47 PM Vinnie Falco via Boost < boost@lists.boost.org> wrote:
I guess I'm confused. My understanding is that libraries are considered good candidates for the Boost collection based on meeting some or all of certain criteria:
* They offer useful, novel functionality not found elsewhere * The API is superior to other libraries that do similar things * The implementation is exceptionally performant * Solving a familiar problem in a particularly elegant fashion * The library is already popular and has field experience * The library offers C++ standard functionality for older compilers
I can't say Boost is about excellence. Far from it. I'd rather call it repository of useful and not-so tools - Some of them become true legends and go into standard (like shared_ptr, regex, thread) - Some are highly influential but sometimes ticky and evolving like Boost.Path - Some bring exceptional concepts and highly useful like Boost.Asio but suffer from issues that made too cutting edge - creating code that takes forever to compile, horrible error messages and gives hard time to average Joe to maintain the code (why Unix Domain Socket and TCP socket are different classes why so much template based code?) - Some come with good basic idea but try to become to C++ nerdy make it too limited and not as useful (like Boost.Beast that I personally voted for no, but this is since I have actual experience in building useful web framework CppCMS) - Some are truly wired concepts that only C++ nerds will be using like Spirit. (I mean Bison is way better tool for any practical purpose - but it isn't as nerdy as Spirit) - Some are just plainly useful and nice like Boost.UUID but nothing exceptional or can't be done easily with other tools. Sometimes Boost libraries go too far with template metaprogramming concepts and create something that looks very useful on paper but true pain in the ... for a normal programmer around. Being myself Boost contributor (in past) I actually use Boost far less, especially since C++11/14 became very common, since using Boost has its own drawbacks like breaking APIs and ABIs, a horrible build system and other stuff that make Boost highly exceptional but also highly problematic in many cases. For me, Boost is what made C++11/C++14 today really useful and playground for something that can be highly useful in future. I wish that new Boost libraries were more concentrated on usability and simplicity instead of fancy stuff. But Boost it is what it is for good and bad. Artyom