What does figurative language mean?

What does it mean exactly for a programming language to be open-source?

  • Open-source is typically used as a label for particular programs whose code you can view publicly. But when you say that a programming language is open-source, how could you show the code of a programming language? Wikipedia says that they are languages "released under open source licenses" (http://en.wikipedia.org/wiki/List_of_open-source_programming_languages). What exactly does this mean? What could you do with an open-source language that you couldn't do with a closed-source language?

  • Answer:

    This is a complex question that really mixes up three different issues. 1. Is the language itself protected by copyright laws 2. Is the primary implementation of the language (i.e. compiler/interpreter/runtime/std-libraries) released under an open source license 3. Is the name of the language protected by trademark law Is an Implementation Open Source? Let's do the easy one first. #2: In languages like Python, Ruby, Perl have one primary implementation of the compiler, std-libraries and runtime. And they are open source. Hence we call those them open source languages. It is technically possible for a language to have two different implementations, one which is open source (e.g. gcc/g++), and another which is not (Visual C++). In which case, we call that particular implementation open source or proprietary. This can further be confused by the fact that the compiler, the runtime, and the libraries need not all go as one unit, and you could mix and match - but let's not get into those complications. Can I have an alternative implementation, and still use the same name of the language? For example, Microsoft implemented a version of Java, and got sued by Sun, who did not want Microsoft to use the name Java. This wasn't a copyright issue, but a trademark issue. So, Microsoft had an implementation of something that looked like Java, quacked like Java, but wasn't called Java. Can a language itself be "open source"? Now we come to the difficult question. Imagine a language name is not trademarked. And forget the implementation. Can the language spec itself be copyrighted? Can I invent a language and then prevent other people from making alternative implementions of that language? Remember that copyright law deals with "creative works fixed in a tangible medium" - in other words, only actual implementations can be copyrighted, not ideas or concepts. Unfortunately, this is a bit of a grey area. Oracle and Google went to the courts over the last couple of years over this. Oracle owns the standard implementation of the Java compiler, the Java Virtual Machine, and the Java Standard Libraries. However, for Android, Google went ahead and implemented it's own compiler, it's own virtual machine (Dalvik), and it's own standard libraries (based on the Apache Harmony Project). Google claimed that the actual implementations were all open source, and hence they were not violating any of Java's copyrights, because just a programming langauge cannot be copyrighted. Oracle claimed that Google was in violation because they were still using Java, the language, which is owned by Oracle. I am not a lawyer enough to understand what exactly the detailed implications of the resultant verdicts are - but I do believe that both in USA and EU, the courts have ruled that a language itself cannot be copyrighted. So in summary, I would say that it does not make sense to talk about an "open source programming language", it only makes sense to talk about an "open source programming language implementation".

Navin Kabra at Quora Visit the source

Was this solution helpful to you?

Other answers

There is open source software, and there is proprietary software. A programming language per se cannot be categorized as such. Let me list down a few points before elaborating, by comparing natural and programming languages: A programming language cannot be copyrighted or called proprietary, just like how a natural language cannot be The name of the programming language is copyright-able, unlike that of a natural language The grammar of a programming language is copyright-ableĀ  similar to dictionaries of natural languages (the words/statements are facts and not copyright-able but formatting is considered unique, so it is copyright-able). APIs and class libraries are copyright-ableĀ  similar to how literary works using natural languages are. Now that the technicalities are out of the way, a modern programming language has syntax and semantics. To create a language, you need a http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form and run it through http://en.wikipedia.org/wiki/ANTLR. As long as the grammar is distinct enough, you can call it your own new programming language and give it a name. Out of these, as pointed out before, the compiler can be open/proprietary. So are the APIs and libraries. A interesting case to understand this would be the and - agreement: Can you call C# open-source/proprietary? You cant. It is a http://en.wikipedia.org/wiki/Ecma_International standardized language. On the other hand - .Net is proprietary, Mono is opensource. C# is used in both Mono as well as .Net stack. The Mono compiler and libraries are open source, the .Net compiler, libraries and other assorted technologies (WCF ,WPF, WinForms) etc are proprietary. So it boils down to the software used (compiler, APIs, libraries). Open source or proprietary, and under what license GPL,MIT, Apache, proprietary etc. Hope this clarifies from a CS as well as a legal perspective.

Amar Prabhu

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.