Why You Should Use the Boost Software License
06 Sep 2020Because it doesn’t require attribution for binaries.
All popular licenses – MIT, Apache, BSD – contain language similar to the following:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
And, in fact, so does the Boost license:
The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software
except it continues with
unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.
and the others contain no such exemption.
For the purposes of copyright law, when you compile the source text, the resulting object code, library code or executable program is considered a derived work. That is, the original license terms still apply to it as they would have applied to a copy of the source code, processed in some other way (reformatted, for instance.)
What this means is that the requirement to include the copyright notice
still applies. This, in practice, is met by either including the copyright
notice in the documentation, having a dialog box or a --license
command
line option that displays the license, or sometimes both (lawyers like to
be on the safe side.)
If you’re writing an open source C++ library, it’s much more convenient for your users if you don’t impose this attribution requirement for binaries. You still want it to apply to copies in source code form, just not to compiled code.
This is what the Boost Software License was created to enable, and this is why you should use it for your open source libraries.
The Boost Software License is not just for Boost libraries. Everyone can, and should, use it.
It’s true that it’s a requirement to get your code in Boost, but that’s not the only benefit. It can also get your code in standard library implementations. Microsoft’s STL, for example, is now open source on Github, but since Microsoft’s customers cannot abide by a binary attribution clause, code inside the STL can only use a license that doesn’t impose one. As explained by Stephan T. Lavavej in this Reddit comment, the two licenses that meet this requirement are the Boost Software License and the Apache 2.0 License with LLVM Exception, and the Boost license is simpler, clearer, better known, and already pre-approved in many organizations.
Use it. The C++ community will appreciate your generosity.