I think Boost was very successful in encouraging development of high-quality libraries that seamlessly work together (most of the time) and have consistent build infrastructure. It is not that important nowadays because the most important parts have already been integrated into the standard library and we have a de facto standard build system (CMake) that makes it easy working with small libraries that do one job well.
Where Boost is a bit lacking is modularity and somewhat varying library quality but this is kind of expected considering the number of subprojects.
It gets rehashed on the mailing lists all the time but the biggest issue with boost now is backwards compatibility. While it is great to have libraries working on older platforms, it's a pain to use modern cpp features.
With increased modularity, I'm sure this situation will be improved.
On Chrome on a mac, this website is "jerky". I think a lot of these scroll-jacking scripts are designed to make the Windows user's experience better, but in reality, it is screwing up the Mac user's experience where scrolling has already been fixed perfectly for years.
An unexpected dividend of Boost is the Boost License, which is the most open source of the open source licenses. We use it pervasively in the D community.
Of note, the Boost license only requires the copyright statement to be included when distributed in source form-- that's distinct from the MIT license and two-clause BSD, which are otherwise very similar but require the copyright statement to be included in any form (binary or source).
Is CC0 not closer to being public domain? My understanding is that placing a work into public domain is actually non-trivial, so if that's really what you want to do you should use a license explicitly geared toward that:
I'm guessing that's not what you wanted, because when something is truly public domain then you lose any ability to control it whatsoever, but it is what you asked for.
It's even more permissive. It doesn't require preserving copyright notices and including a copy of the license with source code forms, like the boost license does.
I'm not a lawyer, but the license uses the same text as the ISC license, but with the text imposing restrictions removed. So I think it should be as legally valid as the ISC license (again, I'm not a lawyer).
The problem with the boost license is it's pretty specific on "works are solely in the form of machine-executable object code generated by a source language processor." being allowed to be redistributed without including a license, so if I was making an interpreted language, or something that would embed it's own source code in the users code (eg a template library or something), then I don't think the boost license would allow them to redistribute that derived work, whereas 0BSD would.
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> I don't think the boost license would allow them to redistribute that derived work
That clause is only about distributing without the copyright notice. If you have any doubts, just include the copyright notice and you can redistribute it.
Disclaimer: I am not a lawyer and this isn't legal advice.
Is it still required to download the entire 300MB+ Boost library to use a small section of it, like odeint for example? This has always been the "joke" that prevents me from taking it seriously.
Boost is not a package. It is a collection of packages.
If you're using any kind of sane package manager for your builds - NuGet on Win32, distro-specific package managers on Unix etc - that's exactly how it is presented. So you don't take a dependency on Boost - you take a dependency on boost-filesystem, or boost-regex, or boost-date_time etc.
The download isn't even remotely that big. If you are talking about the compiled size, you only need to build what you use (look up the --with-<library> and --without-<library> switchs).
You can also use the included bcp utility [1] to extract a subset of boost.
It's not only the technical size that's the problem. It's the phycological complexity of the software that strays people away from it, and the filesize is an indicator for that. It tells me that the developers aren't opposed to add any feature they feel like, creating overengineered and bloated software.
When this article refers to the term "modern C++" it seems to be talking about Andrei Alexandrescu's now 16 year old notion of modern C++ [1], not the C++11 and newer notion [2].
[1] Addmittedly, Andrei's notion is still completely relevant today (and still, imo, the best C++ book available) but I don't think it's what most people think of when they hear the term "modern c++" these days. - https://en.wikipedia.org/wiki/Modern_C%2B%2B_Design
There are a number of very valuable boost libraries and I don't think anyone would deny that it's been good for the language. However, to achieve that second goal, the website and documentation need some serious work. It can be difficult to pick up a new boost library and hit the ground running.
48 comments
[ 0.17 ms ] story [ 170 ms ] threadWhere Boost is a bit lacking is modularity and somewhat varying library quality but this is kind of expected considering the number of subprojects.
With increased modularity, I'm sure this situation will be improved.
Can we add "and your own page scrolling" to the "Don't roll your own crypto" rule? Please!
What does that mean?
Another advantage Boost has is it is "corporate lawyer approved", meaning the license has never been an issue for any corporation wanting to use D.
https://creativecommons.org/publicdomain/zero/1.0/
I'm guessing that's not what you wanted, because when something is truly public domain then you lose any ability to control it whatsoever, but it is what you asked for.
0: https://opensource.org/licenses/alphabetical
It's even more permissive. It doesn't require preserving copyright notices and including a copy of the license with source code forms, like the boost license does.
I'm not a lawyer, but the license uses the same text as the ISC license, but with the text imposing restrictions removed. So I think it should be as legally valid as the ISC license (again, I'm not a lawyer).
The problem with the boost license is it's pretty specific on "works are solely in the form of machine-executable object code generated by a source language processor." being allowed to be redistributed without including a license, so if I was making an interpreted language, or something that would embed it's own source code in the users code (eg a template library or something), then I don't think the boost license would allow them to redistribute that derived work, whereas 0BSD would.
The license is listed on OSI's page as the "Free Public License" for some reason https://opensource.org/licenses/FPL-1.0.0 , but the text is essentially the same.
Here's the whole 0BSD license text:
Copyright (C) DATE by AUTHOR
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
That clause is only about distributing without the copyright notice. If you have any doubts, just include the copyright notice and you can redistribute it.
Disclaimer: I am not a lawyer and this isn't legal advice.
It's amazing that people on StackOverflow suggest using this package for things as simple as sort functions.
If you're using any kind of sane package manager for your builds - NuGet on Win32, distro-specific package managers on Unix etc - that's exactly how it is presented. So you don't take a dependency on Boost - you take a dependency on boost-filesystem, or boost-regex, or boost-date_time etc.
You can also use the included bcp utility [1] to extract a subset of boost.
[1] http://www.boost.org/doc/libs/1_64_0/tools/bcp/doc/html/inde...
On the east coast I pay about $70 per month for about 50mbps.
I would be interested to here if suburbs elsewhere in the country have it much worse (or much better).
[1] Addmittedly, Andrei's notion is still completely relevant today (and still, imo, the best C++ book available) but I don't think it's what most people think of when they hear the term "modern c++" these days. - https://en.wikipedia.org/wiki/Modern_C%2B%2B_Design
[2] https://github.com/isocpp/CppCoreGuidelines/blob/master/CppC...
http://en.cppreference.com/w/cpp/compiler_support
Many people seem to forget there is a world outside clang and gcc.