7

There are a number of licenses that contain the term "binary distribution". For example, https://github.com/boostorg/beast/blob/develop/LICENSE_1_0.txt:

A simple permissive license only requiring preservation of copyright and license notices for source (and not binary) distribution.

What this term precisely means? Specifically, can I use shell scripts (e.g., https://github.com/boostorg/beast/blob/develop/tools/build-and-test.sh) without preservation of copyright notice? Do bash scripts count as both source and binary files? Or does "binary" means only something produced by the equally vague term "compiler"?

1
  • 1
    Crossposting is discouraged on SE. Please choose either Open Source or Law for your question but not both.
    – doneal24
    Oct 25, 2022 at 12:32

2 Answers 2

8

The parenthetical (and not binary) from the license summary you quote is derived from the end of the second paragraph of the Boost license (emphasis mine):

The copyright notices in the Software and this entire statement, including the above license grant... must be included in all copies 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.

So in the case of the Boost license, you are correct that "binary" means "machine-readable output of a compiler or other language processor". You may correctly understand that a bash script does not fall in this category, unless you translated it into machine-readable code. Surely there are edge cases of what constitutes "machine-readable" or not, but a shell script is not one of them.

Since you ask broadly about the term in the domain of licensing, I'll note that other licenses may outline their own definitions, depending on what they are trying to accomplish. For the Boost license, the intent here is to simplify requirements on transformations of the work for which license notices won't naturally be preserved automatically. For another license, like the GPL, "object code" means any form of a work that is not the "preferred form of the work for making modifications" to the work, because its terms aim to make it possible for downstream recipients to make modifications.

1
  • 1
    That sounds different from the GNU GPL definition of object code (which considers anything generated from sources to be object code). The Boost definition certainly seems to imply that you have to get the license summary into your configure script, unless they provide some definition of "machine-executable" that allows that "machine" to include interpreters. But that opens up another can - is a JVM a (virtual) CPU, or an interpreter? Or a compiler? GNU's definition seems much clearer to me... Oct 26, 2022 at 6:09
8

There is a definition in GPL what 'source code' means, and I think this is basically the understanding in the entire industry, so not specific to GPL:

The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.

Shell scripts are very much plain-text readable and editable, so they are source code, even if they sometimes are machine-generated.

As a consequence, 'binaries' are everything that is no longer in the form where it can be easily edited, such as code that has been for example compiled or obfuscated.

The definition of the Boost License focusing around 'machine-executable' is not very straight-forward, as it lacks clarity in case of (for example) scripting languages and interpreter languages, simply because the definition of "machine-executable object code generated by a source language processor" is not very clear for some programming languages (What is the machine? the cpu, the cpu + microcode, the OS, the OS + JRE, ...? What is a source language processor? And what if the code is on a machine where it cannot be executed (e.g. x64 code stored on an 80286 computer)?

6
  • IMHO the Boost license is (probably) fine for Boost itself, because Boost is a C++ library, and in most cases I would like to think a court would be able to figure out the difference between C++ source and binaries. But applying it to other languages does raise issues.
    – Kevin
    Oct 26, 2022 at 2:17
  • If the shell script is generated, e.g. by automake, then the preferred form for making modifications would be the automake (input) script. rather than the shell script, so AIUI, the GNU GPL considers such generated scripts to be "object code". Oct 26, 2022 at 6:03
  • Can I just download and execute a bash script without copying any license?
    – cppbest
    Oct 26, 2022 at 7:08
  • @cppbest Yes, you can just download and execute the script on your machine, as long as you do not display/distribute the script (or make it available) to 3rd parties. Oct 26, 2022 at 9:39
  • 2
    As I say, this is where the Boost and GNU definitions diverge. GNU only cares whether it's the original input, Boost cares whether it's editable text. In the printing example, the PostScript is not the preferred form for making modifications (so it's GNU object code), but it's not machine-executable (so it's Boost source code). Autoconf is a tool that generates bash scripts as output; it's not an editor. There's a big difference. Oct 26, 2022 at 10:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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