1

I want to release as GPL a compiler which target language is opensource but not GPL. its license only says: "These files are made available to you on an as-is and restricted basis, and may only be redistributed or sold to any third party as expressly indicated in the Terms of Use for COMPANY NAME (c) COMPANY NAME. Used under license."

is it possible?

Note: with 'target language' I mean my compiler generates code that is defined and a virtual machine running it is implemented in a repository that has that license

9
  • 4
    What do you mean by "license of the language"? How can the language have a license? – Jörg W Mittag May 13 at 7:47
  • 1
    Have you noticed that compilers in the GNU Compiler Collection (GCC) fall into this category? – Kaz May 13 at 14:23
  • @JörgWMittag I added a note to clarify this: the specification of the language and the virtual machine that runs it is in a repository with that license – Nicolas May 13 at 16:14
  • 8
    The license you quoted is clearly a software license, but a programming language is not software, it is an abstract mathematical idea. The license you quoted talks about redistributing files, so which files are you redistributing? I still don't see how a programming language even can be copyrighted in the first place, since it doesn't fall into any of the copyrightable works categories: it is not a piece of literature, it is not a song, it is not a computer program, it is not a picture, or a sculpture, or a poem. What makes you think that a language even can be copyrighted? – Jörg W Mittag May 13 at 17:11
  • 1
    I still don't get the question but I imagine you want make GCC for you target machine. GCC is.GPL licensed but products of its work are not. They are not licensed at all until creator does that. Is that what what you mean? – tansy May 24 at 18:58
4

There is a general understanding that the license of a program does not apply to data processed with it. Blender being Open Source does not restrict licensing for scenes created with it.

Technically, it could be argued that compiled software is a combined work as the compiler contains code fragments that are copied to the output file in the appropriate order and with substitutions applied, so some compiler writers feel the need to clarify this, but my (layman) opinion is that this is unnecessary, as the fragments are a description of an interface that is not an original work of the compiler authors, so it would be very difficult to claim a contribution here.

For runtime libraries, it is likely that you will need a license exception similar to what libstdc++ is doing.

3
  • Seems to me this is kind of backwards... I mean, my concern is that I'm the author of the compiler and the compiler produces a code in a language that is specified in a restricted license repository. – Nicolas May 13 at 16:21
  • 1
    The language itself is an interface. Whether interfaces are copyrightable is currently disputed in Oracle vs Google, and it currently looks as if the answer is "no". The description itself can be copyrighted, so copying from it into comments is problematic. – Simon Richter May 13 at 18:28
  • 1
    @SimonRichter with respect, SCOTUS' finding in Oracle v Google was that APIs may be copyrightable, but if they are, Google's use of them in that case sufficiently satisfied the four tests of US fair use that Oracle's copyrights had not been violated by Google. Breyer, writing for the majority, quite carefully avoided addressing the question of whether APIs were copyrightable. That is not the same as interfaces aren't copyrightable. – MadHatter May 22 at 11:03
1

If I'm to understand this right, this question seems to be about generating code in a target language, where the language itself someone's closely-guarded intellectual property.

For instance, the language is not even publicly documented. Let's go with the assumption that one needs to sign a non-disclosure agreement in order to know anything about this language, including possibly even its very existence.

If you distribute an open-source compiler whose output is in some secret language that cannot be discussed with others and requires a non-disclosure agreement to learn about, then your work probably violates the non-disclosure agreement by revealing that language, regardless of what copyright and licensing notices are in the output.

The open source compiler you're redistributing is imbued with knowledge about the target language. It contains logic which can output pieces of that language to make a coherent utterance in that language. That logic is based on knowledge can only be obtained under NDA. So by redistributing the compiler, you're leaking the knowledge, breaking the NDA. The NDA forbids you from sharing knowledge with parties that are not under the same NDA, regardless of how you share that knowledge.

The licensing of your compiler, and the copyright notices you put on the target output written in the proprietary language, are not directly relevant. If your compiler leaks secret information obtained under NDA, it doesn't matter whether your compiler is copylefted open source, or whether your compiler is closed-source .exe file for Windows given to users under a shrink-wrap EULA.

This is an area where, if circumstances are compelling you to proceed with redistributing such a compiler, you need lawyers. Likely, though, they will tell you the same thing.

1

What could be distributed under some (not specified) "terms of use" is not the language, but some tool (i.e., an interpreter or compiler) or some other program. Those terms of use could make quite a difference, from "you aren't allowed to do anything" to (essentially) "do as you please" BSD style.

Think about it this way: If you write some program in said language by hand, what are the restrictions on distribution of that program? More or less the same applies to what your compiler writes.

Also check the conditions on e.g. bison, it has special provisions because bison written parsers contain a sizeable portion of bison's source code. Maybe you'll need to add similar wording if you take pieces of the "language" (really, say examples or code snippets from the documentation, description or definition).

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.