2

I am looking for a precise answer to the question

"how do I fulfill the Boost license requirements when using functions contained in the boost header files and compiled libraries".

The Boost license can be found here: here

Unless I am missing something obvious, all the answers to similar questions that I see (e.g. here) are somewhat vague. For example, the above question has an answer that reads, in part,

Which means that if you did not made any changes in original Boost Library you only need to have Boost License file in your source code. This is your only restriction.

What precisely does this mean?

Moreover, the Boost license says

The copyright notices in the Software and this entire statement, ..., 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.

Which copyright notices? All the Boost source files have different copyright, as they are by different authors. The answer above doesn't address this clause of the Boost license, unless the Boost license text counts as some generic attributation of copyright? Relatedly, does mere inclusion of the headers and use of their functions constitute a "derivative work"?

It seems that the information is conflicting and I am not sure which out of the following options, if for example, I have a project in a Github repository, allows me to meet the Boost license requirements

  1. Include a copy of the Boost license in the repository, maybe with a link to it in the README stating that the use of Boost is under that license.
  2. Include a copy of the Boost license in each and every one of my actual source code files (*.cpp, *.hpp) wherever a Boost function is used, or where the headers are included?
  3. The precise copyright of each header/library used by author/library is listed somewhere in the repository
  4. The precise copyright of each header/library used by author/library is listed in each and every one of my actual source code files wherever a Boost function is used, or where the headers are included.
  5. Something else.

What would be best, would be an example of some repository/code which uses the Boost libraries/header files in like this and is known to be compliant.

2
  • Have you made any changes to Boost in your project? Do you release your project's source code?
    – Eljay
    Sep 17 at 16:03
  • I have not made any changes to the boost source code. I intend to release my source code. In my source code I 1) Include the boost headers through "#include <boost/some_boost_header.hpp>" 2) use boost functions through "boost::some_boost_function()", and 3) link to boost compiled libraries by linking at compile to through "-lsome_boost_lib" Sep 17 at 16:09
1

how do I fulfill the Boost license requirements when using functions contained in the boost header files and compiled libraries

This depends on if you copied parts of the Boost libraries into your repository or if your project just assumes they have been downloaded to the build machine beforehand.

The Boost license is a very permissive open-source license and it places no requirements on you if you just use a library without making a copy of its source code. You are not even required to mention the library or its license.

If you did make a copy, then the license requires that you also have the Boost license text present in your repository and that you keep the copyright notices that relate to the parts you copied intact.

Note that the phrase "the Software" in the Boost license refers to the software and documentation that was licensed with the Boost license. It does not refer to any larger project that might use the library.

1

The copyright applies to copying. If you merely link to functions defined in the compiled library, you are not copying anything.

There is some debate around whether linking does not, in general, constitute some form of copying; but in this specific instance, the license section you quoted specifically exempts compiled object code.

Thus, from your list of possible interpretations, interpretation 1. is the correct one in your case.

If you wanted to redistribute (possibly modified) copies of the library's source files, the more detailed copyright restrictions would apply.

5
  • 1
    The idea that dynamic linking does not create a derivative work for copyright purposes is not as settled a question as you seem to think; see our questions summarising the yes, it does and no, it doesn't positions.
    – MadHatter
    Sep 17 at 16:16
  • That's what the "some debate" paragraph alludes to.
    – tripleee
    Sep 17 at 16:16
  • Your first paragraph presents it as a done deal; noting that there could be some debate about it in the second doesn't really help much - particularly when there's no could be about it!
    – MadHatter
    Sep 17 at 16:17
  • Thanks for the feedback; updated.
    – tripleee
    Sep 17 at 16:22
  • @triplee Ok, thanks. In particular for clearly answering in terms of the question and suggesting option 1. I am uncertain as to whether to mark it as "the answer" due to the discussion. Perhaps someone else can weigh in before I do so? Sep 17 at 16:33
0

The license is a very simple, BSD-style license. It's conditions (apart from the obvious "you can't delete/change copyright notices that aren't yours" as the law states) are very clear.

Add a file Boost License and a file detailing where (what version of Boost, etc) all affected files come from. Add your own copyright notices to any modified files, note them in the mentioned list.

1
  • I appreciate the answer, but just stating that it is "very clear" doesn't really help. The explicit text "included ... in the software" isn't clear - what does that mean? Can you be explicit? What do you mean by "affected" files? Do you mean my files that include boost headers? Well they obviously "come from" me? But I'm not talking about changing or distributing any boost source code. I'm simply talking about writing "#include <boost/xxx.hpp>" and then using "boost::some_function()" in my code. Sep 17 at 16:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.