The Boost Software License

This section contains the current Boost Software License verbatim, and is followed by a rationale on why using this license is recommended.

Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:

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, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Rationale

Why You Should Use the Boost Software License? Because 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, 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."

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.