2012-10-09 38 views
7

我已经问过类似的question之前,但这次我想专注于go语言。我一直在阅读wiki page of go language,并意识到BSD style + Patent grant的摘要中有一个许可证段。我知道,也有gcc前端为go,我猜有一个像GPL许可的东西虽然没有在wiki页面没有提到它,这让我纳闷:去语言许可

是提到BSD许可证旨在用于:

  • 编译器
  • 和/或语言
  • 和/或标准库

如果有这样的区别呢?

一个实际的答案会受到欢迎(即我如何可以授权源或二进制?),以及作为对比旧的语言(CC++Java)如果有的话..

+4

我投票结束这个问题作为题外话,因为**它是关于许可或法律问题**,而不是编程或软件开发。 [见这里](http://meta.stackoverflow.com/a/274964/1402846)了解更多信息,以及[帮助/话题]。 –

回答

6

Go的大多数部分的许可证号为three-clause BSD style licensepatent grant。这包括gc编译器,标准库和其他相关工具。有两个值得注意的例外,我知道:

language specification和其他网站文档是根据知识共享署名3.0许可证授权的。滚动到golang.org上任何页面的最底部以查看。 (我想这意味着某些源代码评论的许可方式是一样的,这看起来有点奇怪。)

gccgo的前端使用与Go的其余部分相同的BSD样式许可证,但是因为它必须与其余的gcc,它是有效的GPLv3。 (请注意,与janneb的说法相反,gccgo不会与其他编译器共享任何代码,它确实共享一些运行时代码。)

正在不断努力将gccgo前端依赖于gcc的部分分开它可以用作其他Go编译器的前端,比如基于LLVM的编译器。这样的编译器可以在BSD风格的许可证下完全发布。

+0

与GNU C运行时间的链接不包括在GPL许可要求中,以便开放源代码: http://stackoverflow.com/questions/10838807/license-of-runtime-libraries-included-in-gcc https://www.gnu.org/licenses/gcc-exception-3.1。html 我对这些内容的阅读导致我相信,您不需要开源代码就可以简单地使用一些C库来引入GNU C运行时。 –

+0

我并没有声称gccgo的前端是GPL,因为它链接到libc,但是因为它链接到很多GCC,而不是(据我所知)有一个排除。已经努力将前端与海湾合作委员会分开,但我认为它们不完整,目前处于非活动状态。 –

+0

啊,现在我明白你的意思了,@Evan Shaw。这也有助于澄清我的事情: “gccgo编译器是广泛使用的GNU编译器GCC的新前端,尽管前端本身处于BSD样式的许可证下,但gccgo通常用作GCC的一部分,覆盖GNU通用公共许可证(该许可证涵盖gccgo本身作为GCC的一部分;它不包括由gccgo生成的代码“ https://golang.org/doc/install/gccgo –

0

的BSD许可证适用于编译器和标准库。我不知道“语言本身”是什么许可证;这甚至意味着什么,语言规范的文本,或?

GCC的前端也是BSD许可的(AFAIK它与其他go编译器共享代码),尽管GCC编译器的其余部分仍然在GPLv3下。