48 comments

[ 0.17 ms ] story [ 170 ms ] thread
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.

(comment deleted)
Also, build times. Every project I know that's integrated it has regretted it on this point alone.
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.

This website has terrible scroll.
On chrome it looks like native scrolling. I don't know why they decided to leave 20px of white space at the top though.
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.
It also completely removes the Magic Mouse's swipe-left-to-go-back functionality.

Can we add "and your own page scrolling" to the "Don't roll your own crypto" rule? Please!

This website is unfortunately near unreadable thanks to hijacking my scrolling and constantly pushing me past where I want to look.
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.
> the most open source of the open source licenses

What does that mean?

The least restrictions on what you can do with it. It was the closest to public domain we could find among the major licenses.
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).
That's right. We didn't want to require users to include the copyright in the binary.

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.

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:

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.

Then you mean "most permissive."
If that is really your definition, wouldn't public domain be the "most open source" license?
Public domain has legal problems, such as in some countries it is not recognized.
Check out the 0BSD license: https://spdx.org/licenses/0BSD.html

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.

> 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.
The latest release is a 70-80MB download (depending on archive type). Where are you getting 300MB from? The uncompressed size?
If so, I must have been out of date. I just checked, and the archive is 635MB uncompressed. The joke continues.

It's amazing that people on StackOverflow suggest using this package for things as simple as sort functions.

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.

300 MB is nothing today and I would guess that almost all of us can download it in less than a minute, so where is the problem?
Almost everyone who happens to live in Silicon Valley, sure. Others are not so lucky and have 1mb/s download speed.
Do most people have download speeds greater than 5MB/s?
Isn't the download speed of a typical cable internet connection in the tens of Mbps?

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).

300KB/s here (NYC).
Cable? What ISP? Similar price?
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.
If you consider tests and documentation excess baggage, you are not qualified to have anything to do with things as simple as sort functions.
There is no need to be rude.
The only rudeness I see is towards the Boost project, from hipsters disparaging what is simply above their intellectual level.
Perhaps if you stop being pretentious and start listening to criticism with an open ear, the criticism will make sense.
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

[2] https://github.com/isocpp/CppCoreGuidelines/blob/master/CppC...

Boost really crossed the limits of what's reasonably possible in C++, imho. I wonder if language designers have taken notice.
Microsoft which provide such a standard non-conforming compiler related to the term "Modern C++"? Ugh.
Microsoft is actually the commercial C++ vendor with the best support for ANSI C++.

http://en.cppreference.com/w/cpp/compiler_support

Many people seem to forget there is a world outside clang and gcc.

Am I reading that chart wrong? From that page it looks to me like MSVC is quite a bit behind gcc and clang when it comes to feature support.
"quite a bit behind" ...for C++ 2017?
My point was comparing to other commercial C++ vendors, many of whom are the only option in certain types of projects.
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.