7

If the author of a program that outputs its own source code (quine) makes it open source, can others just distribute it as binaries?

Does it matter which popular open source license he used, say GPL vs MIT?

2
  • 4
    Interesting question — one issue is that to be able to read (and then modify) the source code, the user would need to be able to run the binary, which isn’t necessarily possible (on another platform nowadays, or perhaps anywhere in 50 years’ time). Commented Mar 28, 2017 at 7:13
  • As it’s possible to distribute binaries and make the source code available after request (e.g., by sending it per mail): In your case, the author wouldn’t send the source code but refer to the binary instead, right?
    – unor
    Commented Mar 28, 2017 at 15:19

3 Answers 3

8

This is categorically fine under the MIT license (as long as you follow basic attribution and license-preservation requirements), since the MIT license allows you to distribute the work (and modified forms) in binary-only format if you wish. If the binary happens also to produce source code, that's fine too, but it doesn't have to do so.

For the GPL, this is probably not allowed. The binary does produce the source code when you run it, so at first glance it appears to satisfy the GPL's requirement to accompany the binary with corresponding source code. However, the ability to see the source code is contingent upon the ability to run the binary, which is a requirement that the GPL does not allow you to impose. This is a nontrivial imposition, too, since one prominent benefit of having source code is the ability to port or recompile a program to run on a new platform. In the case of quine-provided source code, users would not be able to do this unless they first had access to the binary's original platform.

Admittedly, the ability to read the source code in any digital media format requires the execution of some executable -- you must run an operating system of some kind to read a USB drive or download source code from a network server -- but specifically requiring execution of the exact binary file whose source code you want to read seems substantially different and less easy to satisfy.

4
  • 1
    Just curious, and maybe this belongs under philosophy.se, but if you can't run the binary, then has a "program" actually been distributed, open or not? It's arguably just a sequence of pretty meaningless bytes. And the "author" of such a sequence arguably isn't distributing anything. Suppose I generate a random sequence of bytes (say "by hand", no program involved) and save it to a file. And then I prepend an ascii string saying it's gpl'ed. Is that even meaningful? Does the gpl stipulate what minimal requirements a sequence of bytes must possess to be considered a "program"? Commented Mar 28, 2017 at 21:26
  • @John I'd argue that insofar as the binary (whether it is a program or no) has corresponding source code, the GPL requires that source code to be accessible to all recipients of the binary. In your random-byte example, there's no corresponding source (also, as a separate issue, it probably isn't a copyrightable work).
    – apsillers
    Commented Mar 29, 2017 at 0:37
  • Thanks,... not copyrightable in the first place -- that hadn't occurred to me. And my whole comment/question was just a bit goofy in the first place, too. But just to continue off-topic, it would certainly be copyrightable in the US under a Form-VA (visual arts) as a work of art. For example, Xu Bin's square-word calligraphy, pinterest.com/pin/305400418457754487 There's a lot of "linguistic art", ever since Magritte's "This is not a pipe" painting. So interpreted that way, my "These are random bytes" painting (if you will:) could be a copyrightable masterpiece that I'm gpl'ing Commented Mar 29, 2017 at 1:47
  • 1
    @JohnForkosh: "if you can't run the binary, then has a 'program' actually been distributed, open or not?" - of course, because you may be able to run it at a later time. You may also be able to obtain the knowledge of how to interpret the machine code the program was compiled to. The crucial point is that the bytes are not meaningless, they are just not comprehensible to you. Likewise, if you pass on a poem written in a language you do not understand to someone else who does not understand the poem's language, either, you are still redistributing the work, and the work is still a poem. Commented Mar 29, 2017 at 13:35
1

Just for the sake of completeness, the requirements listed @aspillers's answer do not apply to the copyright owner. So if you are the sole author of the work, you can decide to license it to others under GPL while only distributing the source code. Normally this wouldn't make sense because to be able to convey it further, recipients need to distribute the source code as well (which they wouldn't be able to do if you didn't give it to them, in the case of a normal software). For this peculiar example, they should execute the program, get the source, and make sure that they distribute it with the binary (or provide a written offer to get it).

0

This is bad. If someone wants to read source code, he would have to run the binary on his machine first. Much of the meaning of open source and free software is to being able read the code before you run it. And the reader of the code would also need to compile the code output after first running that program and then comparing the binaries to make sure that its really the source code of the program. But once you have different compiler version or platform, you are not able to prove that it really is the source code... Pretty bad.

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