Go语言许可证

13

我之前曾经提出过类似的问题,但这次我想集中讨论go语言。我一直在阅读go语言的维基页面,并注意到总结部分有一个许可证片段,其中提到了“BSD风格+专利授权”。 我知道还有一个gcc的前端用于go,我猜它具有GPL许可证之类的东西,尽管维基页面上没有提及,这让我想知道:

所提到的BSD许可证是针对以下哪些内容而设计的:

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

如果有这样的区别,那么是什么?

一个实际的答案将会很受欢迎(例如如何为源代码或二进制文件获取许可证?),以及与旧语言(CC++Java)进行对比。


4
我投票关闭这个问题,因为它涉及许可证或法律问题,而不是编程或软件开发。详见此处,更多信息请查看帮助/关于主题 - Kevin Brown-Silva
2个回答

11

Go的大部分内容都采用三条款的BSD风格许可证专利授权。这包括gc编译器、标准库和其他相关工具。我知道有两个值得注意的例外:

语言规范和其他网站文档采用创作共用属性3.0许可证。请滚动到golang.org上任何页面的最底部查看。(我想这意味着一些源代码注释也采用同样的许可证,这似乎有点奇怪。)

gccgo的前端使用与Go的其余部分相同的BSD风格许可证,但由于必须与gcc的其余部分链接,因此它实际上是GPLv3。 (请注意,与janneb的说法相反,gccgo不与其他编译器共享任何代码。 它确实共享一些运行时代码。)

目前正在努力分离依赖于gcc的gccgo前端的部分,以便将其用作其他Go编译器(例如基于LLVM的编译器)的前端。这样的编译器可以完全采用BSD风格许可证发布。


与GNU C运行时链接不需要遵守GPL开源许可要求,以便开源您的代码:http://stackoverflow.com/questions/10838807/license-of-runtime-libraries-included-in-gcchttps://www.gnu.org/licenses/gcc-exception-3.1.html我对这些内容的理解是,仅因为您使用了一些带有GNU C运行时的C库,并不意味着您需要开源Go代码。 - Travis Spencer
我并不是声称gccgo的前端链接到libc就必须遵守GPL,而是因为它链接到了许多GCC,而这些GCC(据我所知)没有排除条款。曾经有人试图将前端与GCC分离,但我认为这些努力还不够完善,目前也已经停滞不前。 - Evan Shaw
啊,现在我明白你的意思了,@Evan Shaw。这也帮助我澄清了一些事情:"gccgo编译器是GCC的一个新前端,它是广泛使用的GNU编译器。虽然前端本身采用BSD风格的许可证,但gccgo通常作为GCC的一部分使用,因此受到GNU通用公共许可证的保护(该许可证涵盖gccgo本身作为GCC的一部分;它不涵盖由gccgo生成的代码)"https://golang.org/doc/install/gccgo - Travis Spencer

0
BSD许可证适用于编译器和标准库。我不知道“语言本身”使用什么许可证;这甚至意味着什么,语言规范的文本还是其他方面?
GCC中的go前端也采用BSD许可证(据我所知,它与其他go编译器共享代码),尽管GCC编译器的其余部分仍遵循GPLv3许可证。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接