I’ve decided to create a programming language of my own, mostly just for fun. However, I got interested in the legal aspect of it all.
You can, for example, licence specific programs under specific terms. However, how do you go about licensing a language? Also, by that I don’t just mean the implementation of the language (compiler & VM), but the standard itself. Is there something else to a programming language I’m missing?
What I would like to achieve by such licensing:
- Make it completely FOSS (can a language even be FOSS, or is that the implementation that can be FOSS?)
- Establish myself as the author (can you legally be an author of a language? Or, again, just the implementation?)
- Make it so that anyone implementing my language would be required to attribute me (MIT-style. Please note that I do not have any hopes for anyone actually ever doing that though, I’m just learning.)
I think that the solution would be to separately license the VM and the compiler for my language, as “the official implementation”, and then license the design document as the language itself.
What exactly am I missing here?
16
Disclaimer.IANAL();
You can’t copyright a programming language no more than you can copyright a spoken language. You can license a particular implementation of the language and even sell that compiler much how Borland did with Delphi for many years.
Many languages today have a BDFL (Benevolent Dictator for Life) who determines what goes into the language and what doesn’t. Python, Ruby, and Perl are all examples of that.
Other languages have officially designed standards by one of several standards boards, typically ANSI, ECMA, or ISO. Examples include C, C++, and Javascript.
Some languages fall into murkier areas due to politicking between companies. Java is an example because Microsoft sits on some of the standards boards.
Some languages move from one to another, typically from BDFL to Standardized, C is a good example.
Depending on the specification of the language, some compiler writers may implement different features in different ways (CPython vs PyPy for example) or add features (Microsoft C++ vs GNU C++ or MySQL vs PostGreSQL vs SQL Server)
11
Any attempt to restrict / control / own a language is doomed to failure. In order for a language to become widely used, people must feel a) that it solves a problem better than some existing, established language, and b) they are comfortable that they won’t suddenly be on the wrong end of a license / law suit. If they think that that is even possible, they will go elsewhere.
I offer the absolute Tragedy of Java, as performed by Larry Ellison (AKA Oracle) and Google. Ellison performed a global-scale legal faceplant that accomplished 2 things:
- He showed the world that he would sue anyone he thought he could get money from, and
- He guaranteed that future developments that were not absolutely already tied to Java would choose anything other than Java.
Google didn’t just win this lawsuit, they eviscerated Oracle’s pathetic claims of patent and copyright. After this, no one I know will place any faith whatsoever in any “open source technology” that has Oracle’s fingerprints on it (think: MySQL).
If you want, you can skip the developer-centuries behind Java and go straight to being ignored … just have all developer’s sign a contract before they can use your new language.
3
You could write a grammar for your language and assert your copyright over that. Of course, that wouldn’t protect you against someone writing a different grammar that described the same language.
My biggest question would be “why would you want to”. After all, you probably want people to adopt your language. If someone else claimed to have created it, then simply having a good web presence would be enough to enable you to call them a liar.
As others have noted, if your main goal is to prevent others from stealing the name
of your language, a trademark would be more useful.
2
There have been different answers to this question over time:
In 2012, a similar question was answered “you cannot” in the Oracle v.s. Google case over the use of the Java API in Android, and a similar answer was given in the case of WPL’s implementation of the SAS programming language in their own product. The rationale for this answer was that interopability between different implementations of a language requires copying of the syntax of a programming language, and thus doing so should be allowed under “fair use” rules.
In 2014, however, the US court of appeals decided that the just legal answer was indeed “yes, you can”, on the grounds that to provide interopability (or not), and under what rules is at the sole discretion of the original copyright holder. In this most recent interpretation, if someone does not want you to be compatible with their programming language, API or other interface specification, they have every right to stop you.
In a nutshell, as of 2014 it is probably fair to assume: yes, a programming language (its syntax, structure and sequence of language constructs) can be copyrighted
Note that copyright law is subject to local interpretaton and that rules in your country may differ. If in doubt consult a lawyer…
(removed the rest of the argument, see history)
Disclaimer: IANAL
4